#hasadmintabs ul.ui-tabs-nav{float:left;width:100%;border-bottom:1px solid #ccc;font-size:12px;height:27px;list-style-image:none;list-style-position:outside;list-style-type:none;margin:14px 0 0;overflow:visible;padding:0 0 0 6px}#hasadmintabs ul.ui-tabs-nav li{display:block;float:left;line-height:200%;list-style-image:none;list-style-position:outside;list-style-type:none;margin:0;padding:0;position:relative;text-align:center;white-space:nowrap;width:auto}#hasadmintabs ul.ui-tabs-nav li a{border-bottom:1px solid #ccc;display:block;color:#464646;float:left;line-height:25px;padding:1px 13px 0;position:relative;text-decoration:none;margin:0 4px 0 0}#hasadmintabs ul.ui-tabs-nav li.ui-tabs-active a{background:0;border:1px solid #ccc;border-bottom-color:#f1f1f1;height:25px;color:#464646;font-weight:normal;padding:1px 13px 0;color:#000}#hasadmintabs ul.ui-tabs-nav li.ui-tabs-active a:hover,#hasadmintabs ul.ui-tabs-nav a:hover{outline-color:-moz-use-text-color;outline-style:none;outline-width:medium}#hasadmintabs ul.ui-tabs-nav li a:focus,#hasadmintabs ul.ui-tabs-nav li a:active{outline:0}#hasadmintabs ul.ui-tabs-nav span{font-size:12px;font-weight:bolder}#screen-options-wrap p.submit{margin:0;padding:0}# Security Policy
## Reporting Security Bugs
Please report security bugs found in the site-reviews plugin's source code through the [Patchstack Vulnerability Disclosure Program](https://patchstack.com/database/vdp/heartbeat-control). The Patchstack team will assist you with verification, CVE assignment and take care of notifying the developers of this plugin.
---
/******/ (function() { // webpackBootstrap
/******/ "use strict";
/******/ var __webpack_modules__ = ({
/***/ "./packages/packages/core/editor-components/src/api.ts":
/*!*************************************************************!*\
!*** ./packages/packages/core/editor-components/src/api.ts ***!
\*************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ apiClient: function() { return /* binding */ apiClient; },
/* harmony export */ getParams: function() { return /* binding */ getParams; }
/* harmony export */ });
/* harmony import */ var _elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-v1-adapters */ "@elementor/editor-v1-adapters");
/* harmony import */ var _elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _elementor_http_client__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/http-client */ "@elementor/http-client");
/* harmony import */ var _elementor_http_client__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_http_client__WEBPACK_IMPORTED_MODULE_1__);
const BASE_URL = 'elementor/v1/components';
const getParams = id => ({
action: 'get_document_config',
unique_id: `document-config-${id}`,
data: {
id
}
});
const apiClient = {
get: () => (0,_elementor_http_client__WEBPACK_IMPORTED_MODULE_1__.httpService)().get(`${BASE_URL}`).then(res => res.data.data),
create: payload => (0,_elementor_http_client__WEBPACK_IMPORTED_MODULE_1__.httpService)().post(`${BASE_URL}`, payload).then(res => res.data.data),
updateStatuses: (ids, status) => (0,_elementor_http_client__WEBPACK_IMPORTED_MODULE_1__.httpService)().put(`${BASE_URL}/status`, {
ids,
status
}),
getComponentConfig: id => _elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_0__.ajax.load(getParams(id)),
invalidateComponentConfigCache: id => _elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_0__.ajax.invalidateCache(getParams(id)),
getComponentLockStatus: async componentId => await (0,_elementor_http_client__WEBPACK_IMPORTED_MODULE_1__.httpService)().get(`${BASE_URL}/lock-status`, {
params: {
componentId
}
}).then(res => {
const {
is_current_user_allow_to_edit: isAllowedToSwitchDocument,
locked_by: lockedBy
} = res.data.data;
return {
isAllowedToSwitchDocument,
lockedBy: lockedBy || ''
};
}),
lockComponent: async componentId => await (0,_elementor_http_client__WEBPACK_IMPORTED_MODULE_1__.httpService)().post(`${BASE_URL}/lock`, {
componentId
}).then(res => res.data),
unlockComponent: async componentId => await (0,_elementor_http_client__WEBPACK_IMPORTED_MODULE_1__.httpService)().post(`${BASE_URL}/unlock`, {
componentId
}).then(res => res.data),
getOverridableProps: async componentIds => await (0,_elementor_http_client__WEBPACK_IMPORTED_MODULE_1__.httpService)().get(`${BASE_URL}/overridable-props`, {
params: {
'componentIds[]': componentIds
}
}).then(res => res.data),
updateArchivedComponents: async (componentIds, status) => await (0,_elementor_http_client__WEBPACK_IMPORTED_MODULE_1__.httpService)().post(`${BASE_URL}/archive`, {
componentIds,
status
}).then(res => res.data.data),
updateComponentTitle: (updatedComponentNames, status) => (0,_elementor_http_client__WEBPACK_IMPORTED_MODULE_1__.httpService)().post(`${BASE_URL}/update-titles`, {
components: updatedComponentNames,
status
}).then(res => res.data.data),
validate: async payload => await (0,_elementor_http_client__WEBPACK_IMPORTED_MODULE_1__.httpService)().post(`${BASE_URL}/create-validate`, payload).then(res => res.data)
};
/***/ }),
/***/ "./packages/packages/core/editor-components/src/component-instance-transformer.ts":
/*!****************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/component-instance-transformer.ts ***!
\****************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ componentInstanceTransformer: function() { return /* binding */ componentInstanceTransformer; }
/* harmony export */ });
/* harmony import */ var _elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-canvas */ "@elementor/editor-canvas");
/* harmony import */ var _elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/store */ "@elementor/store");
/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_store__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _store_store__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./store/store */ "./packages/packages/core/editor-components/src/store/store.ts");
/* 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");
const componentInstanceTransformer = (0,_elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0__.createTransformer)(async ({
component_id: id,
overrides: overridesValue
}) => {
const unpublishedComponents = (0,_store_store__WEBPACK_IMPORTED_MODULE_2__.selectUnpublishedComponents)((0,_elementor_store__WEBPACK_IMPORTED_MODULE_1__.__getState)());
const unpublishedComponent = unpublishedComponents.find(({
uid
}) => uid === id);
const overrides = overridesValue?.reduce((acc, override) => ({
...acc,
...override
}), {});
if (unpublishedComponent) {
return {
elements: structuredClone(unpublishedComponent.elements),
overrides
};
}
if (typeof id !== 'number') {
throw new Error(`Component ID "${id}" not valid.`);
}
const data = await (0,_utils_component_document_data__WEBPACK_IMPORTED_MODULE_3__.getComponentDocumentData)(id);
return {
elements: data?.elements ?? [],
overrides
};
});
/***/ }),
/***/ "./packages/packages/core/editor-components/src/component-overridable-transformer.ts":
/*!*******************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/component-overridable-transformer.ts ***!
\*******************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ componentOverridableTransformer: function() { return /* binding */ componentOverridableTransformer; }
/* harmony export */ });
/* harmony import */ var _elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-canvas */ "@elementor/editor-canvas");
/* harmony import */ var _elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0__);
const componentOverridableTransformer = (0,_elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0__.createTransformer)((value, options) => {
const {
overrides
} = options.renderContext ?? {};
const overrideValue = overrides?.[value.override_key];
if (overrideValue) {
const isOverride = isOriginValueOverride(value.origin_value);
if (isOverride) {
return transformOverride(value, options, overrideValue);
}
return overrideValue;
}
return value.origin_value;
});
function transformOverride(value, options, overrideValue) {
const transformer = _elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0__.settingsTransformersRegistry.get('override');
if (!transformer) {
return null;
}
const transformedValue = transformer(value.origin_value.value, options);
if (!transformedValue) {
return null;
}
const [key] = Object.keys(transformedValue);
return {
[key]: overrideValue
};
}
function isOriginValueOverride(originValue) {
return originValue.$$type === 'override';
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/component-override-transformer.ts":
/*!****************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/component-override-transformer.ts ***!
\****************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ componentOverrideTransformer: function() { return /* binding */ componentOverrideTransformer; }
/* harmony export */ });
/* harmony import */ var _elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-canvas */ "@elementor/editor-canvas");
/* harmony import */ var _elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0__);
const componentOverrideTransformer = (0,_elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0__.createTransformer)(override => {
const {
override_key: key,
override_value: overrideValue
} = override;
return {
[key]: overrideValue
};
});
/***/ }),
/***/ "./packages/packages/core/editor-components/src/components/components-tab/component-search.tsx":
/*!*****************************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/components/components-tab/component-search.tsx ***!
\*****************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ ComponentSearch: function() { return /* binding */ ComponentSearch; }
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/icons */ "@elementor/icons");
/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_icons__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__);
/* 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");
const ComponentSearch = () => {
const {
inputValue,
handleChange
} = (0,_search_provider__WEBPACK_IMPORTED_MODULE_4__.useSearch)();
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Stack, {
direction: "row",
gap: 0.5,
sx: {
width: '100%',
px: 2,
py: 1.5
}
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Box, {
sx: {
flexGrow: 1
}
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.TextField, {
role: 'search',
fullWidth: true,
size: 'tiny',
value: inputValue,
placeholder: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Search', 'elementor'),
onChange: e => handleChange(e.target.value),
InputProps: {
startAdornment: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.InputAdornment, {
position: "start"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_icons__WEBPACK_IMPORTED_MODULE_1__.SearchIcon, {
fontSize: 'tiny'
}))
}
})));
};
/***/ }),
/***/ "./packages/packages/core/editor-components/src/components/components-tab/components-item.tsx":
/*!****************************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/components/components-tab/components-item.tsx ***!
\****************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ ComponentItem: function() { return /* binding */ ComponentItem; },
/* harmony export */ ComponentName: function() { return /* binding */ ComponentName; }
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-ui */ "@elementor/editor-ui");
/* harmony import */ var _elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/icons */ "@elementor/icons");
/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_icons__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__);
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); }
const ComponentItem = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(({
component,
disabled = true,
draggable,
onDragStart,
onDragEnd,
onClick,
isEditing = false,
error = null,
nameSlot,
endSlot,
...props
}, ref) => {
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.ListItemButton, _extends({
disabled: disabled,
draggable: draggable,
onDragStart: onDragStart,
onDragEnd: onDragEnd,
shape: "rounded",
ref: ref,
sx: {
border: 'solid 1px',
borderColor: 'divider',
py: 0.5,
px: 1,
display: 'flex',
width: '100%',
alignItems: 'center',
gap: 1
}
}, props), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.Box, {
display: "flex",
alignItems: "center",
gap: 1,
minWidth: 0,
flexGrow: 1,
onClick: onClick
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.ListItemIcon, {
size: "tiny"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_icons__WEBPACK_IMPORTED_MODULE_2__.ComponentsIcon, {
fontSize: "tiny"
})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(Indicator, {
isActive: isEditing,
isError: !!error
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.Box, {
display: "flex",
flex: 1,
minWidth: 0,
flexGrow: 1
}, nameSlot ?? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(ComponentName, {
name: component.name
})))), endSlot);
});
const Indicator = (0,_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.styled)(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.Box, {
shouldForwardProp: prop => prop !== 'isActive' && prop !== 'isError'
})(({
theme,
isActive,
isError
}) => ({
display: 'flex',
width: '100%',
flexGrow: 1,
borderRadius: theme.spacing(0.5),
border: getIndicatorBorder({
isActive,
isError,
theme
}),
padding: `0 ${theme.spacing(1)}`,
marginLeft: isActive ? theme.spacing(1) : 0,
minWidth: 0
}));
const getIndicatorBorder = ({
isActive,
isError,
theme
}) => {
if (isError) {
return `2px solid ${theme.palette.error.main}`;
}
if (isActive) {
return `2px solid ${theme.palette.secondary.main}`;
}
return 'none';
};
function ComponentName({
name,
editable
}) {
if (editable?.isEditing) {
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1__.EditableField, _extends({
ref: editable.ref,
as: _elementor_ui__WEBPACK_IMPORTED_MODULE_3__.Typography,
variant: "caption"
}, editable.getProps()));
}
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1__.EllipsisWithTooltip, {
title: name,
as: _elementor_ui__WEBPACK_IMPORTED_MODULE_3__.Typography,
variant: "caption",
color: "text.primary"
});
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/components/components-tab/components-list.tsx":
/*!****************************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/components/components-tab/components-list.tsx ***!
\****************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ ComponentsList: function() { return /* binding */ ComponentsList; },
/* harmony export */ EmptySearchResult: function() { return /* binding */ EmptySearchResult; },
/* harmony export */ useFilteredComponents: function() { return /* binding */ useFilteredComponents; }
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/icons */ "@elementor/icons");
/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_icons__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__);
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
const LEARN_MORE_URL = 'http://go.elementor.com/components-guide-article';
const UPGRADE_URL = 'https://go.elementor.com/go-pro-components/';
const UPDATE_PLUGINS_URL = '/wp-admin/plugins.php';
// Override legacy panel CSS reset that sets h1-h6 to font-size:100% and font-weight:normal.
// See: assets/dev/scss/editor/panel/_reset.scss (applied via :where() selector in panel.scss).
const SUBTITLE_OVERRIDE_SX = {
fontSize: '0.875rem !important',
fontWeight: '500 !important'
};
function ComponentsList() {
const {
components,
isLoading,
searchValue
} = useFilteredComponents();
if (isLoading) {
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_loading_components__WEBPACK_IMPORTED_MODULE_8__.LoadingComponents, null);
}
const isEmpty = !components?.length;
if (isEmpty) {
if (searchValue.length) {
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(EmptySearchResult, null);
}
if ((0,_utils_is_pro_components_supported__WEBPACK_IMPORTED_MODULE_6__.isProOutdatedForComponents)()) {
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(ProOutdatedEmptyState, null);
}
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);
}
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.List, {
sx: {
display: 'flex',
flexDirection: 'column',
gap: 1,
px: 2
}
}, components.map(component => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_components_item__WEBPACK_IMPORTED_MODULE_7__.ComponentItem, {
key: component.uid,
component: component
})));
}
const ProUpgradeEmptyState = () => {
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Stack, {
alignItems: "center",
justifyContent: "start",
height: "100%",
sx: {
px: 2,
py: 4
},
gap: 2,
overflow: "hidden"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Stack, {
alignItems: "center",
gap: 1
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_icons__WEBPACK_IMPORTED_MODULE_1__.ComponentsIcon, {
fontSize: "large",
sx: {
color: 'text.secondary'
}
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Typography, {
align: "center",
variant: "subtitle2",
color: "text.secondary",
sx: SUBTITLE_OVERRIDE_SX
}, (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, {
align: "center",
variant: "caption",
color: "secondary",
sx: {
maxWidth: 200
}
}, (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, {
variant: "contained",
color: "promotion",
size: "small",
startIcon: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_icons__WEBPACK_IMPORTED_MODULE_1__.CrownFilledIcon, null),
href: UPGRADE_URL,
target: "_blank",
rel: "noopener noreferrer"
}, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Upgrade now', 'elementor')));
};
const ProOutdatedEmptyState = () => {
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Stack, {
alignItems: "center",
justifyContent: "start",
height: "100%",
sx: {
px: 2,
py: 4,
maxWidth: 268,
m: 'auto'
},
gap: 2,
overflow: "hidden"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Stack, {
alignItems: "center",
gap: 1
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_icons__WEBPACK_IMPORTED_MODULE_1__.ComponentsIcon, {
fontSize: "large",
sx: {
color: 'text.secondary'
}
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Typography, {
align: "center",
variant: "subtitle2",
color: "text.secondary",
sx: SUBTITLE_OVERRIDE_SX
}, (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, {
align: "center",
variant: "caption",
color: "secondary"
}, (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, {
align: "center",
variant: "caption",
color: "secondary",
sx: {
mt: 1
}
}, (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, {
variant: "text",
color: "info",
size: "small",
href: UPDATE_PLUGINS_URL,
target: "_blank",
rel: "noopener noreferrer"
}, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Update Elementor Pro', 'elementor')));
};
const EmptyState = () => {
const {
canCreate
} = (0,_hooks_use_components_permissions__WEBPACK_IMPORTED_MODULE_5__.useComponentsPermissions)();
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Stack, {
alignItems: "center",
justifyContent: "start",
height: "100%",
sx: {
px: 2,
py: 4
},
gap: 2,
overflow: "hidden"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Stack, {
alignItems: "center",
gap: 1
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_icons__WEBPACK_IMPORTED_MODULE_1__.ComponentsIcon, {
fontSize: "large",
sx: {
color: 'text.secondary'
}
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Typography, {
align: "center",
variant: "subtitle2",
color: "text.secondary",
sx: SUBTITLE_OVERRIDE_SX
}, (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, {
align: "center",
variant: "caption",
color: "secondary",
sx: {
maxWidth: 200
}
}, (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, {
href: LEARN_MORE_URL,
target: "_blank",
rel: "noopener noreferrer",
variant: "caption",
color: "info.main"
}, (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, {
sx: {
width: '100%'
}
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Stack, {
alignItems: "center",
gap: 1,
width: "100%"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Typography, {
align: "center",
variant: "subtitle2",
color: "text.secondary",
sx: SUBTITLE_OVERRIDE_SX
}, (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, {
align: "center",
variant: "caption",
color: "secondary",
sx: {
maxWidth: 228
}
}, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Right-click any div-block or flexbox on your canvas or structure and select "Create component"', 'elementor')))));
};
const EmptySearchResult = () => {
const {
searchValue,
clearSearch
} = (0,_search_provider__WEBPACK_IMPORTED_MODULE_9__.useSearch)();
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Stack, {
color: 'text.secondary',
pt: 5,
alignItems: "center",
gap: 1,
overflow: 'hidden',
justifySelf: 'center'
}, /*#__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, {
sx: {
width: '100%'
}
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Typography, {
align: "center",
variant: "subtitle2",
color: "inherit",
sx: SUBTITLE_OVERRIDE_SX
}, (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, {
variant: "subtitle2",
color: "inherit",
sx: {
...SUBTITLE_OVERRIDE_SX,
display: 'flex',
width: '100%',
justifyContent: 'center'
}
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("span", null, "\u201C"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("span", {
style: {
maxWidth: '80%',
overflow: 'hidden',
textOverflow: 'ellipsis'
}
}, 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, {
align: "center",
variant: "caption",
color: "inherit"
}, (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, {
align: "center",
variant: "caption",
color: "inherit"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Link, {
color: "secondary",
variant: "caption",
component: "button",
onClick: clearSearch
}, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Clear & try again', 'elementor'))));
};
const useFilteredComponents = () => {
const {
components,
isLoading
} = (0,_hooks_use_components__WEBPACK_IMPORTED_MODULE_4__.useComponents)();
const {
searchValue
} = (0,_search_provider__WEBPACK_IMPORTED_MODULE_9__.useSearch)();
return {
components: components.filter(component => component.name.toLowerCase().includes(searchValue.toLowerCase())),
isLoading,
searchValue
};
};
/***/ }),
/***/ "./packages/packages/core/editor-components/src/components/components-tab/components-pro-notification.tsx":
/*!****************************************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/components/components-tab/components-pro-notification.tsx ***!
\****************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ ComponentsProNotification: function() { return /* binding */ ComponentsProNotification; },
/* harmony export */ UPGRADE_URL: function() { return /* binding */ UPGRADE_URL; }
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__);
/* 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");
const UPGRADE_URL = 'https://go.elementor.com/go-pro-components-exist-footer/';
function ComponentsProNotification() {
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_components_upgrade_alert__WEBPACK_IMPORTED_MODULE_2__.ComponentsUpgradeAlert, {
title: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Create new components', 'elementor'),
description: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Creating new components requires an active Pro subscription.', 'elementor'),
upgradeUrl: UPGRADE_URL
});
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/components/components-tab/components-update-notification.tsx":
/*!*******************************************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/components/components-tab/components-update-notification.tsx ***!
\*******************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ ComponentsUpdateNotification: function() { return /* binding */ ComponentsUpdateNotification; }
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__);
/* 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");
function ComponentsUpdateNotification() {
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_components_update_alert__WEBPACK_IMPORTED_MODULE_2__.ComponentsUpdateAlert, {
title: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('Create new Components', 'elementor'),
description: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_1__.__)('To create new components, update Elementor Pro to the latest version.', 'elementor')
});
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/components/components-tab/components.tsx":
/*!***********************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/components/components-tab/components.tsx ***!
\***********************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ Components: function() { return /* binding */ Components; }
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-ui */ "@elementor/editor-ui");
/* harmony import */ var _elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__);
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
const FULL_HEIGHT_STYLE_ID = 'components-full-height-panel';
const FULL_HEIGHT_CSS = `
#elementor-panel-page-elements {
display: flex;
flex-direction: column;
height: 100%;
}
#elementor-panel-elements {
display: flex;
flex-direction: column;
flex: 1;
min-height: 0;
}
#elementor-panel-elements-wrapper {
display: flex;
flex-direction: column;
flex: 1;
min-height: 0;
}
`;
const useFullHeightPanel = () => {
(0,react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect)(() => {
let style = document.getElementById(FULL_HEIGHT_STYLE_ID);
if (!style) {
style = document.createElement('style');
style.id = FULL_HEIGHT_STYLE_ID;
style.textContent = FULL_HEIGHT_CSS;
document.head.appendChild(style);
}
return () => {
document.getElementById(FULL_HEIGHT_STYLE_ID)?.remove();
};
}, []);
};
const ComponentsContent = () => {
const {
components,
isLoading
} = (0,_hooks_use_components__WEBPACK_IMPORTED_MODULE_3__.useComponents)();
const hasComponents = !isLoading && components.length > 0;
const showProNotification = !(0,_utils_is_pro_components_supported__WEBPACK_IMPORTED_MODULE_4__.isProComponentsSupported)() && hasComponents;
const isOutdated = (0,_utils_is_pro_components_supported__WEBPACK_IMPORTED_MODULE_4__.isProOutdatedForComponents)();
useFullHeightPanel();
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Stack, {
justifyContent: "space-between",
sx: {
flex: 1,
minHeight: 0
}
}, 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)));
};
const Components = () => {
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, {
localStorageKey: "elementor-components-search"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(ComponentsContent, null)));
};
/***/ }),
/***/ "./packages/packages/core/editor-components/src/components/components-tab/loading-components.tsx":
/*!*******************************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/components/components-tab/loading-components.tsx ***!
\*******************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ LoadingComponents: function() { return /* binding */ LoadingComponents; }
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_ui__WEBPACK_IMPORTED_MODULE_1__);
const ROWS = Array.from({
length: 3
}, (_, index) => index);
const STAGGER_DELAY_MS = 80;
const LoadingComponents = () => {
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_1__.Stack, {
"aria-label": "Loading components",
gap: 1.5,
sx: {
pointerEvents: 'none',
position: 'relative',
maxHeight: '300px',
overflow: 'hidden',
px: 1,
'&:after': {
position: 'absolute',
bottom: 0,
content: '""',
left: 0,
width: '100%',
height: '40%',
pointerEvents: 'none',
zIndex: 1
}
}
}, ROWS.map(row => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_1__.Box, {
key: row,
display: "flex",
alignItems: "center",
gap: 1.5,
sx: {
py: 0.75,
px: 1.5,
opacity: 0,
animation: `e-loading-fade-in 0.4s ease-out ${row * STAGGER_DELAY_MS}ms forwards`,
'@keyframes e-loading-fade-in': {
from: {
opacity: 0,
transform: 'translateY(4px)'
},
to: {
opacity: 1,
transform: 'translateY(0)'
}
}
}
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_1__.Skeleton, {
animation: "wave",
variant: "rounded",
width: 24,
height: 24
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_1__.Skeleton, {
animation: "wave",
variant: "rounded",
width: "60%",
height: 14
}))));
};
/***/ }),
/***/ "./packages/packages/core/editor-components/src/components/components-tab/search-provider.tsx":
/*!****************************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/components/components-tab/search-provider.tsx ***!
\****************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ SearchProvider: function() { return /* binding */ SearchProvider; },
/* harmony export */ useSearch: function() { return /* binding */ useSearch; }
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _elementor_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/utils */ "@elementor/utils");
/* harmony import */ var _elementor_utils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_utils__WEBPACK_IMPORTED_MODULE_1__);
const SearchContext = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(undefined);
const SearchProvider = ({
children,
localStorageKey
}) => {
const {
debouncedValue,
handleChange,
inputValue
} = (0,_elementor_utils__WEBPACK_IMPORTED_MODULE_1__.useSearchState)({
localStorageKey
});
const clearSearch = () => {
handleChange('');
};
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(SearchContext.Provider, {
value: {
handleChange,
clearSearch,
searchValue: debouncedValue,
inputValue
}
}, children);
};
const useSearch = () => {
const context = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(SearchContext);
if (!context) {
throw new Error('useSearch must be used within a SearchProvider');
}
return context;
};
/***/ }),
/***/ "./packages/packages/core/editor-components/src/components/components-update-alert.tsx":
/*!*********************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/components/components-update-alert.tsx ***!
\*********************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ ComponentsUpdateAlert: function() { return /* binding */ ComponentsUpdateAlert; }
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/icons */ "@elementor/icons");
/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_icons__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__);
const UPDATE_PLUGINS_URL = '/wp-admin/plugins.php';
function ComponentsUpdateAlert({
title,
description
}) {
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Box, {
sx: {
mt: 'auto',
position: 'sticky',
bottom: 0
}
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Alert, {
variant: "standard",
color: "info",
icon: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_icons__WEBPACK_IMPORTED_MODULE_1__.InfoCircleFilledIcon, {
fontSize: "tiny"
}),
role: "status",
size: "small",
action: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.AlertAction, {
variant: "contained",
color: "info",
href: UPDATE_PLUGINS_URL,
target: "_blank",
rel: "noopener noreferrer"
}, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Upgrade Now', 'elementor')),
sx: {
m: 2,
mt: 1
}
}, /*#__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, {
variant: "caption"
}, description)));
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/components/components-upgrade-alert.tsx":
/*!**********************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/components/components-upgrade-alert.tsx ***!
\**********************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ ComponentsUpgradeAlert: function() { return /* binding */ ComponentsUpgradeAlert; }
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/icons */ "@elementor/icons");
/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_icons__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__);
function ComponentsUpgradeAlert({
title,
description,
upgradeUrl
}) {
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Box, {
sx: {
mt: 'auto',
position: 'sticky',
bottom: 0
}
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Alert, {
variant: "standard",
color: "promotion",
icon: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_icons__WEBPACK_IMPORTED_MODULE_1__.CrownFilledIcon, {
fontSize: "tiny"
}),
role: "status",
size: "small",
action: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.AlertAction, {
variant: "contained",
color: "promotion",
href: upgradeUrl,
target: "_blank",
rel: "noopener noreferrer"
}, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Upgrade now', 'elementor')),
sx: {
m: 2,
mt: 1
}
}, /*#__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, {
variant: "caption"
}, description)));
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/components/control-label.tsx":
/*!***********************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/components/control-label.tsx ***!
\***********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ ControlLabel: function() { return /* binding */ ControlLabel; }
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-controls */ "@elementor/editor-controls");
/* harmony import */ var _elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__);
const ControlLabel = ({
children,
...props
}) => {
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Stack, {
direction: "row",
alignItems: "center",
justifyItems: "start",
gap: 0.25
}, /*#__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));
};
/***/ }),
/***/ "./packages/packages/core/editor-components/src/components/detach-instance-confirmation-dialog.tsx":
/*!*********************************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/components/detach-instance-confirmation-dialog.tsx ***!
\*********************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ DetachInstanceConfirmationDialog: function() { return /* binding */ DetachInstanceConfirmationDialog; },
/* harmony export */ openDetachConfirmDialog: function() { return /* binding */ openDetachConfirmDialog; }
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-ui */ "@elementor/editor-ui");
/* harmony import */ var _elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/icons */ "@elementor/icons");
/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_icons__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__);
function DetachInstanceConfirmationDialog({
open,
onClose,
onConfirm
}) {
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1__.ConfirmationDialog, {
open: open,
onClose: onClose
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1__.ConfirmationDialog.Title, {
icon: _elementor_icons__WEBPACK_IMPORTED_MODULE_2__.AlertTriangleFilledIcon,
iconColor: "secondary"
}, (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, {
onClose: onClose,
onConfirm: onConfirm,
confirmLabel: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Detach', 'elementor'),
color: "primary"
}));
}
// Used imperatively from the context menu (Marionette view).
function openDetachConfirmDialog(onConfirm) {
const handleConfirm = () => {
(0,_elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1__.closeDialog)();
onConfirm();
};
(0,_elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1__.openDialog)({
component: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(DetachInstanceConfirmationDialog, {
open: true,
onClose: _elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1__.closeDialog,
onConfirm: handleConfirm
})
});
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/components/errors.ts":
/*!***************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/components/errors.ts ***!
\***************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ OverrideControlInnerElementNotFoundError: function() { return /* binding */ OverrideControlInnerElementNotFoundError; },
/* harmony export */ OverrideControlPropTypeNotFoundError: function() { return /* binding */ OverrideControlPropTypeNotFoundError; }
/* harmony export */ });
/* harmony import */ var _elementor_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/utils */ "@elementor/utils");
/* harmony import */ var _elementor_utils__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_utils__WEBPACK_IMPORTED_MODULE_0__);
const OverrideControlInnerElementNotFoundError = (0,_elementor_utils__WEBPACK_IMPORTED_MODULE_0__.createError)({
code: 'override_control_inner_element_not_found',
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.`
});
const OverrideControlPropTypeNotFoundError = (0,_elementor_utils__WEBPACK_IMPORTED_MODULE_0__.createError)({
code: 'override_control_prop_type_not_found',
message: 'Prop type not found for override control.'
});
/***/ }),
/***/ "./packages/packages/core/editor-components/src/components/in-edit-mode.tsx":
/*!**********************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/components/in-edit-mode.tsx ***!
\**********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ openEditModeDialog: function() { return /* binding */ openEditModeDialog; }
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-ui */ "@elementor/editor-ui");
/* harmony import */ var _elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/icons */ "@elementor/icons");
/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_icons__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__);
const openEditModeDialog = lockedBy => {
(0,_elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1__.openDialog)({
component: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(EditModeDialog, {
lockedBy: lockedBy
})
});
};
const EditModeDialog = ({
lockedBy
}) => {
/* translators: %s is the name of the user who is currently editing the document */
const content = (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__.__)('%s is currently editing this document', 'elementor').replace('%s', lockedBy);
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, {
logo: false
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.Box, {
display: "flex",
alignItems: "center",
gap: 1
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.Icon, {
color: "secondary"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_icons__WEBPACK_IMPORTED_MODULE_2__.InfoCircleFilledIcon, {
fontSize: "medium"
})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.Typography, {
variant: "subtitle1"
}, 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, {
spacing: 2,
direction: "column"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.Typography, {
variant: "body2"
}, (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, {
color: "secondary",
variant: "contained",
onClick: _elementor_editor_ui__WEBPACK_IMPORTED_MODULE_1__.closeDialog
}, (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__.__)('Close', 'elementor'))))));
};
/***/ }),
/***/ "./packages/packages/core/editor-components/src/components/instance-editing-panel/detach-action.tsx":
/*!**********************************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/components/instance-editing-panel/detach-action.tsx ***!
\**********************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ DetachAction: function() { return /* binding */ DetachAction; }
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _elementor_editor_notifications__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-notifications */ "@elementor/editor-notifications");
/* harmony import */ var _elementor_editor_notifications__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_notifications__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/icons */ "@elementor/icons");
/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_icons__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__);
/* 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");
/* 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");
/* 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");
const DetachAction = ({
componentInstanceId,
componentId
}) => {
const [isDetachDialogOpen, setIsDetachDialogOpen] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
const handleDetachConfirm = async () => {
setIsDetachDialogOpen(false);
try {
await (0,_utils_detach_component_instance__WEBPACK_IMPORTED_MODULE_4__.detachComponentInstance)({
instanceId: componentInstanceId,
componentId,
trackingInfo: getDetachTrackingInfo()
});
} catch {
(0,_elementor_editor_notifications__WEBPACK_IMPORTED_MODULE_1__.notify)({
type: 'error',
message: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Failed to detach component instance.', 'elementor'),
id: 'detach-component-instance-failed'
});
}
};
const handleDetachCancel = () => {
setIsDetachDialogOpen(false);
};
const handleDetachClick = () => {
setIsDetachDialogOpen(true);
};
const detachLabel = (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Detach from Component', 'elementor');
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, {
label: detachLabel,
icon: _elementor_icons__WEBPACK_IMPORTED_MODULE_2__.DetachIcon,
onClick: handleDetachClick
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_detach_instance_confirmation_dialog__WEBPACK_IMPORTED_MODULE_5__.DetachInstanceConfirmationDialog, {
open: isDetachDialogOpen,
onClose: handleDetachCancel,
onConfirm: handleDetachConfirm
}));
};
function getDetachTrackingInfo() {
const extendedWindow = window;
const config = extendedWindow?.elementorCommon?.eventsManager?.config;
if (!config) {
return {
location: '',
trigger: ''
};
}
return {
location: config.locations.components.instanceEditingPanel,
trigger: config.triggers.click
};
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/components/instance-editing-panel/empty-state.tsx":
/*!********************************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/components/instance-editing-panel/empty-state.tsx ***!
\********************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ EmptyState: function() { return /* binding */ EmptyState; }
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/icons */ "@elementor/icons");
/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_icons__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__);
/* 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");
const EmptyState = ({
onEditComponent
}) => {
const {
canEdit
} = (0,_hooks_use_components_permissions__WEBPACK_IMPORTED_MODULE_4__.useComponentsPermissions)();
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');
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Stack, {
alignItems: "center",
justifyContent: "start",
height: "100%",
color: "text.secondary",
sx: {
p: 2.5,
pt: 8,
pb: 5.5,
mt: 1
},
gap: 1.5
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_icons__WEBPACK_IMPORTED_MODULE_1__.ComponentPropListIcon, {
fontSize: "large"
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Typography, {
align: "center",
variant: "subtitle2"
}, (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, {
align: "center",
variant: "caption",
maxWidth: "170px"
}, message), canEdit && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Button, {
variant: "outlined",
color: "secondary",
size: "small",
sx: {
mt: 1
},
disabled: !onEditComponent,
onClick: onEditComponent
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_icons__WEBPACK_IMPORTED_MODULE_1__.PencilIcon, {
fontSize: "small"
}), (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Edit component', 'elementor')));
};
/***/ }),
/***/ "./packages/packages/core/editor-components/src/components/instance-editing-panel/instance-editing-panel.tsx":
/*!*******************************************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/components/instance-editing-panel/instance-editing-panel.tsx ***!
\*******************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ InstanceEditingPanel: function() { return /* binding */ InstanceEditingPanel; }
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/icons */ "@elementor/icons");
/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_icons__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__);
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
const EDIT_UPGRADE_URL = 'https://go.elementor.com/go-pro-components-Instance-edit-footer/';
function InstanceEditingPanel() {
const {
canEdit
} = (0,_hooks_use_components_permissions__WEBPACK_IMPORTED_MODULE_4__.useComponentsPermissions)();
const data = (0,_use_instance_panel_data__WEBPACK_IMPORTED_MODULE_13__.useInstancePanelData)();
if (!data) {
return null;
}
const {
componentId,
component,
overrides,
overridableProps,
groups,
isEmpty,
componentInstanceId
} = data;
/* translators: %s: component name. */
const panelTitle = (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Edit %s', 'elementor').replace('%s', component.name);
const actions = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Stack, {
direction: "row",
gap: 0.5
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_detach_action__WEBPACK_IMPORTED_MODULE_9__.DetachAction, {
componentInstanceId: componentInstanceId,
componentId: componentId
}), canEdit && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_instance_panel_header__WEBPACK_IMPORTED_MODULE_12__.EditComponentAction, {
disabled: true,
label: panelTitle,
icon: _elementor_icons__WEBPACK_IMPORTED_MODULE_1__.PencilIcon
}));
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_2__.Box, {
"data-testid": "instance-editing-panel",
sx: {
display: 'flex',
flexDirection: 'column',
height: '100%'
}
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_provider_component_instance_context__WEBPACK_IMPORTED_MODULE_5__.ComponentInstanceProvider, {
componentId: componentId,
overrides: overrides,
overridableProps: overridableProps
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_instance_panel_header__WEBPACK_IMPORTED_MODULE_12__.InstancePanelHeader, {
componentName: component.name,
actions: actions
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_instance_panel_body__WEBPACK_IMPORTED_MODULE_11__.InstancePanelBody, {
groups: groups,
isEmpty: isEmpty,
emptyState: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_empty_state__WEBPACK_IMPORTED_MODULE_10__.EmptyState, null),
componentInstanceId: componentInstanceId
})), !(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, {
title: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Edit Component', 'elementor'),
description: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('To edit components, update Elementor Pro to the latest version.', 'elementor')
}) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_components_upgrade_alert__WEBPACK_IMPORTED_MODULE_8__.ComponentsUpgradeAlert, {
title: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Edit components', 'elementor'),
description: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Editing components requires an active Pro subscription.', 'elementor'),
upgradeUrl: EDIT_UPGRADE_URL
})));
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/components/instance-editing-panel/instance-panel-body.tsx":
/*!****************************************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/components/instance-editing-panel/instance-panel-body.tsx ***!
\****************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ InstancePanelBody: function() { return /* binding */ InstancePanelBody; }
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-controls */ "@elementor/editor-controls");
/* harmony import */ var _elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/editor-editing-panel */ "@elementor/editor-editing-panel");
/* harmony import */ var _elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _elementor_editor_panels__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @elementor/editor-panels */ "@elementor/editor-panels");
/* harmony import */ var _elementor_editor_panels__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_panels__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_elementor_ui__WEBPACK_IMPORTED_MODULE_4__);
/* 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");
function InstancePanelBody({
groups,
isEmpty,
emptyState,
componentInstanceId
}) {
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, {
items: (0,_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_2__.getFieldIndicators)('settings')
}, isEmpty ? emptyState : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_4__.Stack, {
direction: "column",
alignItems: "stretch"
}, groups.map(group => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, {
key: group.id + componentInstanceId
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_override_props_group__WEBPACK_IMPORTED_MODULE_5__.OverridePropsGroup, {
group: group
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_4__.Divider, null))))));
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/components/instance-editing-panel/instance-panel-header.tsx":
/*!******************************************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/components/instance-editing-panel/instance-panel-header.tsx ***!
\******************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ EditComponentAction: function() { return /* binding */ EditComponentAction; },
/* harmony export */ InstancePanelHeader: function() { return /* binding */ InstancePanelHeader; }
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _elementor_editor_panels__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-panels */ "@elementor/editor-panels");
/* harmony import */ var _elementor_editor_panels__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_panels__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _elementor_editor_ui__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/editor-ui */ "@elementor/editor-ui");
/* harmony import */ var _elementor_editor_ui__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_ui__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @elementor/icons */ "@elementor/icons");
/* harmony import */ var _elementor_icons__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_elementor_icons__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_elementor_ui__WEBPACK_IMPORTED_MODULE_4__);
function InstancePanelHeader({
componentName,
actions
}) {
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_panels__WEBPACK_IMPORTED_MODULE_1__.PanelHeader, {
sx: {
justifyContent: 'start',
px: 2
}
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_4__.Stack, {
direction: "row",
alignItems: "center",
flexGrow: 1,
gap: 1,
maxWidth: "100%"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_icons__WEBPACK_IMPORTED_MODULE_3__.ComponentsIcon, {
fontSize: "small",
sx: {
color: 'text.tertiary'
}
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_ui__WEBPACK_IMPORTED_MODULE_2__.EllipsisWithTooltip, {
title: componentName,
as: _elementor_editor_panels__WEBPACK_IMPORTED_MODULE_1__.PanelHeaderTitle,
sx: {
flexGrow: 1
}
}), actions));
}
function EditComponentAction({
label,
onClick,
disabled = false,
icon: Icon
}) {
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_4__.Tooltip, {
title: label
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_4__.IconButton, {
size: "tiny",
onClick: onClick,
"aria-label": label,
disabled: disabled
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(Icon, {
fontSize: "tiny"
})));
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/components/instance-editing-panel/override-prop-control.tsx":
/*!******************************************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/components/instance-editing-panel/override-prop-control.tsx ***!
\******************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ OverridePropControl: function() { return /* binding */ OverridePropControl; }
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-controls */ "@elementor/editor-controls");
/* harmony import */ var _elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/editor-editing-panel */ "@elementor/editor-editing-panel");
/* harmony import */ var _elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__);
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
/* harmony import */ var _store_store__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../store/store */ "./packages/packages/core/editor-components/src/store/store.ts");
/* 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");
/* 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");
/* 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");
/* harmony import */ var _control_label__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../control-label */ "./packages/packages/core/editor-components/src/components/control-label.tsx");
/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../errors */ "./packages/packages/core/editor-components/src/components/errors.ts");
/* 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");
/* 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");
/* 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");
/* 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");
function OverridePropControl({
overrideKey
}) {
const overridableProps = (0,_provider_component_instance_context__WEBPACK_IMPORTED_MODULE_9__.useComponentOverridableProps)();
const overridableProp = overridableProps.props[overrideKey];
if (!overridableProp) {
return null;
}
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_2__.SettingsField, {
bind: "component_instance",
propDisplayName: overridableProp.label
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(OverrideControl, {
overridableProp: overridableProp
}));
}
function OverrideControl({
overridableProp
}) {
const componentInstanceElement = (0,_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_2__.useElement)();
const {
value: instanceValue,
setValue: setInstanceValue
} = (0,_elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1__.useBoundProp)(_prop_types_component_instance_prop_type__WEBPACK_IMPORTED_MODULE_7__.componentInstancePropTypeUtil);
const wrappingComponentId = (0,_store_store__WEBPACK_IMPORTED_MODULE_12__.useCurrentComponentId)();
const componentId = (0,_provider_component_instance_context__WEBPACK_IMPORTED_MODULE_9__.useComponentId)();
const overridableProps = (0,_provider_component_instance_context__WEBPACK_IMPORTED_MODULE_9__.useComponentOverridableProps)();
const overrides = (0,_provider_component_instance_context__WEBPACK_IMPORTED_MODULE_9__.useComponentInstanceOverrides)();
const controls = (0,_hooks_use_controls_by_widget_type__WEBPACK_IMPORTED_MODULE_4__.useControlsByWidgetType)(overridableProp.originPropFields?.widgetType ?? overridableProp.widgetType);
const controlReplacements = (0,_elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1__.getControlReplacements)();
const matchingOverride = (0,_utils_overridable_props_utils__WEBPACK_IMPORTED_MODULE_14__.getMatchingOverride)(overrides, overridableProp.overrideKey);
const {
propKey
} = overridableProp.originPropFields ?? overridableProp;
const propType = (0,_utils_get_prop_type_for_component_override__WEBPACK_IMPORTED_MODULE_13__.getPropTypeForComponentOverride)(overridableProp);
if (!propType) {
throw new _errors__WEBPACK_IMPORTED_MODULE_17__.OverrideControlPropTypeNotFoundError({
context: {
overridableProp
}
});
}
const {
elementId,
elementType,
resolvedElementSettings,
resolvedOriginValues
} = (0,_utils_use_resolved_inner_element__WEBPACK_IMPORTED_MODULE_21__.useResolvedInnerElement)(overridableProp);
const {
overrideValue,
isDisabled,
isHidden
} = (0,_utils_use_override_dependencies__WEBPACK_IMPORTED_MODULE_20__.useOverrideControlDependencies)({
existingOverride: matchingOverride,
resolvedElementSettings,
elementType,
elementId,
propKey
});
if (isHidden) {
return null;
}
const {
propValue,
baseValue: resolvedBaseValue
} = resolveOverrideValues(overrideValue, resolvedOriginValues, propKey);
const value = {
[overridableProp.overrideKey]: propValue
};
const baseValue = {
[overridableProp.overrideKey]: resolvedBaseValue
};
const {
control,
controlProps,
layout
} = getControlParams(controls, overridableProp.originPropFields ?? overridableProp, overridableProp.label);
const propTypeSchema = (0,_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_2__.createTopLevelObjectType)({
schema: {
[overridableProp.overrideKey]: propType
}
});
const setValue = (newValue, options, meta) => {
let newPropValue = getTempNewValueForDynamicProp(propType, propValue, newValue[overridableProp.overrideKey]);
newPropValue = (0,_utils_correct_exposed_empty_override__WEBPACK_IMPORTED_MODULE_18__.correctExposedEmptyOverride)(newPropValue, matchingOverride);
const newOverrideValue = createOverrideValue({
matchingOverride,
overrideKey: overridableProp.overrideKey,
overrideValue: newPropValue,
componentId
});
let newOverrides = (overrides ?? []).filter(override => isValidOverride(overridableProps, override)).map(override => override === matchingOverride ? newOverrideValue : override);
if (!matchingOverride) {
newOverrides = [...newOverrides, newOverrideValue];
}
setInstanceValue({
...instanceValue,
overrides: _prop_types_component_instance_overrides_prop_type__WEBPACK_IMPORTED_MODULE_6__.componentInstanceOverridesPropTypeUtil.create(newOverrides)
}, options, meta);
const overridableValue = _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_8__.componentOverridablePropTypeUtil.extract(newOverrideValue);
if (overridableValue && wrappingComponentId) {
if (overridableProp.originPropFields) {
(0,_store_actions_update_overridable_prop__WEBPACK_IMPORTED_MODULE_11__.updateOverridableProp)(wrappingComponentId, overridableValue, overridableProp.originPropFields);
return;
}
const originPropFields = {
elType: overridableProp.elType,
widgetType: overridableProp.widgetType,
propKey: overridableProp.propKey,
elementId: overridableProp.elementId
};
(0,_store_actions_update_overridable_prop__WEBPACK_IMPORTED_MODULE_11__.updateOverridableProp)(wrappingComponentId, overridableValue, originPropFields);
}
};
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_provider_overridable_prop_context__WEBPACK_IMPORTED_MODULE_10__.OverridablePropProvider, {
value: _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_8__.componentOverridablePropTypeUtil.extract(matchingOverride) ?? undefined,
componentInstanceElement: componentInstanceElement
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_2__.ElementProvider, {
element: {
id: elementId,
type: elementType.key
},
elementType: elementType,
settings: resolvedElementSettings
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1__.PropProvider, {
propType: propTypeSchema,
value: value,
setValue: setValue,
baseValue: baseValue,
isDisabled: isDisabled
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1__.PropKeyProvider, {
bind: overridableProp.overrideKey
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_controls__WEBPACK_IMPORTED_MODULE_1__.ControlReplacementsProvider, {
replacements: controlReplacements
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.Box, {
mb: 1.5
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_2__.ControlTypeContainer, {
layout: layout
}, 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, {
control: control,
controlProps: controlProps
}))))))));
}
function resolveOverrideValues(overrideValue, resolvedOriginValues, propKey) {
const unwrappedSettings = (0,_utils_resolve_element_settings__WEBPACK_IMPORTED_MODULE_19__.unwrapOverridableSettings)(resolvedOriginValues);
const inheritedValue = unwrappedSettings[propKey] ?? null;
const isInheritedDynamic = (0,_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_2__.isDynamicPropValue)(inheritedValue);
const shouldUseInheritedAsValue = isInheritedDynamic && !overrideValue;
const propValue = shouldUseInheritedAsValue ? inheritedValue : overrideValue;
const baseValue = overrideValue || isInheritedDynamic ? null : inheritedValue;
return {
propValue,
baseValue
};
}
// Temp solution: when removing an override on a dynamic value, fall back to propType.default
// instead of null, since we don't have placeholder support for dynamics yet.
function getTempNewValueForDynamicProp(propType, propValue, newPropValue) {
const isRemovingOverride = newPropValue === null;
if (isRemovingOverride && (0,_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_2__.isDynamicPropValue)(propValue)) {
return propType.default ?? null;
}
return newPropValue;
}
function createOverrideValue({
matchingOverride,
overrideKey,
overrideValue,
componentId
}) {
const overridableValue = _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_8__.componentOverridablePropTypeUtil.extract(matchingOverride);
const newOverridableValue = _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_8__.componentOverridablePropTypeUtil.extract(overrideValue);
const anyOverridable = newOverridableValue ?? overridableValue;
if (anyOverridable) {
const innerOverride = _prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_5__.componentInstanceOverridePropTypeUtil.create({
override_key: overrideKey,
override_value: (0,_utils_resolve_override_prop_value__WEBPACK_IMPORTED_MODULE_15__.resolveOverridePropValue)(overrideValue),
schema_source: {
type: 'component',
id: componentId
}
});
return _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_8__.componentOverridablePropTypeUtil.create({
override_key: anyOverridable.override_key,
origin_value: innerOverride
});
}
return _prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_5__.componentInstanceOverridePropTypeUtil.create({
override_key: overrideKey,
override_value: overrideValue,
schema_source: {
type: 'component',
id: componentId
}
});
}
function getControlParams(controls, originPropFields, label) {
const control = controls[originPropFields.propKey];
const {
value
} = control;
const layout = getControlLayout(control);
const controlProps = populateChildControlProps(value.props);
if (layout === 'custom') {
controlProps.label = label ?? value.label;
}
return {
control,
controlProps,
layout
};
}
function OriginalControl({
control,
controlProps
}) {
const {
value
} = control;
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_2__.BaseControl, {
type: value.type,
props: controlProps
});
}
function getControlLayout(control) {
return control.value.meta?.layout || _elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_2__.controlsRegistry.getLayout(control.value.type);
}
function populateChildControlProps(props) {
if (props.childControlType) {
const childComponent = _elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_2__.controlsRegistry.get(props.childControlType);
const childPropType = _elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_2__.controlsRegistry.getPropTypeUtil(props.childControlType);
props = {
...props,
childControlConfig: {
component: childComponent,
props: props.childControlProps || {},
propTypeUtil: childPropType
}
};
}
return props;
}
function isValidOverride(overridableProps, override) {
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;
return !!overridableProps.props[overridableKey];
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/components/instance-editing-panel/override-props-group.tsx":
/*!*****************************************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/components/instance-editing-panel/override-props-group.tsx ***!
\*****************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ OverridePropsGroup: function() { return /* binding */ OverridePropsGroup; }
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-editing-panel */ "@elementor/editor-editing-panel");
/* harmony import */ var _elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _elementor_editor_ui__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/editor-ui */ "@elementor/editor-ui");
/* harmony import */ var _elementor_editor_ui__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_ui__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
/* harmony import */ var _elementor_ui__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__);
/* 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");
function OverridePropsGroup({
group
}) {
const [isOpen, setIsOpen] = (0,_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_1__.useStateByElement)(group.id, true);
const handleClick = () => {
setIsOpen(!isOpen);
};
const id = (0,react__WEBPACK_IMPORTED_MODULE_0__.useId)();
const labelId = `label-${id}`;
const contentId = `content-${id}`;
const title = group.label;
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.Box, {
"aria-label": `${title} section`
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.ListItemButton, {
id: labelId,
"aria-controls": contentId,
"aria-label": `${title} section`,
onClick: handleClick,
p: 0,
sx: {
'&:hover': {
backgroundColor: 'transparent'
}
}
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.Stack, {
direction: "row",
alignItems: "center",
justifyItems: "start",
flexGrow: 1,
gap: 0.5
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.ListItemText, {
secondary: title,
secondaryTypographyProps: {
color: 'text.primary',
variant: 'caption',
fontWeight: 'bold'
},
sx: {
flexGrow: 0,
flexShrink: 1,
marginInlineEnd: 1
}
})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_editor_ui__WEBPACK_IMPORTED_MODULE_2__.CollapseIcon, {
open: isOpen,
color: "secondary",
fontSize: "tiny"
})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.Collapse, {
id: contentId,
"aria-labelledby": labelId,
in: isOpen,
timeout: "auto"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_elementor_ui__WEBPACK_IMPORTED_MODULE_3__.Stack, {
direction: "column",
gap: 1,
p: 2
}, group.props.map(overrideKey => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_override_prop_control__WEBPACK_IMPORTED_MODULE_4__.OverridePropControl, {
key: overrideKey,
overrideKey: overrideKey
})))));
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/components/instance-editing-panel/use-instance-panel-data.ts":
/*!*******************************************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/components/instance-editing-panel/use-instance-panel-data.ts ***!
\*******************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ useInstancePanelData: function() { return /* binding */ useInstancePanelData; }
/* harmony export */ });
/* harmony import */ var _elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-editing-panel */ "@elementor/editor-editing-panel");
/* harmony import */ var _elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_0__);
/* 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");
/* 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");
/* harmony import */ var _store_store__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../store/store */ "./packages/packages/core/editor-components/src/store/store.ts");
function useInstancePanelData() {
const {
element,
settings
} = useComponentInstanceSettings();
const componentId = settings?.component_id?.value;
const overrides = settings?.overrides?.value;
const component = (0,_store_store__WEBPACK_IMPORTED_MODULE_3__.useComponent)(componentId ?? null);
const componentInstanceId = element?.id;
const overridableProps = (0,_hooks_use_sanitize_overridable_props__WEBPACK_IMPORTED_MODULE_1__.useSanitizeOverridableProps)(componentId ?? null, componentInstanceId);
if (!componentId || !overridableProps || !component || !componentInstanceId) {
return null;
}
const isNonEmptyGroup = group => group !== null && group.props.length > 0;
const groups = overridableProps.groups.order.map(groupId => overridableProps.groups.items[groupId] ?? null).filter(isNonEmptyGroup);
const isEmpty = groups.length === 0 || Object.keys(overridableProps.props).length === 0;
return {
componentId,
component,
overrides,
overridableProps,
groups,
isEmpty,
componentInstanceId
};
}
function useComponentInstanceSettings() {
const {
element,
settings
} = (0,_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_0__.useElement)();
return {
element,
settings: _prop_types_component_instance_prop_type__WEBPACK_IMPORTED_MODULE_2__.componentInstancePropTypeUtil.extract(settings.component_instance)
};
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/components/instance-editing-panel/utils/correct-exposed-empty-override.ts":
/*!********************************************************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/components/instance-editing-panel/utils/correct-exposed-empty-override.ts ***!
\********************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ correctExposedEmptyOverride: function() { return /* binding */ correctExposedEmptyOverride; }
/* harmony export */ });
/* 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");
// The control receives the resolved value, so when exposing a prop that was never overridden,
// origin_value will be the resolved value instead of null.
// So here, we correct this by resetting origin_value to null.
function correctExposedEmptyOverride(newPropValue, matchingOverride) {
const newOverridableValue = _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_0__.componentOverridablePropTypeUtil.extract(newPropValue);
const isExposingEmptyOverride = newOverridableValue && matchingOverride === null;
if (!isExposingEmptyOverride) {
return newPropValue;
}
return _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_0__.componentOverridablePropTypeUtil.create({
override_key: newOverridableValue.override_key,
origin_value: null
});
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/components/instance-editing-panel/utils/resolve-element-settings.ts":
/*!**************************************************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/components/instance-editing-panel/utils/resolve-element-settings.ts ***!
\**************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ applyOverridesToSettings: function() { return /* binding */ applyOverridesToSettings; },
/* harmony export */ unwrapOverridableSettings: function() { return /* binding */ unwrapOverridableSettings; }
/* harmony export */ });
/* 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");
function applyOverridesToSettings(elementSettings, overrides) {
const result = {};
for (const [propKey, propValue] of Object.entries(elementSettings)) {
const overridable = _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_0__.componentOverridablePropTypeUtil.extract(propValue);
if (!overridable) {
result[propKey] = propValue;
continue;
}
const override = overrides[overridable.override_key];
if (!override) {
result[propKey] = propValue;
continue;
}
if (override.outermostKey && override.outermostKey !== overridable.override_key) {
const originValue = overridable.origin_value;
result[propKey] = _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_0__.componentOverridablePropTypeUtil.create({
override_key: override.outermostKey,
origin_value: override.value ?? originValue
});
} else {
result[propKey] = override.value ?? propValue;
}
}
return result;
}
function unwrapOverridableSettings(elementSettings) {
const result = {};
for (const [propKey, propValue] of Object.entries(elementSettings)) {
const overridable = _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_0__.componentOverridablePropTypeUtil.extract(propValue);
if (!overridable) {
result[propKey] = propValue;
continue;
}
result[propKey] = overridable.origin_value;
}
return result;
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/components/instance-editing-panel/utils/use-override-dependencies.ts":
/*!***************************************************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/components/instance-editing-panel/utils/use-override-dependencies.ts ***!
\***************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ useOverrideControlDependencies: function() { return /* binding */ useOverrideControlDependencies; }
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-editing-panel */ "@elementor/editor-editing-panel");
/* harmony import */ var _elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_1__);
/* 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");
function useOverrideControlDependencies({
existingOverride,
resolvedElementSettings,
elementId,
elementType,
propKey
}) {
return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {
const {
isDisabled,
isHidden
} = (0,_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_1__.extractDependencyEffect)(propKey, elementType.propsSchema, resolvedElementSettings);
const existingOverrideValue = existingOverride ? (0,_utils_resolve_override_prop_value__WEBPACK_IMPORTED_MODULE_2__.resolveOverridePropValue)(existingOverride) : null;
const settingsForDepsNewValuesCalculation = {
...resolvedElementSettings,
[propKey]: existingOverrideValue
};
const resolvedSettingsWithDefaults = (0,_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_1__.getElementSettingsWithDefaults)(elementType.propsSchema, settingsForDepsNewValuesCalculation);
const dependents = (0,_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_1__.extractOrderedDependencies)(elementType.dependenciesPerTargetMapping ?? {});
const settingsWithDepsNewValues = (0,_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_1__.getUpdatedValues)({
[propKey]: existingOverrideValue
}, dependents, elementType.propsSchema, resolvedSettingsWithDefaults, elementId);
const overrideValue = settingsWithDepsNewValues[propKey];
return {
overrideValue,
isDisabled,
isHidden
};
}, [existingOverride, resolvedElementSettings, propKey, elementType.propsSchema, elementType.dependenciesPerTargetMapping, elementId]);
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/components/instance-editing-panel/utils/use-resolved-inner-element.ts":
/*!****************************************************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/components/instance-editing-panel/utils/use-resolved-inner-element.ts ***!
\****************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ useResolvedInnerElement: function() { return /* binding */ useResolvedInnerElement; }
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-editing-panel */ "@elementor/editor-editing-panel");
/* harmony import */ var _elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _elementor_editor_elements__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/editor-elements */ "@elementor/editor-elements");
/* harmony import */ var _elementor_editor_elements__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_2__);
/* 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");
/* 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");
/* 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");
/* 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");
/* harmony import */ var _errors__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../errors */ "./packages/packages/core/editor-components/src/components/errors.ts");
/* 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");
function useResolvedInnerElement(overridableProp) {
const componentInstanceElement = (0,_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_1__.useElement)();
const componentId = (0,_provider_component_instance_context__WEBPACK_IMPORTED_MODULE_5__.useComponentId)();
const overrides = (0,_provider_component_instance_context__WEBPACK_IMPORTED_MODULE_5__.useComponentInstanceOverrides)();
const {
elementId: originElementId,
widgetType,
elType
} = overridableProp.originPropFields ?? overridableProp;
const type = elType === 'widget' ? widgetType : elType;
const elementType = (0,_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_2__.getElementType)(type);
if (!elementType) {
throw new Error(`Element type not found for ${type}`);
}
const {
elementId,
overridesMapping
} = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {
const overridesChainResult = (0,_utils_resolve_overrides_chain__WEBPACK_IMPORTED_MODULE_6__.resolveOverridesChain)({
outerOverridableProp: overridableProp,
outerInstanceId: componentInstanceElement.element.id
});
if (overridesChainResult.isChainBroken) {
throw new _errors__WEBPACK_IMPORTED_MODULE_7__.OverrideControlInnerElementNotFoundError({
context: {
componentId,
elementId: originElementId
}
});
}
return {
elementId: overridesChainResult.innerElement.id,
overridesMapping: overridesChainResult.overridesMapping
};
}, [overridableProp, componentInstanceElement.element.id, componentId, originElementId]);
// Not reactive to inner element store changes — intentional.
// Inner element settings can only change in component edit mode, which unmounts this component.
const settingsWithInnerOverrides = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {
const settings = (0,_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_2__.getElementSettings)(elementId, Object.keys(elementType?.propsSchema ?? {}));
return (0,_resolve_element_settings__WEBPACK_IMPORTED_MODULE_8__.applyOverridesToSettings)(settings, overridesMapping);
}, [elementId, elementType?.propsSchema, overridesMapping]);
const resolvedElementSettings = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => {
const withAllOverrides = (0,_resolve_element_settings__WEBPACK_IMPORTED_MODULE_8__.applyOverridesToSettings)(settingsWithInnerOverrides, formatOverridesToApply(overrides));
return (0,_resolve_element_settings__WEBPACK_IMPORTED_MODULE_8__.unwrapOverridableSettings)(withAllOverrides);
}, [settingsWithInnerOverrides, overrides]);
return {
elementId,
elementType,
resolvedOriginValues: settingsWithInnerOverrides,
resolvedElementSettings
};
}
function formatOverridesToApply(overrides) {
if (!overrides) {
return {};
}
const result = {};
for (const item of overrides) {
const overridable = _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_4__.componentOverridablePropTypeUtil.extract(item);
let override = item;
if (overridable) {
override = overridable.origin_value;
}
const extractedOverride = _prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_3__.componentInstanceOverridePropTypeUtil.extract(override);
if (!extractedOverride) {
continue;
}
result[extractedOverride.override_key] = {
value: extractedOverride.override_value
};
}
return result;
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/components/load-template-components.tsx":
/*!**********************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/components/load-template-components.tsx ***!
\**********************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ LoadTemplateComponents: function() { return /* binding */ LoadTemplateComponents; }
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _elementor_editor_templates__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-templates */ "@elementor/editor-templates");
/* harmony import */ var _elementor_editor_templates__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_templates__WEBPACK_IMPORTED_MODULE_1__);
/* 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");
const LoadTemplateComponents = () => {
if ((0,_elementor_editor_templates__WEBPACK_IMPORTED_MODULE_1__.isHandlingTemplateStyles)()) {
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(LoadTemplateComponentsInternal, null);
}
return null;
};
function LoadTemplateComponentsInternal() {
const templates = (0,_elementor_editor_templates__WEBPACK_IMPORTED_MODULE_1__.useLoadedTemplates)();
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
(0,_store_actions_load_components_assets__WEBPACK_IMPORTED_MODULE_2__.loadComponentsAssets)(templates.flatMap(elements => elements ?? []));
}, [templates]);
return null;
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/consts.ts":
/*!****************************************************************!*\
!*** ./packages/packages/core/editor-components/src/consts.ts ***!
\****************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ COMPONENT_WIDGET_TYPE: function() { return /* binding */ COMPONENT_WIDGET_TYPE; }
/* harmony export */ });
const COMPONENT_WIDGET_TYPE = 'e-component';
/***/ }),
/***/ "./packages/packages/core/editor-components/src/create-component-type.ts":
/*!*******************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/create-component-type.ts ***!
\*******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ COMPONENT_WIDGET_TYPE: function() { return /* binding */ COMPONENT_WIDGET_TYPE; },
/* harmony export */ createComponentType: function() { return /* binding */ createComponentType; }
/* harmony export */ });
/* harmony import */ var _elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-canvas */ "@elementor/editor-canvas");
/* harmony import */ var _elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _elementor_editor_documents__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-documents */ "@elementor/editor-documents");
/* harmony import */ var _elementor_editor_documents__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_documents__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _elementor_editor_notifications__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/editor-notifications */ "@elementor/editor-notifications");
/* harmony import */ var _elementor_editor_notifications__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_notifications__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @elementor/store */ "@elementor/store");
/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_elementor_store__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var _elementor_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @elementor/utils */ "@elementor/utils");
/* harmony import */ var _elementor_utils__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_elementor_utils__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./api */ "./packages/packages/core/editor-components/src/api.ts");
/* harmony import */ var _store_store__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./store/store */ "./packages/packages/core/editor-components/src/store/store.ts");
/* 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");
/* 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");
/* 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");
/* 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");
/* harmony import */ var _utils_tracking__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./utils/tracking */ "./packages/packages/core/editor-components/src/utils/tracking.ts");
const COMPONENT_WIDGET_TYPE = 'e-component';
const EDIT_COMPONENT_DB_CLICK_UPGRADE_URL = 'https://go.elementor.com/go-pro-components-Instance-edit-canvas-double-click/';
const EDIT_COMPONENT_CONTEXT_MENU_UPGRADE_URL = 'https://go.elementor.com/go-pro-components-Instance-edit-context-menu/';
const UPDATE_PLUGINS_URL = '/wp-admin/plugins.php';
const COMPONENT_EDIT_UPGRADE_NOTIFICATION_ID = 'component-edit-upgrade';
const COMPONENT_EDIT_UPDATE_NOTIFICATION_ID = 'component-edit-update';
const COMPONENT_EDIT_UPGRADE_AUTO_HIDE_DURATION = 2000;
function notifyComponentEditUpgrade() {
(0,_elementor_editor_notifications__WEBPACK_IMPORTED_MODULE_2__.notify)({
type: 'promotion',
id: COMPONENT_EDIT_UPGRADE_NOTIFICATION_ID,
message: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__.__)('Editing components requires an active Pro subscription.', 'elementor'),
autoHideDuration: COMPONENT_EDIT_UPGRADE_AUTO_HIDE_DURATION,
additionalActionProps: [{
size: 'small',
variant: 'contained',
color: 'promotion',
href: EDIT_COMPONENT_DB_CLICK_UPGRADE_URL,
target: '_blank',
children: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__.__)('Upgrade Now', 'elementor')
}]
});
}
function notifyComponentEditUpdate() {
(0,_elementor_editor_notifications__WEBPACK_IMPORTED_MODULE_2__.notify)({
type: 'info',
id: COMPONENT_EDIT_UPDATE_NOTIFICATION_ID,
message: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__.__)('To edit components, update Elementor Pro to the latest version.', 'elementor'),
additionalActionProps: [{
size: 'small',
variant: 'contained',
color: 'info',
href: UPDATE_PLUGINS_URL,
target: '_blank',
children: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__.__)('Update Now', 'elementor')
}]
});
}
const updateGroups = (groups, config) => {
const disableMap = new Map(Object.entries(config.disable ?? {}));
const addMap = new Map(Object.entries(config.add ?? {}));
return groups.map(group => {
const disabledActions = disableMap.get(group.name) ?? [];
const addConfig = addMap.get(group.name);
// Update disabled actions
const updatedActions = group.actions.map(action => disabledActions.includes(action.name) ? {
...action,
isEnabled: () => false
} : action);
// Insert additional actions if needed
if (addConfig) {
updatedActions.splice(addConfig.index, 0, ...addConfig.actions);
}
return {
...group,
actions: updatedActions
};
});
};
function createComponentType(options) {
const legacyWindow = window;
const WidgetType = legacyWindow.elementor.modules.elements.types.Widget;
const view = createComponentView({
...options
});
return class extends WidgetType {
getType() {
return options.type;
}
getView() {
return view;
}
getModel() {
return createComponentModel();
}
};
}
function createComponentView(options) {
const legacyWindow = window;
return class extends (0,_elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0__.createTemplatedElementView)(options) {
eventsManagerConfig = legacyWindow.elementorCommon.eventsManager.config;
#componentRenderContext;
isComponentCurrentlyEdited() {
const currentDocument = (0,_elementor_editor_documents__WEBPACK_IMPORTED_MODULE_1__.getCurrentDocument)();
return currentDocument?.id === this.getComponentId();
}
getRenderContext() {
const namespaceKey = this.getNamespaceKey();
const parentContext = this._parent?.getRenderContext?.();
const parentComponentContext = parentContext?.[namespaceKey];
if (!this.#componentRenderContext) {
return parentContext;
}
const ownOverrides = this.#componentRenderContext.overrides ?? {};
const parentOverrides = parentComponentContext?.overrides ?? {};
return {
...parentContext,
[namespaceKey]: {
overrides: {
...parentOverrides,
...ownOverrides
}
}
};
}
getResolverRenderContext() {
const namespaceKey = this.getNamespaceKey();
const context = this.getRenderContext();
const ownContext = context?.[namespaceKey];
if (!ownContext) {
return this._parent?.getResolverRenderContext?.();
}
const parentResolverContext = this._parent?.getResolverRenderContext?.();
return {
...parentResolverContext,
...ownContext
};
}
afterSettingsResolve(settings) {
const componentInstance = settings.component_instance;
if (componentInstance) {
this.#componentRenderContext = {
overrides: componentInstance.overrides ?? {}
};
const instanceId = this.model.get('id');
const elements = componentInstance.elements ?? [];
const formattedElements = (0,_utils_format_component_elements_id__WEBPACK_IMPORTED_MODULE_9__.formatComponentElementsId)(elements, [instanceId]);
this.collection = legacyWindow.elementor.createBackboneElementsCollection(formattedElements);
this.collection.models.forEach(setInactiveRecursively);
settings.component_instance = '';
}
return settings;
}
getDomElement() {
// Component does not have a DOM element, so we return the first child's DOM element.
return this.children.findByIndex(0)?.getDomElement() ?? this.$el;
}
attachBuffer(collectionView, buffer) {
const childrenPlaceholder = collectionView.$el.find('[data-children-placeholder]').get(0);
if (!childrenPlaceholder) {
super.attachBuffer(collectionView, buffer);
return;
}
childrenPlaceholder.replaceWith(buffer);
}
getComponentId() {
const componentInstance = this.options?.model?.get('settings')?.get('component_instance')?.value;
return componentInstance.component_id.value;
}
getContextMenuGroups() {
const filteredGroups = super.getContextMenuGroups().filter(group => group.name !== 'save');
const componentId = this.getComponentId();
if (!componentId) {
return filteredGroups;
}
const newGroups = updateGroups(filteredGroups, this._getContextMenuConfig());
return newGroups;
}
_getContextMenuConfig() {
const isAdministrator = isUserAdministrator();
const hasPro = (0,_elementor_utils__WEBPACK_IMPORTED_MODULE_4__.hasProInstalled)();
const isOutdated = (0,_utils_is_pro_components_supported__WEBPACK_IMPORTED_MODULE_10__.isProOutdatedForComponents)();
const showPromoBadge = !hasPro && !isOutdated;
const badgeClass = 'elementor-context-menu-list__item__shortcut__promotion-badge';
const proBadge = ``;
const editComponentAction = {
name: 'edit component',
icon: 'eicon-edit',
title: () => (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__.__)('Edit Component', 'elementor'),
...(showPromoBadge && {
shortcut: proBadge,
hasShortcutAction: true
}),
isEnabled: () => (0,_utils_is_pro_components_supported__WEBPACK_IMPORTED_MODULE_10__.isProComponentsSupported)() || isOutdated,
callback: (_, eventData) => this.editComponent(eventData)
};
const detachInstanceAction = {
name: 'detach instance',
icon: 'eicon-chain-broken',
title: () => (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__.__)('Detach from Component', 'elementor'),
isEnabled: () => true,
callback: (_, eventData) => this.detachInstance(eventData)
};
const actions = isAdministrator ? [editComponentAction, detachInstanceAction] : [detachInstanceAction];
const addedGroup = {
general: {
index: 1,
actions
}
};
const disabledGroup = {
clipboard: ['pasteStyle', 'resetStyle']
};
return {
add: addedGroup,
disable: disabledGroup
};
}
async switchDocument() {
//todo: handle unpublished
const {
isAllowedToSwitchDocument,
lockedBy
} = await _api__WEBPACK_IMPORTED_MODULE_6__.apiClient.getComponentLockStatus(this.getComponentId());
if (!isAllowedToSwitchDocument) {
options.showLockedByModal?.(lockedBy || '');
} else {
(0,_utils_switch_to_component__WEBPACK_IMPORTED_MODULE_11__.switchToComponent)(this.getComponentId(), this.model.get('id'), this.el);
}
}
editComponent({
trigger,
location,
secondaryLocation
}) {
if ((0,_utils_is_pro_components_supported__WEBPACK_IMPORTED_MODULE_10__.isProOutdatedForComponents)()) {
notifyComponentEditUpdate();
return;
}
if (!(0,_utils_is_pro_components_supported__WEBPACK_IMPORTED_MODULE_10__.isProComponentsSupported)() || this.isComponentCurrentlyEdited()) {
return;
}
this.switchDocument();
const editorSettings = this.model.get('editor_settings');
(0,_utils_tracking__WEBPACK_IMPORTED_MODULE_12__.trackComponentEvent)({
action: 'edited',
executedBy: 'user',
component_uid: editorSettings?.component_uid,
component_name: editorSettings?.title,
location,
secondary_location: secondaryLocation,
trigger
});
}
detachInstance({
trigger,
location,
secondaryLocation
}) {
const componentId = this.getComponentId();
const instanceId = this.model.get('id');
if (!componentId || !instanceId) {
return;
}
const handleConfirm = async () => {
try {
await (0,_utils_detach_component_instance__WEBPACK_IMPORTED_MODULE_8__.detachComponentInstance)({
instanceId,
componentId,
trackingInfo: {
location,
secondaryLocation,
trigger
}
});
} catch {
(0,_elementor_editor_notifications__WEBPACK_IMPORTED_MODULE_2__.notify)({
type: 'error',
message: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_5__.__)('Failed to detach component instance.', 'elementor'),
id: 'detach-component-instance-failed'
});
}
};
options.showDetachConfirmDialog?.(handleConfirm);
}
handleDblClick(e) {
e.stopPropagation();
if (!isUserAdministrator()) {
return;
}
if ((0,_utils_is_pro_components_supported__WEBPACK_IMPORTED_MODULE_10__.isProOutdatedForComponents)()) {
notifyComponentEditUpdate();
return;
}
if (!(0,_elementor_utils__WEBPACK_IMPORTED_MODULE_4__.hasProInstalled)()) {
notifyComponentEditUpgrade();
return;
}
const {
triggers,
locations,
secondaryLocations
} = this.eventsManagerConfig;
this.editComponent({
trigger: triggers.doubleClick,
location: locations.canvas,
secondaryLocation: secondaryLocations.canvasElement
});
}
events() {
return {
...super.events(),
dblclick: this.handleDblClick
};
}
attributes() {
return {
...super.attributes(),
'data-elementor-id': this.getComponentId()
};
}
};
}
function setInactiveRecursively(model) {
const editSettings = model.get('editSettings');
if (editSettings) {
editSettings.set('inactive', true);
}
const elements = model.get('elements');
if (elements) {
elements.forEach(childModel => {
setInactiveRecursively(childModel);
});
}
}
function isUserAdministrator() {
const legacyWindow = window;
return legacyWindow.elementor.config?.user?.is_administrator ?? false;
}
function createComponentModel() {
const legacyWindow = window;
const WidgetType = legacyWindow.elementor.modules.elements.types.Widget;
const widgetTypeInstance = new WidgetType();
const BaseWidgetModel = widgetTypeInstance.getModel();
return BaseWidgetModel.extend({
initialize(attributes, options) {
BaseWidgetModel.prototype.initialize.call(this, attributes, options);
const componentInstance = this.get('settings')?.get('component_instance');
if (componentInstance?.value) {
const componentId = componentInstance.value.component_id?.value;
if (componentId && typeof componentId === 'number') {
this.set('componentId', componentId);
}
}
this.set('isGlobal', true);
},
getTitle() {
const editorSettings = this.get('editor_settings');
const instanceTitle = editorSettings?.title;
if (instanceTitle) {
return instanceTitle;
}
const componentUid = editorSettings?.component_uid;
if (componentUid) {
const component = (0,_store_store__WEBPACK_IMPORTED_MODULE_7__.selectComponentByUid)((0,_elementor_store__WEBPACK_IMPORTED_MODULE_3__.__getState)(), componentUid);
if (component?.name) {
return component.name;
}
}
return window.elementor.getElementData(this).title;
},
getComponentId() {
return this.get('componentId') || null;
},
getComponentName() {
return this.getTitle();
},
getComponentUid() {
const editorSettings = this.get('editor_settings');
return editorSettings?.component_uid || null;
}
});
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/hooks/use-components-permissions.ts":
/*!******************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/hooks/use-components-permissions.ts ***!
\******************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ useComponentsPermissions: function() { return /* binding */ useComponentsPermissions; }
/* harmony export */ });
/* harmony import */ var _elementor_editor_current_user__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-current-user */ "@elementor/editor-current-user");
/* harmony import */ var _elementor_editor_current_user__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_current_user__WEBPACK_IMPORTED_MODULE_0__);
const useComponentsPermissions = () => {
const {
isAdmin
} = (0,_elementor_editor_current_user__WEBPACK_IMPORTED_MODULE_0__.useCurrentUserCapabilities)();
return {
canCreate: isAdmin,
canEdit: isAdmin,
canDelete: isAdmin,
canRename: isAdmin
};
};
/***/ }),
/***/ "./packages/packages/core/editor-components/src/hooks/use-components.ts":
/*!******************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/hooks/use-components.ts ***!
\******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ useComponents: function() { return /* binding */ useComponents; }
/* harmony export */ });
/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/store */ "@elementor/store");
/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_store__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _store_store__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../store/store */ "./packages/packages/core/editor-components/src/store/store.ts");
const useComponents = () => {
const components = (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__useSelector)(_store_store__WEBPACK_IMPORTED_MODULE_1__.selectComponents);
const isLoading = (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__useSelector)(_store_store__WEBPACK_IMPORTED_MODULE_1__.selectLoadIsPending);
return {
components,
isLoading
};
};
/***/ }),
/***/ "./packages/packages/core/editor-components/src/hooks/use-controls-by-widget-type.ts":
/*!*******************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/hooks/use-controls-by-widget-type.ts ***!
\*******************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ useControlsByWidgetType: function() { return /* binding */ useControlsByWidgetType; }
/* harmony export */ });
/* harmony import */ var _elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-elements */ "@elementor/editor-elements");
/* harmony import */ var _elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0__);
function useControlsByWidgetType(type) {
const elementType = (0,_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0__.getElementType)(type);
if (!elementType) {
return {};
}
const controls = iterateControls(elementType.controls);
return getControlsByBind(controls);
}
function iterateControls(controls) {
return controls.map(control => {
if (control.type === 'control' && 'bind' in control.value) {
return control;
}
if (control.type === 'section') {
return iterateControls(control.value.items);
}
return null;
}).filter(Boolean).flat();
}
function getControlsByBind(controls) {
return controls.reduce((controlsByBind, control) => ({
...controlsByBind,
[control.value.bind]: control
}), {});
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/hooks/use-sanitize-overridable-props.ts":
/*!**********************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/hooks/use-sanitize-overridable-props.ts ***!
\**********************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ useSanitizeOverridableProps: function() { return /* binding */ useSanitizeOverridableProps; }
/* harmony export */ });
/* harmony import */ var _store_store__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../store/store */ "./packages/packages/core/editor-components/src/store/store.ts");
/* 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");
function useSanitizeOverridableProps(componentId, instanceElementId) {
const overridableProps = (0,_store_store__WEBPACK_IMPORTED_MODULE_0__.useOverridableProps)(componentId);
const isSanitized = (0,_store_store__WEBPACK_IMPORTED_MODULE_0__.useIsSanitizedComponent)(componentId, 'overridableProps');
if (!overridableProps || !componentId) {
return undefined;
}
if (isSanitized) {
return overridableProps;
}
return (0,_utils_filter_valid_overridable_props__WEBPACK_IMPORTED_MODULE_1__.filterValidOverridableProps)(overridableProps, instanceElementId);
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/init.ts":
/*!**************************************************************!*\
!*** ./packages/packages/core/editor-components/src/init.ts ***!
\**************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ init: function() { return /* binding */ init; }
/* harmony export */ });
/* harmony import */ var _elementor_editor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor */ "@elementor/editor");
/* harmony import */ var _elementor_editor__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-canvas */ "@elementor/editor-canvas");
/* harmony import */ var _elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _elementor_editor_documents__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/editor-documents */ "@elementor/editor-documents");
/* harmony import */ var _elementor_editor_documents__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_documents__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @elementor/editor-editing-panel */ "@elementor/editor-editing-panel");
/* harmony import */ var _elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var _elementor_editor_elements_panel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @elementor/editor-elements-panel */ "@elementor/editor-elements-panel");
/* harmony import */ var _elementor_editor_elements_panel__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_elements_panel__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var _elementor_editor_embedded_documents_manager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @elementor/editor-embedded-documents-manager */ "@elementor/editor-embedded-documents-manager");
/* 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__);
/* harmony import */ var _elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @elementor/editor-v1-adapters */ "@elementor/editor-v1-adapters");
/* harmony import */ var _elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_6__);
/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @elementor/store */ "@elementor/store");
/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_elementor_store__WEBPACK_IMPORTED_MODULE_7__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_8__);
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
/* harmony import */ var _populate_store__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./populate-store */ "./packages/packages/core/editor-components/src/populate-store.ts");
/* 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");
/* 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");
/* 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");
/* harmony import */ var _store_store__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./store/store */ "./packages/packages/core/editor-components/src/store/store.ts");
/* 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");
/* 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");
function init() {
(0,_elementor_store__WEBPACK_IMPORTED_MODULE_7__.__registerSlice)(_store_store__WEBPACK_IMPORTED_MODULE_22__.slice);
(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)({
...options,
showLockedByModal: _components_in_edit_mode__WEBPACK_IMPORTED_MODULE_14__.openEditModeDialog,
showDetachConfirmDialog: _components_detach_instance_confirmation_dialog__WEBPACK_IMPORTED_MODULE_13__.openDetachConfirmDialog
}));
window.elementorCommon.__beforeSave = _sync_before_save__WEBPACK_IMPORTED_MODULE_23__.beforeSave;
(0,_elementor_editor_elements_panel__WEBPACK_IMPORTED_MODULE_4__.injectTab)({
id: 'components',
label: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_8__.__)('Components', 'elementor'),
component: _components_components_tab_components__WEBPACK_IMPORTED_MODULE_12__.Components,
position: 1
});
(0,_elementor_editor__WEBPACK_IMPORTED_MODULE_0__.injectIntoLogic)({
id: 'components-populate-store',
component: _populate_store__WEBPACK_IMPORTED_MODULE_18__.PopulateStore
});
(0,_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_6__.registerDataHook)('after', 'editor/documents/attach-preview', () => {
const {
id,
config
} = (0,_elementor_editor_documents__WEBPACK_IMPORTED_MODULE_2__.getV1CurrentDocument)() ?? {};
if (!id) {
return;
}
(0,_store_actions_remove_component_styles__WEBPACK_IMPORTED_MODULE_21__.removeComponentStyles)(id);
void (0,_store_actions_load_components_assets__WEBPACK_IMPORTED_MODULE_20__.loadComponentsAssets)(config?.elements ?? []);
});
_elementor_editor_embedded_documents_manager__WEBPACK_IMPORTED_MODULE_5__.embeddedDocumentsManager.onDocumentLoad((_documentId, data) => {
void (0,_store_actions_load_components_assets__WEBPACK_IMPORTED_MODULE_20__.loadComponentsAssets)(data.elements ?? []);
});
(0,_elementor_editor__WEBPACK_IMPORTED_MODULE_0__.injectIntoLogic)({
id: 'templates',
component: _components_load_template_components__WEBPACK_IMPORTED_MODULE_16__.LoadTemplateComponents
});
(0,_elementor_editor_editing_panel__WEBPACK_IMPORTED_MODULE_3__.registerEditingPanelReplacement)({
id: 'component-instance-edit-panel',
condition: (_, elementType) => elementType.key === 'e-component',
component: _components_instance_editing_panel_instance_editing_panel__WEBPACK_IMPORTED_MODULE_15__.InstanceEditingPanel
});
_elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_1__.settingsTransformersRegistry.register('component-instance', _component_instance_transformer__WEBPACK_IMPORTED_MODULE_9__.componentInstanceTransformer);
_elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_1__.settingsTransformersRegistry.register('overridable', _component_overridable_transformer__WEBPACK_IMPORTED_MODULE_10__.componentOverridableTransformer);
_elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_1__.settingsTransformersRegistry.register('override', _component_override_transformer__WEBPACK_IMPORTED_MODULE_11__.componentOverrideTransformer);
(0,_prevent_circular_nesting__WEBPACK_IMPORTED_MODULE_19__.initCircularNestingPrevention)();
(0,_sync_load_component_data_after_instance_added__WEBPACK_IMPORTED_MODULE_24__.initLoadComponentDataAfterInstanceAdded)();
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/populate-store.ts":
/*!************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/populate-store.ts ***!
\************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ PopulateStore: function() { return /* binding */ PopulateStore; }
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/store */ "@elementor/store");
/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_store__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _store_thunks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./store/thunks */ "./packages/packages/core/editor-components/src/store/thunks.ts");
function PopulateStore() {
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
(0,_elementor_store__WEBPACK_IMPORTED_MODULE_1__.__dispatch)((0,_store_thunks__WEBPACK_IMPORTED_MODULE_2__.loadComponents)());
}, []);
return null;
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/prevent-circular-nesting.ts":
/*!**********************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/prevent-circular-nesting.ts ***!
\**********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ extractComponentIdsFromElements: function() { return /* binding */ extractComponentIdsFromElements; },
/* harmony export */ initCircularNestingPrevention: function() { return /* binding */ initCircularNestingPrevention; },
/* harmony export */ wouldCreateCircularNesting: function() { return /* binding */ wouldCreateCircularNesting; }
/* harmony export */ });
/* harmony import */ var _elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-elements */ "@elementor/editor-elements");
/* harmony import */ var _elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _elementor_editor_notifications__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-notifications */ "@elementor/editor-notifications");
/* harmony import */ var _elementor_editor_notifications__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_notifications__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/editor-v1-adapters */ "@elementor/editor-v1-adapters");
/* harmony import */ var _elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @elementor/store */ "@elementor/store");
/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_elementor_store__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var _store_store__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./store/store */ "./packages/packages/core/editor-components/src/store/store.ts");
const COMPONENT_TYPE = 'e-component';
const COMPONENT_CIRCULAR_NESTING_ALERT = {
type: 'default',
message: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__.__)("Can't add this component - components that contain each other can't be nested.", 'elementor'),
id: 'circular-component-nesting-blocked'
};
function initCircularNestingPrevention() {
(0,_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_2__.blockCommand)({
command: 'document/elements/create',
condition: blockCircularCreate
});
(0,_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_2__.blockCommand)({
command: 'document/elements/move',
condition: blockCircularMove
});
(0,_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_2__.blockCommand)({
command: 'document/elements/paste',
condition: blockCircularPaste
});
}
// Note that this function only checks for direct circular nesting, not indirect nesting
function wouldCreateCircularNesting(componentIdToAdd) {
if (componentIdToAdd === undefined) {
return false;
}
const state = (0,_elementor_store__WEBPACK_IMPORTED_MODULE_3__.__getState)();
const currentComponentId = (0,_store_store__WEBPACK_IMPORTED_MODULE_5__.selectCurrentComponentId)(state);
const path = (0,_store_store__WEBPACK_IMPORTED_MODULE_5__.selectPath)(state);
if (currentComponentId === null) {
return false;
}
if (componentIdToAdd === currentComponentId) {
return true;
}
return path.some(item => item.componentId === componentIdToAdd);
}
function extractComponentIdFromModel(model) {
if (!model) {
return null;
}
const isComponent = model.widgetType === COMPONENT_TYPE;
if (!isComponent) {
return null;
}
return model.settings?.component_instance?.value?.component_id?.value ?? null;
}
function extractComponentIdFromElement(element) {
if (element.widgetType !== COMPONENT_TYPE) {
return null;
}
return element.settings?.component_instance?.value?.component_id?.value ?? null;
}
function extractComponentIdsFromElements(elements) {
const ids = [];
for (const element of elements) {
const componentId = extractComponentIdFromElement(element);
if (componentId !== null) {
ids.push(componentId);
}
if (element.elements?.length) {
ids.push(...extractComponentIdsFromElements(element.elements));
}
}
return ids;
}
function extractComponentIdFromContainer(container) {
const widgetType = container.model?.get?.('widgetType');
if (widgetType !== COMPONENT_TYPE) {
return null;
}
const settings = container.model?.get?.('settings');
const componentInstance = settings?.get?.('component_instance');
return componentInstance?.value?.component_id?.value ?? null;
}
function blockCircularCreate(args) {
const componentId = extractComponentIdFromModel(args.model);
if (componentId === null) {
return false;
}
const isBlocked = wouldCreateCircularNesting(componentId);
if (isBlocked) {
(0,_elementor_editor_notifications__WEBPACK_IMPORTED_MODULE_1__.notify)(COMPONENT_CIRCULAR_NESTING_ALERT);
}
return isBlocked;
}
function blockCircularMove(args) {
const {
containers = [args.container]
} = args;
const hasCircularComponent = containers.some(container => {
if (!container) {
return false;
}
const allElements = (0,_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0__.getAllDescendants)(container);
return allElements.some(element => {
const componentId = extractComponentIdFromContainer(element);
if (componentId === null) {
return false;
}
return wouldCreateCircularNesting(componentId);
});
});
if (hasCircularComponent) {
(0,_elementor_editor_notifications__WEBPACK_IMPORTED_MODULE_1__.notify)(COMPONENT_CIRCULAR_NESTING_ALERT);
}
return hasCircularComponent;
}
function blockCircularPaste(args) {
const {
storageType
} = args;
if (storageType !== 'localstorage') {
return false;
}
const data = window?.elementorCommon?.storage?.get();
if (!data?.clipboard?.elements) {
return false;
}
const allComponentIds = extractComponentIdsFromElements(data.clipboard.elements);
const hasCircularComponent = allComponentIds.some(wouldCreateCircularNesting);
if (hasCircularComponent) {
(0,_elementor_editor_notifications__WEBPACK_IMPORTED_MODULE_1__.notify)(COMPONENT_CIRCULAR_NESTING_ALERT);
}
return hasCircularComponent;
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/prop-types/component-instance-override-prop-type.ts":
/*!**********************************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/prop-types/component-instance-override-prop-type.ts ***!
\**********************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ componentInstanceOverridePropTypeUtil: function() { return /* binding */ componentInstanceOverridePropTypeUtil; }
/* harmony export */ });
/* harmony import */ var _elementor_editor_props__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-props */ "@elementor/editor-props");
/* harmony import */ var _elementor_editor_props__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_props__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _elementor_schema__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/schema */ "@elementor/schema");
/* harmony import */ var _elementor_schema__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_schema__WEBPACK_IMPORTED_MODULE_1__);
const componentInstanceOverridePropTypeUtil = (0,_elementor_editor_props__WEBPACK_IMPORTED_MODULE_0__.createPropUtils)('override', _elementor_schema__WEBPACK_IMPORTED_MODULE_1__.z.object({
override_key: _elementor_schema__WEBPACK_IMPORTED_MODULE_1__.z.string(),
override_value: _elementor_schema__WEBPACK_IMPORTED_MODULE_1__.z.unknown(),
schema_source: _elementor_schema__WEBPACK_IMPORTED_MODULE_1__.z.object({
type: _elementor_schema__WEBPACK_IMPORTED_MODULE_1__.z.literal('component'),
id: _elementor_schema__WEBPACK_IMPORTED_MODULE_1__.z.number()
})
}));
/***/ }),
/***/ "./packages/packages/core/editor-components/src/prop-types/component-instance-overrides-prop-type.ts":
/*!***********************************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/prop-types/component-instance-overrides-prop-type.ts ***!
\***********************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ componentInstanceOverridesPropTypeUtil: function() { return /* binding */ componentInstanceOverridesPropTypeUtil; }
/* harmony export */ });
/* harmony import */ var _elementor_editor_props__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-props */ "@elementor/editor-props");
/* harmony import */ var _elementor_editor_props__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_props__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _elementor_schema__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/schema */ "@elementor/schema");
/* harmony import */ var _elementor_schema__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_schema__WEBPACK_IMPORTED_MODULE_1__);
/* 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");
/* 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");
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([]));
/***/ }),
/***/ "./packages/packages/core/editor-components/src/prop-types/component-instance-prop-type.ts":
/*!*************************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/prop-types/component-instance-prop-type.ts ***!
\*************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ componentInstancePropTypeUtil: function() { return /* binding */ componentInstancePropTypeUtil; }
/* harmony export */ });
/* harmony import */ var _elementor_editor_props__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-props */ "@elementor/editor-props");
/* harmony import */ var _elementor_editor_props__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_props__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _elementor_schema__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/schema */ "@elementor/schema");
/* harmony import */ var _elementor_schema__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_schema__WEBPACK_IMPORTED_MODULE_1__);
/* 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");
const componentInstancePropTypeUtil = (0,_elementor_editor_props__WEBPACK_IMPORTED_MODULE_0__.createPropUtils)('component-instance', _elementor_schema__WEBPACK_IMPORTED_MODULE_1__.z.object({
component_id: _elementor_editor_props__WEBPACK_IMPORTED_MODULE_0__.numberPropTypeUtil.schema,
overrides: _elementor_schema__WEBPACK_IMPORTED_MODULE_1__.z.optional(_component_instance_overrides_prop_type__WEBPACK_IMPORTED_MODULE_2__.componentInstanceOverridesPropTypeUtil.schema)
}));
/***/ }),
/***/ "./packages/packages/core/editor-components/src/prop-types/component-overridable-prop-type.ts":
/*!****************************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/prop-types/component-overridable-prop-type.ts ***!
\****************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ componentOverridablePropTypeUtil: function() { return /* binding */ componentOverridablePropTypeUtil; }
/* harmony export */ });
/* harmony import */ var _elementor_editor_props__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-props */ "@elementor/editor-props");
/* harmony import */ var _elementor_editor_props__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_props__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _elementor_schema__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/schema */ "@elementor/schema");
/* harmony import */ var _elementor_schema__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_schema__WEBPACK_IMPORTED_MODULE_1__);
const componentOverridablePropTypeUtil = (0,_elementor_editor_props__WEBPACK_IMPORTED_MODULE_0__.createPropUtils)('overridable', _elementor_schema__WEBPACK_IMPORTED_MODULE_1__.z.object({
override_key: _elementor_schema__WEBPACK_IMPORTED_MODULE_1__.z.string(),
origin_value: _elementor_schema__WEBPACK_IMPORTED_MODULE_1__.z.object({
$$type: _elementor_schema__WEBPACK_IMPORTED_MODULE_1__.z.string(),
value: _elementor_schema__WEBPACK_IMPORTED_MODULE_1__.z.unknown()
}).nullable()
}));
/***/ }),
/***/ "./packages/packages/core/editor-components/src/provider/component-instance-context.tsx":
/*!**********************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/provider/component-instance-context.tsx ***!
\**********************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ ComponentInstanceProvider: function() { return /* binding */ ComponentInstanceProvider; },
/* harmony export */ useComponentId: function() { return /* binding */ useComponentId; },
/* harmony export */ useComponentInstanceOverrides: function() { return /* binding */ useComponentInstanceOverrides; },
/* harmony export */ useComponentOverridableProps: function() { return /* binding */ useComponentOverridableProps; }
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
const ComponentInstanceContext = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(null);
function ComponentInstanceProvider({
children,
...props
}) {
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(ComponentInstanceContext.Provider, {
value: props
}, children);
}
function useComponentInstanceContext() {
const context = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(ComponentInstanceContext);
if (!context) {
throw new Error('useComponentInstanceContext must be used within a ComponentInstanceProvider');
}
return context;
}
const useComponentId = () => useComponentInstanceContext().componentId;
const useComponentInstanceOverrides = () => useComponentInstanceContext().overrides;
const useComponentOverridableProps = () => useComponentInstanceContext().overridableProps;
/***/ }),
/***/ "./packages/packages/core/editor-components/src/provider/overridable-prop-context.tsx":
/*!********************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/provider/overridable-prop-context.tsx ***!
\********************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ OverridablePropProvider: function() { return /* binding */ OverridablePropProvider; },
/* harmony export */ useComponentInstanceElement: function() { return /* binding */ useComponentInstanceElement; },
/* harmony export */ useOverridablePropValue: function() { return /* binding */ useOverridablePropValue; }
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
const OverridablePropContext = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(null);
function OverridablePropProvider({
children,
...props
}) {
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(OverridablePropContext.Provider, {
value: props
}, children);
}
const useOverridablePropValue = () => (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(OverridablePropContext)?.value;
const useComponentInstanceElement = () => (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(OverridablePropContext)?.componentInstanceElement;
/***/ }),
/***/ "./packages/packages/core/editor-components/src/store/actions/load-components-assets.ts":
/*!**********************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/store/actions/load-components-assets.ts ***!
\**********************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ loadComponentsAssets: function() { return /* binding */ loadComponentsAssets; }
/* harmony export */ });
/* harmony import */ var _elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-documents */ "@elementor/editor-documents");
/* harmony import */ var _elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _elementor_editor_embedded_documents_manager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-embedded-documents-manager */ "@elementor/editor-embedded-documents-manager");
/* 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__);
/* 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");
/* 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");
async function loadComponentsAssets(elements) {
if (!elements.length) {
return;
}
const documents = await (0,_utils_get_component_documents__WEBPACK_IMPORTED_MODULE_2__.getComponentDocuments)({
elements,
isRecursive: false
});
updateDocumentState(documents);
documents.forEach((document, id) => {
_elementor_editor_embedded_documents_manager__WEBPACK_IMPORTED_MODULE_1__.embeddedDocumentsManager.setDocument(id, document);
});
await (0,_load_components_overridable_props__WEBPACK_IMPORTED_MODULE_3__.loadComponentsOverridableProps)([...documents.keys()]);
}
function updateDocumentState(documents) {
const isDrafted = [...documents.values()].some(_elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0__.isDocumentDirty);
if (isDrafted) {
(0,_elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0__.setDocumentModifiedStatus)(true);
}
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/store/actions/load-components-overridable-props.ts":
/*!*********************************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/store/actions/load-components-overridable-props.ts ***!
\*********************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ loadComponentsOverridableProps: function() { return /* binding */ loadComponentsOverridableProps; }
/* harmony export */ });
/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/store */ "@elementor/store");
/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_store__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../api */ "./packages/packages/core/editor-components/src/api.ts");
/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../store */ "./packages/packages/core/editor-components/src/store/store.ts");
async function loadComponentsOverridableProps(componentIds) {
const unloadedIds = componentIds.filter(id => !(0,_store__WEBPACK_IMPORTED_MODULE_2__.selectIsOverridablePropsLoaded)((0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__getState)(), id));
if (!unloadedIds.length) {
return;
}
const {
data
} = await _api__WEBPACK_IMPORTED_MODULE_1__.apiClient.getOverridableProps(unloadedIds);
(0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__dispatch)(_store__WEBPACK_IMPORTED_MODULE_2__.slice.actions.loadOverridableProps(data));
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/store/actions/remove-component-styles.ts":
/*!***********************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/store/actions/remove-component-styles.ts ***!
\***********************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ removeComponentStyles: function() { return /* binding */ removeComponentStyles; }
/* harmony export */ });
/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../api */ "./packages/packages/core/editor-components/src/api.ts");
function removeComponentStyles(id) {
_api__WEBPACK_IMPORTED_MODULE_0__.apiClient.invalidateComponentConfigCache(id);
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/store/actions/update-overridable-prop.ts":
/*!***********************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/store/actions/update-overridable-prop.ts ***!
\***********************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ updateOverridableProp: function() { return /* binding */ updateOverridableProp; }
/* harmony export */ });
/* 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");
/* harmony import */ var _dispatchers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dispatchers */ "./packages/packages/core/editor-components/src/store/dispatchers.ts");
/* harmony import */ var _selectors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../selectors */ "./packages/packages/core/editor-components/src/store/selectors.ts");
function updateOverridableProp(componentId, propValue, originPropFields) {
const overridableProps = _selectors__WEBPACK_IMPORTED_MODULE_2__.componentsSelectors.getOverridableProps(componentId);
if (!overridableProps) {
return;
}
const existingOverridableProp = overridableProps.props[propValue.override_key];
if (!existingOverridableProp) {
return;
}
const originValue = (0,_utils_resolve_override_prop_value__WEBPACK_IMPORTED_MODULE_0__.resolveOverridePropValue)(propValue.origin_value);
const newOverridableProp = originPropFields ? {
originValue,
originPropFields
} : {
originValue
};
const newOverridableProps = {
...overridableProps,
props: {
...overridableProps.props,
[existingOverridableProp.overrideKey]: {
...existingOverridableProp,
...newOverridableProp
}
}
};
_dispatchers__WEBPACK_IMPORTED_MODULE_1__.componentsActions.setOverridableProps(componentId, newOverridableProps);
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/store/dispatchers.ts":
/*!***************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/store/dispatchers.ts ***!
\***************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ componentsActions: function() { return /* binding */ componentsActions; }
/* harmony export */ });
/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/store */ "@elementor/store");
/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_store__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./store */ "./packages/packages/core/editor-components/src/store/store.ts");
function safeDispatch() {
return (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__getStore)()?.dispatch;
}
const componentsActions = {
add(components) {
(0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__dispatch)(_store__WEBPACK_IMPORTED_MODULE_1__.slice.actions.add(components));
},
load(components) {
(0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__dispatch)(_store__WEBPACK_IMPORTED_MODULE_1__.slice.actions.load(components));
},
addUnpublished(component) {
(0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__dispatch)(_store__WEBPACK_IMPORTED_MODULE_1__.slice.actions.addUnpublished(component));
},
removeUnpublished(uids) {
(0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__dispatch)(_store__WEBPACK_IMPORTED_MODULE_1__.slice.actions.removeUnpublished(uids));
},
resetUnpublished() {
(0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__dispatch)(_store__WEBPACK_IMPORTED_MODULE_1__.slice.actions.resetUnpublished());
},
addCreatedThisSession(uid) {
(0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__dispatch)(_store__WEBPACK_IMPORTED_MODULE_1__.slice.actions.addCreatedThisSession(uid));
},
removeCreatedThisSession(uid) {
(0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__dispatch)(_store__WEBPACK_IMPORTED_MODULE_1__.slice.actions.removeCreatedThisSession(uid));
},
archive(componentId) {
(0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__dispatch)(_store__WEBPACK_IMPORTED_MODULE_1__.slice.actions.archive(componentId));
},
setCurrentComponentId(id) {
safeDispatch()?.(_store__WEBPACK_IMPORTED_MODULE_1__.slice.actions.setCurrentComponentId(id));
},
setPath(path) {
safeDispatch()?.(_store__WEBPACK_IMPORTED_MODULE_1__.slice.actions.setPath(path));
},
setOverridableProps(componentId, overridableProps) {
(0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__dispatch)(_store__WEBPACK_IMPORTED_MODULE_1__.slice.actions.setOverridableProps({
componentId,
overridableProps
}));
},
rename(componentUid, name) {
(0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__dispatch)(_store__WEBPACK_IMPORTED_MODULE_1__.slice.actions.rename({
componentUid,
name
}));
},
cleanUpdatedComponentNames() {
(0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__dispatch)(_store__WEBPACK_IMPORTED_MODULE_1__.slice.actions.cleanUpdatedComponentNames());
},
updateComponentSanitizedAttribute(componentId, attribute) {
(0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__dispatch)(_store__WEBPACK_IMPORTED_MODULE_1__.slice.actions.updateComponentSanitizedAttribute({
componentId,
attribute
}));
},
resetSanitizedComponents() {
(0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__dispatch)(_store__WEBPACK_IMPORTED_MODULE_1__.slice.actions.resetSanitizedComponents());
}
};
/***/ }),
/***/ "./packages/packages/core/editor-components/src/store/extensible-slice.ts":
/*!********************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/store/extensible-slice.ts ***!
\********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ __resetExtraReducers: function() { return /* binding */ __resetExtraReducers; },
/* harmony export */ createComponentsAction: function() { return /* binding */ createComponentsAction; },
/* harmony export */ registerComponentsReducer: function() { return /* binding */ registerComponentsReducer; },
/* harmony export */ slice: function() { return /* binding */ slice; }
/* harmony export */ });
/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/store */ "@elementor/store");
/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_store__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _store_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./store-types */ "./packages/packages/core/editor-components/src/store/store-types.ts");
/* harmony import */ var _thunks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./thunks */ "./packages/packages/core/editor-components/src/store/thunks.ts");
const extraReducersMap = new Map();
function registerComponentsReducer(name, reducer) {
extraReducersMap.set(`${_store_types__WEBPACK_IMPORTED_MODULE_1__.SLICE_NAME}/${name}`, reducer);
}
function createComponentsAction(name) {
const action = (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__createAction)(`${_store_types__WEBPACK_IMPORTED_MODULE_1__.SLICE_NAME}/${name}`);
return {
action,
register(reducer) {
registerComponentsReducer(name, reducer);
},
dispatch(payload) {
(0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__dispatch)(action(payload));
}
};
}
function __resetExtraReducers() {
extraReducersMap.clear();
}
const baseSlice = (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__createSlice)({
name: _store_types__WEBPACK_IMPORTED_MODULE_1__.SLICE_NAME,
initialState: _store_types__WEBPACK_IMPORTED_MODULE_1__.initialState,
reducers: {
add: (state, {
payload
}) => {
if (Array.isArray(payload)) {
state.data = [...payload, ...state.data];
} else {
state.data.unshift(payload);
}
},
load: (state, {
payload
}) => {
state.data = payload;
},
addUnpublished: (state, {
payload
}) => {
state.unpublishedData.unshift(payload);
},
removeUnpublished: (state, {
payload
}) => {
const uidsToRemove = Array.isArray(payload) ? payload : [payload];
state.unpublishedData = state.unpublishedData.filter(component => !uidsToRemove.includes(component.uid));
},
resetUnpublished: state => {
state.unpublishedData = [];
},
addCreatedThisSession: (state, {
payload
}) => {
state.createdThisSession.push(payload);
},
removeCreatedThisSession: (state, {
payload
}) => {
state.createdThisSession = state.createdThisSession.filter(uid => uid !== payload);
},
archive: (state, {
payload
}) => {
const component = state.data.find(comp => comp.id === payload);
if (component) {
component.isArchived = true;
state.archivedThisSession.push(payload);
}
},
setCurrentComponentId: (state, {
payload
}) => {
state.currentComponentId = payload;
},
setPath: (state, {
payload
}) => {
state.path = payload;
},
setOverridableProps: (state, {
payload
}) => {
const component = state.data.find(comp => comp.id === payload.componentId);
if (!component) {
return;
}
component.overridableProps = payload.overridableProps;
},
loadOverridableProps: (state, {
payload
}) => {
const componentIds = Object.keys(payload);
componentIds.forEach(id => {
const componentId = Number(id);
const overridableProps = payload[componentId];
const component = state.data.find(comp => comp.id === componentId);
if (!component || !overridableProps) {
return;
}
component.overridableProps = overridableProps;
});
},
rename: (state, {
payload
}) => {
const component = state.data.find(comp => comp.uid === payload.componentUid);
if (!component) {
return;
}
if (component.id) {
state.updatedComponentNames[component.id] = payload.name;
}
component.name = payload.name;
},
cleanUpdatedComponentNames: state => {
state.updatedComponentNames = {};
},
updateComponentSanitizedAttribute: (state, {
payload: {
componentId,
attribute
}
}) => {
if (!state.sanitized[componentId]) {
state.sanitized[componentId] = {};
}
state.sanitized[componentId][attribute] = true;
},
resetSanitizedComponents: state => {
state.sanitized = {};
}
},
extraReducers: builder => {
builder.addCase(_thunks__WEBPACK_IMPORTED_MODULE_2__.loadComponents.fulfilled, (state, {
payload
}) => {
state.data = payload;
state.loadStatus = 'idle';
});
builder.addCase(_thunks__WEBPACK_IMPORTED_MODULE_2__.loadComponents.pending, state => {
state.loadStatus = 'pending';
});
builder.addCase(_thunks__WEBPACK_IMPORTED_MODULE_2__.loadComponents.rejected, state => {
state.loadStatus = 'error';
});
}
});
const slice = {
...baseSlice,
reducer(state, action) {
const nextState = baseSlice.reducer(state, action);
const extraReducer = extraReducersMap.get(action.type);
if (!extraReducer || !nextState) {
return nextState;
}
const clonedState = structuredClone(nextState);
extraReducer(clonedState, action);
return clonedState;
}
};
/***/ }),
/***/ "./packages/packages/core/editor-components/src/store/selectors.ts":
/*!*************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/store/selectors.ts ***!
\*************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ componentsSelectors: function() { return /* binding */ componentsSelectors; }
/* harmony export */ });
/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/store */ "@elementor/store");
/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_store__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./store */ "./packages/packages/core/editor-components/src/store/store.ts");
function safeGetState() {
return (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__getStore)()?.getState();
}
const componentsSelectors = {
getOverridableProps(componentId) {
return (0,_store__WEBPACK_IMPORTED_MODULE_1__.selectOverridableProps)((0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__getState)(), componentId);
},
getCurrentComponent() {
return (0,_store__WEBPACK_IMPORTED_MODULE_1__.selectCurrentComponent)((0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__getState)());
},
getCurrentComponentId() {
const state = safeGetState();
if (!state) {
return null;
}
return (0,_store__WEBPACK_IMPORTED_MODULE_1__.selectCurrentComponentId)(state);
},
getUnpublishedComponents() {
return (0,_store__WEBPACK_IMPORTED_MODULE_1__.selectUnpublishedComponents)((0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__getState)());
},
getUpdatedComponentNames() {
return (0,_store__WEBPACK_IMPORTED_MODULE_1__.selectUpdatedComponentNames)((0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__getState)());
},
getArchivedThisSession() {
return (0,_store__WEBPACK_IMPORTED_MODULE_1__.selectArchivedThisSession)((0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__getState)());
},
getCreatedThisSession() {
return (0,_store__WEBPACK_IMPORTED_MODULE_1__.selectCreatedThisSession)((0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__getState)());
},
getComponents() {
return (0,_store__WEBPACK_IMPORTED_MODULE_1__.selectComponents)((0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__getState)());
},
getComponentByUid(componentUid) {
return (0,_store__WEBPACK_IMPORTED_MODULE_1__.selectComponentByUid)((0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__getState)(), componentUid);
}
};
/***/ }),
/***/ "./packages/packages/core/editor-components/src/store/store-types.ts":
/*!***************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/store/store-types.ts ***!
\***************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ SLICE_NAME: function() { return /* binding */ SLICE_NAME; },
/* harmony export */ initialState: function() { return /* binding */ initialState; }
/* harmony export */ });
const initialState = {
data: [],
unpublishedData: [],
loadStatus: 'idle',
createdThisSession: [],
archivedThisSession: [],
path: [],
currentComponentId: null,
updatedComponentNames: {},
sanitized: {}
};
const SLICE_NAME = 'components';
/***/ }),
/***/ "./packages/packages/core/editor-components/src/store/store.ts":
/*!*********************************************************************!*\
!*** ./packages/packages/core/editor-components/src/store/store.ts ***!
\*********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ SLICE_NAME: function() { return /* reexport safe */ _store_types__WEBPACK_IMPORTED_MODULE_1__.SLICE_NAME; },
/* harmony export */ __resetExtraReducers: function() { return /* reexport safe */ _extensible_slice__WEBPACK_IMPORTED_MODULE_2__.__resetExtraReducers; },
/* harmony export */ createComponentsAction: function() { return /* reexport safe */ _extensible_slice__WEBPACK_IMPORTED_MODULE_2__.createComponentsAction; },
/* harmony export */ initialState: function() { return /* reexport safe */ _store_types__WEBPACK_IMPORTED_MODULE_1__.initialState; },
/* harmony export */ registerComponentsReducer: function() { return /* reexport safe */ _extensible_slice__WEBPACK_IMPORTED_MODULE_2__.registerComponentsReducer; },
/* harmony export */ selectArchivedThisSession: function() { return /* binding */ selectArchivedThisSession; },
/* harmony export */ selectComponent: function() { return /* binding */ selectComponent; },
/* harmony export */ selectComponentByUid: function() { return /* binding */ selectComponentByUid; },
/* harmony export */ selectComponents: function() { return /* binding */ selectComponents; },
/* harmony export */ selectCreatedThisSession: function() { return /* binding */ selectCreatedThisSession; },
/* harmony export */ selectCurrentComponent: function() { return /* binding */ selectCurrentComponent; },
/* harmony export */ selectCurrentComponentId: function() { return /* binding */ selectCurrentComponentId; },
/* harmony export */ selectData: function() { return /* binding */ selectData; },
/* harmony export */ selectIsOverridablePropsLoaded: function() { return /* binding */ selectIsOverridablePropsLoaded; },
/* harmony export */ selectLoadIsError: function() { return /* binding */ selectLoadIsError; },
/* harmony export */ selectLoadIsPending: function() { return /* binding */ selectLoadIsPending; },
/* harmony export */ selectOverridableProps: function() { return /* binding */ selectOverridableProps; },
/* harmony export */ selectPath: function() { return /* binding */ selectPath; },
/* harmony export */ selectUnpublishedComponents: function() { return /* binding */ selectUnpublishedComponents; },
/* harmony export */ selectUpdatedComponentNames: function() { return /* binding */ selectUpdatedComponentNames; },
/* harmony export */ slice: function() { return /* reexport safe */ _extensible_slice__WEBPACK_IMPORTED_MODULE_2__.slice; },
/* harmony export */ useComponent: function() { return /* binding */ useComponent; },
/* harmony export */ useCurrentComponent: function() { return /* binding */ useCurrentComponent; },
/* harmony export */ useCurrentComponentId: function() { return /* binding */ useCurrentComponentId; },
/* harmony export */ useIsSanitizedComponent: function() { return /* binding */ useIsSanitizedComponent; },
/* harmony export */ useOverridableProps: function() { return /* binding */ useOverridableProps; }
/* harmony export */ });
/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/store */ "@elementor/store");
/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_store__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _store_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./store-types */ "./packages/packages/core/editor-components/src/store/store-types.ts");
/* harmony import */ var _extensible_slice__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./extensible-slice */ "./packages/packages/core/editor-components/src/store/extensible-slice.ts");
const selectData = state => state[_store_types__WEBPACK_IMPORTED_MODULE_1__.SLICE_NAME].data;
const selectArchivedThisSession = state => state[_store_types__WEBPACK_IMPORTED_MODULE_1__.SLICE_NAME].archivedThisSession;
const selectLoadStatus = state => state[_store_types__WEBPACK_IMPORTED_MODULE_1__.SLICE_NAME].loadStatus;
const selectUnpublishedData = state => state[_store_types__WEBPACK_IMPORTED_MODULE_1__.SLICE_NAME].unpublishedData;
const getCreatedThisSession = state => state[_store_types__WEBPACK_IMPORTED_MODULE_1__.SLICE_NAME].createdThisSession;
const getPath = state => state[_store_types__WEBPACK_IMPORTED_MODULE_1__.SLICE_NAME].path;
const getCurrentComponentId = state => state[_store_types__WEBPACK_IMPORTED_MODULE_1__.SLICE_NAME].currentComponentId;
const selectComponent = (state, componentId) => state[_store_types__WEBPACK_IMPORTED_MODULE_1__.SLICE_NAME].data.find(component => component.id === componentId);
const useComponent = componentId => {
return (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__useSelector)(state => componentId ? selectComponent(state, componentId) : null);
};
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);
const selectComponents = (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__createSelector)(selectData, selectUnpublishedData, (data, unpublishedData) => [...unpublishedData.map(item => ({
uid: item.uid,
name: item.name,
overridableProps: item.overridableProps
})), ...data.filter(component => !component.isArchived)]);
const selectUnpublishedComponents = (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__createSelector)(selectUnpublishedData, unpublishedData => unpublishedData);
const selectLoadIsPending = (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__createSelector)(selectLoadStatus, status => status === 'pending');
const selectLoadIsError = (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__createSelector)(selectLoadStatus, status => status === 'error');
const selectCreatedThisSession = (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__createSelector)(getCreatedThisSession, createdThisSession => createdThisSession);
const DEFAULT_OVERRIDABLE_PROPS = {
props: {},
groups: {
items: {},
order: []
}
};
const selectOverridableProps = (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__createSelector)(selectComponent, component => {
if (!component) {
return undefined;
}
return component.overridableProps ?? DEFAULT_OVERRIDABLE_PROPS;
});
const useOverridableProps = componentId => {
return (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__useSelector)(state => componentId ? selectOverridableProps(state, componentId) : null);
};
const selectIsOverridablePropsLoaded = (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__createSelector)(selectComponent, component => {
return !!component?.overridableProps;
});
const selectPath = (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__createSelector)(getPath, path => path);
const selectCurrentComponentId = (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__createSelector)(getCurrentComponentId, currentComponentId => currentComponentId);
const selectCurrentComponent = (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__createSelector)(selectData, getCurrentComponentId, (data, currentComponentId) => data.find(component => component.id === currentComponentId));
const useCurrentComponentId = () => {
return (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__useSelector)(selectCurrentComponentId);
};
const useCurrentComponent = () => {
return (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__useSelector)(selectCurrentComponent);
};
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]) => ({
componentId: Number(componentId),
title
})));
const useSanitizedComponents = () => {
return (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__useSelector)(state => state[_store_types__WEBPACK_IMPORTED_MODULE_1__.SLICE_NAME].sanitized);
};
const useIsSanitizedComponent = (componentId, key) => {
const sanitizedComponents = useSanitizedComponents();
if (!componentId) {
return false;
}
return !!sanitizedComponents[componentId]?.[key];
};
/***/ }),
/***/ "./packages/packages/core/editor-components/src/store/thunks.ts":
/*!**********************************************************************!*\
!*** ./packages/packages/core/editor-components/src/store/thunks.ts ***!
\**********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ loadComponents: function() { return /* binding */ loadComponents; }
/* harmony export */ });
/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/store */ "@elementor/store");
/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_store__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../api */ "./packages/packages/core/editor-components/src/api.ts");
const loadComponents = (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__createAsyncThunk)('components/load', async () => {
const response = await _api__WEBPACK_IMPORTED_MODULE_1__.apiClient.get();
return response;
});
/***/ }),
/***/ "./packages/packages/core/editor-components/src/sync/before-save.ts":
/*!**************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/sync/before-save.ts ***!
\**************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ beforeSave: function() { return /* binding */ beforeSave; }
/* harmony export */ });
/* 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");
const beforeSave = ({
container,
status
}) => {
const elements = container?.model.get('elements').toJSON?.() ?? [];
return (0,_publish_draft_components_in_page_before_save__WEBPACK_IMPORTED_MODULE_0__.publishDraftComponentsInPageBeforeSave)({
elements,
status
});
};
/***/ }),
/***/ "./packages/packages/core/editor-components/src/sync/load-component-data-after-instance-added.ts":
/*!*******************************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/sync/load-component-data-after-instance-added.ts ***!
\*******************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ initLoadComponentDataAfterInstanceAdded: function() { return /* binding */ initLoadComponentDataAfterInstanceAdded; }
/* harmony export */ });
/* harmony import */ var _elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-v1-adapters */ "@elementor/editor-v1-adapters");
/* harmony import */ var _elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_0__);
/* 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");
function initLoadComponentDataAfterInstanceAdded() {
(0,_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_0__.registerDataHook)('after', 'document/elements/paste', (_args, result) => {
load(result);
});
(0,_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_0__.registerDataHook)('after', 'document/elements/import', (_args, result) => {
load(result);
});
}
function load(result) {
if (!result) {
return;
}
const containers = Array.isArray(result) ? result : [result];
const elements = containers.map(container => container.model?.toJSON()).filter(element => !!element);
(0,_store_actions_load_components_assets__WEBPACK_IMPORTED_MODULE_1__.loadComponentsAssets)(elements);
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/sync/publish-draft-components-in-page-before-save.ts":
/*!***********************************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/sync/publish-draft-components-in-page-before-save.ts ***!
\***********************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ publishDraftComponentsInPageBeforeSave: function() { return /* binding */ publishDraftComponentsInPageBeforeSave; }
/* harmony export */ });
/* harmony import */ var _elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-documents */ "@elementor/editor-documents");
/* harmony import */ var _elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _elementor_editor_notifications__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-notifications */ "@elementor/editor-notifications");
/* harmony import */ var _elementor_editor_notifications__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_notifications__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _elementor_http_client__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/http-client */ "@elementor/http-client");
/* harmony import */ var _elementor_http_client__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_http_client__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../api */ "./packages/packages/core/editor-components/src/api.ts");
/* 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");
const INSUFFICIENT_PERMISSIONS_ERROR_CODE = 'insufficient_permissions';
const PUBLISH_UPGRADE_URL = 'https://go.elementor.com/go-pro-components-Instance-draft-failure/';
const PUBLISH_UPGRADE_NOTIFICATION_ID = 'component-publish-upgrade';
async function publishDraftComponentsInPageBeforeSave({
status,
elements
}) {
if (status !== 'publish') {
return;
}
const documents = await (0,_utils_get_component_documents__WEBPACK_IMPORTED_MODULE_5__.getComponentDocuments)({
elements
});
const draftIds = [...documents.values()].filter(_elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0__.isDocumentDirty).map(document => document.id);
if (draftIds.length === 0) {
return;
}
try {
await _api__WEBPACK_IMPORTED_MODULE_4__.apiClient.updateStatuses(draftIds, 'publish');
} catch (error) {
if (isInsufficientPermissionsError(error)) {
notifyPublishUpgrade();
return;
}
throw error;
}
draftIds.forEach(id => (0,_elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0__.invalidateDocumentData)(id));
}
function isInsufficientPermissionsError(error) {
return error instanceof _elementor_http_client__WEBPACK_IMPORTED_MODULE_2__.AxiosError && error.response?.data?.code === INSUFFICIENT_PERMISSIONS_ERROR_CODE;
}
function notifyPublishUpgrade() {
(0,_elementor_editor_notifications__WEBPACK_IMPORTED_MODULE_1__.notify)({
type: 'promotion',
id: PUBLISH_UPGRADE_NOTIFICATION_ID,
message: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('You have unpublished component on this page. You need a pro version to publish it.', 'elementor'),
additionalActionProps: [{
size: 'small',
variant: 'contained',
color: 'promotion',
href: PUBLISH_UPGRADE_URL,
target: '_blank',
children: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_3__.__)('Upgrade Now', 'elementor')
}]
});
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/utils/component-document-data.ts":
/*!***************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/utils/component-document-data.ts ***!
\***************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ getComponentDocumentData: function() { return /* binding */ getComponentDocumentData; }
/* harmony export */ });
/* harmony import */ var _elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-documents */ "@elementor/editor-documents");
/* harmony import */ var _elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0__);
const getComponentDocumentData = async id => {
const documentManager = (0,_elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0__.getV1DocumentsManager)();
try {
return await documentManager.request(id);
} catch {
return null;
}
};
/***/ }),
/***/ "./packages/packages/core/editor-components/src/utils/detach-component-instance/detach-component-instance.ts":
/*!*******************************************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/utils/detach-component-instance/detach-component-instance.ts ***!
\*******************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ detachComponentInstance: function() { return /* binding */ detachComponentInstance; }
/* harmony export */ });
/* harmony import */ var _elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-canvas */ "@elementor/editor-canvas");
/* harmony import */ var _elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _elementor_editor_elements__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-elements */ "@elementor/editor-elements");
/* harmony import */ var _elementor_editor_elements__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/editor-v1-adapters */ "@elementor/editor-v1-adapters");
/* harmony import */ var _elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @elementor/store */ "@elementor/store");
/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_elementor_store__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__);
/* 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");
/* 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");
/* harmony import */ var _store_store__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../store/store */ "./packages/packages/core/editor-components/src/store/store.ts");
/* 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");
/* harmony import */ var _tracking__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../tracking */ "./packages/packages/core/editor-components/src/utils/tracking.ts");
/* 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");
const DETACH_EVENT = 'elementor/components/detach-instance';
const DETACH_UNDO_EVENT = 'elementor/components/undo-detach-instance';
const DETACH_REDO_EVENT = 'elementor/components/redo-detach-instance';
async function detachComponentInstance({
instanceId,
componentId,
trackingInfo
}) {
const instanceContainer = (0,_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_1__.getContainer)(instanceId);
if (!instanceContainer) {
throw new Error(`Instance container with ID "${instanceId}" not found.`);
}
const componentData = await (0,_component_document_data__WEBPACK_IMPORTED_MODULE_8__.getComponentDocumentData)(componentId);
if (!componentData) {
throw new Error(`Component with ID "${componentId}" not found.`);
}
const rootElement = componentData.elements?.[0];
if (!rootElement) {
throw new Error(`Component with ID "${componentId}" has no root element.`);
}
const undoableDetach = (0,_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_2__.undoable)({
do: () => {
const overrides = extractInstanceOverrides(instanceContainer);
const detachedInstanceElementData = (0,_resolve_detached_instance__WEBPACK_IMPORTED_MODULE_10__.resolveDetachedInstance)(rootElement, overrides);
const originalInstanceModel = instanceContainer.model.toJSON();
const actionId = new Date().getTime();
// We should fire the event *before* replacing the element, so it will happen before delete event is fired.
// As we do overridable props cleanup for both events.
window.dispatchEvent(new CustomEvent(DETACH_EVENT, {
detail: {
detachedInstanceId: instanceId,
detachActionId: actionId
}
}));
const detachedElement = (0,_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_1__.replaceElement)({
currentElementId: instanceId,
newElement: detachedInstanceElementData,
withHistory: false
});
(0,_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_1__.selectElement)(detachedElement.id);
const componentUid = (0,_store_store__WEBPACK_IMPORTED_MODULE_7__.selectComponent)((0,_elementor_store__WEBPACK_IMPORTED_MODULE_3__.__getState)(), componentId)?.uid;
(0,_tracking__WEBPACK_IMPORTED_MODULE_9__.trackComponentEvent)({
action: 'detached',
executedBy: 'user',
component_uid: componentUid,
instance_id: instanceId,
location: trackingInfo.location,
secondary_location: trackingInfo.secondaryLocation,
trigger: trackingInfo.trigger
});
return {
detachedElement,
detachedInstanceElementData,
originalInstanceModel,
actionId
};
},
undo: (_, {
detachedElement,
originalInstanceModel,
actionId
}) => {
const restoredInstance = (0,_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_1__.replaceElement)({
currentElementId: detachedElement.id,
newElement: originalInstanceModel,
withHistory: false
});
window.dispatchEvent(new CustomEvent(DETACH_UNDO_EVENT, {
detail: {
restoredInstanceId: restoredInstance.id,
detachActionId: actionId
}
}));
// Wait for the instance to be restored
(0,_elementor_editor_canvas__WEBPACK_IMPORTED_MODULE_0__.doAfterRender)([restoredInstance.id], () => {
(0,_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_1__.selectElement)(restoredInstance.id);
});
return restoredInstance;
},
redo: (_, doReturn, restoredInstance) => {
const {
detachedInstanceElementData,
actionId
} = doReturn;
const detachedElement = (0,_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_1__.replaceElement)({
currentElementId: restoredInstance.id,
newElement: detachedInstanceElementData,
withHistory: false
});
window.dispatchEvent(new CustomEvent(DETACH_REDO_EVENT, {
detail: {
detachedInstanceId: detachedElement.id,
detachActionId: actionId
}
}));
(0,_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_1__.selectElement)(detachedElement.id);
return {
...doReturn,
detachedElement
};
}
}, {
title: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__.__)('Detach from Component', 'elementor'),
subtitle: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_4__.__)('Instance detached', 'elementor')
});
return undoableDetach();
}
function extractInstanceOverrides(instanceContainer) {
const settings = instanceContainer.model.toJSON().settings;
const componentInstance = _prop_types_component_instance_prop_type__WEBPACK_IMPORTED_MODULE_6__.componentInstancePropTypeUtil.extract(settings?.component_instance);
const overrides = _prop_types_component_instance_overrides_prop_type__WEBPACK_IMPORTED_MODULE_5__.componentInstanceOverridesPropTypeUtil.extract(componentInstance?.overrides);
return overrides ?? [];
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/utils/detach-component-instance/index.ts":
/*!***********************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/utils/detach-component-instance/index.ts ***!
\***********************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ detachComponentInstance: function() { return /* reexport safe */ _detach_component_instance__WEBPACK_IMPORTED_MODULE_0__.detachComponentInstance; }
/* harmony export */ });
/* 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");
/***/ }),
/***/ "./packages/packages/core/editor-components/src/utils/detach-component-instance/regenerate-local-style-ids.ts":
/*!********************************************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/utils/detach-component-instance/regenerate-local-style-ids.ts ***!
\********************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ regenerateLocalStyleIds: function() { return /* binding */ regenerateLocalStyleIds; }
/* harmony export */ });
/* harmony import */ var _elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-elements */ "@elementor/editor-elements");
/* harmony import */ var _elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _elementor_editor_props__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-props */ "@elementor/editor-props");
/* harmony import */ var _elementor_editor_props__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_props__WEBPACK_IMPORTED_MODULE_1__);
// Ts version for atomic-widgets/assets/js/editor/utils/regenerate-local-style-ids.js
function regenerateLocalStyleIds(element) {
const originalStyles = element.styles;
if (!originalStyles || Object.keys(originalStyles).length === 0) {
return {
styles: undefined,
settings: undefined
};
}
const newStyles = {};
const styleIdMapping = {};
for (const [originalStyleId, style] of Object.entries(originalStyles)) {
const newStyleId = generateLocalStyleId(element.id);
newStyles[newStyleId] = {
...style,
id: newStyleId
};
styleIdMapping[originalStyleId] = newStyleId;
}
const settings = element.settings;
if (!settings || Object.keys(settings).length === 0) {
return {
styles: newStyles,
settings: undefined
};
}
const updatedSettings = {
...settings
};
for (const [propKey, propValue] of Object.entries(updatedSettings)) {
if (isClassesProp(propValue) && propValue.value.length > 0) {
const updatedClasses = propValue.value.map(classId => styleIdMapping[classId] ?? classId);
updatedSettings[propKey] = _elementor_editor_props__WEBPACK_IMPORTED_MODULE_1__.classesPropTypeUtil.create(updatedClasses);
}
}
return {
styles: newStyles,
settings: updatedSettings
};
}
function isClassesProp(prop) {
return _elementor_editor_props__WEBPACK_IMPORTED_MODULE_1__.classesPropTypeUtil.isValid(prop);
}
function generateLocalStyleId(elementId) {
return `e-${elementId}-${(0,_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0__.generateElementId)()}`;
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/utils/detach-component-instance/resolve-detached-instance.ts":
/*!*******************************************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/utils/detach-component-instance/resolve-detached-instance.ts ***!
\*******************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ getOverridableOverride: function() { return /* binding */ getOverridableOverride; },
/* harmony export */ resolveDetachedInstance: function() { return /* binding */ resolveDetachedInstance; }
/* harmony export */ });
/* harmony import */ var _elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-elements */ "@elementor/editor-elements");
/* harmony import */ var _elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0__);
/* 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");
/* 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");
/* 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");
/* 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");
/**
* Creates detached element from component instance
* by applying overrides, reverting overridables, and regenerating IDs.
* This is used when detaching a component instance from its origin component.
*
* The function goes through all nested elements recursively and:
* - Regenerates element IDs and local style IDs
* - Resolves overridable settings - applies all instance overrides to element settings,
* or replaces overridable with origin_value when no matching override exists.
*
* @param element - The component's root element
* @param overrides - Array of overrides from the component instance
* @return A new element data with all overrides applied and new IDs
*/
function resolveDetachedInstance(element, overrides) {
const overrideMap = createOverrideMap(overrides);
return resolveElementRecursive(structuredClone(element), overrideMap);
}
function resolveElementRecursive(element, overrideMap) {
element.id = (0,_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0__.generateElementId)();
if (element.styles) {
const {
styles,
settings
} = (0,_regenerate_local_style_ids__WEBPACK_IMPORTED_MODULE_3__.regenerateLocalStyleIds)(element);
element.styles = styles;
if (settings) {
element.settings = {
...element.settings,
...settings
};
}
}
if (element.settings) {
element.settings = (0,_resolve_overridable_settings__WEBPACK_IMPORTED_MODULE_4__.resolveOverridableSettings)(element, overrideMap);
}
if (element.elements?.length) {
element.elements = element.elements.map(child => resolveElementRecursive(child, overrideMap));
}
return element;
}
function createOverrideMap(overrides) {
const map = new Map();
overrides.forEach(item => {
let override = null;
if (_prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_1__.componentInstanceOverridePropTypeUtil.isValid(item)) {
override = item;
} else if (_prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_2__.componentOverridablePropTypeUtil.isValid(item)) {
override = getOverridableOverride(item);
}
if (override) {
const overrideKey = override.value.override_key;
map.set(overrideKey, override);
}
});
return map;
}
function getOverridableOverride(propValue) {
if (!_prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_2__.componentOverridablePropTypeUtil.isValid(propValue)) {
return null;
}
const originValue = _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_2__.componentOverridablePropTypeUtil.extract(propValue)?.origin_value;
if (!_prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_1__.componentInstanceOverridePropTypeUtil.isValid(originValue)) {
return null;
}
return originValue;
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/utils/detach-component-instance/resolve-overridable-settings.ts":
/*!**********************************************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/utils/detach-component-instance/resolve-overridable-settings.ts ***!
\**********************************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ resolveOverridableSettings: function() { return /* binding */ resolveOverridableSettings; }
/* harmony export */ });
/* 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");
/* 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");
/* 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");
/* 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");
function resolveOverridableSettings(element, overrideMap) {
if ((0,_is_component_instance__WEBPACK_IMPORTED_MODULE_3__.isComponentInstance)({
widgetType: element.widgetType,
elType: element.elType
})) {
return resolveOverridableSettingsForComponentInstance(element, overrideMap);
}
return resolveOverridableSettingsForElement(element, overrideMap);
}
function resolveOverridableSettingsForElement(element, overrideMap) {
const updatedSettings = element.settings ? {
...element.settings
} : {};
for (const [settingKey, settingValue] of Object.entries(element.settings ?? {})) {
updatedSettings[settingKey] = resolvePropValue(settingValue, overrideMap);
}
return updatedSettings;
}
function resolveOverridableSettingsForComponentInstance(element, overrideMap) {
const componentInstance = element.settings?.component_instance;
if (!_prop_types_component_instance_prop_type__WEBPACK_IMPORTED_MODULE_1__.componentInstancePropTypeUtil.isValid(componentInstance)) {
return element.settings ?? {};
}
const instanceOverrides = componentInstance.value.overrides?.value;
if (!instanceOverrides?.length) {
return element.settings ?? {};
}
const updatedOverrides = instanceOverrides.map(item => resolvePropValue(item, overrideMap, {
isOverridableOverride: true
}));
return {
...element.settings,
component_instance: {
...componentInstance,
value: {
...componentInstance.value,
overrides: {
...componentInstance.value.overrides,
value: updatedOverrides
}
}
}
};
}
function resolvePropValue(propValue, overrideMap, options) {
const {
isOverridableOverride = false
} = options ?? {};
// if it's not an overridable, return the prop value as is
if (!_prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_2__.componentOverridablePropTypeUtil.isValid(propValue)) {
return propValue;
}
const overridableKey = propValue.value.override_key;
const matchingOverride = overrideMap.get(overridableKey);
const originValue = _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_2__.componentOverridablePropTypeUtil.extract(propValue)?.origin_value;
// if no matching override, return the overridable's origin value
if (!matchingOverride) {
return originValue;
}
if (isOverridableOverride) {
return resolveOverridableOverride(matchingOverride, originValue);
}
// for regular props, when there's a non null matching override, return the matching override value,
// otherwise return the origin value
const matchingOverrideValue = _prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_0__.componentInstanceOverridePropTypeUtil.extract(matchingOverride)?.override_value;
return matchingOverrideValue ?? originValue;
}
function resolveOverridableOverride(matchingOverride, originValue) {
if (!originValue || !_prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_0__.componentInstanceOverridePropTypeUtil.isValid(originValue)) {
return null;
}
// for overridable overrides, we should create a new override with the matching override value
// but keep the origin value's override key and schema source, so they'll match the inner component.
return _prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_0__.componentInstanceOverridePropTypeUtil.create({
override_value: matchingOverride.value.override_value,
override_key: originValue.value.override_key,
schema_source: originValue.value.schema_source
});
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/utils/filter-valid-overridable-props.ts":
/*!**********************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/utils/filter-valid-overridable-props.ts ***!
\**********************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ filterValidOverridableProps: function() { return /* binding */ filterValidOverridableProps; },
/* harmony export */ isExposedPropValid: function() { return /* binding */ isExposedPropValid; }
/* harmony export */ });
/* 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");
function filterValidOverridableProps(overridableProps,
// instanceElementId is used to find the component inner elements,
// and should be passed when editing component instance (not in component edit mode)
instanceElementId) {
const validProps = {};
for (const [key, prop] of Object.entries(overridableProps.props)) {
if (isExposedPropValid(prop, instanceElementId)) {
validProps[key] = prop;
}
}
const validPropKeys = new Set(Object.keys(validProps));
const filteredGroups = {
items: Object.fromEntries(Object.entries(overridableProps.groups.items).map(([groupId, group]) => [groupId, {
...group,
props: group.props.filter(propKey => validPropKeys.has(propKey))
}])),
order: overridableProps.groups.order
};
return {
props: validProps,
groups: filteredGroups
};
}
function isExposedPropValid(prop, instanceElementId) {
const {
isChainBroken
} = (0,_resolve_overrides_chain__WEBPACK_IMPORTED_MODULE_0__.resolveOverridesChain)({
outerOverridableProp: prop,
outerInstanceId: instanceElementId
});
return !isChainBroken;
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/utils/format-component-elements-id.ts":
/*!********************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/utils/format-component-elements-id.ts ***!
\********************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ formatComponentElementsId: function() { return /* binding */ formatComponentElementsId; }
/* harmony export */ });
/* harmony import */ var _elementor_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/utils */ "@elementor/utils");
/* harmony import */ var _elementor_utils__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_utils__WEBPACK_IMPORTED_MODULE_0__);
const ELEMENT_ID_LENGTH = 7;
// The purpose of this function is to solve the issue of component inner elements having the same ID
// when there are multiple instances of the same component on a page.
// We change the ID of the inner elements to a hash of the nesting path of the element and the element's originalID.
function formatComponentElementsId(elements, path) {
return elements.map(element => {
const nestingPath = [...path, element.id];
const id = (0,_elementor_utils__WEBPACK_IMPORTED_MODULE_0__.hashString)(nestingPath.join('_'), ELEMENT_ID_LENGTH);
return {
...element,
id,
originId: element.id,
elements: element.elements ? formatComponentElementsId(element.elements, nestingPath) : undefined
};
});
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/utils/get-component-documents.ts":
/*!***************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/utils/get-component-documents.ts ***!
\***************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ getComponentDocuments: function() { return /* binding */ getComponentDocuments; }
/* harmony export */ });
/* 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");
/* 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");
async function getComponentDocuments({
elements,
cache = new Map(),
isRecursive = true
}) {
const componentIds = await getComponentIds(elements, cache, isRecursive);
return getDocumentsMap(componentIds, cache);
}
async function getComponentIds(elements, cache, isRecursive) {
const results = await Promise.all(elements.filter(Boolean).map(async ({
widgetType,
elType,
elements: childElements,
settings
}) => {
const ids = [];
if ((0,_is_component_instance__WEBPACK_IMPORTED_MODULE_1__.isComponentInstance)({
widgetType,
elType
})) {
const componentId = settings?.component_instance?.value?.component_id.value;
if (!componentId) {
return ids;
}
ids.push(componentId);
if (!cache.has(componentId)) {
cache.set(componentId, (0,_component_document_data__WEBPACK_IMPORTED_MODULE_0__.getComponentDocumentData)(componentId));
}
if (isRecursive) {
const doc = await cache.get(componentId);
childElements = doc?.elements;
}
}
if (childElements?.length) {
const childIds = await getComponentIds(childElements, cache, isRecursive);
ids.push(...childIds);
}
return ids;
}));
return [...new Set(results.flat())];
}
async function getDocumentsMap(ids, cache) {
const documents = await Promise.all(ids.map(async id => {
const document = await cache.get(id);
if (!document) {
return null;
}
return [id, document];
}));
return new Map(documents.filter(document => document !== null));
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/utils/get-container-by-origin-id.ts":
/*!******************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/utils/get-container-by-origin-id.ts ***!
\******************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ getContainerByOriginId: function() { return /* binding */ getContainerByOriginId; }
/* harmony export */ });
/* harmony import */ var _elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-elements */ "@elementor/editor-elements");
/* harmony import */ var _elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0__);
/**
* Resolves a container by its origin ID, with optional scoping to a component instance.
*
* When component instances are rendered, their inner elements get prefixed IDs
* (e.g., `{instanceId}_{originalId}`), but store data uses original IDs.
* This function bridges between the two by searching for elements with a matching `originId`.
*
* @param originElementId - The original (unprefixed) element ID from store data
* @param instanceElementId - Optional instance widget ID to scope the search
*
* @return The container with prefixed runtime ID, or null if not found
*
* @example
* // Component editing mode (no prefixing)
* getContainerByOriginId('element-1') // returns container with id='element-1'
*
* @example
* // Instance editing mode (with hash prefixing)
* getContainerByOriginId('element-1', 'instance-abc')
* // returns container with id='{hash}_element-1' and originId='element-1'
*/
function getContainerByOriginId(originElementId, instanceElementId) {
if (!instanceElementId) {
return (0,_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0__.getContainer)(originElementId);
}
const instanceContainer = (0,_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0__.getContainer)(instanceElementId);
if (!instanceContainer) {
return null;
}
const legacyWindow = window;
return legacyWindow.elementor?.getContainerByKeyValue?.({
key: 'originId',
value: originElementId,
parent: instanceContainer.view
}) ?? null;
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/utils/get-overridable-prop.ts":
/*!************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/utils/get-overridable-prop.ts ***!
\************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ getOverridableProp: function() { return /* binding */ getOverridableProp; }
/* harmony export */ });
/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/store */ "@elementor/store");
/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_store__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _store_store__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../store/store */ "./packages/packages/core/editor-components/src/store/store.ts");
function getOverridableProp({
componentId,
overrideKey
}) {
const overridableProps = (0,_store_store__WEBPACK_IMPORTED_MODULE_1__.selectOverridableProps)((0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__getState)(), componentId);
if (!overridableProps) {
return undefined;
}
return overridableProps.props[overrideKey];
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/utils/get-prop-type-for-component-override.ts":
/*!****************************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/utils/get-prop-type-for-component-override.ts ***!
\****************************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ getPropTypeForComponentOverride: function() { return /* binding */ getPropTypeForComponentOverride; }
/* harmony export */ });
/* harmony import */ var _elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-elements */ "@elementor/editor-elements");
/* harmony import */ var _elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0__);
const getPropTypeForComponentOverride = overridableProp => {
if (overridableProp.originPropFields) {
return getPropType(overridableProp.originPropFields);
}
const {
widgetType,
propKey
} = overridableProp;
return getPropType({
widgetType,
propKey
});
};
function getPropType({
widgetType,
propKey
}) {
const widgetPropsSchema = (0,_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_0__.getWidgetsCache)()?.[widgetType]?.atomic_props_schema;
return widgetPropsSchema?.[propKey];
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/utils/is-component-instance.ts":
/*!*************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/utils/is-component-instance.ts ***!
\*************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ isComponentInstance: function() { return /* binding */ isComponentInstance; }
/* harmony export */ });
/* harmony import */ var _consts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../consts */ "./packages/packages/core/editor-components/src/consts.ts");
function isComponentInstance(elementModel) {
return [elementModel.widgetType, elementModel.elType].includes(_consts__WEBPACK_IMPORTED_MODULE_0__.COMPONENT_WIDGET_TYPE);
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/utils/is-pro-components-supported.ts":
/*!*******************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/utils/is-pro-components-supported.ts ***!
\*******************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ isProComponentsSupported: function() { return /* binding */ isProComponentsSupported; },
/* harmony export */ isProOutdatedForComponents: function() { return /* binding */ isProOutdatedForComponents; }
/* harmony export */ });
/* harmony import */ var _elementor_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/utils */ "@elementor/utils");
/* harmony import */ var _elementor_utils__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_utils__WEBPACK_IMPORTED_MODULE_0__);
const MIN_PRO_VERSION_FOR_COMPONENTS = '4.0';
function isProComponentsSupported() {
return (0,_elementor_utils__WEBPACK_IMPORTED_MODULE_0__.hasProInstalled)() && (0,_elementor_utils__WEBPACK_IMPORTED_MODULE_0__.isProAtLeast)(MIN_PRO_VERSION_FOR_COMPONENTS);
}
function isProOutdatedForComponents() {
return (0,_elementor_utils__WEBPACK_IMPORTED_MODULE_0__.hasProInstalled)() && !(0,_elementor_utils__WEBPACK_IMPORTED_MODULE_0__.isProAtLeast)(MIN_PRO_VERSION_FOR_COMPONENTS);
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/utils/overridable-props-utils.ts":
/*!***************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/utils/overridable-props-utils.ts ***!
\***************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ getMatchingOverride: function() { return /* binding */ getMatchingOverride; }
/* harmony export */ });
/* 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");
/* 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");
function getMatchingOverride(overrides, overrideKey) {
return overrides?.find(override => {
const overridableValue = _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_1__.componentOverridablePropTypeUtil.extract(override);
if (overridableValue) {
const overrideValue = _prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_0__.componentInstanceOverridePropTypeUtil.extract(overridableValue.origin_value);
return overrideValue?.override_key === overrideKey;
}
return override.value.override_key === overrideKey;
}) ?? null;
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/utils/resolve-override-prop-value.ts":
/*!*******************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/utils/resolve-override-prop-value.ts ***!
\*******************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ resolveOverridePropValue: function() { return /* binding */ resolveOverridePropValue; }
/* harmony export */ });
/* 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");
/* 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");
const resolveOverridePropValue = originalPropValue => {
const isOverridable = _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_1__.componentOverridablePropTypeUtil.isValid(originalPropValue);
if (isOverridable) {
return getOverridableValue(originalPropValue);
}
const isOverride = _prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_0__.componentInstanceOverridePropTypeUtil.isValid(originalPropValue);
if (isOverride) {
return getOverrideValue(originalPropValue);
}
return originalPropValue;
};
function getOverridableValue(overridableProp) {
const overridableValue = _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_1__.componentOverridablePropTypeUtil.extract(overridableProp);
if (!overridableValue) {
return null;
}
const isOverride = _prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_0__.componentInstanceOverridePropTypeUtil.isValid(overridableValue.origin_value);
if (isOverride) {
return getOverrideValue(overridableValue.origin_value);
}
return overridableValue.origin_value;
}
function getOverrideValue(overrideProp) {
const overrideValue = _prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_0__.componentInstanceOverridePropTypeUtil.extract(overrideProp);
if (!overrideValue) {
return null;
}
return overrideValue.override_value;
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/utils/resolve-overrides-chain.ts":
/*!***************************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/utils/resolve-overrides-chain.ts ***!
\***************************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ buildOverridesMap: function() { return /* binding */ buildOverridesMap; },
/* harmony export */ resolveOverridesChain: function() { return /* binding */ resolveOverridesChain; }
/* harmony export */ });
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
// Recursively walks down a chain of nested component instances to find the innermost element
// and collect the overrides mapping for it.
// Returns the resolved inner element with its overrides mapping,
// or { isChainBroken: true } if any level in the chain is no longer overridable.
function resolveOverridesChain({
outerOverridableProp,
outerInstanceId,
overridesMapping = {}
}) {
// Stop condition: no originPropFields means we've reached the most inner component instance
if (!outerOverridableProp.originPropFields) {
const innerElement = (0,_get_container_by_origin_id__WEBPACK_IMPORTED_MODULE_4__.getContainerByOriginId)(outerOverridableProp.elementId, outerInstanceId);
if (!innerElement) {
throw new Error(`Inner element not found inside instance. elementId: ${outerOverridableProp.elementId}, instanceId: ${outerInstanceId}`);
}
return {
isChainBroken: false,
innerElement,
overridesMapping
};
}
// Step 1: Find the intermediate component instance and read its settings.
const currentInstance = (0,_get_container_by_origin_id__WEBPACK_IMPORTED_MODULE_4__.getContainerByOriginId)(outerOverridableProp.elementId, outerInstanceId);
if (!currentInstance) {
// One of the instances in the chain was deleted.
return {
isChainBroken: true
};
}
const {
componentId,
overrides
} = extractComponentInstanceSettings(currentInstance);
if (!componentId) {
throw new Error(`Component ID not found for current instance. currentInstanceId: ${currentInstance.id}. outerInstanceId: ${outerInstanceId}`);
}
// Collect overrides from this level, translating keys for exposed-further props.
const mergedOverrides = buildOverridesMap(overridesMapping, overrides ?? []);
// Find the overridable-override that matches the outer overridable prop's key,
// to get the next level's overridable prop.
const override = findOverrideByOuterKey(overrides, outerOverridableProp.overrideKey);
const overrideKey = _prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_0__.componentInstanceOverridePropTypeUtil.extract(override)?.override_key;
if (!override || !overrideKey) {
// No matching override found for the current level - it means it's no longer overridable.
return {
isChainBroken: true
};
}
const overridableProp = (0,_get_overridable_prop__WEBPACK_IMPORTED_MODULE_5__.getOverridableProp)({
componentId,
overrideKey
});
if (!overridableProp) {
throw new Error(`Overridable prop not found. componentId: ${componentId}, overrideKey: ${overrideKey}`);
}
// Step 4: Recurse into the next nesting level.
return resolveOverridesChain({
outerOverridableProp: overridableProp,
outerInstanceId: currentInstance.id,
overridesMapping: mergedOverrides
});
}
/**
* Builds overrides map from instances chain:
* At each level, we collect overrides from the current instance and merge them with the overrides from the outer levels.
*
* For exposed-further overrides (overridable wrapping an override), we have outer key (overridable's) and inner key (override's).
* If a higher level already set a value for the outer key, that value is carried forward to the inner key
* — same logic as the componentOverridableTransformer in the render pipeline.
*
* For simple overrides, that are not exposed further, we just use the override's key and value.
*
* @param existing - Previously accumulated overrides from outer levels.
* @param levelOverrides - The overrides array from the current level instance.
*/
function buildOverridesMap(existing, levelOverrides) {
const result = {
...existing
};
for (const item of levelOverrides) {
const overridableValue = _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_3__.componentOverridablePropTypeUtil.extract(item);
if (overridableValue) {
// Exposed-further: overridable wraps an inner override with a different key.
const override = _prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_0__.componentInstanceOverridePropTypeUtil.extract(overridableValue.origin_value);
if (!override) {
continue;
}
const outerKey = overridableValue.override_key;
const innerKey = override.override_key;
const innerValue = override.override_value;
// If an upper level already set a value for the outer key, carry it forward to the inner key.
const higherLevelOverride = existing[outerKey];
if (higherLevelOverride) {
const outerValue = higherLevelOverride.value;
result[innerKey] = {
value: outerValue ?? innerValue,
outermostKey: higherLevelOverride.outermostKey ?? outerKey
};
continue;
}
result[innerKey] = {
value: innerValue,
outermostKey: outerKey
};
} else {
// Simple override: not exposed further, we just store the override's key and value.
const override = _prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_0__.componentInstanceOverridePropTypeUtil.extract(item);
if (!override) {
continue;
}
const key = override.override_key;
const value = override.override_value;
result[key] = {
value
};
}
}
return result;
}
function extractComponentInstanceSettings(element) {
const instanceSetting = element.settings?.get('component_instance');
const instanceValue = _prop_types_component_instance_prop_type__WEBPACK_IMPORTED_MODULE_2__.componentInstancePropTypeUtil.extract(instanceSetting);
const componentId = instanceValue?.component_id?.value;
const overrides = _prop_types_component_instance_overrides_prop_type__WEBPACK_IMPORTED_MODULE_1__.componentInstanceOverridesPropTypeUtil.extract(instanceValue?.overrides);
return {
componentId,
overrides
};
}
// Finds the inner override prop whose wrapping overridable matches the given outer key.
function findOverrideByOuterKey(overrides, outerKey) {
if (!overrides) {
return null;
}
const overridableOverride = overrides.find(item => {
const overridableValue = _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_3__.componentOverridablePropTypeUtil.extract(item);
if (!overridableValue) {
return false;
}
return overridableValue.override_key === outerKey;
});
const override = _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_3__.componentOverridablePropTypeUtil.extract(overridableOverride)?.origin_value;
if (!override || !_prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_0__.componentInstanceOverridePropTypeUtil.isValid(override)) {
return null;
}
return override;
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/utils/switch-to-component.ts":
/*!***********************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/utils/switch-to-component.ts ***!
\***********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ buildUniqueSelector: function() { return /* binding */ buildUniqueSelector; },
/* harmony export */ expandNavigator: function() { return /* binding */ expandNavigator; },
/* harmony export */ switchToComponent: function() { return /* binding */ switchToComponent; }
/* harmony export */ });
/* harmony import */ var _elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-documents */ "@elementor/editor-documents");
/* harmony import */ var _elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _elementor_editor_elements__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-elements */ "@elementor/editor-elements");
/* harmony import */ var _elementor_editor_elements__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/editor-v1-adapters */ "@elementor/editor-v1-adapters");
/* harmony import */ var _elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_2__);
async function switchToComponent(componentId, componentInstanceId, element) {
const selector = getSelector(element, componentInstanceId);
(0,_elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0__.invalidateDocumentData)(componentId);
await (0,_elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0__.switchToDocument)(componentId, {
selector,
mode: 'autosave',
setAsInitial: false,
shouldScroll: false
});
const currentDocumentContainer = (0,_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_1__.getCurrentDocumentContainer)();
const topLevelElement = currentDocumentContainer?.children?.[0];
if (topLevelElement) {
(0,_elementor_editor_elements__WEBPACK_IMPORTED_MODULE_1__.selectElement)(topLevelElement.id);
expandNavigator();
}
}
async function expandNavigator() {
await (0,_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_2__.__privateRunCommand)('navigator/expand-all');
}
function getSelector(element, componentInstanceId) {
if (element) {
return buildUniqueSelector(element);
}
if (componentInstanceId) {
return `[data-id="${componentInstanceId}"]`;
}
return undefined;
}
function buildUniqueSelector(element) {
const selectors = [];
let current = element.closest('[data-id]');
while (current) {
const dataId = current.dataset.id;
const isComponentInstance = current.hasAttribute('data-elementor-id');
if (isComponentInstance) {
selectors.unshift(`[data-id="${dataId}"]`);
}
current = current.parentElement?.closest('[data-id]') ?? null;
}
if (selectors.length === 0) {
const closestElement = element.closest('[data-id]');
if (closestElement?.dataset?.id) {
return `[data-id="${closestElement.dataset.id}"]`;
}
}
return selectors.join(' ');
}
/***/ }),
/***/ "./packages/packages/core/editor-components/src/utils/tracking.ts":
/*!************************************************************************!*\
!*** ./packages/packages/core/editor-components/src/utils/tracking.ts ***!
\************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ onElementDrop: function() { return /* binding */ onElementDrop; },
/* harmony export */ trackComponentEvent: function() { return /* binding */ trackComponentEvent; }
/* harmony export */ });
/* harmony import */ var _elementor_events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/events */ "@elementor/events");
/* harmony import */ var _elementor_events__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_events__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/store */ "@elementor/store");
/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_store__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _store_store__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../store/store */ "./packages/packages/core/editor-components/src/store/store.ts");
// TODO: Remove this type in version 4.4.0
/** @deprecated since 4.2.1 - use `ExecutedBy` instead */
const FEATURE_NAME = 'Components';
const trackComponentEvent = ({
action,
source,
executedBy,
...data
}) => {
if (source === 'system' || executedBy === 'system') {
return;
}
const {
dispatchEvent,
config
} = (0,_elementor_events__WEBPACK_IMPORTED_MODULE_0__.getMixpanel)();
if (!config?.names?.components?.[action]) {
return;
}
const name = config.names.components[action];
dispatchEvent?.(name, {
...data,
executed_by: executedBy ?? source,
'Feature name': FEATURE_NAME
});
};
// TODO: Remove this function in version 4.4.0 - moved to pro
const onElementDrop = (_args, element) => {
if (!(element?.model?.get('widgetType') === 'e-component')) {
return;
}
const editorSettings = element.model.get('editor_settings');
const componentName = editorSettings?.title;
const componentUID = editorSettings?.component_uid;
const instanceId = element.id;
const createdThisSession = (0,_store_store__WEBPACK_IMPORTED_MODULE_2__.selectCreatedThisSession)((0,_elementor_store__WEBPACK_IMPORTED_MODULE_1__.__getState)());
const isSameSessionReuse = componentUID && createdThisSession.includes(componentUID);
const eventsManagerConfig = window.elementorCommon.eventsManager.config;
const {
locations,
secondaryLocations
} = eventsManagerConfig;
trackComponentEvent({
action: 'instanceAdded',
executedBy: 'user',
instance_id: instanceId,
component_uid: componentUID,
component_name: componentName,
is_same_session_reuse: isSameSessionReuse,
location: locations.widgetPanel,
secondary_location: secondaryLocations.componentsTab
});
};
/***/ }),
/***/ "@elementor/editor":
/*!*****************************************!*\
!*** external ["elementorV2","editor"] ***!
\*****************************************/
/***/ (function(module) {
module.exports = window["elementorV2"]["editor"];
/***/ }),
/***/ "@elementor/editor-canvas":
/*!***********************************************!*\
!*** external ["elementorV2","editorCanvas"] ***!
\***********************************************/
/***/ (function(module) {
module.exports = window["elementorV2"]["editorCanvas"];
/***/ }),
/***/ "@elementor/editor-controls":
/*!*************************************************!*\
!*** external ["elementorV2","editorControls"] ***!
\*************************************************/
/***/ (function(module) {
module.exports = window["elementorV2"]["editorControls"];
/***/ }),
/***/ "@elementor/editor-current-user":
/*!****************************************************!*\
!*** external ["elementorV2","editorCurrentUser"] ***!
\****************************************************/
/***/ (function(module) {
module.exports = window["elementorV2"]["editorCurrentUser"];
/***/ }),
/***/ "@elementor/editor-documents":
/*!**************************************************!*\
!*** external ["elementorV2","editorDocuments"] ***!
\**************************************************/
/***/ (function(module) {
module.exports = window["elementorV2"]["editorDocuments"];
/***/ }),
/***/ "@elementor/editor-editing-panel":
/*!*****************************************************!*\
!*** external ["elementorV2","editorEditingPanel"] ***!
\*****************************************************/
/***/ (function(module) {
module.exports = window["elementorV2"]["editorEditingPanel"];
/***/ }),
/***/ "@elementor/editor-elements":
/*!*************************************************!*\
!*** external ["elementorV2","editorElements"] ***!
\*************************************************/
/***/ (function(module) {
module.exports = window["elementorV2"]["editorElements"];
/***/ }),
/***/ "@elementor/editor-elements-panel":
/*!******************************************************!*\
!*** external ["elementorV2","editorElementsPanel"] ***!
\******************************************************/
/***/ (function(module) {
module.exports = window["elementorV2"]["editorElementsPanel"];
/***/ }),
/***/ "@elementor/editor-embedded-documents-manager":
/*!*****************************************************************!*\
!*** external ["elementorV2","editorEmbeddedDocumentsManager"] ***!
\*****************************************************************/
/***/ (function(module) {
module.exports = window["elementorV2"]["editorEmbeddedDocumentsManager"];
/***/ }),
/***/ "@elementor/editor-notifications":
/*!******************************************************!*\
!*** external ["elementorV2","editorNotifications"] ***!
\******************************************************/
/***/ (function(module) {
module.exports = window["elementorV2"]["editorNotifications"];
/***/ }),
/***/ "@elementor/editor-panels":
/*!***********************************************!*\
!*** external ["elementorV2","editorPanels"] ***!
\***********************************************/
/***/ (function(module) {
module.exports = window["elementorV2"]["editorPanels"];
/***/ }),
/***/ "@elementor/editor-props":
/*!**********************************************!*\
!*** external ["elementorV2","editorProps"] ***!
\**********************************************/
/***/ (function(module) {
module.exports = window["elementorV2"]["editorProps"];
/***/ }),
/***/ "@elementor/editor-templates":
/*!**************************************************!*\
!*** external ["elementorV2","editorTemplates"] ***!
\**************************************************/
/***/ (function(module) {
module.exports = window["elementorV2"]["editorTemplates"];
/***/ }),
/***/ "@elementor/editor-ui":
/*!*******************************************!*\
!*** external ["elementorV2","editorUi"] ***!
\*******************************************/
/***/ (function(module) {
module.exports = window["elementorV2"]["editorUi"];
/***/ }),
/***/ "@elementor/editor-v1-adapters":
/*!***************************************************!*\
!*** external ["elementorV2","editorV1Adapters"] ***!
\***************************************************/
/***/ (function(module) {
module.exports = window["elementorV2"]["editorV1Adapters"];
/***/ }),
/***/ "@elementor/events":
/*!*****************************************!*\
!*** external ["elementorV2","events"] ***!
\*****************************************/
/***/ (function(module) {
module.exports = window["elementorV2"]["events"];
/***/ }),
/***/ "@elementor/http-client":
/*!*********************************************!*\
!*** external ["elementorV2","httpClient"] ***!
\*********************************************/
/***/ (function(module) {
module.exports = window["elementorV2"]["httpClient"];
/***/ }),
/***/ "@elementor/icons":
/*!****************************************!*\
!*** external ["elementorV2","icons"] ***!
\****************************************/
/***/ (function(module) {
module.exports = window["elementorV2"]["icons"];
/***/ }),
/***/ "@elementor/schema":
/*!*****************************************!*\
!*** external ["elementorV2","schema"] ***!
\*****************************************/
/***/ (function(module) {
module.exports = window["elementorV2"]["schema"];
/***/ }),
/***/ "@elementor/store":
/*!****************************************!*\
!*** external ["elementorV2","store"] ***!
\****************************************/
/***/ (function(module) {
module.exports = window["elementorV2"]["store"];
/***/ }),
/***/ "@elementor/ui":
/*!*************************************!*\
!*** external ["elementorV2","ui"] ***!
\*************************************/
/***/ (function(module) {
module.exports = window["elementorV2"]["ui"];
/***/ }),
/***/ "@elementor/utils":
/*!****************************************!*\
!*** external ["elementorV2","utils"] ***!
\****************************************/
/***/ (function(module) {
module.exports = window["elementorV2"]["utils"];
/***/ }),
/***/ "@wordpress/i18n":
/*!******************************!*\
!*** external ["wp","i18n"] ***!
\******************************/
/***/ (function(module) {
module.exports = window["wp"]["i18n"];
/***/ }),
/***/ "react":
/*!**************************!*\
!*** external ["React"] ***!
\**************************/
/***/ (function(module) {
module.exports = window["React"];
/***/ })
/******/ });
/************************************************************************/
/******/ // The module cache
/******/ var __webpack_module_cache__ = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ // Check if module is in cache
/******/ var cachedModule = __webpack_module_cache__[moduleId];
/******/ if (cachedModule !== undefined) {
/******/ return cachedModule.exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = __webpack_module_cache__[moduleId] = {
/******/ // no module.id needed
/******/ // no module.loaded needed
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/************************************************************************/
/******/ /* webpack/runtime/compat get default export */
/******/ !function() {
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function() { return module['default']; } :
/******/ function() { return module; };
/******/ __webpack_require__.d(getter, { a: getter });
/******/ return getter;
/******/ };
/******/ }();
/******/
/******/ /* webpack/runtime/define property getters */
/******/ !function() {
/******/ // define getter functions for harmony exports
/******/ __webpack_require__.d = function(exports, definition) {
/******/ for(var key in definition) {
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ }
/******/ }
/******/ };
/******/ }();
/******/
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/ !function() {
/******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
/******/ }();
/******/
/******/ /* webpack/runtime/make namespace object */
/******/ !function() {
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/ }();
/******/
/************************************************************************/
var __webpack_exports__ = {};
// This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk.
!function() {
/*!***************************************************************!*\
!*** ./packages/packages/core/editor-components/src/index.ts ***!
\***************************************************************/
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ COMPONENT_WIDGET_TYPE: function() { return /* reexport safe */ _create_component_type__WEBPACK_IMPORTED_MODULE_12__.COMPONENT_WIDGET_TYPE; },
/* harmony export */ ComponentInstanceProvider: function() { return /* reexport safe */ _provider_component_instance_context__WEBPACK_IMPORTED_MODULE_20__.ComponentInstanceProvider; },
/* harmony export */ ComponentItem: function() { return /* reexport safe */ _components_components_tab_components_item__WEBPACK_IMPORTED_MODULE_3__.ComponentItem; },
/* harmony export */ ComponentName: function() { return /* reexport safe */ _components_components_tab_components_item__WEBPACK_IMPORTED_MODULE_3__.ComponentName; },
/* harmony export */ ComponentSearch: function() { return /* reexport safe */ _components_components_tab_component_search__WEBPACK_IMPORTED_MODULE_2__.ComponentSearch; },
/* harmony export */ ComponentsList: function() { return /* reexport safe */ _components_components_tab_components_list__WEBPACK_IMPORTED_MODULE_4__.ComponentsList; },
/* harmony export */ DetachAction: function() { return /* reexport safe */ _components_instance_editing_panel_detach_action__WEBPACK_IMPORTED_MODULE_11__.DetachAction; },
/* harmony export */ EditComponentAction: function() { return /* reexport safe */ _components_instance_editing_panel_instance_panel_header__WEBPACK_IMPORTED_MODULE_9__.EditComponentAction; },
/* harmony export */ EmptySearchResult: function() { return /* reexport safe */ _components_components_tab_components_list__WEBPACK_IMPORTED_MODULE_4__.EmptySearchResult; },
/* harmony export */ InstanceEmptyState: function() { return /* reexport safe */ _components_instance_editing_panel_empty_state__WEBPACK_IMPORTED_MODULE_7__.EmptyState; },
/* harmony export */ InstancePanelBody: function() { return /* reexport safe */ _components_instance_editing_panel_instance_panel_body__WEBPACK_IMPORTED_MODULE_8__.InstancePanelBody; },
/* harmony export */ InstancePanelHeader: function() { return /* reexport safe */ _components_instance_editing_panel_instance_panel_header__WEBPACK_IMPORTED_MODULE_9__.InstancePanelHeader; },
/* harmony export */ LoadingComponents: function() { return /* reexport safe */ _components_components_tab_loading_components__WEBPACK_IMPORTED_MODULE_5__.LoadingComponents; },
/* harmony export */ OverridablePropProvider: function() { return /* reexport safe */ _provider_overridable_prop_context__WEBPACK_IMPORTED_MODULE_21__.OverridablePropProvider; },
/* harmony export */ SLICE_NAME: function() { return /* reexport safe */ _store_store__WEBPACK_IMPORTED_MODULE_26__.SLICE_NAME; },
/* harmony export */ SearchProvider: function() { return /* reexport safe */ _components_components_tab_search_provider__WEBPACK_IMPORTED_MODULE_6__.SearchProvider; },
/* harmony export */ apiClient: function() { return /* reexport safe */ _api__WEBPACK_IMPORTED_MODULE_1__.apiClient; },
/* harmony export */ componentInstanceOverridePropTypeUtil: function() { return /* reexport safe */ _prop_types_component_instance_override_prop_type__WEBPACK_IMPORTED_MODULE_16__.componentInstanceOverridePropTypeUtil; },
/* harmony export */ componentInstanceOverridesPropTypeUtil: function() { return /* reexport safe */ _prop_types_component_instance_overrides_prop_type__WEBPACK_IMPORTED_MODULE_17__.componentInstanceOverridesPropTypeUtil; },
/* harmony export */ componentInstancePropTypeUtil: function() { return /* reexport safe */ _prop_types_component_instance_prop_type__WEBPACK_IMPORTED_MODULE_18__.componentInstancePropTypeUtil; },
/* harmony export */ componentOverridablePropTypeUtil: function() { return /* reexport safe */ _prop_types_component_overridable_prop_type__WEBPACK_IMPORTED_MODULE_19__.componentOverridablePropTypeUtil; },
/* harmony export */ componentsActions: function() { return /* reexport safe */ _store_dispatchers__WEBPACK_IMPORTED_MODULE_24__.componentsActions; },
/* harmony export */ componentsSelectors: function() { return /* reexport safe */ _store_selectors__WEBPACK_IMPORTED_MODULE_25__.componentsSelectors; },
/* harmony export */ createComponentsAction: function() { return /* reexport safe */ _store_store__WEBPACK_IMPORTED_MODULE_26__.createComponentsAction; },
/* harmony export */ filterValidOverridableProps: function() { return /* reexport safe */ _utils_filter_valid_overridable_props__WEBPACK_IMPORTED_MODULE_28__.filterValidOverridableProps; },
/* harmony export */ getComponentDocumentData: function() { return /* reexport safe */ _utils_component_document_data__WEBPACK_IMPORTED_MODULE_36__.getComponentDocumentData; },
/* harmony export */ getContainerByOriginId: function() { return /* reexport safe */ _utils_get_container_by_origin_id__WEBPACK_IMPORTED_MODULE_29__.getContainerByOriginId; },
/* harmony export */ getOverridableProp: function() { return /* reexport safe */ _utils_get_overridable_prop__WEBPACK_IMPORTED_MODULE_30__.getOverridableProp; },
/* harmony export */ getPropTypeForComponentOverride: function() { return /* reexport safe */ _utils_get_prop_type_for_component_override__WEBPACK_IMPORTED_MODULE_31__.getPropTypeForComponentOverride; },
/* harmony export */ init: function() { return /* reexport safe */ _init__WEBPACK_IMPORTED_MODULE_0__.init; },
/* harmony export */ isComponentInstance: function() { return /* reexport safe */ _utils_is_component_instance__WEBPACK_IMPORTED_MODULE_32__.isComponentInstance; },
/* harmony export */ loadComponentsAssets: function() { return /* reexport safe */ _store_actions_load_components_assets__WEBPACK_IMPORTED_MODULE_22__.loadComponentsAssets; },
/* harmony export */ onElementDrop: function() { return /* reexport safe */ _utils_tracking__WEBPACK_IMPORTED_MODULE_35__.onElementDrop; },
/* harmony export */ publishDraftComponentsInPageBeforeSave: function() { return /* reexport safe */ _sync_publish_draft_components_in_page_before_save__WEBPACK_IMPORTED_MODULE_27__.publishDraftComponentsInPageBeforeSave; },
/* harmony export */ registerComponentsReducer: function() { return /* reexport safe */ _store_store__WEBPACK_IMPORTED_MODULE_26__.registerComponentsReducer; },
/* harmony export */ resolveOverridePropValue: function() { return /* reexport safe */ _utils_resolve_override_prop_value__WEBPACK_IMPORTED_MODULE_33__.resolveOverridePropValue; },
/* harmony export */ selectComponentByUid: function() { return /* reexport safe */ _store_store__WEBPACK_IMPORTED_MODULE_26__.selectComponentByUid; },
/* harmony export */ selectCreatedThisSession: function() { return /* reexport safe */ _store_store__WEBPACK_IMPORTED_MODULE_26__.selectCreatedThisSession; },
/* harmony export */ selectOverridableProps: function() { return /* reexport safe */ _store_store__WEBPACK_IMPORTED_MODULE_26__.selectOverridableProps; },
/* harmony export */ selectPath: function() { return /* reexport safe */ _store_store__WEBPACK_IMPORTED_MODULE_26__.selectPath; },
/* harmony export */ slice: function() { return /* reexport safe */ _store_store__WEBPACK_IMPORTED_MODULE_26__.slice; },
/* harmony export */ switchToComponent: function() { return /* reexport safe */ _utils_switch_to_component__WEBPACK_IMPORTED_MODULE_34__.switchToComponent; },
/* harmony export */ trackComponentEvent: function() { return /* reexport safe */ _utils_tracking__WEBPACK_IMPORTED_MODULE_35__.trackComponentEvent; },
/* harmony export */ updateOverridableProp: function() { return /* reexport safe */ _store_actions_update_overridable_prop__WEBPACK_IMPORTED_MODULE_23__.updateOverridableProp; },
/* harmony export */ useComponentInstanceElement: function() { return /* reexport safe */ _provider_overridable_prop_context__WEBPACK_IMPORTED_MODULE_21__.useComponentInstanceElement; },
/* harmony export */ useComponents: function() { return /* reexport safe */ _hooks_use_components__WEBPACK_IMPORTED_MODULE_13__.useComponents; },
/* harmony export */ useComponentsPermissions: function() { return /* reexport safe */ _hooks_use_components_permissions__WEBPACK_IMPORTED_MODULE_14__.useComponentsPermissions; },
/* harmony export */ useCurrentComponent: function() { return /* reexport safe */ _store_store__WEBPACK_IMPORTED_MODULE_26__.useCurrentComponent; },
/* harmony export */ useCurrentComponentId: function() { return /* reexport safe */ _store_store__WEBPACK_IMPORTED_MODULE_26__.useCurrentComponentId; },
/* harmony export */ useFilteredComponents: function() { return /* reexport safe */ _components_components_tab_components_list__WEBPACK_IMPORTED_MODULE_4__.useFilteredComponents; },
/* harmony export */ useInstancePanelData: function() { return /* reexport safe */ _components_instance_editing_panel_use_instance_panel_data__WEBPACK_IMPORTED_MODULE_10__.useInstancePanelData; },
/* harmony export */ useIsSanitizedComponent: function() { return /* reexport safe */ _store_store__WEBPACK_IMPORTED_MODULE_26__.useIsSanitizedComponent; },
/* harmony export */ useOverridablePropValue: function() { return /* reexport safe */ _provider_overridable_prop_context__WEBPACK_IMPORTED_MODULE_21__.useOverridablePropValue; },
/* harmony export */ useOverridableProps: function() { return /* reexport safe */ _store_store__WEBPACK_IMPORTED_MODULE_26__.useOverridableProps; },
/* harmony export */ useSanitizeOverridableProps: function() { return /* reexport safe */ _hooks_use_sanitize_overridable_props__WEBPACK_IMPORTED_MODULE_15__.useSanitizeOverridableProps; }
/* harmony export */ });
/* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./init */ "./packages/packages/core/editor-components/src/init.ts");
/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./api */ "./packages/packages/core/editor-components/src/api.ts");
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
/* harmony import */ var _store_dispatchers__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./store/dispatchers */ "./packages/packages/core/editor-components/src/store/dispatchers.ts");
/* harmony import */ var _store_selectors__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./store/selectors */ "./packages/packages/core/editor-components/src/store/selectors.ts");
/* harmony import */ var _store_store__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./store/store */ "./packages/packages/core/editor-components/src/store/store.ts");
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
/* 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");
/* harmony import */ var _utils_tracking__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./utils/tracking */ "./packages/packages/core/editor-components/src/utils/tracking.ts");
/* 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");
}();
(window.elementorV2 = window.elementorV2 || {}).editorComponents = __webpack_exports__;
/******/ })()
;
window.elementorV2.editorComponents?.init?.();
//# sourceMappingURL=editor-components.js.map/* global wpforms_education, WPFormsBuilder, wpf */
/**
* WPForms Education Core.
*
* @since 1.6.6
*/
// noinspection ES6ConvertVarToLetConst
/**
* @param wpforms_education.activate_confirm
* @param wpforms_education.activate_prompt
* @param wpforms_education.activating
* @param wpforms_education.addon_activated
* @param wpforms_education.addon_error
* @param wpforms_education.ajax_url
* @param wpforms_education.can_activate_addons
* @param wpforms_education.can_install_addons
* @param wpforms_education.cancel
* @param wpforms_education.close
* @param wpforms_education.install_confirm
* @param wpforms_education.install_prompt
* @param wpforms_education.installing
* @param wpforms_education.nonce
* @param wpforms_education.ok
* @param wpforms_education.plugin_activated
* @param wpforms_education.save_confirm
* @param wpforms_education.save_prompt
* @param wpforms_education.saving
* @param wpforms_education.thanks_for_interest
* @param wpforms_education.upgrade
* @param wpforms_education.upgrade.modal
* @param wpforms_education.upgrade.url
* @param wpforms_education.upgrade.url_template
*/
var WPFormsEducation = window.WPFormsEducation || {}; // eslint-disable-line no-var
WPFormsEducation.core = window.WPFormsEducation.core || ( function( document, window, $ ) {
/**
* Spinner markup.
*
* @since 1.7.0
*
* @type {string}
*/
const spinner = '';
/**
* Public functions and properties.
*
* @since 1.6.6
*
* @type {Object}
*/
const app = {
/**
* Start the engine.
*
* @since 1.6.6
*/
init() {
$( app.ready );
},
/**
* Document ready.
*
* @since 1.6.6
*/
ready() {
app.events();
},
/**
* Register JS events.
*
* @since 1.6.6
*/
events() {
app.dismissEvents();
app.openModalButtonClick();
app.setDykColspan();
app.gotoAdvancedTabClick();
},
/**
* Open education modal.
*
* @since 1.7.0
*/
openModalButtonClick() {
$( document )
.on( 'click', '.education-modal:not(.wpforms-add-fields-button)', app.openModalButtonHandler )
.on( 'mousedown', '.education-modal.wpforms-add-fields-button', app.openModalButtonHandler );
},
/**
* Open education modal handler.
*
* @since 1.8.0
*
* @param {Event} event Event.
*/
openModalButtonHandler( event ) {
event.preventDefault();
const $this = $( this );
switch ( $this.data( 'action' ) ) {
case 'activate':
app.activateModal( $this );
break;
case 'install':
app.installModal( $this );
break;
}
},
/**
* Dismiss button events.
*
* @since 1.6.6
*/
dismissEvents() {
$( document ).on( 'click', '.wpforms-dismiss-container .wpforms-dismiss-button', function() {
const $this = $( this ),
$cont = $this.closest( '.wpforms-dismiss-container' ),
data = {
action: 'wpforms_education_dismiss',
nonce: wpforms_education.nonce,
section: $this.data( 'section' ),
page: typeof window.pagenow === 'string' ? window.pagenow : '',
};
let $out = $cont.find( '.wpforms-dismiss-out' );
if ( $cont.hasClass( 'wpforms-dismiss-out' ) ) {
$out = $cont;
}
if ( $out.length > 0 ) {
$out.addClass( 'out' );
setTimeout(
function() {
$cont.remove();
},
300
);
} else {
$cont.remove();
}
$.post( wpforms_education.ajax_url, data );
} );
},
/**
* Calculate and dynamically set the DYK block cell colspan attribute.
*
* @since 1.7.3
*/
setDykColspan() {
$( '#adv-settings' ).on(
'change',
'input.hide-column-tog',
function() {
const $dykCell = $( '.wpforms-dyk td' ),
colCount = $( '.wp-list-table thead .manage-column' ).not( '.hidden' ).length;
$dykCell.attr( 'colspan', colCount );
}
);
},
/**
* Go to Advanced tab when click on the link in Calculations educational notice.
*
* @since 1.8.4.1
*/
gotoAdvancedTabClick() {
$( document )
.on( 'click', '.wpforms-educational-alert.wpforms-calculations a', function( e ) {
const $a = $( this );
if ( $a.attr( 'href' ) !== '#advanced-tab' ) {
return;
}
e.preventDefault();
$a.closest( '.wpforms-field-option' )
.find( '.wpforms-field-option-group-advanced .wpforms-field-option-group-toggle' )
.trigger( 'click' );
} );
},
/**
* Get UTM content for different elements.
*
* @since 1.6.9
*
* @param {jQuery} $el Element.
*
* @return {string} UTM content string.
*/
getUTMContentValue( $el ) {
// UTM content for Fields.
if ( $el.hasClass( 'wpforms-add-fields-button' ) ) {
return $el.data( 'utm-content' ) + ' Field';
}
// UTM content for Templates.
if ( $el.hasClass( 'wpforms-template-select' ) ) {
return app.slugToUTMContent( $el.data( 'slug' ) );
}
// UTM content for Addons (sidebar).
if ( $el.hasClass( 'wpforms-panel-sidebar-section' ) ) {
return app.slugToUTMContent( $el.data( 'slug' ) ) + ' Addon';
}
// UTM content by default with fallback `data-name`.
return $el.data( 'utm-content' ) || $el.data( 'name' );
},
/**
* Convert slug to UTM content.
*
* @since 1.6.9
*
* @param {string} slug Slug.
*
* @return {string} UTM content string.
*/
slugToUTMContent( slug ) {
if ( ! slug ) {
return '';
}
return slug.toString()
// Replace all non-alphanumeric characters with space.
.replace( /[^a-z\d ]/gi, ' ' )
// Uppercase each word.
.replace( /\b[a-z]/g, function( char ) {
return char.toUpperCase();
} );
},
/**
* Get upgrade URL according to the UTM content and license type.
*
* @since 1.6.9
*
* @param {string} utmContent UTM content.
* @param {string} type Feature license type: pro or elite.
*
* @return {string} Upgrade URL.
*/
getUpgradeURL( utmContent, type ) {
let baseURL = wpforms_education.upgrade[ type ].url;
if ( utmContent.toLowerCase().indexOf( 'template' ) > -1 ) {
baseURL = wpforms_education.upgrade[ type ].url_template;
}
// Test if the base URL already contains `?`.
let appendChar = /(\?)/.test( baseURL ) ? '&' : '?';
// If the upgrade link is changed by partners, appendChar has to be encoded.
if ( baseURL.indexOf( 'https://wpforms.com' ) === -1 ) {
appendChar = encodeURIComponent( appendChar );
}
return baseURL + appendChar + 'utm_content=' + encodeURIComponent( utmContent.trim() );
},
/**
* Upgrade modal second state.
*
* @since 1.6.6
*
* @param {string} type Feature license type: pro or elite.
*/
upgradeModalThankYou: ( type ) => {
$.alert( {
title: wpforms_education.thanks_for_interest,
content: wpforms_education.upgrade[ type ].modal,
icon: 'fa fa-info-circle',
type: 'blue',
boxWidth: '565px',
buttons: {
confirm: {
text: wpforms_education.ok,
btnClass: 'btn-confirm',
keys: [ 'enter' ],
},
},
} );
},
/**
* Get spinner markup.
*
* @since 1.7.6
*
* @return {string} Spinner markup.
*/
getSpinner: () => {
return spinner;
},
/**
* Addon activate modal.
*
* @since 1.7.0
*
* @param {jQuery} $button jQuery button element.
*/
activateModal( $button ) {
const feature = $button.data( 'name' ),
message = $button.data( 'message' );
const canActivateAddons = wpforms_education.can_activate_addons;
$.alert( {
title: false,
content: message ? message : wpforms_education.activate_prompt.replace( /%name%/g, feature ),
icon: 'fa fa-info-circle',
type: 'blue',
buttons: {
confirm: {
text: wpforms_education.activate_confirm,
btnClass: 'btn-confirm' + ( ! canActivateAddons ? ' hidden' : '' ),
keys: [ 'enter' ],
isHidden: ! canActivateAddons,
action() {
this.$$confirm
.prop( 'disabled', true )
.html( spinner + wpforms_education.activating );
this.$$cancel
.prop( 'disabled', true );
app.activateAddon( $button, this );
return false;
},
},
cancel: {
text: wpforms_education.cancel,
},
},
} );
},
/**
* Activate addon via AJAX.
*
* @since 1.7.0
*
* @param {jQuery} $button jQuery button element.
* @param {Object} previousModal Previous modal instance.
*/
activateAddon( $button, previousModal ) {
const path = $button.data( 'path' ),
pluginType = $button.data( 'type' ),
nonce = $button.data( 'nonce' ),
hideOnSuccess = $button.data( 'hide-on-success' );
$.post(
wpforms_education.ajax_url,
{
action: 'wpforms_activate_addon',
nonce,
plugin: path,
type: pluginType,
},
function( res ) {
previousModal.close();
if ( res.success ) {
if ( hideOnSuccess ) {
$button.hide();
}
app.saveModal( pluginType === 'plugin' ? wpforms_education.plugin_activated : wpforms_education.addon_activated );
} else {
$.alert( {
title: false,
content: res.data,
icon: 'fa fa-exclamation-circle',
type: 'orange',
buttons: {
confirm: {
text: wpforms_education.close,
btnClass: 'btn-confirm',
keys: [ 'enter' ],
},
},
} );
}
}
);
},
/**
* Ask user if they would like to save form and refresh form builder.
*
* @since 1.7.0
*
* @param {string} title Modal title.
* @param {string|boolean} content Modal content.
*/
saveModal( title, content = false ) {
title = title || wpforms_education.addon_activated;
content = content || wpforms_education.save_prompt;
$.alert( {
title: title.replace( /\.$/, '' ), // Remove a dot in the title end.
content,
icon: 'fa fa-check-circle',
type: 'green',
buttons: {
confirm: {
text: wpforms_education.save_confirm,
btnClass: 'btn-confirm',
keys: [ 'enter' ],
action() {
if ( typeof WPFormsBuilder === 'undefined' ) {
location.reload();
return;
}
this.$$confirm
.prop( 'disabled', true )
.html( spinner + wpforms_education.saving );
this.$$cancel
.prop( 'disabled', true );
if ( WPFormsBuilder.formIsSaved() ) {
location.reload();
return;
}
const saveForm = WPFormsBuilder.formSave( false );
if ( ! saveForm ) {
return true;
}
saveForm.done( function() {
location.reload();
} );
return false;
},
},
cancel: {
text: wpforms_education.close,
},
},
} );
},
/**
* Addon install modal.
*
* @since 1.7.0
*
* @param {jQuery} $button jQuery button element.
*/
installModal( $button ) {
const feature = $button.data( 'name' ),
url = $button.data( 'url' );
if ( ! url || '' === url ) {
wpf.debug( `Couldn't install the ${ feature } addon: Empty install URL.` );
return;
}
const canInstallAddons = wpforms_education.can_install_addons,
message = $button.data( 'message' );
$.alert( {
title: false,
content: message ? message : wpforms_education.install_prompt.replace( /%name%/g, feature ),
icon: 'fa fa-info-circle',
type: 'blue',
boxWidth: '425px',
buttons: {
confirm: {
text: wpforms_education.install_confirm,
btnClass: 'btn-confirm' + ( ! canInstallAddons ? ' hidden' : '' ),
keys: [ 'enter' ],
isHidden: ! canInstallAddons,
action() {
this.$$confirm.prop( 'disabled', true )
.html( spinner + wpforms_education.installing );
this.$$cancel
.prop( 'disabled', true );
app.installAddon( $button, this );
return false;
},
},
cancel: {
text: wpforms_education.cancel,
},
},
} );
},
/**
* Install addon via AJAX.
*
* @since 1.7.0
*
* @param {jQuery} $button Button object.
* @param {Object} previousModal Previous modal instance.
*/
installAddon( $button, previousModal ) {
const url = $button.data( 'url' ),
pluginType = $button.data( 'type' ),
nonce = $button.data( 'nonce' ),
hideOnSuccess = $button.data( 'hide-on-success' );
$.post(
wpforms_education.ajax_url,
{
action: 'wpforms_install_addon',
nonce,
plugin: url,
type: pluginType,
},
function( res ) {
previousModal.close();
if ( res.success ) {
if ( hideOnSuccess ) {
$button.hide();
}
app.saveModal( res.data.msg );
} else {
let message = res.data;
if ( 'object' === typeof res.data ) {
message = wpforms_education.addon_error;
}
$.alert( {
title: false,
content: message,
icon: 'fa fa-exclamation-circle',
type: 'orange',
buttons: {
confirm: {
text: wpforms_education.close,
btnClass: 'btn-confirm',
keys: [ 'enter' ],
},
},
} );
}
}
);
},
/**
* Get upgrade modal width.
*
* @since 1.7.3
*
* @param {boolean} isVideoModal Upgrade a modal type (with video or not).
*
* @return {string} Modal width in pixels.
*/
getUpgradeModalWidth( isVideoModal ) {
const windowWidth = $( window ).width();
if ( windowWidth <= 300 ) {
return '250px';
}
if ( windowWidth <= 750 ) {
return '350px';
}
if ( ! isVideoModal || windowWidth <= 1024 ) {
return '550px';
}
return windowWidth > 1070 ? '1040px' : '994px';
},
/**
* Error modal.
*
* @since 1.7.6
*
* @param {string} title Modal title.
* @param {string} content Modal content.
*/
errorModal( title, content ) {
$.alert( {
title: title || false,
content,
icon: 'fa fa-exclamation-circle',
type: 'orange',
buttons: {
confirm: {
text: wpforms_education.close,
btnClass: 'btn-confirm',
keys: [ 'enter' ],
},
},
} );
},
};
// Provide access to public functions/properties.
return app;
}( document, window, jQuery ) );
WPFormsEducation.core.init();
<%= partial('form_template_date_years',
'form/templatesLegacy/blocks/date_years.hbs',
'_settings_date_years'
) %>
<%= partial('form_template_date_months',
'form/templatesLegacy/blocks/date_months.hbs',
'_settings_date_months'
) %>
<%= partial('form_template_date_days',
'form/templatesLegacy/blocks/date_days.hbs',
'_settings_date_days'
) %>
<%= partial('form_template_date', 'form/templatesLegacy/blocks/date.hbs') %>
<%= partial('form_template_field_settings', 'form/templatesLegacy/settings/field.hbs') %>
<%= partial('field_settings_label',
'form/templatesLegacy/settings/label.hbs',
'_settings_label'
) %>
<%= partial('field_settings_label_within',
'form/templatesLegacy/settings/label_within.hbs',
'_settings_label_within'
) %>
<%= partial('field_settings_required',
'form/templatesLegacy/settings/required.hbs',
'_settings_required'
) %>
<%= partial('field_settings_validate',
'form/templatesLegacy/settings/validate.hbs',
'_settings_validate'
) %>
<%= partial('field_settings_values',
'form/templatesLegacy/settings/values.hbs',
'_settings_values'
) %>
<%= partial('field_settings_date_default',
'form/templatesLegacy/settings/date_default.hbs',
'_settings_date_default'
) %>
<%= partial('field_settings_submit',
'form/templatesLegacy/settings/submit.hbs',
'_settings_submit'
) %>
<%= partial('field_settings_values_item',
'form/templatesLegacy/settings/values_item.hbs') %>
<%= partial(
'field_settings_date_format',
'form/templatesLegacy/settings/date_formats.hbs',
'_settings_date_format'
) %>
<%= partial(
'field_settings_date_type',
'form/templatesLegacy/settings/date_types.hbs',
'_settings_date_type'
) %>
<%= partial('field_settings_segment_selection_item',
'form/templatesLegacy/settings/segment_selection_item.hbs'
) %>
<%= partial('field_settings_segment_selection',
'form/templatesLegacy/settings/segment_selection.hbs',
'_settings_segment_selection'
) %>
<%= partial('form_template_field_form',
'form/templatesLegacy/settings/field_form.hbs'
) %>
Our tracksuits are produced using high-quality fabrics designed for comfort, durability, and everyday team use.
Fabric Options
Polyester Performance Fabric
Cotton-Polyester Blend
Our tracksuits are produced using high-quality fabrics designed for comfort, durability, and everyday team use.
Fabric Options
Polyester Performance Fabric
Cotton-Polyester Blend
Our tracksuits are produced using high-quality fabrics designed for comfort, durability, and everyday team use.
Fabric Options
Polyester Performance Fabric
Cotton-Polyester Blend
Our tracksuits are produced using high-quality fabrics designed for comfort, durability, and everyday team use.
Fabric Options
Polyester Performance Fabric
Cotton-Polyester Blend
Our tracksuits are produced using high-quality fabrics designed for comfort, durability, and everyday team use.
Fabric Options
Polyester Performance Fabric
Cotton-Polyester Blend
Our tracksuits are produced using high-quality fabrics designed for comfort, durability, and everyday team use.
Fabric Options
Polyester Performance Fabric
Cotton-Polyester Blend
]]>
Our tracksuits are produced using high-quality fabrics designed for comfort, durability, and everyday team use.
Fabric Options
Polyester Performance Fabric
Cotton-Polyester Blend
]]>
Our tracksuits are produced using high-quality fabrics designed for comfort, durability, and everyday team use.
Fabric Options
Polyester Performance Fabric
Cotton-Polyester Blend
]]>
Our tracksuits are produced using high-quality fabrics designed for comfort, durability, and everyday team use.
Fabric Options
Polyester Performance Fabric
Cotton-Polyester Blend
]]>
Our tracksuits are produced using high-quality fabrics designed for comfort, durability, and everyday team use.
Fabric Options
Polyester Performance Fabric
Cotton-Polyester Blend
]]>