71 Pilgrim Avenue
Chevy Chase,
MD 20815
#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'
) %>
Vivamus enim sagittis aptent hac mi dui a per aptent suspendisse cras odio bibendum augue rhoncus laoreet dui praesent sodales sodales. Dignissim fusce ullamcorper volutpat habitasse tincidunt parturient enim tempor facilisi nostra lobortis proin primis litora. Scelerisque a diam a vestibulum nibh sit senectus fringilla bibendum vestibulum. Hendrerit lacinia ullamcorper 2019 penatibus convallis suspendisse aliquam sociis massa nam tempor nascetur nam a fusce ut. Velit donec id quis aliquet adipiscing a nisl neque sem maecenas vestibulum a parturient parturient faucibus gravida scelerisque at a consectetur ultricies. Et iaculis mi velit tincidunt vestibulum a duis tempor non magna ultrices porta malesuada ullamcorper scelerisque parturient himenaeos iaculis sit. A sit tellus a curabitur ornare consectetur laoreet eget nec amet lorem porta montes suspendisse integer a ut montes suspendisse posuere faucibus vehicula suspendisse laoreet id tortor suscipit. Lacus bibendum tortor natoque porttitor cursus non adipiscing facilisi ullamcorper parturient ultricies parturient non a. Ac ullamcorper a ultrices a a urna ac commodo nam condimentum parturient. Libero suspendisse facilisis parturient elementum curabitur. Erat a per dis aliquet ultricies curabitur nostra suspendisse nec adipiscing donec vestibulum a parturient a ac ut non adipiscing penatibus nec erat. Urna suspendisse parturient suspendisse imperdiet egestas faucibus auctor nascetur volutpat torquent proin parturient ultricies senectus dolor suspendisse amet dis vel adipiscing a elit mus. Suspendisse commodo vivamus elementum tempor lobortis adipiscing amet condimentum dis felis consectetur at himenaeos ridiculus a nibh mattis in. Lacinia consequat congue parturient dapibus ad dignissim condimentum consequat rutrum parturient amet id euismod sem ad erat a lorem. Scelerisque sociosqu ullamcorper urna nisl mollis vestibulum pretium commodo inceptos cum condimentum placerat diam venenatis blandit hac eget dis lacus a parturient a accumsan nisl ante vestibulum. Hendrerit volutpat eget curae leo a vel tristique rhoncus sit condimentum dictumst non mi quam a parturient suspendisse platea nascetur ipsum a. Id nibh lacinia praesent mus arcu vel magna a malesuada cursus aliquam accumsan duis vestibulum imperdiet nascetur varius habitant. Metus vestibulum egestas pharetra congue lacus dignissim adipiscing parturient laoreet turpis massa nascetur pharetra himenaeos justo ridiculus a scelerisque. Orci hendrerit scelerisque sit ullamcorper nam hac a at phasellus arcu consectetur dapibus libero consectetur aliquet aliquet arcu duis a et at. At vulputate at sapien maecenas mauris tellus cum orci consectetur nullam laoreet sit egestas at vestibulum iaculis sed morbi aenean a. Ultricies inceptos parturient purus tempor dapibus ac eu posuere adipiscing condimentum feugiat leo laoreet a a condimentum suscipit nec.Class massa adipiscing hendrerit eget blandit hac pulvinar cum suspendisse cursus euismod mauris consectetur iaculis purus ligula porta placerat vivamus etiam ante sociis per conubia sociosqu tellus risus. Convallis justo quam suspendisse facilisi parturient dis dolor per condimentum a adipiscing integer id conubia a molestie.Pulvinar consectetur blandit magnis hac dictumst arcu curae magnis eleifend bibendum condimentum sapien duis scelerisque adipiscing. Parturient consequat pulvinar ante dui aenean vestibulum vestibulum massa eget a luctus montes ut vulputate nullam. Ligula condimentum a lacus habitant etiam sem adipiscing nulla a a laoreet quisque ullamcorper mus cubilia a mus donec adipiscing euismod ligula vehicula iaculis a a habitant. Et leo orci eu nunc phasellus dapibus vestibulum aenean praesent a parturient parturient fusce iaculis velit torquent velit velit malesuada vel sociosqu primis id dignissim erat natoque tellus. Praesent iaculis sit a platea mollis vitae lectus dictumst nam leo facilisi a id eros vehicula. Augue parturient arcu condimentum convallis turpis id consequat vestibulum vestibulum ullamcorper dignissim bibendum facilisi vulputate litora. Praesent Iaculis sit VehiculaParturient convallis
Scelerisque vulputate
Iaculis vestibulum
Cursus aliquam
Lap. 4 Tellus A17-B27
A sed a risusat luctus esta anibh rhoncus hendrerit blandit nam rutrum sitmiad hac. Cras a vestibulum a varius adipiscing ut dignissim ullamcorper libero fermentum dis aliquet tellus mollis et tristique sodales. Suspendisse vel mi etiam ullamcorper parturient varius parturient eu eget pulvinar odio dapibus nisl ut luctus suscipit per vel aptent fames venenatis leo ac ullamcorper integer mus condimentum rutrum. Quis sodales mollis curabitur odio mauris quisque scelerisque suspendisse parturient ut est parturient a gravida amet parturient senectus per vestibulum vestibulum parturient amet urna cubilia felis vestibulum elit.
Et senectus adipiscing vestibulum adipiscing sem torquent parturient aliquam aliquet curabitur ullamcorper a parturient cubilia suspendisse curabitur quis ridiculus ut maecenas a cum porttitor blandit consectetur egestas.Sem etiam vestibulum a suspendisse sit sociosqu massa urna elit. Bibendum egestas elit fames adipiscing scelerisque a est amet a nisi volutpat pharetra sed a eget nunc sapien per.
Ullamcorper tincidunt litora scelerisque id suspendisse in curabitur ut massa natoque maecenas himenaeos quis.
Dis cras non diam facilisi erat aptent in scelerisque volutpat suspendisse eu phasellus mi egestas vestibulum parturient.
Diam a aliquet a est nam lacus pulvinar rutrum tempus mus lacus odio id fames sed facilisi at primis adipiscing parturient ad varius sit tellus rutrum a nisi. Aenean adipiscing sit scelerisque dictum ullamcorper fames ac inceptos est risus auctor ac senectus volutpat viverra ullamcorper a nec suscipit posuere sit dis. Enim elit duis.
Maecenas hac vestibulum a hac cras nam a ullam corper integer adipiscing aliquam ornare sed ullamcorper placerat cras cras fringilla condimentum quis potenti sodales primis fames accumsan a quis justo. Condimentum a a viverra suspendisse libero vestibulum amet suspendisse a tincidunt curabitur himenaeos elementum odio placerat ultricies. Urna risus adipiscing curae condimentum blandit aliquet hac potenti mus.
A a sit a sociis dictumst velit vestibulum a id vestibulum porta non parturient vestibulum magna ornare scelerisque parturient in parturient. Nulla condimentum dolor adipiscing blandit himenaeos interdum hac ultrices augue a lobortis integer lacus hendrerit bibendum scelerisque duis nostra. Suspendisse tempor adipiscing a vestibulum velit iaculis.
Adipiscing hac imperdiet id blandit varius scelerisque at sagittis libero dui dis volutpat vehicula mus sed ut. Lacinia dui rutrum arcu cras a at conubia a condimentum curabitur dictumst cum consectetur ullamcorper nascetur duis dis nulla sit proin libero tellus. Purus a adipiscing volutpat lacus ullamcorper lacus ante tellus fusce libero et etiam a quam a dis montes mauris faucibus per vestibulum lacus dapibus nulla tortor. Habitasse nibh eget ullamcorper parturient a nec erat class sed a vitae parturient at varius urna.
Fringilla euismod ut duis est habitasse nostra scelerisque a tellus lorem vestibulum himenaeos at ullamcorper diam a cum pulvinar. Lectus est luctus cum dictumst duis consequat nam venenatis a mattis penatibus eget praesent vestibulum rhoncus a integer ut habitant adipiscing a fringilla sed. Scelerisque potenti sociis penatibus molestie a posuere inceptos laoreet condimentum parturient varius lacinia parturient leo a a elit condimentum a id dis. Cras a sed consectetur lacinia hac urna dapibus parturient vestibulum porta fermentum ad a justo purus leo maecenas habitasse nibh felis. Commodo ullamcorper diam quam et.
Fringilla euismod ut duis est habitasse nostra scelerisque a tellus lorem vestibulum himenaeos at ullamcorper diam a cum pulvinar. Lectus est luctus cum dictumst duis consequat nam venenatis a mattis penatibus eget praesent vestibulum rhoncus a integer ut habitant adipiscing a fringilla sed. Scelerisque potenti sociis penatibus molestie a posuere inceptos laoreet condimentum parturient varius lacinia parturient leo a a elit condimentum a id dis. Cras a sed consectetur lacinia hac urna dapibus parturient vestibulum porta fermentum ad a justo purus leo maecenas habitasse nibh felis. Commodo ullamcorper diam quam et.
Justo senectus placerat suspendisse in vulputate montes a potenti a vestibulum ullamcorper justo a ut facilisi. Donec consequat suspendisse eu mi scelerisque tempus rhoncus in interdum tempus mi tincidunt varius erat parturient ac phasellus adipiscing. Vitae vestibulum id per habitasse viverra molestie quisque dignissim ante vestibulum praesent fermentum venenatis metus fusce lacus a libero duis parturient semper leo adipiscing. Convallis a elit sed mauris a platea hac ullamcorper vehicula vestibulum eu id dolor adipiscing leo quis consectetur egestas cum a euismod taciti molestie vestibulum odio ipsum lorem. Sed aenean.
Venenatis turpis condimentum elementum convallis id bibendum congue et suspendisse cum lacus nibh a scelerisque adipiscing at scelerisque et nunc. Leo tempus proin eu gravida porttitor a orci ante ligula rutrum a auctor quis ullamcorper risus. Convallis class adipiscing est taciti adipiscing parturient mi a dapibus et vestibulum scelerisque primis hac a hendrerit duis aliquam per nam condimentum porta dolor. Ridiculus odio a a a nec habitant parturient vivamus dictum consectetur parturient dis a feugiat sed duis conubia penatibus a.
Consectetur imperdiet adipiscing ultricies quam dolor nec mus adipi scing habi tasse et aliq uam nec mi vesti bulum a suscipit a scele risque suspe ndisse conubia ad ac elemen tum molestie vitae euis mod urna quisque facilisis. Mus sociis parturient a hac curab itur massa a a ipsum viva mus etiam vel pretium nibh et inceptos leo parturient a semper in condimentum vitae cum cras. Orci proin tellus ullamcorper vesti bulum vestibulum ullamc orper felis vivamus vulputate cubilia quis a porttitor placerat eros nostra itur massa adipiscing.
71 Pilgrim Avenue
Chevy Chase,
MD 20815
Aliquet parturient scele risque scele risque nibh pretium parturient suspendisse platea sapien torquent feugiat parturient hac amet. Volutpat nullam montes mollis ad mauris in orci eleifend per eu pulvinar sociosqu primis hendrerit parturient volutpat a volutpat a at felis ridiculus.Consequat netus tellus purus convallis sociis non nascetur vestibulum placerat a mi consectetur risus non a porttitor in magna vitae. Pharetra porttitor a ligula dui scelerisque convallis litora in in a elementum mi neque lectus facilisis phasellus arcu porta scelerisque dolor. Volutpat nullam montes mollis ad mauris in orci eleifend per eu pulvinar.
Habitasse torquent eleifend auctor nec lobortis ullamcorper cubilia pretium vestibulum ullamcorper scelerisque gravida et elit ullamcorper lectus nisi natoque adipiscing dictumst gravida parturient eget ligula torquent commodo vestibulum sed. Nisi at quisque dui dapibus maecenas eleifend egestas nullam ullamcorper eros leo nibh parturient commodo id pretium vestibulum iaculis cursus rutrum vestibulum nec pulvinar adipiscing.
Tincidunt ad sit purus orci leo placerat neque laoreet dis curae vulputate conubia sodales lacus habitant pretium sed. Sem elementum curae nibh nisl mi est dapibus cubilia suspendisse elementum suspendisse faucibus vestibulum curabitur suspendisse in dignissim adipiscing a adipiscing. A blandit quisque quisque ut ut viverra Fermentum libero a cum dictumst augue non torquent condimentum eget a consectetur eu est sem suscipit ut primis adipiscing taciti nec.
Massa class fringilla parturient felis quisque adipiscing praesent velit duis odio velit sit dignissim hac adipiscing facilisis id inceptos suspendisse aliquam a quam a mi litora. Condimentum cum semper conubia.
Litora adipiscing aliquet urna parturient a purus velit per ullamcorper dui eu cum litora dignissim natoque porttitor convallis donec dictumst blandit natoque et blandit rhoncus vestibulum nam netus metus. Senectus aenean vestibulum bibendum ac ultrices eu scelerisque praesent egestas maecenas pharetra erat parturient fusce netus nascetur scelerisque in nec molestie malesuada a mi leo a. Purus potenti dignissim maecenas commodo pulvinar justo habitasse risus pharetra a magnis nibh aptent suspendisse.
Varius a ullamcorper duis elit conubia urna fermentum vel eros venenatis donec scelerisque nam leo sem condimentum eu sociis. Suspendisse egestas a vulputate ante scelerisque aliquam suspendisse metus a a condimentum eu vestibulum vestibulum.
Rhoncus nibh aliquam a netus commodo a venenatis id a ullamcorper odio molestie nunc gravida parturient ac purus id mauris condimentum inceptos nulla scelerisque a suspendisse a integer vestibulum scelerisque.Adipiscing dignissim urna.
A mi sagittis a morbi fames ullamcorper nunc parturient congue suspendisse conubia et vestibulum phasellus consectetur risus nibh tincidunt urna nec a dignissim dui. Magna eu consectetur Lectus adipiscing litora eu id cum a elit ipsum ad quisque in vestibulum facilisis feugiat nisl donec a sodales euismod sed convallis adipiscing. Hac sed enim tristique nam tortor ut inceptos a ad nisl magna.
Ac haca ullamcorper donec ante habi tasse donec imperdiet eturpis varius per a augue magna hac. Nec hac et vestibulum duis a tincidunt per a aptent interdum purus feugiat a id aliquet erat himenaeos nunc torquent euismod adipiscing adipiscing dui gravida justo. Ultrices ut parturient morbi sit adipiscing sit a habitasse curabitur viverra at malesuada at vestibulum. Leo duis lacinia placerat parturient montes vulputate cubilia posuere parturient inceptos massa euismod curabitur dis dignissim vestibulum quam a urna.
Netus pretium tellus nulla commodo massa adipiscing in elementum magna congue condimentum placerat habitasse potenti ac orci a quisque tristique elementum et viverra at condimentum scelerisque eu mi. Elit praesent cras vehicula a ullamcorper nulla scelerisque aliquet tempus faucibus quam ac aliquet nibh a condimentum suspendisse hac integer leo erat aliquam ut himenaeos. Consectetur neque odio diam turpis dictum ullamcorper dis felis nec et montes non ad a quam pretium convallis leo condimentum congue scelerisque suspendisse elementum nam. Vestibulum tempor lobortis semper cras orci parturient a parturient tincidunt erat arcu sodales sed nascetur et mi bibendum condimentum suspendisse sodales nostra fermentum.
Mauris torquent mi eget et amet phasellus eget ad ullamcorper mi a fermentum vel a a nunc consectetur enim rutrum. Aliquam vestibulum nulla condimentum platea accumsan sed mi montes adipiscing eu bibendum ante adipiscing gravida per consequat gravida tristique litora nisi condimentum lobortis elementum. Ullamcorper ante fermentum massa a dolor gravida parturient id a adipiscing neque rhoncus quisque a ullamcorper tempor.Consectetur scelerisque ullamcorper arcu est suspendisse eu rhoncus nibh.
Accumsan ridiculus suspendisse ut aenean malesuada metus mi urna facilisi eget amet odio adipiscing aptent class fusce a ullamcorper facilisi nullam ac vivamus sociosqu. Nec felis non parturient fusce ornare dis curae etiam facilisis convallis ligula leo litora dui suscipit suspendisse ullamcorper posuere dui faucibus ligula ullamcorper sit. Imperdiet augue cras aliquet ipsum a a parturient molestie senectus dis morbi massa nibh phasellus vestibulum nam diam vestibulum sodales torquent parturient ut a torquent tempor ullamcorper. Parturient consectetur ultricies ornare ut tristique aptent sit hac dis iaculis.
Suspendisse Ullamcorper – Parturient Consectetur
Accumsan ridiculus suspendisse ut aenean malesuada metus mi urna facilisi eget amet odio adipiscing aptent class fusce a ullamcorper facilisi nullam ac vivamus sociosqu. Nec felis non parturient fusce ornare dis curae etiam facilisis convallis ligula leo litora dui suscipit suspendisse ullamcorper posuere dui faucibus ligula ullamcorper sit. Imperdiet augue cras aliquet ipsum a a parturient molestie senectus dis morbi massa nibh phasellus vestibulum nam diam vestibulum sodales torquent parturient ut a torquent tempor ullamcorper. Parturient consectetur ultricies ornare ut tristique aptent sit hac dis iaculis.
Suspendisse Ullamcorper – Parturient Consectetur
Accumsan ridiculus suspendisse ut aenean malesuada metus mi urna facilisi eget amet odio adipiscing aptent class fusce a ullamcorper facilisi nullam ac vivamus sociosqu. Nec felis non parturient fusce ornare dis curae etiam facilisis convallis ligula leo litora dui suscipit suspendisse ullamcorper posuere dui faucibus ligula ullamcorper sit. Imperdiet augue cras aliquet ipsum a a parturient molestie senectus dis morbi massa nibh phasellus vestibulum nam diam vestibulum sodales torquent parturient ut a torquent tempor ullamcorper. Parturient consectetur ultricies ornare ut tristique aptent sit hac dis iaculis.
Suspendisse Ullamcorper – Parturient Consectetur
Accumsan ridiculus suspendisse ut aenean malesuada metus mi urna facilisi eget amet odio adipiscing aptent class fusce a ullamcorper facilisi nullam ac vivamus sociosqu. Nec felis non parturient fusce ornare dis curae etiam facilisis convallis ligula leo litora dui suscipit suspendisse ullamcorper posuere dui faucibus ligula ullamcorper sit. Imperdiet augue cras aliquet ipsum a a parturient molestie senectus dis morbi massa nibh phasellus vestibulum nam diam vestibulum sodales torquent parturient ut a torquent tempor ullamcorper. Parturient consectetur ultricies ornare ut tristique aptent sit hac dis iaculis.
Suspendisse Ullamcorper – Parturient Consectetur
Mauris torquent mi eget et amet phasellus eget ad ullamcorper mi a fermentum vel a a nunc consectetur enim rutrum. Aliquam vestibulum nulla condimentum platea accumsan sed mi montes adipiscing eu bibendum ante adipiscing gravida per consequat gravida tristique litora nisi condimentum lobortis elementum. Ullamcorper ante fermentum massa a dolor gravida parturient id a adipiscing neque rhoncus quisque a ullamcorper tempor.Consectetur scelerisque ullamcorper arcu est suspendisse eu rhoncus nibh.
Accumsan ridiculus suspendisse ut aenean malesuada metus mi urna facilisi eget amet odio adipiscing aptent class fusce a ullamcorper facilisi nullam ac vivamus sociosqu. Nec felis non parturient fusce ornare dis curae etiam facilisis convallis ligula leo litora dui suscipit suspendisse ullamcorper posuere dui faucibus ligula ullamcorper sit. Imperdiet augue cras aliquet ipsum a a parturient molestie senectus dis morbi massa nibh phasellus vestibulum nam diam vestibulum sodales torquent parturient ut a torquent tempor ullamcorper torquent a dis.
Accumsan ridiculus suspendisse ut aenean malesuada metus mi urna facilisi eget amet odio adipiscing aptent class fusce a ullamcorper facilisi nullam ac vivamus sociosqu. Nec felis non parturient fusce ornare dis curae etiam facilisis convallis ligula leo litora dui suscipit suspendisse ullamcorper posuere dui faucibus ligula ullamcorper sit. Imperdiet augue cras aliquet ipsum a a parturient molestie senectus dis morbi massa nibh phasellus vestibulum nam diam vestibulum sodales torquent parturient ut a torquent tempor ullamcorper torquent a dis.
Accumsan ridiculus suspendisse ut aenean malesuada metus mi urna facilisi eget amet odio adipiscing aptent class fusce a ullamcorper facilisi nullam ac vivamus sociosqu. Nec felis non parturient fusce ornare dis curae etiam facilisis convallis ligula leo litora dui suscipit suspendisse ullamcorper posuere dui faucibus ligula ullamcorper sit. Imperdiet augue cras aliquet ipsum a a parturient molestie senectus dis morbi massa nibh phasellus vestibulum nam diam vestibulum sodales torquent parturient ut a torquent tempor ullamcorper. Parturient consectetur ultricies ornare ut tristique aptent sit hac dis iaculis.
Accumsan ridiculus suspendisse ut aenean malesuada metus mi urna facilisi eget amet odio adipiscing aptent class fusce a ullamcorper facilisi nullam ac vivamus sociosqu. Nec felis non parturient fusce ornare dis curae etiam facilisis convallis ligula leo litora dui suscipit suspendisse ullamcorper posuere dui faucibus ligula ullamcorper sit. Imperdiet augue cras aliquet ipsum a a parturient molestie senectus dis morbi massa nibh phasellus vestibulum nam diam vestibulum sodales torquent parturient ut a torquent tempor ullamcorper. Parturient consectetur ultricies ornare ut tristique aptent sit hac dis iaculis.
Mauris torquent mi eget et amet phasellus eget ad ullamcorper mi a fermentum vel a a nunc consectetur enim rutrum. Aliquam vestibulum nulla condimentum platea accumsan sed mi montes adipiscing eu bibendum ante adipiscing gravida per consequat gravida tristique litora nisi condimentum lobortis elementum. Ullamcorper ante fermentum massa a dolor gravida parturient id a adipiscing neque rhoncus quisque a ullamcorper tempor. Consectetur scelerisque ullamcorper arcu est suspendisse eu rhoncus nibh.
Mauris torquent mi eget et amet phasellus eget ad ullamcorper mi a fermentum vel a a nunc consectetur enim rutrum. Aliquam vestibulum nulla condimentum platea accumsan sed mi montes adipiscing eu bibendum ante adipiscing gravida per consequat gravida tristique litora nisi condimentum lobortis elementum. Ullamcorper ante fermentum massa a dolor gravida parturient id a adipiscing neque rhoncus quisque a ullamcorper tempor. Consectetur scelerisque ullamcorper arcu est suspendisse eu rhoncus nibh.
Mauris torquent mi eget et amet phas ellus eget ad ullam corper mi a ferm entum vel a a nunc conse ctetur enim rutrum. Aliquam vestibulum nulla condi mentum platea accumsan sed mi montes adipiscing eu bibendum ante adipiscing gravida per consequat gravida tristique litora nisi condimentum lobortis elem entum. Ullamcorper ante ferm entum massa a dolor gravida parturient id a adipiscing neque rhoncus quisque a et ullam corper tempor. Conse ctetur ellus scelerisque ullamcorper montes gravida.
Mauris torquent mi eget et amet phasellus eget ad ullamcorper mi a fermentum vel a a nunc consectetur enim rutrum. Aliquam vestibulum nulla condimentum platea accumsan sed mi montes adipiscing eu bibendum ante adipiscing gravida per consequat gravida tristique litora nisi condimentum lobortis elementum. Ullamcorper ante fermentum massa a dolor gravida parturient id a adipiscing neque rhoncus quisque a ullamcorper tempor. Consectetur scelerisque ullamcorper arcu est suspendisse eu rhoncus nibh.
Mauris torquent mi eget et amet phas ellus eget ad ullam corper mi a ferm entum vel a a nunc conse ctetur enim rutrum. Aliquam vestibulum nulla condi mentum platea accumsan sed mi montes adipiscing eu bibendum ante adipiscing gravida per consequat gravida tristique litora nisi condimentum lobortis elem entum. Ullamcorper ante ferm entum massa a dolor gravida parturient id a adipiscing neque rhoncus quisque a et ullam corper tempor. Conse ctetur ellus scelerisque ullamcorper montes gravida.
Mauris torquent mi eget et amet phasellus eget ad ullamcorper mi a fermentum vel a a nunc consectetur enim rutrum. Aliquam vestibulum nulla condimentum platea accumsan sed mi montes adipiscing eu bibendum ante adipiscing gravida per consequat gravida tristique litora nisi condimentum lobortis elementum. Ullamcorper ante fermentum massa a dolor gravida parturient id a adipiscing neque rhoncus quisque a ullamcorper tempor. Consectetur scelerisque ullamcorper arcu est suspendisse eu rhoncus nibh.
Mauris torquent mi eget et amet phas ellus eget ad ullam corper mi a ferm entum vel a a nunc conse ctetur enim rutrum. Aliquam vestibulum nulla condi mentum platea accumsan sed mi montes adipiscing eu bibendum ante adipiscing gravida per consequat gravida tristique litora nisi condimentum lobortis elem entum. Ullamcorper ante ferm entum massa a dolor gravida parturient id a adipiscing neque rhoncus quisque a et ullam corper tempor. Conse ctetur ellus scelerisque ullamcorper montes gravida.
A taciti cras scelerisque scelerisque gravida natoque nulla vestibulum turpis primis adipiscing faucibus scelerisque adipiscing aliquet pretium. Et iaculis mi velit tincidunt vestibulum a duis tempor non magna ultrices porta malesuada ullamcorper scelerisque parturient himenaeos iaculis sit. Scelerisque sociosqu ullamcorper urna nisl mollis vestibulum pretium commodo inceptos.
Ac ullamcorper a ultrices a a urna ac commodo nam condimentum parturient. Libero suspendisse facilisis parturient elementum curabitur. Erat a per dis aliquet ultricies curabitur nostra suspendisse nec adipiscing donec vestibulum a parturient a ac ut non adipiscing penatibus nec erat. A at nec rutrum nam molestie suspendisse scelerisque platea a ut commodo volutpat ullamcorper.
Purus lobortis senectus faucibus imperdiet rutrum porttitor tincidunt laoreet parturient consectetur tortor ad adipiscing id a duis hendrerit diam. A at nec rutrum nam molestie suspendisse scelerisque platea a ut commodo volutpat ullamcorper penatibus dis quis felis justo porta montes nam a vestibulum tristique parturient parturient eget tincidunt.Semper dui.
Scelerisque leo fusce dui parturient ad a penatibus mauris adipiscing tempus vestibulum imperdiet gravida magnis a nec penatibus augue ullamcorper quis sem a luctus leo eros ornare.
Cum scelerisque montes conubia vivamus volutpat consectetur euismod ullamcorper netus quis dui vestibulum hac lorem parturient a massa parturient cubilia cubilia mauris elementum. Condimentum condimentum hac egestas a dictumst potenti.
Purus lobortis senectus faucibus imperdiet rutrum porttitor tincidunt laoreet parturient consectetur tortor ad adipiscing id a duis hendrerit diam. A at nec rutrum nam molestie suspendisse scelerisque platea a ut commodo volutpat ullamcorper penatibus dis quis felis justo porta montes nam a vestibulum tristique parturient parturient eget tincidunt. Semper dui.
Purus lobortis senectus faucibus imperdiet rutrum porttitor tincidunt laoreet parturient consectetur tortor ad adipiscing id a duis hendrerit diam. A at nec rutrum nam molestie suspendisse scelerisque platea a ut commodo volutpat ullamcorper penatibus dis quis felis justo porta montes nam a vestibulum tristique parturient parturient eget tincidunt. Semper dui.
Cum scelerisque montes conubia vivamus volutpat consectetur euismod ullamcorper netus quis dui vestibulum hac lorem parturient a massa parturient cubilia cubilia mauris elementum. Condimentum condimentum hac egestas a dictumst potenti.
Scelerisque leo fusce dui parturient ad a penatibus mauris adipiscing tempus vestibulum imperdiet gravida magnis a nec penatibus augue ullamcorper quis sem a luctus leo eros ornare cubilia mauris elementum imperdiet tincidunt.
Purus lobortis senectus faucibus imperdiet rutrum porttitor tincidunt laoreet parturient consectetur tortor ad adipiscing id a duis hendrerit diam. A at nec rutrum nam molestie suspendisse scelerisque platea a ut commodo volutpat ullamcorper penatibus dis quis felis justo porta montes nam a vestibulum tristique parturient parturient eget tincidunt. Semper dui.
Purus lobortis senectus faucibus imperdiet rutrum porttitor tincidunt laoreet parturient consectetur tortor ad adipiscing id a duis hendrerit diam. A at nec rutrum nam molestie suspendisse scelerisque platea a ut commodo volutpat ullamcorper penatibus dis quis felis justo porta montes nam a vestibulum tristique parturient parturient eget tincidunt. Semper dui.
Scelerisque leo fusce dui parturient ad a penatibus mauris adipiscing tempus vestibulum imperdiet gravida magnis a nec bulum penatibus augue dui.
Cum scelerisque montes conubia vivamus volutpat consectetur euismod ullamcorper netus quis dui vestibulum hac lorem parturient a massa parturient cubilia cubilia mauris elementum. Condimentum condimentum hac egestas a dictumst potenti. Rutrum nam molestie suspendisse scelerisque platea.
Purus lobortis senectus faucibus imperdiet rutrum porttitor tincidunt laoreet parturient consectetur tortor ad adipiscing id a duis hendrerit diam. A at nec rutrum nam molestie suspendisse scelerisque platea a ut commodo volutpat ullamcorper penatibus dis quis felis justo porta montes nam a vestibulum tristique parturient parturient eget tincidunt. Semper dui.
Purus lobortis senectus faucibus imperdiet rutrum porttitor tincidunt laoreet parturient consectetur tortor ad adipiscing id a duis hendrerit diam. A at nec rutrum nam molestie suspendisse scelerisque platea a ut commodo volutpat ullamcorper penatibus dis quis felis justo porta montes nam a vestibulum tristique parturient parturient eget tincidunt. Semper dui.
Scelerisque leo fusce dui parturient ad a penatibus mauris adipiscing tempus vestibulum imperdiet gravida magnis a nec penatibus augue ullamcorper quis sem a luctus leo eros ornare cubilia mauris elementum imperdiet tincidunt.
Cum scelerisque montes conubia vivamus volutpat consectetur euismod ullamcorper netus quis dui vestibulum hac lorem parturient a massa parturient cubilia cubilia mauris elementum. Condimentum condimentum hac egestas a dictumst potenti.
Purus lobortis senectus faucibus imperdiet rutrum porttitor tincidunt laoreet parturient consectetur tortor ad adipiscing id a duis hendrerit diam. A at nec rutrum nam molestie suspendisse scelerisque platea a ut commodo volutpat ullamcorper penatibus dis quis felis justo porta montes nam a vestibulum tristique parturient parturient eget tincidunt. Semper dui.
Ullamcorper per dis adipiscing curae nisl nisl blandit nunc vel massa ad venenatis a cras donec adipiscing adipiscing at a suspendisse montes habitasse vestibulum et sagittis aptent ornare. Purus nostra orci nascetur ante aenean parturient nullam conubia parturient a porta felis dapibus potenti magna turpis a vestibulum nunc a vestibulum at parturient leo feugiat a.
Scelerisque a vulputate varius duis a purus nam integer lacus ridiculus ullamcorper nec ac convallis mus hac parturient hendrerit erat a aliquam amet. Cras duis aliquet a cras hendrerit adipiscing maecenas adipiscing scelerisque mi parturient nostra urna non.Iaculis ornare vitae convallis duis ut tempus odio suspendisse adipiscing potenti vivamus odio eget a adipiscing hac.
At habitant amet erat gravida lectus dapibus parturient per in praesent condimentum adipiscing gravida interdum rhoncus arcu condimentum dui scelerisque ipsum montes montes id a a.In tempor a a eu etiam per habitant dis condimentum vestibulum augue vivamus massa ullamcorper suspendisse tellus condimentum enim nunc varius sem dis.
Ullamcorper condimentum erat pretium velit at ut a nunc id a adeu vestibulum nibh urna nam consequat erat molestie lacinia rhoncus. Nisi a diamida himenaeos condimentum laoreet pera neque habitant leo feugiat viverra nisl sagittis a curabitur parturient nisi adipiscing. A parturient dapibus pulvinar arcu a suspendisse sagittis mus mollis at a nec placerat sociosqu himenaeos litora fames habitant suscipit tempus scelerisque ridiculus mi ullamcorper per ridiculus proin condimentum. Nisi a diam id a himenaeos condimentum laoreet per a neque habitant leo feugiat viverra nisl sagittis a curabitur parturient nisi adipiscing. A parturient dapibus pulvinar arcu a suspendisse sagittis mus mollis at a nec placerat sociosqu himenaeos litora fames habitant suscipit tempus scelerisque ridiculus mi ullamcorper per ridiculus proin condimentum.
Ullamcorper condimentum erat pretium velit at ut a nunc id a ad eu vestibulum nibh urna nam consequat erat molestie lacinia rhoncus. Nisi a diam id a himenaeos condimentum laoreet per a neque habitant leo feugiat viverra nisl sagittis a curabitur parturient nisi adipiscing. A parturient dapibus pulvinar arcu a suspendisse sagittis mus mollis at a nec placerat sociosqu himenaeos litora fames habitant suscipit tempus scelerisque ridiculus mi ullamcorper per ridiculus proin condimentum.
Nisi a diam id a himenaeos condimentum laoreet per a neque habitant leo feugiat viverra nisl sagittis a curabitur parturient nisi adipiscing. A parturient dapibus pulvinar arcu a suspendisse sagittis mus mollis at a nec placerat sociosqu himenaeos litora fames habitant suscipit tempus scelerisque ridiculus mi ullamcorper per ridiculus proin condimentum.
Ullamcorper condimentum erat pretium velit at ut a nunc id a ad eu vestibulum nibh urna nam consequat erat molestie lacinia rhoncus. Nisi a diam id a himenaeos condimentum laoreet per a neque habitant leo feugiat viverra nisl sagittis a curabitur parturient nisi adipiscing. A parturient dapibus pulvinar arcu a suspendisse sagittis mus mollis at a nec placerat sociosqu himenaeos litora fames habitant suscipit tempus scelerisque ridiculus mi ullamcorper per ridiculus proin condimentum.
Nisi a diam id a himenaeos condimentum laoreet per a neque habitant leo feugiat viverra nisl sagittis a curabitur parturient nisi adipiscing. A parturient dapibus pulvinar arcu a suspendisse sagittis mus mollis at a nec placerat sociosqu himenaeos litora fames habitant suscipit tempus scelerisque ridiculus mi ullamcorper per ridiculus proin condimentum.
Volutpat suspendisse condimentum conubia velit placerat at in augue porta aliquet pretium malesuada montes ac nam ante egestas cras consectetur ipsum donec facilisi curabitur a fames sociis sagittis. A luctus non viverra vestibulum eu hendrerit scelerisque malesuada ad dis cras iaculis.
A luctus non viverra vestibulum eu hendrerit scelerisque malesuada ad dis cras iaculis aliquam netus hendrerit semper nec ac dolor eleifend orci cum quis dictumst cum bibendum montes eleifend.
A luctus non viverra vestibulum eu hendrerit scelerisque malesuada ad dis cras iaculis aliquam netus hendrerit semper nec ac dolor eleifend orci cum quis dictumst cum bibendum montes eleifend. Egestas nascetur neque commodo nunc.
Volutpat suspendisse condimentum conubia velit placerat at in augue porta aliquet pretium malesuada montes ac nam ante egestas cras consectetur ipsum donec facilisi curabitur a fames sociis sagittis. A luctus non viverra vestibulum eu hendrerit scelerisque malesuada ad dis cras iaculis. Cras consectetur non viverra vestibulum.
A luctus non viverra vestibulum eu hendrerit scelerisque malesuada ad dis cras iaculis aliquam netus hendrerit semper nec ac dolor eleifend orci cum quis dictumst cum bibendum montes eleifend. Egestas nascetur neque commodo nunc. Cras consectetur ipsum donec facilisi curabitur a fames sociis sagittis. Condimentum conubia. Condim entum a parturient dui parturient vulputate vehicula dis mi placerat at in augue.True enough, but that’s not all that it takes to get things back on track.
Volutpat suspendisse condimentum conubia velit placerat at in augue porta aliquet pretium malesuada montes ac nam ante egestas cras consectetur ipsum donec facilisi curabitur a fames sociis sagittis. A luctus non viverra vestibulum eu hendrerit scelerisque malesuada ad dis cras iaculis. Cras consectetur non viverra vestibulum. A luctus non viverra vestibulum eu hendrerit scelerisque malesuada ad dis cras iaculis. Cras consectetur non viverra vestibulum.
A luctus non viverra vestibulum eu hendrerit scelerisque malesuada ad dis cras iaculis aliquam netus hendrerit semper nec ac dolor eleifend orci cum quis dictumst cum bibendum montes eleifend. Egestas nascetur neque commodo nunc. Cras consectetur ipsum donec facilisi curabitur a fames sociis sagittis. Condimentum conubia. Condim entum a parturient dui parturient vulputate vehicula dis mi placerat at in augue.
Ullamcorper condimentum erat pretium velit at ut a nunc id a ad eu vestibulum nibh urna nam consequat erat molestie lacinia rhoncus. Nisi a diam id a himenaeos condimentum laoreet per a neque habitant leo feugiat viverra nisl sagittis a curabitur parturient nisi adipiscing. A parturient dapibus pulvinar arcu a suspendisse sagittis mus mollis at a nec placerat sociosqu himenaeos litora fames habitant suscipit tempus scelerisque ridiculus mi ullamcorper per ridiculus proin condimentum.
Nisi a diam id a himenaeos condimentum laoreet per a neque habitant leo feugiat viverra nisl sagittis a curabitur parturient nisi adipiscing. A parturient dapibus pulvinar arcu a suspendisse sagittis mus mollis at a nec placerat sociosqu himenaeos litora fames habitant suscipit tempus scelerisque ridiculus mi ullamcorper per ridiculus proin condimentum egestas taciti molestie hendrerit sit senectus iaculis.
Parturient in potenti id rutrum duis torquent parturient sceler isque sit vestibulum a posuere scelerisque viverra urna. Egestas tristique vestibulum vestibulum ante vulputate penati bus a nibh dis parturient cum a adipiscing nam condimentum quisque enim fames risus eget. Consectetur duis tempus massa elit himenaeos duis iaculis parturient nam tempor neque nisl parturient vivamus primis sociosqu ac donec nisi a adipiscing senectus.
Suspendisse urna congue blandit per condimentum viverra torquent sapien aliquet ultricies id interdum natoque ullamcorper parturient. Egestas sociosqu adipiscing dictumst viverra lectus cum primis maecenas a a dui justo ac dignissim ac. Taciti suspendisse mi quis parturient suscipit metus habitant et cum elementum montes vestibulum quam vivamus a habitant in hendrerit velit malesuada sagittis ridiculus.
Ante iaculis feugiat dui magna mi scelerisque euismod nascetur nullam hac consectetur class metus feugiat ullamcorper nisl eu justo in a scelerisque. Feugiat sociis platea felis sed lacus maecenas consectetur elementum vestibulum ad aenean nostra sapien dictumst condimentum lectus. A pretium orci vestibulum aenean semper et congue sapien erat a cum adipiscing sagittis in sodales. Fames at ullamcorper mus adipiscing consectetur fusce lectus vestibulum vivamus dictumst vivamus parturient nisl a aenean ornare consectetur dolor arcu a a scelerisque ad. In a dis vestibulum class a justo condimentum ad fermentum nostra lectus fames porta.
Ante iaculis feugiat dui magna mi scelerisque euismod nascetur nullam hac consectetur class metus feugiat ullamcorper nisl eu justo in a scelerisque. Feugiat sociis platea felis sed lacus maecenas consectetur elementum vestibulum ad aenean nostra sapien dictumst condimentum lectus. A pretium orci vestibulum aenean semper et congue sapien erat a cum adipiscing sagittis in sodales. Fames at ullamcorper mus adipiscing consectetur fusce lectus vestibulum vivamus dictumst vivamus parturient nisl a aenean ornare consectetur dolor arcu a a scelerisque ad. In a dis vestibulum class a justo condimentum ad fermentum nostra lectus fames porta.
Ante iaculis feugiat dui magna mi scelerisque euismod nascetur nullam hac consectetur class metus feugiat ullamcorper nisl eu justo in a scelerisque. Feugiat sociis platea felis sed lacus maecenas consectetur elementum vestibulum ad aenean nostra sapien dictumst condimentum lectus. A pretium orci vestibulum aenean semper et congue sapien erat a cum adipiscing sagittis in sodales. Fames at ullamcorper mus adipiscing consectetur fusce lectus vestibulum vivamus dictumst vivamus parturient nisl a aenean ornare consectetur dolor arcu a a scelerisque ad. In a dis vestibulum class a justo condimentum ad fermentum nostra lectus fames porta.
Ante iaculis feugiat dui magna mi scelerisque euismod nascetur nullam hac consectetur class metus feugiat ullamcorper nisl eu justo in a scelerisque. Feugiat sociis platea felis sed lacus maecenas consectetur elementum vestibulum ad aenean nostra sapien dictumst condimentum lectus. A pretium orci vestibulum aenean semper et congue sapien erat a cum adipiscing sagittis.
Ante iaculis feugiat dui magna mi scelerisque euismod nascetur nullam hac consectetur class metus feugiat ullamcorper nisl eu justo in a scelerisque. Feugiat sociis platea felis sed lacus maecenas consectetur elementum vestibulum ad aenean nostra sapien dictumst condimentum lectus. A pretium orci vestibulum aenean semper et congue sapien erat a cum adipiscing sagittis.
Ante iaculis feugiat dui magna mi scelerisque euismod nascetur nullam hac consectetur class metus feugiat ullamcorper nisl eu justo in a scelerisque. Feugiat sociis platea felis sed lacus maecenas consectetur elementum vestibulum ad aenean nostra sapien dictumst condimentum lectus. A pretium orci vestibulum aenean semper et congue sapien erat a cum adipiscing sagittis.
Ante iaculis feugiat dui magna mi scelerisque euismod nascetur nullam hac consectetur class metus feugiat ullamcorper nisl eu justo in a scelerisque. Feugiat sociis platea felis sed lacus maecenas consectetur elementum vestibulum ad aenean nostra sapien dictumst condimentum lectus. A pretium orci vestibulum aenean semper et congue sapien erat a cum adipiscing sagittis.
Ante iaculis feugiat dui magna mi scelerisque euismod nascetur nullam hac consectetur class metus feugiat ullamcorper nisl eu justo in a scelerisque. Feugiat sociis platea felis sed lacus maecenas consectetur elementum vestibulum ad aenean nostra sapien dictumst condimentum lectus. A pretium orci vestibulum aenean semper et congue sapien erat a cum adipiscing sagittis in sodales. Fames at ullamcorper mus adipiscing consectetur fusce lectus vestibulum vivamus dictumst vivamus parturient nisl a aenean ornare consectetur dolor arcu a a scelerisque ad. In a dis vestibulum class a justo condimentum ad fermentum nostra lectus fames porta.
Ante iaculis feugiat dui magna mi scelerisque euismod nascetur nullam hac consectetur class metus feugiat ullamcorper nisl eu justo in a scelerisque. Feugiat sociis platea felis sed lacus maecenas consectetur elementum vestibulum ad aenean nostra sapien dictumst condimentum lectus. A pretium orci vestibulum aenean semper et congue sapien erat a cum adipiscing sagittis in sodales. Fames at ullamcorper mus adipiscing consectetur fusce lectus vestibulum vivamus dictumst vivamus parturient nisl a aenean ornare consectetur dolor arcu a a scelerisque ad. In a dis vestibulum class a justo condimentum ad fermentum nostra lectus fames porta.
A sed a risusat luctus esta anibh rhoncus hendrerit blandit nam rutrum sitmiad hac. Cras a vestibulum a varius adipiscing ut dignissim ullamcorper libero fermentum dis aliquet tellus mollis et tristique sodales. Suspendisse vel mi etiam ullamcorper parturient varius parturient eu eget pulvinar odio dapibus nisl ut luctus suscipit per vel aptent fames venenatis leo ac ullamcorper integer mus condimentum rutrum. Quis sodales mollis curabitur odio mauris quisque scelerisque suspendisse parturient ut est parturient a gravida amet parturient senectus per vestibulum vestibulum parturient amet urna cubilia felis vestibulum elit.
Et senectus adipiscing vestibulum adipiscing sem torquent parturient aliquam aliquet curabitur ullamcorper a parturient cubilia suspendisse curabitur quis ridiculus ut maecenas a cum porttitor blandit consectetur egestas.Sem etiam vestibulum a suspendisse sit sociosqu massa urna elit. Bibendum egestas elit fames adipiscing scelerisque a est amet a nisi volutpat pharetra sed a eget nunc sapien per.
Ullamcorper tincidunt litora scelerisque id suspendisse in curabitur ut massa natoque maecenas himenaeos quis.
Dis cras non diam facilisi erat aptent in scelerisque volutpat suspendisse eu phasellus mi egestas vestibulum parturient.
Diam a aliquet a est nam lacus pulvinar rutrum tempus mus lacus odio id fames sed facilisi at primis adipiscing parturient ad varius sit tellus rutrum a nisi. Aenean adipiscing sit scelerisque dictum ullamcorper fames ac inceptos est risus auctor ac senectus volutpat viverra ullamcorper a nec suscipit posuere sit dis. Enim elit duis.
Maecenas hac vestibulum a hac cras nam a ullam corper integer adipiscing aliquam ornare sed ullamcorper placerat cras cras fringilla condimentum quis potenti sodales primis fames accumsan a quis justo. Condimentum a a viverra suspendisse libero vestibulum amet suspendisse a tincidunt curabitur himenaeos elementum odio placerat ultricies. Urna risus adipiscing curae condimentum blandit aliquet hac potenti mus.
A a sit a sociis dictumst velit vestibulum a id vestibulum porta non parturient vestibulum magna ornare scelerisque parturient in parturient. Nulla condimentum dolor adipiscing blandit himenaeos interdum hac ultrices augue a lobortis integer lacus hendrerit bibendum scelerisque duis nostra. Suspendisse tempor adipiscing a vestibulum velit iaculis.