/*! elementor-pro - v3.32.0 - 21-10-2025 */
/******/ (() => { // webpackBootstrap
/******/ var __webpack_modules__ = ({
/***/ "../core/app/assets/js/utils.js":
/*!**************************************!*\
!*** ../core/app/assets/js/utils.js ***!
\**************************************/
/***/ ((__unused_webpack_module, exports) => {
"use strict";
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports.replaceUtmPlaceholders = exports.htmlDecodeTextContent = exports.arrayToClassName = void 0;
// Copied from Core.
const arrayToClassName = (array, action) => {
return array.filter(item => 'object' === typeof item ? Object.entries(item)[0][1] : item).map(item => {
const value = 'object' === typeof item ? Object.entries(item)[0][0] : item;
return action ? action(value) : value;
}).join(' ');
};
exports.arrayToClassName = arrayToClassName;
const htmlDecodeTextContent = input => {
const doc = new DOMParser().parseFromString(input, 'text/html');
return doc.documentElement.textContent;
};
exports.htmlDecodeTextContent = htmlDecodeTextContent;
const replaceUtmPlaceholders = function () {
let link = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
let utms = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
if (!link || !utms) {
return link;
}
Object.keys(utms).forEach(key => {
const match = new RegExp(`%%${key}%%`, 'g');
link = link.replace(match, utms[key]);
});
return link;
};
exports.replaceUtmPlaceholders = replaceUtmPlaceholders;
/***/ }),
/***/ "../modules/display-conditions/assets/js/editor/app.js":
/*!*************************************************************!*\
!*** ../modules/display-conditions/assets/js/editor/app.js ***!
\*************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
var _content = _interopRequireDefault(__webpack_require__(/*! ./components/content */ "../modules/display-conditions/assets/js/editor/components/content.js"));
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
const App = props => {
const [dialogOpen, setDialogOpen] = (0, _react.useState)(true),
fadeDuration = 500;
(0, _react.useEffect)(() => {
if (!dialogOpen) {
const timeoutId = setTimeout(() => {
props.onClose();
}, fadeDuration);
return () => clearTimeout(timeoutId);
}
}, [dialogOpen]);
const handleCloseDialog = () => {
setDialogOpen(false);
};
return /*#__PURE__*/_react.default.createElement(_ui.DirectionProvider, {
rtl: props.isRTL
}, /*#__PURE__*/_react.default.createElement(_ui.LocalizationProvider, null, /*#__PURE__*/_react.default.createElement(_ui.ThemeProvider, {
colorScheme: props.colorScheme
}, /*#__PURE__*/_react.default.createElement(_ui.Dialog, {
open: dialogOpen,
fullWidth: true,
maxWidth: "lg",
TransitionComponent: _ui.Fade,
transitionDuration: {
enter: fadeDuration,
exit: fadeDuration
},
sx: {
'& .MuiDialog-paper': {
height: 'calc(100vh - 4rem)',
maxHeight: 775
}
}
}, /*#__PURE__*/_react.default.createElement(_content.default, {
getControlValue: props.getControlValue,
setControlValue: props.setControlValue,
fetchData: props.fetchData,
onClose: handleCloseDialog,
conditionsConfig: props.conditionsConfig,
setCacheNoticeStatus: props.setCacheNoticeStatus
})))));
};
App.propTypes = {
colorScheme: PropTypes.oneOf(['auto', 'light', 'dark']),
isRTL: PropTypes.bool,
getControlValue: PropTypes.func.isRequired,
setControlValue: PropTypes.func.isRequired,
fetchData: PropTypes.func.isRequired,
onClose: PropTypes.func.isRequired,
conditionsConfig: PropTypes.object.isRequired,
setCacheNoticeStatus: PropTypes.func.isRequired
};
var _default = exports["default"] = App;
/***/ }),
/***/ "../modules/display-conditions/assets/js/editor/behavior.js":
/*!******************************************************************!*\
!*** ../modules/display-conditions/assets/js/editor/behavior.js ***!
\******************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
var _app = _interopRequireDefault(__webpack_require__(/*! ./app */ "../modules/display-conditions/assets/js/editor/app.js"));
class DisplayConditionsBehavior extends Marionette.Behavior {
ui() {
const iconClass = '.eicon-flow.e-control-display-conditions';
return {
displayConditionsButton: iconClass,
displayConditionsPromoButton: `${iconClass}-promo`
};
}
events() {
return {
'click @ui.displayConditionsButton': 'onClickControlButtonDisplayConditions',
'mouseenter @ui.displayConditionsPromoButton': 'onHoverControlButtonDisplayConditions'
};
}
onClickControlButtonDisplayConditions(event) {
event.stopPropagation();
this.mount();
}
onHoverControlButtonDisplayConditions(event) {
event.stopPropagation();
elementor.promotion.showDialog({
title: __('Display Conditions', 'elementor-pro'),
content: __('Upgrade to Elementor Pro Advanced to get the Display Conditions feature as well as additional professional and ecommerce widgets', 'elementor-pro'),
targetElement: this.el,
actionButton: {
url: 'https://go.elementor.com/go-pro-advanced-display-conditions/',
text: __('Upgrade Now', 'elementor-pro'),
classes: ['elementor-button', 'go-pro']
}
});
}
getRootElement() {
let rootElement = window.parent.document.getElementById('elementor-conditions__modal');
if (!!rootElement) {
return rootElement;
}
rootElement = document.createElement('div');
rootElement.setAttribute('id', 'elementor-conditions__modal');
return rootElement;
}
mount() {
const colorScheme = elementor?.getPreferences?.('ui_theme') || 'auto',
isRTL = elementorCommon.config.isRTL,
rootElement = this.getRootElement();
window.parent.document.body.appendChild(rootElement);
ReactDOM.render(/*#__PURE__*/_react.default.createElement(_app.default // eslint-disable-line react/no-deprecated
, {
colorScheme: colorScheme,
isRTL: isRTL,
getControlValue: this.getOption('getControlValue'),
setControlValue: this.getOption('setControlValue'),
fetchData: this.getOption('fetchData'),
onClose: () => this.unmount(rootElement),
conditionsConfig: this.getOption('conditionsConfig'),
setCacheNoticeStatus: this.getOption('setCacheNoticeStatus')
}), rootElement);
}
unmount(rootElement) {
// eslint-disable-next-line react/no-deprecated
ReactDOM.unmountComponentAtNode(rootElement);
rootElement.remove();
}
}
exports["default"] = DisplayConditionsBehavior;
/***/ }),
/***/ "../modules/display-conditions/assets/js/editor/components/cache-notice.js":
/*!*********************************************************************************!*\
!*** ../modules/display-conditions/assets/js/editor/components/cache-notice.js ***!
\*********************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
const CacheNotice = _ref => {
let {
setCacheNoticeStatus
} = _ref;
const [open, setOpen] = (0, _react.useState)(true);
const handleClose = async () => {
const response = await setCacheNoticeStatus();
if (response) {
setOpen(false);
}
};
return /*#__PURE__*/_react.default.createElement(_ui.Box, null, /*#__PURE__*/_react.default.createElement(_ui.Collapse, {
in: open,
sx: {
px: 3
}
}, /*#__PURE__*/_react.default.createElement(_ui.Alert, {
color: "info",
severity: "error",
variant: "standard",
onClose: handleClose,
sx: {
mt: 3
}
}, (0, _i18n.__)('Keep in mind: Certain cache plugins can conflict with your display conditions. ', 'elementor-pro'), /*#__PURE__*/_react.default.createElement(_ui.Link, {
href: "https://go.elementor.com/app-display-conditions-cache-notice/",
underline: "hover",
color: "info.main",
target: "_blank",
sx: {
'&:hover': {
color: theme => theme.palette.info.main
}
}
}, (0, _i18n.__)('Learn more', 'elementor-pro')))));
};
CacheNotice.propTypes = {
setCacheNoticeStatus: PropTypes.func.isRequired
};
var _default = exports["default"] = CacheNotice;
/***/ }),
/***/ "../modules/display-conditions/assets/js/editor/components/conditions-repeater-row.js":
/*!********************************************************************************************!*\
!*** ../modules/display-conditions/assets/js/editor/components/conditions-repeater-row.js ***!
\********************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var React = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var PropTypes = _interopRequireWildcard(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
var _useConditions = _interopRequireDefault(__webpack_require__(/*! ../hooks/use-conditions */ "../modules/display-conditions/assets/js/editor/hooks/use-conditions.js"));
var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
var _controlRenderer = _interopRequireDefault(__webpack_require__(/*! ./control-renderer */ "../modules/display-conditions/assets/js/editor/components/control-renderer.js"));
var _conditionSelectControl = _interopRequireDefault(__webpack_require__(/*! ./controls/ui/condition-select-control */ "../modules/display-conditions/assets/js/editor/components/controls/ui/condition-select-control.js"));
var _conditionSelectOption = _interopRequireDefault(__webpack_require__(/*! ./controls/ui/condition-select-option */ "../modules/display-conditions/assets/js/editor/components/controls/ui/condition-select-option.js"));
var _rowControls = _interopRequireDefault(__webpack_require__(/*! ./ui/row-controls */ "../modules/display-conditions/assets/js/editor/components/ui/row-controls.js"));
var _utils = __webpack_require__(/*! ../utils/utils */ "../modules/display-conditions/assets/js/editor/utils/utils.js");
var _constants = __webpack_require__(/*! ../utils/constants */ "../modules/display-conditions/assets/js/editor/utils/constants.js");
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
const ConditionsRepeaterRow = _ref => {
let {
andConditionIndex,
orConditionIndex
} = _ref;
const {
selectedConditions,
conditionsConfig,
dispatch
} = (0, _useConditions.default)(),
{
conditions: availableConditions,
flattenedConditionOptions
} = conditionsConfig,
orCondition = selectedConditions[orConditionIndex];
const andCondition = orCondition[andConditionIndex],
selectedConditionKey = andCondition?.condition;
const conditionControls = availableConditions[selectedConditionKey]?.controls || {},
controlCount = Object.keys(conditionControls).length;
const handleChangeCondition = event => {
const conditionKey = event.target.value,
conditionToChange = {
condition: conditionKey,
...(0, _utils.getConditionInitialState)(availableConditions, conditionKey)
};
dispatch({
type: _constants.ACTION_TYPES.CHANGE_CONDITION_TYPE,
orConditionIndex,
andConditionIndex,
conditionToChange
});
};
return /*#__PURE__*/React.createElement(_ui.Container, {
maxWidth: "md",
sx: {
display: 'flex',
gap: 0.5,
mb: 1,
position: 'relative'
},
className: `and-condition-repeater-row and-condition-${andConditionIndex}`
}, /*#__PURE__*/React.createElement(_conditionSelectControl.default, {
id: "condition-select",
value: andCondition.condition || '',
onChange: event => handleChangeCondition(event, andConditionIndex),
controlCount: controlCount
}, flattenedConditionOptions.map(_ref2 => {
let {
key,
label,
isGroup
} = _ref2;
return isGroup ? /*#__PURE__*/React.createElement(_ui.ListSubheader, {
key: key
}, /*#__PURE__*/React.createElement(_conditionSelectOption.default, {
variant: "caption",
controlCount: controlCount
}, label)) : /*#__PURE__*/React.createElement(_ui.MenuItem, {
key: key,
value: key
}, /*#__PURE__*/React.createElement(_conditionSelectOption.default, {
controlCount: controlCount
}, label));
})), Object.keys(conditionControls).map(controlKey => /*#__PURE__*/React.createElement(_controlRenderer.default, {
key: controlKey,
controlKey: controlKey,
andConditionIndex: andConditionIndex,
orConditionIndex: orConditionIndex,
controlCount: controlCount
})), /*#__PURE__*/React.createElement(_rowControls.default, {
orConditionIndex: orConditionIndex,
andConditionIndex: andConditionIndex
}));
};
ConditionsRepeaterRow.propTypes = {
andConditionIndex: PropTypes.number.isRequired,
orConditionIndex: PropTypes.number.isRequired
};
var _default = exports["default"] = ConditionsRepeaterRow;
/***/ }),
/***/ "../modules/display-conditions/assets/js/editor/components/conditions-selectors.js":
/*!*****************************************************************************************!*\
!*** ../modules/display-conditions/assets/js/editor/components/conditions-selectors.js ***!
\*****************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
var _useConditions = _interopRequireDefault(__webpack_require__(/*! ../hooks/use-conditions */ "../modules/display-conditions/assets/js/editor/hooks/use-conditions.js"));
var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
var _conditionsRepeaterRow = _interopRequireDefault(__webpack_require__(/*! ./conditions-repeater-row */ "../modules/display-conditions/assets/js/editor/components/conditions-repeater-row.js"));
const ConditionsSelectors = _ref => {
let {
orConditionIndex
} = _ref;
const {
selectedConditions
} = (0, _useConditions.default)(),
orCondition = selectedConditions[orConditionIndex];
return /*#__PURE__*/_react.default.createElement(_ui.Box, {
sx: {
my: 2,
gap: 1
},
className: `or-condition-repeater or-condition-${orConditionIndex}`
}, orCondition.map((andCondition, andConditionIndex) => /*#__PURE__*/_react.default.createElement(_conditionsRepeaterRow.default, {
key: 'or-condition-row-' + andConditionIndex,
andConditionIndex: andConditionIndex,
orConditionIndex: orConditionIndex
})));
};
ConditionsSelectors.propTypes = {
orConditionIndex: PropTypes.number.isRequired
};
var _default = exports["default"] = ConditionsSelectors;
/***/ }),
/***/ "../modules/display-conditions/assets/js/editor/components/conditions.js":
/*!*******************************************************************************!*\
!*** ../modules/display-conditions/assets/js/editor/components/conditions.js ***!
\*******************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var React = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
var _hierarchyIcon = _interopRequireDefault(__webpack_require__(/*! ./icons/hierarchy-icon */ "../modules/display-conditions/assets/js/editor/components/icons/hierarchy-icon.js"));
var _orRowGroup = _interopRequireDefault(__webpack_require__(/*! ./or-row-group */ "../modules/display-conditions/assets/js/editor/components/or-row-group.js"));
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
const Conditions = props => {
return /*#__PURE__*/React.createElement(_ui.Box, {
display: "flex",
justifyContent: "center",
alignItems: "flex-start",
sx: {
flex: 1,
overflow: 'auto'
}
}, /*#__PURE__*/React.createElement(_ui.Stack, {
maxWidth: "md",
width: "100%",
justifyContent: "center",
textAlign: "center",
sx: {
pt: 5,
pb: 10,
px: 6
}
}, /*#__PURE__*/React.createElement(_hierarchyIcon.default, {
fontSize: "large",
sx: {
mb: 1,
mx: 'auto'
}
}), /*#__PURE__*/React.createElement(_ui.Typography, {
component: "h6",
variant: "h6",
color: "text.primary"
}, __('Set one or more conditions for this element', 'elementor-pro')), /*#__PURE__*/React.createElement(_ui.Typography, {
variant: "body2",
color: "text.tertiary",
sx: {
mb: 4
}
}, __('It will only appear on your website when all the conditions are met.', 'elementor-pro'), ' ', /*#__PURE__*/React.createElement(_ui.Link, {
href: "https://go.elementor.com/app-display-conditions/",
target: "_blank",
rel: "noreferrer",
color: "info.main",
underline: "hover",
sx: {
'&:hover': {
color: theme => theme.palette.info.main
}
}
}, __('Learn more', 'elementor-pro'))), /*#__PURE__*/React.createElement(_orRowGroup.default, props)));
};
var _default = exports["default"] = Conditions;
/***/ }),
/***/ "../modules/display-conditions/assets/js/editor/components/content.js":
/*!****************************************************************************!*\
!*** ../modules/display-conditions/assets/js/editor/components/content.js ***!
\****************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var _conditionsReducer = __webpack_require__(/*! ../reducers/conditions-reducer */ "../modules/display-conditions/assets/js/editor/reducers/conditions-reducer.js");
var _conditionsContext = __webpack_require__(/*! ../contexts/conditions-context */ "../modules/display-conditions/assets/js/editor/contexts/conditions-context.js");
var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
var _utils = __webpack_require__(/*! ../utils/utils */ "../modules/display-conditions/assets/js/editor/utils/utils.js");
var _header = _interopRequireDefault(__webpack_require__(/*! ./header */ "../modules/display-conditions/assets/js/editor/components/header.js"));
var _footer = _interopRequireDefault(__webpack_require__(/*! ./footer */ "../modules/display-conditions/assets/js/editor/components/footer.js"));
var _conditions = _interopRequireDefault(__webpack_require__(/*! ./conditions */ "../modules/display-conditions/assets/js/editor/components/conditions.js"));
var _cacheNotice = _interopRequireDefault(__webpack_require__(/*! ./cache-notice */ "../modules/display-conditions/assets/js/editor/components/cache-notice.js"));
var _constants = __webpack_require__(/*! ../utils/constants */ "../modules/display-conditions/assets/js/editor/utils/constants.js");
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
const Content = _ref => {
let {
getControlValue,
setControlValue,
conditionsConfig,
onClose,
fetchData,
setCacheNoticeStatus
} = _ref;
const inputValue = getControlValue(),
controlValue = inputValue || [],
initialState = {
conditionsConfig,
selectedConditions: controlValue,
fetchData
};
const [showConditions, setShowConditions] = _react.default.useState(true),
[conditionsStore, dispatch] = (0, _react.useReducer)(_conditionsReducer.conditionsReducer, initialState),
[saveButtonDisplay, setSaveButtonDisplay] = (0, _react.useState)(false),
{
selectedConditions
} = conditionsStore;
(0, _react.useEffect)(() => {
if (!saveButtonDisplay) {
setSaveButtonDisplay(true);
}
}, [selectedConditions]);
(0, _react.useEffect)(() => {
setSaveButtonDisplay(false);
}, []);
const handleEmptyFieldsAndGetFirstInvalidIndex = () => {
let hasFoundInvalidCondition = false,
invalidOrConditionIndex = null,
invalidAndConditionIndex = null;
selectedConditions.forEach((orCondition, orConditionIndex) => {
const {
hasFoundInvalidConditionInConditionSet,
invalidAndConditionIndex: andConditionIndex
} = handleEmptyFieldsPerConditionSet(orCondition, orConditionIndex);
if (hasFoundInvalidConditionInConditionSet && !hasFoundInvalidCondition) {
hasFoundInvalidCondition = true;
invalidAndConditionIndex = andConditionIndex;
invalidOrConditionIndex = orConditionIndex;
}
});
return {
hasFoundInvalidCondition,
invalidOrConditionIndex,
invalidAndConditionIndex
};
};
const handleEmptyFieldsPerConditionSet = (orCondition, orConditionIndex) => {
let hasFoundInvalidConditionInConditionSet = false,
invalidAndConditionIndex = null;
orCondition.forEach((andCondition, andConditionIndex) => {
const {
condition: conditionKey
} = andCondition,
requiredKeys = getRequiredControlKeys(conditionKey);
const isCurrentConditionInvalid = handleInvalidRequiredKeysPerCondition({
requiredKeys,
andCondition,
orConditionIndex,
andConditionIndex
});
if (isCurrentConditionInvalid && !hasFoundInvalidConditionInConditionSet) {
invalidAndConditionIndex = andConditionIndex;
hasFoundInvalidConditionInConditionSet = true;
}
});
return {
hasFoundInvalidConditionInConditionSet,
invalidAndConditionIndex
};
};
const handleInvalidRequiredKeysPerCondition = _ref2 => {
let {
requiredKeys,
andCondition,
orConditionIndex,
andConditionIndex
} = _ref2;
const {
condition: conditionKey
} = andCondition;
let hasFoundInvalidCondition = false;
requiredKeys.forEach(controlKey => {
const value = andCondition[controlKey],
{
type,
variant = null
} = conditionsConfig.conditions[conditionKey].controls[controlKey];
if (value?.length || (0, _utils.shouldEmptyValuePassValidation)(andCondition.condition, andCondition.comparator)) {
return;
}
if (!hasFoundInvalidCondition) {
hasFoundInvalidCondition = true;
}
dispatch({
type: _constants.ACTION_TYPES.SET_ERRORS,
andConditionIndex,
orConditionIndex,
errors: {
[controlKey]: (0, _utils.getInvalidInputFeedback)(type, variant, value, true)
}
});
});
return hasFoundInvalidCondition;
};
const handleSave = () => {
const {
hasFoundInvalidCondition,
invalidOrConditionIndex,
invalidAndConditionIndex
} = handleEmptyFieldsAndGetFirstInvalidIndex();
if (hasFoundInvalidCondition) {
const className = `.or-condition-repeater.or-condition-${invalidOrConditionIndex} .and-condition-repeater-row.and-condition-${invalidAndConditionIndex}`,
conditionRepeaterRows = document.querySelector(className);
setTimeout(() => conditionRepeaterRows?.scrollIntoView({
behavior: 'smooth'
}), 100);
return;
}
setControlValue([JSON.stringify(getSanitizedConditions())]);
onClose();
};
const getRequiredControlKeys = condition => {
const {
controls
} = conditionsConfig.conditions[condition];
return Object.keys(controls).filter(key => controls[key].required);
};
const getSanitizedConditions = () => {
return selectedConditions.map(orCondition => {
return orCondition.map(andCondition => {
const formattedCondition = {
...andCondition
};
delete formattedCondition.errors;
return formattedCondition;
});
});
};
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_header.default, {
onClose: onClose
}), /*#__PURE__*/_react.default.createElement(_ui.Divider, {
orientation: "horizontal"
}), conditionsConfig.show_cache_notice && /*#__PURE__*/_react.default.createElement(_cacheNotice.default, {
setCacheNoticeStatus: setCacheNoticeStatus
}), /*#__PURE__*/_react.default.createElement(_conditionsContext.ConditionsContext.Provider, {
value: {
dispatch,
...conditionsStore
}
}, /*#__PURE__*/_react.default.createElement(_conditions.default, {
showConditions: showConditions,
setShowConditions: setShowConditions
})), /*#__PURE__*/_react.default.createElement(_ui.Divider, {
orientation: "horizontal"
}), /*#__PURE__*/_react.default.createElement(_footer.default, {
onClickSaveButton: () => handleSave(),
showConditions: showConditions,
setShowConditions: setShowConditions,
isButtonDisabled: saveButtonDisplay
}));
};
Content.propTypes = {
getControlValue: PropTypes.func.isRequired,
setControlValue: PropTypes.func.isRequired,
fetchData: PropTypes.func.isRequired,
onClose: PropTypes.func.isRequired,
conditionsConfig: PropTypes.object.isRequired,
setCacheNoticeStatus: PropTypes.func.isRequired
};
var _default = exports["default"] = Content;
/***/ }),
/***/ "../modules/display-conditions/assets/js/editor/components/control-renderer.js":
/*!*************************************************************************************!*\
!*** ../modules/display-conditions/assets/js/editor/components/control-renderer.js ***!
\*************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var React = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var PropTypes = _interopRequireWildcard(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
var _useConditions = _interopRequireDefault(__webpack_require__(/*! ../hooks/use-conditions */ "../modules/display-conditions/assets/js/editor/hooks/use-conditions.js"));
var _selectControl = _interopRequireDefault(__webpack_require__(/*! ./controls/select-control */ "../modules/display-conditions/assets/js/editor/components/controls/select-control.js"));
var _autocompleteControl = _interopRequireDefault(__webpack_require__(/*! ./controls/autocomplete-control */ "../modules/display-conditions/assets/js/editor/components/controls/autocomplete-control.js"));
var _queryControl = _interopRequireDefault(__webpack_require__(/*! ./controls/query-control */ "../modules/display-conditions/assets/js/editor/components/controls/query-control.js"));
var _textFieldControl = _interopRequireDefault(__webpack_require__(/*! ./controls/text-field-control */ "../modules/display-conditions/assets/js/editor/components/controls/text-field-control.js"));
var _datePickerControl = _interopRequireDefault(__webpack_require__(/*! ./controls/date-picker-control */ "../modules/display-conditions/assets/js/editor/components/controls/date-picker-control.js"));
var _timePickerControl = _interopRequireDefault(__webpack_require__(/*! ./controls/time-picker-control */ "../modules/display-conditions/assets/js/editor/components/controls/time-picker-control.js"));
var _constants = __webpack_require__(/*! ../utils/constants */ "../modules/display-conditions/assets/js/editor/utils/constants.js");
var _utils = __webpack_require__(/*! ../utils/utils */ "../modules/display-conditions/assets/js/editor/utils/utils.js");
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
const ControlRenderer = _ref => {
let {
controlKey,
andConditionIndex,
orConditionIndex,
controlCount
} = _ref;
const {
conditionsConfig,
selectedConditions,
dispatch
} = (0, _useConditions.default)(),
{
conditions: availableConditions
} = conditionsConfig,
orCondition = selectedConditions[orConditionIndex],
andCondition = orCondition[andConditionIndex];
const selectedConditionKey = andCondition.condition,
{
controls = {}
} = availableConditions[selectedConditionKey],
control = {} = controls[controlKey],
{
options = {}
} = control;
if ('__settings' === controlKey) {
return null;
}
const extractControlPropsFromGlobals = defaultAltValue => {
const valueProps = getControlValueRelatedProps(defaultAltValue),
invalidInputProps = getControlInvalidInputRelatedProps(),
controlProps = {
controlKey,
control,
conditionIndex: andConditionIndex,
condition: andCondition,
conditions: availableConditions,
options,
onChangeOption: handleChangeOption,
controlCount
};
if ((0, _utils.shouldDisableControl)(controlKey, controlProps.condition.comparator)) {
controlProps.disabled = true;
}
return {
...valueProps,
...invalidInputProps,
...controlProps
};
};
const getControlValueRelatedProps = defaultAltValue => {
defaultAltValue = (0, _utils.getControlValue)(defaultAltValue, _constants.DEFAULT_CONTROL_VALUES[control.type]);
const defaultValue = (0, _utils.getControlValue)(control?.default, Object.keys(options)[0] || defaultAltValue),
value = (0, _utils.getControlValue)(andCondition[controlKey], defaultValue);
const placeholder = control?.placeholder || '',
isMultiple = control?.multiple || false;
return {
defaultValue,
value,
placeholder,
isMultiple
};
};
const getControlInvalidInputRelatedProps = () => {
const conditionErrors = andCondition.errors || {},
controlErrors = conditionErrors[controlKey] || {},
errorMessage = controlErrors.shouldShow && controlErrors.message || '',
shouldShowError = Boolean(errorMessage);
return {
errorMessage,
shouldShowError
};
};
const handleChangeOption = value => {
const {
type,
variant
} = controls[controlKey],
error = (0, _utils.getInvalidInputFeedback)(type, variant, value);
dispatch({
type: _constants.ACTION_TYPES.CHANGE_CONTROL_VALUE,
orConditionIndex,
andConditionIndex,
controlKey,
value
});
dispatch({
type: _constants.ACTION_TYPES.SET_ERRORS,
andConditionIndex,
orConditionIndex,
errors: {
[controlKey]: error
}
});
};
const getDateAndTimeBasedControl = variant => {
switch (variant) {
case 'date':
return /*#__PURE__*/React.createElement(_datePickerControl.default, extractControlPropsFromGlobals());
case 'time':
return /*#__PURE__*/React.createElement(_timePickerControl.default, extractControlPropsFromGlobals());
}
};
switch (control.type) {
case _constants.CONTROL_TYPES.SELECT:
return /*#__PURE__*/React.createElement(_selectControl.default, extractControlPropsFromGlobals());
case _constants.CONTROL_TYPES.MULTIPLE_SELECT:
return /*#__PURE__*/React.createElement(_autocompleteControl.default, extractControlPropsFromGlobals());
case _constants.CONTROL_TYPES.DATE_TIME:
return getDateAndTimeBasedControl(control?.variant);
case _constants.CONTROL_TYPES.QUERY:
return /*#__PURE__*/React.createElement(_queryControl.default, extractControlPropsFromGlobals());
}
return /*#__PURE__*/React.createElement(_textFieldControl.default, extractControlPropsFromGlobals());
};
ControlRenderer.propTypes = {
controlKey: PropTypes.string.isRequired,
andConditionIndex: PropTypes.number.isRequired,
orConditionIndex: PropTypes.number.isRequired,
controlCount: PropTypes.number.isRequired
};
var _default = exports["default"] = ControlRenderer;
/***/ }),
/***/ "../modules/display-conditions/assets/js/editor/components/controls/autocomplete-control.js":
/*!**************************************************************************************************!*\
!*** ../modules/display-conditions/assets/js/editor/components/controls/autocomplete-control.js ***!
\**************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var React = _react;
var PropTypes = _interopRequireWildcard(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
var _conditionSelectOption = _interopRequireDefault(__webpack_require__(/*! ./ui/condition-select-option */ "../modules/display-conditions/assets/js/editor/components/controls/ui/condition-select-option.js"));
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
const formatValue = valueToFormat => {
return Array.isArray(valueToFormat) ? valueToFormat : [valueToFormat];
};
const AutocompleteControl = _ref => {
let {
conditions,
condition,
controlKey,
onChangeOption,
options,
value,
shouldShowError,
errorMessage,
isMultiple,
controlCount
} = _ref;
const [controlValue, setControlValue] = (0, _react.useState)(formatValue(value)),
label = controlValue?.length ? '' : conditions[condition.condition].label || '';
(0, _react.useEffect)(() => {
setControlValue(formatValue(value));
}, [condition]);
const handleChangeOption = newValue => {
onChangeOption(newValue);
setControlValue(newValue);
};
return /*#__PURE__*/React.createElement(_ui.Autocomplete, {
multiple: isMultiple,
id: `select-${controlKey}`,
value: controlValue,
options: Object.keys(options),
getOptionLabel: optionKey => options[optionKey],
sx: {
flex: 1
},
ChipProps: {
sx: {
'&.MuiAutocomplete-tag': {
maxWidth: '100px'
}
}
},
renderInput: params => /*#__PURE__*/React.createElement(_ui.TextField, (0, _extends2.default)({
error: shouldShowError,
helperText: errorMessage
}, params, {
placeholder: label,
color: "secondary"
})),
ListboxProps: {
sx: {
maxHeight: 280
}
},
size: "small",
onChange: (_event, newValues) => handleChangeOption(formatValue(newValues)),
renderOption: (optionProps, option) => /*#__PURE__*/React.createElement(_ui.Typography, (0, _extends2.default)({
component: "li"
}, optionProps), /*#__PURE__*/React.createElement(_conditionSelectOption.default, {
component: "span",
variant: "inherit",
noWrap: true,
controlCount: controlCount
}, options[option])),
forcePopupIcon: !Object.keys(options).length <= 1
});
};
AutocompleteControl.propTypes = {
conditions: PropTypes.object.isRequired,
condition: PropTypes.object.isRequired,
controlKey: PropTypes.string.isRequired,
onChangeOption: PropTypes.func.isRequired,
value: PropTypes.array.isRequired,
options: PropTypes.object.isRequired,
errorMessage: PropTypes.string.isRequired,
shouldShowError: PropTypes.bool.isRequired,
isMultiple: PropTypes.bool.isRequired,
optionsStyles: PropTypes.object.isRequired,
menuStyles: PropTypes.object.isRequired,
controlCount: PropTypes.number.isRequired
};
var _default = exports["default"] = AutocompleteControl;
/***/ }),
/***/ "../modules/display-conditions/assets/js/editor/components/controls/date-picker-control.js":
/*!*************************************************************************************************!*\
!*** ../modules/display-conditions/assets/js/editor/components/controls/date-picker-control.js ***!
\*************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var React = _react;
var PropTypes = _interopRequireWildcard(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
var _dayjs = _interopRequireDefault(__webpack_require__(/*! dayjs */ "../node_modules/dayjs/dayjs.min.js"));
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
const dateFormat = 'MM-DD-YYYY';
const formattedValue = dateString => {
return (0, _dayjs.default)(dateString, dateFormat, true).isValid() ? (0, _dayjs.default)(dateString, dateFormat) : null;
};
const DatePickerControl = _ref => {
let {
condition,
onChangeOption,
controlKey,
value,
shouldShowError,
errorMessage
} = _ref;
const [controlValue, setControlValue] = (0, _react.useState)(formattedValue(value));
(0, _react.useEffect)(() => {
setControlValue(formattedValue(value));
}, [condition]);
const handleChangeOption = newValue => {
if ((0, _dayjs.default)(newValue, dateFormat, true).isValid()) {
onChangeOption(newValue.format(dateFormat));
setControlValue(formattedValue(newValue));
} else {
onChangeOption('');
}
};
return /*#__PURE__*/React.createElement(_ui.DatePicker, {
value: controlValue,
sx: {
flex: 1
},
id: `select-${controlKey}`,
slotProps: {
openPickerButton: {
size: 'small'
},
textField: {
size: 'small',
color: 'secondary',
error: shouldShowError,
helperText: errorMessage
}
},
onChange: newValue => handleChangeOption(newValue)
});
};
DatePickerControl.propTypes = {
condition: PropTypes.object.isRequired,
controlKey: PropTypes.string.isRequired,
onChangeOption: PropTypes.func.isRequired,
value: PropTypes.string,
errorMessage: PropTypes.string.isRequired,
shouldShowError: PropTypes.bool.isRequired
};
var _default = exports["default"] = DatePickerControl;
/***/ }),
/***/ "../modules/display-conditions/assets/js/editor/components/controls/query-control.js":
/*!*******************************************************************************************!*\
!*** ../modules/display-conditions/assets/js/editor/components/controls/query-control.js ***!
\*******************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
var PropTypes = _interopRequireWildcard(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
var _conditionsContext = __webpack_require__(/*! ../../contexts/conditions-context */ "../modules/display-conditions/assets/js/editor/contexts/conditions-context.js");
var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
var _utils = __webpack_require__(/*! elementor-pro-app/utils */ "../core/app/assets/js/utils.js");
var _conditionSelectOption = _interopRequireDefault(__webpack_require__(/*! ./ui/condition-select-option */ "../modules/display-conditions/assets/js/editor/components/controls/ui/condition-select-option.js"));
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
const formatValue = valueToFormat => {
return Array.isArray(valueToFormat) ? valueToFormat : [valueToFormat];
};
const QueryControl = _ref => {
let {
conditions,
condition,
control,
controlKey,
onChangeOption,
value,
shouldShowError,
errorMessage,
isMultiple,
controlCount
} = _ref;
const {
fetchData
} = (0, _react.useContext)(_conditionsContext.ConditionsContext),
[controlValue, setControlValue] = (0, _react.useState)(formatValue(value)),
[options, setOptions] = (0, _react.useState)([]),
[loading, setLoading] = (0, _react.useState)(false),
label = controlValue?.length ? '' : conditions[condition.condition].label || '';
(0, _react.useEffect)(() => {
setControlValue(formatValue(value));
}, [condition]);
const handleSearchInputChange = async (event, newInputValue, selectedValues) => {
if ('' === newInputValue) {
setOptions([]);
return;
}
setLoading(true);
const results = await fetchData(newInputValue, control);
// Filter out options that are already selected
const filteredResults = results.filter(option => {
option.text = (0, _utils.htmlDecodeTextContent)(option.text);
return !selectedValues.some(selectedOption => selectedOption?.id === option?.id);
});
setOptions(filteredResults);
setLoading(false);
};
const handleChangeOption = newValue => {
onChangeOption(newValue);
setControlValue(newValue);
};
return /*#__PURE__*/_react.default.createElement(_ui.Autocomplete, {
multiple: isMultiple,
id: `select-${controlKey}`,
value: controlValue,
options: options,
getOptionLabel: option => option ? option.text : '',
isOptionEqualToValue: (option, optionToCompare) => option.id === optionToCompare.id,
filterOptions: x => x,
noOptionsText: (0, _i18n.__)('No results', 'elementor-pro'),
loading: loading,
loadingText: (0, _i18n.__)('Searching...', 'elementor-pro'),
size: "small",
sx: {
flex: 1
},
ChipProps: {
sx: {
'&.MuiAutocomplete-tag': {
maxWidth: '100px'
}
}
},
renderInput: params => /*#__PURE__*/_react.default.createElement(_ui.TextField, (0, _extends2.default)({}, params, {
placeholder: label,
color: "secondary",
error: shouldShowError,
helperText: errorMessage,
InputProps: {
...params.InputProps,
endAdornment: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, loading ? /*#__PURE__*/_react.default.createElement(_ui.CircularProgress, {
color: "inherit",
size: 20
}) : null, params.InputProps.endAdornment)
}
})),
ListboxProps: {
sx: {
maxHeight: 280
}
},
onChange: (_event, newValues) => handleChangeOption(newValues),
onInputChange: (event, newInputValue) => handleSearchInputChange(event, newInputValue, controlValue),
renderOption: (optionProps, option) => /*#__PURE__*/_react.default.createElement(_ui.Typography, (0, _extends2.default)({
component: "li"
}, optionProps), /*#__PURE__*/_react.default.createElement(_conditionSelectOption.default, {
component: "span",
variant: "inherit",
noWrap: true,
controlCount: controlCount
}, option.text))
});
};
QueryControl.propTypes = {
conditions: PropTypes.object.isRequired,
condition: PropTypes.object.isRequired,
onChangeOption: PropTypes.func.isRequired,
controlKey: PropTypes.string.isRequired,
control: PropTypes.object.isRequired,
value: PropTypes.array.isRequired,
errorMessage: PropTypes.string.isRequired,
shouldShowError: PropTypes.bool.isRequired,
isMultiple: PropTypes.bool.isRequired,
controlCount: PropTypes.number.isRequired
};
var _default = exports["default"] = QueryControl;
/***/ }),
/***/ "../modules/display-conditions/assets/js/editor/components/controls/select-control.js":
/*!********************************************************************************************!*\
!*** ../modules/display-conditions/assets/js/editor/components/controls/select-control.js ***!
\********************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var React = _react;
var PropTypes = _interopRequireWildcard(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
var _conditionSelectControl = _interopRequireDefault(__webpack_require__(/*! ./ui/condition-select-control */ "../modules/display-conditions/assets/js/editor/components/controls/ui/condition-select-control.js"));
var _conditionSelectOption = _interopRequireDefault(__webpack_require__(/*! ./ui/condition-select-option */ "../modules/display-conditions/assets/js/editor/components/controls/ui/condition-select-option.js"));
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
const SelectControl = _ref => {
let {
condition,
control,
controlKey,
onChangeOption,
options,
value,
controlCount
} = _ref;
const [controlValue, setControlValue] = (0, _react.useState)(value);
(0, _react.useEffect)(() => {
setControlValue(value);
}, [condition]);
const handleChangeOption = newValue => {
onChangeOption(newValue);
setControlValue(newValue);
};
const getOptions = () => {
return Object.entries(options).map(_ref2 => {
let [optionKey, optionValue] = _ref2;
if (!optionValue) {
return null;
}
if ('group' === optionValue.type) {
return /*#__PURE__*/React.createElement(_ui.ListSubheader, {
key: optionKey
}, /*#__PURE__*/React.createElement(_conditionSelectOption.default, {
controlCount: controlCount
}, optionValue.label));
}
const isDisabled = control?.disabled_options?.includes(optionKey);
return /*#__PURE__*/React.createElement(_ui.MenuItem, {
key: optionKey,
value: optionKey,
disabled: isDisabled,
className: isDisabled && 'hidden' === control?.disabled_type ? 'elementor-hidden' : ''
}, /*#__PURE__*/React.createElement(_conditionSelectOption.default, {
controlCount: controlCount
}, optionValue));
});
};
return /*#__PURE__*/React.createElement(_conditionSelectControl.default, {
id: `select-${controlKey}`,
value: controlValue,
onChange: event => handleChangeOption(event.target.value),
disabled: Object.keys(options).length <= 1,
controlCount: controlCount
}, getOptions());
};
SelectControl.propTypes = {
condition: PropTypes.object.isRequired,
control: PropTypes.object.isRequired,
controlKey: PropTypes.string.isRequired,
onChangeOption: PropTypes.func.isRequired,
options: PropTypes.object.isRequired,
value: PropTypes.string.isRequired,
controlCount: PropTypes.number.isRequired
};
var _default = exports["default"] = SelectControl;
/***/ }),
/***/ "../modules/display-conditions/assets/js/editor/components/controls/text-field-control.js":
/*!************************************************************************************************!*\
!*** ../modules/display-conditions/assets/js/editor/components/controls/text-field-control.js ***!
\************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var React = _react;
var PropTypes = _interopRequireWildcard(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
var _utils = __webpack_require__(/*! ../../utils/utils */ "../modules/display-conditions/assets/js/editor/utils/utils.js");
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
const TextFieldControl = _ref => {
let {
condition,
controlKey,
control,
onChangeOption,
value,
errorMessage,
shouldShowError,
placeholder,
disabled
} = _ref;
const [controlValue, setControlValue] = (0, _react.useState)(value),
{
step = 1,
min = 0,
variant = null
} = control;
const numericProps = 'number' === variant ? {
type: 'number',
inputProps: {
step,
min
}
} : {};
(0, _react.useEffect)(() => {
setControlValue(value);
}, [condition]);
const handleChangeOption = (newValue, controlVariant) => {
let integerValue = null;
if ('number' === controlVariant && (0, _utils.hasDecimalSeparator)(newValue)) {
integerValue = Math.floor(parseFloat(newValue));
}
onChangeOption(integerValue ?? newValue.trim());
setControlValue(integerValue ?? newValue);
};
return /*#__PURE__*/React.createElement(_ui.TextField, (0, _extends2.default)({}, numericProps, {
sx: {
flex: 1
},
error: shouldShowError,
helperText: errorMessage,
value: controlValue,
id: `text-${controlKey}`,
variant: "outlined",
onChange: event => handleChangeOption(event.target.value, variant),
size: "small",
color: "secondary",
placeholder: placeholder,
disabled: disabled ?? false
}));
};
TextFieldControl.propTypes = {
condition: PropTypes.object.isRequired,
controlKey: PropTypes.string.isRequired,
control: PropTypes.object.isRequired,
onChangeOption: PropTypes.func.isRequired,
value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,
errorMessage: PropTypes.string.isRequired,
shouldShowError: PropTypes.bool.isRequired,
placeholder: PropTypes.string.isRequired,
disabled: PropTypes.bool
};
var _default = exports["default"] = TextFieldControl;
/***/ }),
/***/ "../modules/display-conditions/assets/js/editor/components/controls/time-picker-control.js":
/*!*************************************************************************************************!*\
!*** ../modules/display-conditions/assets/js/editor/components/controls/time-picker-control.js ***!
\*************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var React = _react;
var PropTypes = _interopRequireWildcard(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
var _dayjs = _interopRequireDefault(__webpack_require__(/*! dayjs */ "../node_modules/dayjs/dayjs.min.js"));
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
const timeFormat = 'HH:mm',
dateFormat = 'MM-DD-YYYY ' + timeFormat;
const formattedValue = dateString => {
return (0, _dayjs.default)(dateString, timeFormat, true).isValid() ? (0, _dayjs.default)(dateString, timeFormat) : null;
};
const TimePickerControl = _ref => {
let {
condition,
controlKey,
onChangeOption,
value,
shouldShowError,
errorMessage
} = _ref;
const lastInputValue = (0, _react.useRef)(formattedValue(value)),
[controlValue, setControlValue] = (0, _react.useState)(lastInputValue.current);
(0, _react.useEffect)(() => {
setControlValue(lastInputValue.current);
}, [condition]);
const handleChangeOption = newValue => {
const dateString = (0, _dayjs.default)(newValue, dateFormat, true).isValid() ? newValue.format(dateFormat) : '';
onChangeOption(dateString);
lastInputValue.current = newValue;
setControlValue(newValue);
};
return /*#__PURE__*/React.createElement(_ui.TimePicker, {
sx: {
flex: 1
},
id: `select-${controlKey}`,
value: controlValue,
slotProps: {
textField: {
size: 'small',
error: shouldShowError,
helperText: errorMessage
}
},
onChange: newValue => handleChangeOption(newValue)
});
};
TimePickerControl.propTypes = {
condition: PropTypes.object.isRequired,
control: PropTypes.object.isRequired,
controlKey: PropTypes.string.isRequired,
onChangeOption: PropTypes.func.isRequired,
value: PropTypes.string,
errorMessage: PropTypes.string.isRequired,
shouldShowError: PropTypes.bool.isRequired
};
var _default = exports["default"] = TimePickerControl;
/***/ }),
/***/ "../modules/display-conditions/assets/js/editor/components/controls/ui/condition-select-control.js":
/*!*********************************************************************************************************!*\
!*** ../modules/display-conditions/assets/js/editor/components/controls/ui/condition-select-control.js ***!
\*********************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
var _utils = __webpack_require__(/*! ../../../utils/utils */ "../modules/display-conditions/assets/js/editor/utils/utils.js");
var PropTypes = _interopRequireWildcard(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
const ConditionSelect = _ref => {
let {
controlCount,
...props
} = _ref;
return /*#__PURE__*/_react.default.createElement(_ui.Select, (0, _extends2.default)({}, props, {
size: "small",
sx: {
flex: 1,
textAlign: 'start',
alignSelf: 'flex-start',
'.MuiSelect-select .MuiTypography-root': {
maxWidth: (0, _utils.getControlValueMaxWidth)(controlCount)
}
},
color: "secondary",
MenuProps: {
PaperProps: {
sx: {
maxHeight: 280,
'& .MuiListSubheader-root': {
position: 'initial'
}
}
},
classes: {
paper: 'e-conditions-select-menu'
}
}
}));
};
ConditionSelect.propTypes = {
controlCount: PropTypes.number.isRequired
};
var _default = exports["default"] = ConditionSelect;
/***/ }),
/***/ "../modules/display-conditions/assets/js/editor/components/controls/ui/condition-select-option.js":
/*!********************************************************************************************************!*\
!*** ../modules/display-conditions/assets/js/editor/components/controls/ui/condition-select-option.js ***!
\********************************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
var _utils = __webpack_require__(/*! ../../../utils/utils */ "../modules/display-conditions/assets/js/editor/utils/utils.js");
var PropTypes = _interopRequireWildcard(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
const ConditionSelectOption = _ref => {
let {
controlCount,
sx = {},
...props
} = _ref;
return /*#__PURE__*/_react.default.createElement(_ui.Typography, (0, _extends2.default)({
noWrap: true
}, props, {
variant: props.variant || 'inherit',
sx: {
maxWidth: (0, _utils.getSelectOptionMaxWidth)(controlCount),
...sx
}
}));
};
ConditionSelectOption.propTypes = {
sx: PropTypes.object,
isDropdownItem: PropTypes.bool,
variant: PropTypes.string,
controlCount: PropTypes.number.isRequired
};
var _default = exports["default"] = ConditionSelectOption;
/***/ }),
/***/ "../modules/display-conditions/assets/js/editor/components/footer.js":
/*!***************************************************************************!*\
!*** ../modules/display-conditions/assets/js/editor/components/footer.js ***!
\***************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var React = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
const Footer = _ref => {
let {
onClickSaveButton,
isButtonDisabled
} = _ref;
return /*#__PURE__*/React.createElement(_ui.Stack, {
direction: "row",
justifyContent: "flex-end",
sx: {
py: 1,
px: 3
}
}, /*#__PURE__*/React.createElement(_ui.Button, {
variant: "contained",
className: "save-and-close-button",
disabled: !isButtonDisabled,
onClick: onClickSaveButton
}, __('Save & Close', 'elementor-pro')));
};
Footer.propTypes = {
onClickSaveButton: PropTypes.func,
isButtonDisabled: PropTypes.bool.isRequired
};
var _default = exports["default"] = Footer;
/***/ }),
/***/ "../modules/display-conditions/assets/js/editor/components/header.js":
/*!***************************************************************************!*\
!*** ../modules/display-conditions/assets/js/editor/components/header.js ***!
\***************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
var PropTypes = _interopRequireWildcard(__webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"));
var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
var _elementorLogo = _interopRequireDefault(__webpack_require__(/*! ./icons/elementor-logo */ "../modules/display-conditions/assets/js/editor/components/icons/elementor-logo.js"));
var _icons = __webpack_require__(/*! @elementor/icons */ "@elementor/icons");
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
const Header = _ref => {
let {
onClose
} = _ref;
return /*#__PURE__*/_react.default.createElement(_ui.AppBar, {
sx: {
fontWeight: 'normal'
},
color: "transparent",
position: "relative"
}, /*#__PURE__*/_react.default.createElement(_ui.Toolbar, {
variant: "dense"
}, /*#__PURE__*/_react.default.createElement(_elementorLogo.default, {
sx: {
mr: 1
}
}), /*#__PURE__*/_react.default.createElement(_ui.Typography, {
component: "span",
variant: "subtitle2",
sx: {
fontWeight: 'bold',
textTransform: 'uppercase'
}
}, (0, _i18n.__)('Display Conditions', 'elementor-pro')), /*#__PURE__*/_react.default.createElement(_ui.Stack, {
direction: "row",
spacing: 1,
alignItems: "center",
sx: {
ml: 'auto'
}
}, /*#__PURE__*/_react.default.createElement(_ui.IconButton, {
size: "small",
"aria-label": (0, _i18n.__)('Close', 'elementor-pro'),
onClick: onClose,
sx: {
'&.MuiButtonBase-root': {
mr: -1
}
}
}, /*#__PURE__*/_react.default.createElement(_icons.XIcon, null)))));
};
Header.propTypes = {
onClose: PropTypes.func.isRequired
};
var _default = exports["default"] = Header;
/***/ }),
/***/ "../modules/display-conditions/assets/js/editor/components/icons/elementor-logo.js":
/*!*****************************************************************************************!*\
!*** ../modules/display-conditions/assets/js/editor/components/icons/elementor-logo.js ***!
\*****************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
var React = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
const ElementorLogo = props => {
return /*#__PURE__*/React.createElement(_ui.SvgIcon, (0, _extends2.default)({
viewBox: "0 0 32 32"
}, props), /*#__PURE__*/React.createElement("path", {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M2.69648 24.8891C0.938383 22.2579 0 19.1645 0 16C0 11.7566 1.68571 7.68687 4.68629 4.68629C7.68687 1.68571 11.7566 0 16 0C19.1645 0 22.2579 0.938383 24.8891 2.69648C27.5203 4.45459 29.5711 6.95344 30.7821 9.87706C31.9931 12.8007 32.3099 16.0177 31.6926 19.1214C31.0752 22.2251 29.5514 25.0761 27.3137 27.3137C25.0761 29.5514 22.2251 31.0752 19.1214 31.6926C16.0177 32.3099 12.8007 31.9931 9.87706 30.7821C6.95344 29.5711 4.45459 27.5203 2.69648 24.8891ZM12.0006 9.33281H9.33437V22.6665H12.0006V9.33281ZM22.6657 9.33281H14.6669V11.9991H22.6657V9.33281ZM22.6657 14.6654H14.6669V17.3316H22.6657V14.6654ZM22.6657 20.0003H14.6669V22.6665H22.6657V20.0003Z"
}));
};
var _default = exports["default"] = ElementorLogo;
/***/ }),
/***/ "../modules/display-conditions/assets/js/editor/components/icons/hierarchy-icon.js":
/*!*****************************************************************************************!*\
!*** ../modules/display-conditions/assets/js/editor/components/icons/hierarchy-icon.js ***!
\*****************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
var React = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
const UnstyledHierarchyIcon = React.forwardRef((props, ref) => {
return /*#__PURE__*/React.createElement(_ui.SvgIcon, (0, _extends2.default)({
viewBox: "0 0 24 24"
}, props, {
ref: ref
}), /*#__PURE__*/React.createElement("path", {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M11 3.75C10.3096 3.75 9.75 4.30964 9.75 5V7C9.75 7.69036 10.3096 8.25 11 8.25H13C13.6904 8.25 14.25 7.69036 14.25 7V5C14.25 4.30964 13.6904 3.75 13 3.75H11ZM12.75 9.75H13C14.5188 9.75 15.75 8.51878 15.75 7V5C15.75 3.48122 14.5188 2.25 13 2.25H11C9.48122 2.25 8.25 3.48122 8.25 5V7C8.25 8.51878 9.48122 9.75 11 9.75H11.25V11.25H8C7.27065 11.25 6.57118 11.5397 6.05546 12.0555C5.53973 12.5712 5.25 13.2707 5.25 14V14.25H5C3.48122 14.25 2.25 15.4812 2.25 17V19C2.25 20.5188 3.48122 21.75 5 21.75H7C8.51878 21.75 9.75 20.5188 9.75 19V17C9.75 15.4812 8.51878 14.25 7 14.25H6.75V14C6.75 13.6685 6.8817 13.3505 7.11612 13.1161C7.35054 12.8817 7.66848 12.75 8 12.75H16C16.3315 12.75 16.6495 12.8817 16.8839 13.1161C17.1183 13.3505 17.25 13.6685 17.25 14V14.25H17C15.4812 14.25 14.25 15.4812 14.25 17V19C14.25 20.5188 15.4812 21.75 17 21.75H19C20.5188 21.75 21.75 20.5188 21.75 19V17C21.75 15.4812 20.5188 14.25 19 14.25H18.75V14C18.75 13.2707 18.4603 12.5712 17.9445 12.0555C17.4288 11.5397 16.7293 11.25 16 11.25H12.75V9.75ZM17 15.75C16.3096 15.75 15.75 16.3096 15.75 17V19C15.75 19.6904 16.3096 20.25 17 20.25H19C19.6904 20.25 20.25 19.6904 20.25 19V17C20.25 16.3096 19.6904 15.75 19 15.75H17ZM5 15.75C4.30964 15.75 3.75 16.3096 3.75 17V19C3.75 19.6904 4.30964 20.25 5 20.25H7C7.69036 20.25 8.25 19.6904 8.25 19V17C8.25 16.3096 7.69036 15.75 7 15.75H5Z"
}));
});
const HierarchyIcon = (0, _ui.styled)(UnstyledHierarchyIcon)(_ref => {
let {
theme
} = _ref;
return {
'& path': {
fill: theme.palette.text.primary
}
};
});
var _default = exports["default"] = HierarchyIcon;
/***/ }),
/***/ "../modules/display-conditions/assets/js/editor/components/or-row-group.js":
/*!*********************************************************************************!*\
!*** ../modules/display-conditions/assets/js/editor/components/or-row-group.js ***!
\*********************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
var _icons = __webpack_require__(/*! @elementor/icons */ "@elementor/icons");
var _conditionsSelectors = _interopRequireDefault(__webpack_require__(/*! ./conditions-selectors */ "../modules/display-conditions/assets/js/editor/components/conditions-selectors.js"));
var _useConditions = _interopRequireDefault(__webpack_require__(/*! ../hooks/use-conditions */ "../modules/display-conditions/assets/js/editor/hooks/use-conditions.js"));
var _utils = __webpack_require__(/*! ../utils/utils */ "../modules/display-conditions/assets/js/editor/utils/utils.js");
var _conditionsOrDivider = _interopRequireDefault(__webpack_require__(/*! ./ui/conditions-or-divider */ "../modules/display-conditions/assets/js/editor/components/ui/conditions-or-divider.js"));
var _constants = __webpack_require__(/*! ../utils/constants */ "../modules/display-conditions/assets/js/editor/utils/constants.js");
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
const OrRowGroup = _ref => {
let {
showConditions,
setShowConditions
} = _ref;
const {
selectedConditions,
conditionsConfig,
dispatch
} = (0, _useConditions.default)(),
{
conditions: availableConditions,
conditionsByGroup
} = conditionsConfig,
addButtonText = selectedConditions.length ? __('Add condition group', 'elementor-pro') : __('Add Condition', 'elementor-pro');
const addOrCondition = () => {
const conditionKey = (0, _utils.getDefaultActiveCondition)(conditionsByGroup),
defaultValues = (0, _utils.getConditionInitialState)(availableConditions, conditionKey),
andCondition = {
condition: conditionKey,
...defaultValues
};
dispatch({
type: _constants.ACTION_TYPES.ADD_OR_CONDITION,
andCondition
});
setShowConditions(true);
};
return /*#__PURE__*/_react.default.createElement(_ui.Box, null, showConditions && selectedConditions.map((orCondition, orConditionIndex) => /*#__PURE__*/_react.default.createElement(_react.Fragment, {
key: orConditionIndex
}, orConditionIndex > 0 && /*#__PURE__*/_react.default.createElement(_conditionsOrDivider.default, null), /*#__PURE__*/_react.default.createElement(_conditionsSelectors.default, {
orConditionIndex: orConditionIndex
}))), /*#__PURE__*/_react.default.createElement(_ui.Button, {
variant: "contained",
className: "add-or-condition-button",
color: "secondary",
startIcon: /*#__PURE__*/_react.default.createElement(_icons.PlusIcon, null),
sx: {
mt: 1,
mb: 5
},
onClick: () => addOrCondition()
}, addButtonText));
};
OrRowGroup.propTypes = {
showConditions: PropTypes.bool.isRequired,
setShowConditions: PropTypes.func.isRequired
};
var _default = exports["default"] = OrRowGroup;
/***/ }),
/***/ "../modules/display-conditions/assets/js/editor/components/ui/conditions-or-divider.js":
/*!*********************************************************************************************!*\
!*** ../modules/display-conditions/assets/js/editor/components/ui/conditions-or-divider.js ***!
\*********************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
const OrDivider = () => {
return /*#__PURE__*/_react.default.createElement(_ui.Divider, {
sx: {
px: 3
}
}, __('OR', 'elementor-pro'));
};
var _default = exports["default"] = OrDivider;
/***/ }),
/***/ "../modules/display-conditions/assets/js/editor/components/ui/row-controls.js":
/*!************************************************************************************!*\
!*** ../modules/display-conditions/assets/js/editor/components/ui/row-controls.js ***!
\************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
var _icons = __webpack_require__(/*! @elementor/icons */ "@elementor/icons");
var React = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var _utils = __webpack_require__(/*! ../../utils/utils */ "../modules/display-conditions/assets/js/editor/utils/utils.js");
var _useConditions = _interopRequireDefault(__webpack_require__(/*! ../../hooks/use-conditions */ "../modules/display-conditions/assets/js/editor/hooks/use-conditions.js"));
var _constants = __webpack_require__(/*! ../../utils/constants */ "../modules/display-conditions/assets/js/editor/utils/constants.js");
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
const RowControls = _ref => {
let {
orConditionIndex,
andConditionIndex
} = _ref;
const {
conditionsConfig,
dispatch
} = (0, _useConditions.default)(),
{
conditions: availableConditions,
conditionsByGroup
} = conditionsConfig;
const addRepeaterRow = () => {
const conditionKey = (0, _utils.getDefaultActiveCondition)(conditionsByGroup),
defaultValues = (0, _utils.getConditionInitialState)(availableConditions, conditionKey),
andCondition = {
condition: conditionKey,
...defaultValues
};
dispatch({
type: _constants.ACTION_TYPES.ADD_AND_CONDITION,
andCondition,
andConditionIndex,
orConditionIndex
});
};
const removeRepeaterRow = () => {
dispatch({
type: _constants.ACTION_TYPES.REMOVE_AND_CONDITION,
andConditionIndex,
orConditionIndex
});
};
return /*#__PURE__*/React.createElement(_ui.Stack, {
direction: "row",
alignItems: "center",
sx: {
left: '100%',
gap: .5,
ml: -1,
mt: '2.5px',
position: 'absolute'
}
}, /*#__PURE__*/React.createElement(_ui.Button, {
color: "secondary",
variant: "outlined",
sx: {
px: 1,
minWidth: 'unset'
},
className: "add-single-condition-button",
onClick: addRepeaterRow
}, (0, _i18n.__)('AND', 'elementor-pro')), /*#__PURE__*/React.createElement(_ui.IconButton, {
color: "secondary",
"aria-label": (0, _i18n.__)('Delete', 'elementor-pro'),
className: "remove-single-condition-button",
onClick: removeRepeaterRow
}, /*#__PURE__*/React.createElement(_icons.XIcon, {
fontSize: "small"
})));
};
RowControls.propTypes = {
andConditionIndex: PropTypes.number.isRequired,
orConditionIndex: PropTypes.number.isRequired
};
var _default = exports["default"] = RowControls;
/***/ }),
/***/ "../modules/display-conditions/assets/js/editor/contexts/conditions-context.js":
/*!*************************************************************************************!*\
!*** ../modules/display-conditions/assets/js/editor/contexts/conditions-context.js ***!
\*************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
/* provided dependency */ var React = __webpack_require__(/*! react */ "react");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports.ConditionsContext = void 0;
const ConditionsContext = exports.ConditionsContext = React.createContext();
/***/ }),
/***/ "../modules/display-conditions/assets/js/editor/hooks/use-conditions.js":
/*!******************************************************************************!*\
!*** ../modules/display-conditions/assets/js/editor/hooks/use-conditions.js ***!
\******************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _react = __webpack_require__(/*! react */ "react");
var _conditionsContext = __webpack_require__(/*! ../contexts/conditions-context */ "../modules/display-conditions/assets/js/editor/contexts/conditions-context.js");
function useConditions() {
return (0, _react.useContext)(_conditionsContext.ConditionsContext);
}
var _default = exports["default"] = useConditions;
/***/ }),
/***/ "../modules/display-conditions/assets/js/editor/module.js":
/*!****************************************************************!*\
!*** ../modules/display-conditions/assets/js/editor/module.js ***!
\****************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
__webpack_require__(/*! core-js/modules/es.array.includes.js */ "../node_modules/core-js/modules/es.array.includes.js");
__webpack_require__(/*! core-js/modules/es.array.push.js */ "../node_modules/core-js/modules/es.array.push.js");
var _behavior = _interopRequireDefault(__webpack_require__(/*! ./behavior */ "../modules/display-conditions/assets/js/editor/behavior.js"));
class Module extends elementorModules.editor.utils.Module {
pasteAction = 'paste';
clearAction = 'clear';
getDefaultSettings() {
return {
selectors: {
icon: '.eicon-flow.e-control-display-conditions'
},
controls: {
displayConditions: 'e_display_conditions',
trigger: 'e_display_conditions_trigger'
}
};
}
onElementorInit() {
elementor.hooks.addFilter('controls/base/behaviors', this.registerControlBehavior);
elementor.channels.editor.on('section:activated', this.highlightIconIfFilled);
elementor.on('navigator:init', this.onNavigatorInit.bind(this));
const elTypes = ['widget', 'section', 'column', 'container'];
elTypes.forEach(type => {
elementor.hooks.addFilter(`elements/${type}/contextMenuGroups`, this.registerContextMenuGroups.bind(this));
});
}
onElementorInitComponents() {
$e.commands.register('document/elements', 'paste-display-conditions', args => {
this.tryContextMenuActions(args, this.pasteAction);
});
$e.commands.register('document/elements', 'clear-display-conditions', args => {
this.tryContextMenuActions(args, this.clearAction);
});
}
registerContextMenuGroups(groups, currentElement) {
const clipboardGroup = groups.find(group => 'clipboard' === group.name);
if (!clipboardGroup) {
return groups;
}
// Add after pasteStyle
const pasteStyleIndex = clipboardGroup.actions.findIndex(action => 'pasteStyle' === action.name);
if (-1 !== pasteStyleIndex) {
clipboardGroup.actions.splice(pasteStyleIndex + 1, 0, {
name: 'pasteDisplayConditions',
isEnabled: () => this.isPasteDisplayConditionsEnabled(currentElement),
isVisible: () => this.isPasteDisplayConditionsEnabled(currentElement),
// Need both for Core/Pro dependancy.
title: __('Paste display conditions', 'elementor-pro'),
callback: () => $e.run('document/elements/paste-display-conditions', elementor.selection.getElements(currentElement.getContainer()))
});
}
clipboardGroup.actions.push({
name: 'clearDisplayConditions',
isEnabled: () => this.isClearDisplayConditionsEnabled(currentElement),
isVisible: () => this.isClearDisplayConditionsEnabled(currentElement),
// Need both for Core/Pro dependancy.
title: __('Clear display conditions', 'elementor-pro'),
callback: () => $e.run('document/elements/clear-display-conditions', elementor.selection.getElements(currentElement.getContainer()))
});
return groups;
}
isPasteDisplayConditionsEnabled(selectedElement) {
const displayConditions = this.getSelectedElementDisplayCondition(selectedElement),
doesClipboardHaveConditions = !!JSON.parse(this.getDisplayConditionsFromClipboard()).length;
return !displayConditions.length && !elementor.selection.isMultiple() && doesClipboardHaveConditions;
}
isClearDisplayConditionsEnabled(selectedElement) {
const displayConditions = this.getSelectedElementDisplayCondition(selectedElement);
return displayConditions.length && !elementor.selection.isMultiple();
}
getSelectedElementDisplayCondition(selectedElement) {
return JSON.parse(selectedElement?.model?.getSetting(this.getSettings('controls').displayConditions) || '[]');
}
getDisplayConditionsFromClipboard() {
const clipboard = elementorCommon.storage.get('clipboard'),
elements = clipboard?.elements || [];
if (1 !== elements.length) {
return '[]';
}
return elements[0]?.settings?.e_display_conditions || '[]';
}
/**
* Paste or clear display conditions to/of the selected element.
*
* @param {Array} containers
* @param {'paste' | 'clear'} action
*/
tryContextMenuActions(containers, action) {
const container = containers?.[0] || null,
displayConditions = this.pasteAction === action ? this.getDisplayConditionsFromClipboard() : '';
if (!container) {
return;
}
$e.run('document/elements/settings', {
container,
settings: {
e_display_conditions: displayConditions
}
});
container.panel.refresh();
try {
const controlView = container.panel.getControlView(this.getSettings('controls').displayConditions),
icon = this.getEditorControlView(this.getSettings('controls').trigger).$el.find(this.getSettings('selectors').icon);
this.highlightIcon(icon, controlView);
} catch (error) {
return false;
}
}
registerControlBehavior = (behaviors, view) => {
if (this.getSettings('controls').trigger !== view.options.model.get('name')) {
return behaviors;
}
if (!behaviors) {
behaviors = {};
}
const conditionsByGroup = this._getGroupedConditionKeys(elementor.config.displayConditions || {});
const flattenedConditionOptions = this._getFlattenedConditionOptions(conditionsByGroup);
behaviors.displayConditions = {
behaviorClass: _behavior.default,
getControlValue: () => {
const controlView = this.getEditorControlView(this.getSettings('controls').displayConditions);
if (!controlView) {
return [];
}
return this._getStructuredConditions(JSON.parse(controlView.getControlValue() || '[]'));
},
setControlValue: value => {
const displayConditionsInput = this.getEditorControlView(this.getSettings('controls').displayConditions),
displayConditionsTemplate = this.getEditorControlView(this.getSettings('controls').trigger);
if (displayConditionsInput) {
value = !value?.length || '[]' === value[0] ? '' : value;
displayConditionsInput.setValue(value);
displayConditionsInput.applySavedValue();
}
if (displayConditionsTemplate.$el) {
const icon = displayConditionsTemplate.$el.find(this.getSettings('selectors').icon);
this.highlightIcon(icon, displayConditionsInput);
}
},
fetchData: async (value, control) => {
const response = await this.doAjaxRequest('pro_panel_posts_control_filter_autocomplete', {
autocomplete: control.autocomplete,
q: value
});
return response?.results ?? [];
},
setCacheNoticeStatus: async () => {
const response = await this.doAjaxRequest('display_conditions_set_cache_notice_status');
if (response) {
elementor.config.displayConditions.show_cache_notice = false;
}
return response;
},
conditionsConfig: {
...elementor.config.displayConditions,
conditionsByGroup,
flattenedConditionOptions
}
};
return behaviors;
};
highlightIconIfFilled = (sectionName, editor) => {
const advancedSections = ['section_advanced',
// Sections / Columns
'_section_style',
// Widgets
'section_layout' // Containers
];
if (!advancedSections.includes(sectionName)) {
return;
}
const controlView = this.getEditorControlView(this.getSettings('controls').displayConditions);
if (!controlView) {
return;
}
const icon = editor.$childViewContainer.find(this.getSettings('selectors').icon);
this.highlightIcon(icon, controlView);
};
onNavigatorInit() {
elementor.navigator.indicators.displayConditions = {
icon: 'flow',
title: __('Display Conditions', 'elementor-pro'),
settingKeys: ['e_display_conditions'],
section: 'e_display_conditions_trigger'
};
}
highlightIcon = (icon, controlView) => {
if (!icon[0]) {
return;
}
const conditionValue = controlView.getControlValue() || '[]',
conditionArray = '[]' !== conditionValue ? this._getStructuredConditions(JSON.parse(conditionValue)) : [];
if (!conditionArray.length) {
icon[0]?.classList?.remove('filled');
} else {
icon[0]?.classList?.add('filled');
}
};
doAjaxRequest = (action, data) => {
try {
return new Promise((resolve, reject) => {
elementorCommon.ajax.addRequest(action, {
data,
error: () => reject(),
success: res => {
resolve(res);
}
});
});
} catch (error) {
return false;
}
};
_getStructuredConditions = conditions => {
return this._shouldConvertConditionsStructure(conditions) ? [conditions] : conditions;
};
_shouldConvertConditionsStructure = conditions => {
return conditions.length && !Array.isArray(conditions[0]);
};
_getGroupedConditionKeys = conditionsConfig => {
return Object.keys(conditionsConfig?.groups || {}).reduce((group, groupName) => {
const conditions = this._getConditionKeyByGroup(conditionsConfig.conditions, groupName);
if (conditions.length) {
group[groupName] = conditions;
}
return group;
}, {});
};
_getConditionKeyByGroup = (conditions, groupName) => {
return Object.keys(conditions).filter(conditionKey => groupName === conditions[conditionKey].group);
};
_getFlattenedConditionOptions = conditionsByGroup => {
const {
conditions = {},
groups = {}
} = elementor.config.displayConditions || {};
return Object.entries(conditionsByGroup).reduce((optionList, _ref) => {
let [groupName, conditionKeys] = _ref;
const relevantConditions = conditionKeys.map(key => ({
key,
label: conditions[key].label,
isGroup: false
}));
optionList.push({
key: groupName,
label: groups[groupName].label,
isGroup: true
}, ...relevantConditions);
return optionList;
}, []);
};
}
exports["default"] = Module;
/***/ }),
/***/ "../modules/display-conditions/assets/js/editor/reducers/conditions-reducer.js":
/*!*************************************************************************************!*\
!*** ../modules/display-conditions/assets/js/editor/reducers/conditions-reducer.js ***!
\*************************************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports.conditionsReducer = void 0;
__webpack_require__(/*! core-js/modules/es.array.push.js */ "../node_modules/core-js/modules/es.array.push.js");
var _constants = __webpack_require__(/*! ../utils/constants */ "../modules/display-conditions/assets/js/editor/utils/constants.js");
const conditionsReducer = (state, action) => {
switch (action.type) {
case _constants.ACTION_TYPES.CHANGE_CONDITION_TYPE:
return {
...state,
selectedConditions: _changeConditionType({
...state,
...action
})
};
case _constants.ACTION_TYPES.CHANGE_CONTROL_VALUE:
return {
...state,
selectedConditions: _changeControlValue({
...state,
...action
})
};
case _constants.ACTION_TYPES.ADD_AND_CONDITION:
return {
...state,
selectedConditions: _addAndCondition({
...state,
...action
})
};
case _constants.ACTION_TYPES.ADD_OR_CONDITION:
return {
...state,
selectedConditions: [...state.selectedConditions, [action.andCondition]]
};
case _constants.ACTION_TYPES.REMOVE_AND_CONDITION:
return {
...state,
selectedConditions: _removeAndCondition({
...state,
...action
})
};
case _constants.ACTION_TYPES.REMOVE_OR_CONDITION:
return {
...state,
selectedConditions: state.selectedConditions.filter((_, index) => index !== action.orConditionIndex)
};
case _constants.ACTION_TYPES.SET_ERRORS:
return {
...state,
selectedConditions: _setErrors({
...state,
...action
})
};
default:
return state;
}
};
exports.conditionsReducer = conditionsReducer;
const _changeConditionType = _ref => {
let {
selectedConditions,
conditionToChange,
orConditionIndex,
andConditionIndex
} = _ref;
const newOrCondition = selectedConditions[orConditionIndex].map((andCondition, index) => index === andConditionIndex ? conditionToChange : {
...andCondition
});
return selectedConditions.map((orCondition, index) => index === orConditionIndex ? newOrCondition : [...orCondition]);
};
const _changeControlValue = _ref2 => {
let {
selectedConditions,
orConditionIndex,
andConditionIndex,
controlKey,
value
} = _ref2;
const existingOrCondition = [...selectedConditions[orConditionIndex]],
existingAndCondition = {
...existingOrCondition[andConditionIndex]
};
const newAndCondition = {
...existingAndCondition,
[controlKey]: value
},
newOrCondition = existingOrCondition.map((andCondition, index) => index === andConditionIndex ? newAndCondition : {
...andCondition
});
return selectedConditions.map((orCondition, index) => index === orConditionIndex ? newOrCondition : [...orCondition]);
};
const _addAndCondition = _ref3 => {
let {
selectedConditions,
orConditionIndex,
andConditionIndex,
andCondition
} = _ref3;
const existingOrCondition = selectedConditions[orConditionIndex],
newOrCondition = existingOrCondition.reduce((newAndConditions, condition, index) => {
newAndConditions.push({
...condition
});
if (index === andConditionIndex || existingOrCondition.length === andConditionIndex && existingOrCondition.length - 1 === index) {
newAndConditions.push(andCondition);
}
return newAndConditions;
}, []);
return selectedConditions.map((orCondition, index) => index === orConditionIndex ? newOrCondition : [...orCondition]);
};
const _removeAndCondition = _ref4 => {
let {
selectedConditions,
orConditionIndex,
andConditionIndex
} = _ref4;
const newOrCondition = selectedConditions[orConditionIndex].reduce((newAndConditions, condition, index) => {
if (index !== andConditionIndex) {
newAndConditions.push({
...condition
});
}
return newAndConditions;
}, []);
return selectedConditions.reduce((newOrConditions, orCondition, index) => {
if (index === orConditionIndex && newOrCondition.length) {
newOrConditions.push(newOrCondition);
}
if (index !== orConditionIndex) {
newOrConditions.push([...orCondition]);
}
return newOrConditions;
}, []);
};
const _setErrors = _ref5 => {
let {
selectedConditions,
orConditionIndex,
andConditionIndex,
errors
} = _ref5;
const newOrCondition = [...selectedConditions[orConditionIndex]],
newAndCondition = {
...newOrCondition[andConditionIndex]
};
newAndCondition.errors = {
...newAndCondition.errors,
...errors
};
newOrCondition[andConditionIndex] = newAndCondition;
return selectedConditions.map((orCondition, index) => index === orConditionIndex ? [...newOrCondition] : [...orCondition]);
};
/***/ }),
/***/ "../modules/display-conditions/assets/js/editor/utils/constants.js":
/*!*************************************************************************!*\
!*** ../modules/display-conditions/assets/js/editor/utils/constants.js ***!
\*************************************************************************/
/***/ ((__unused_webpack_module, exports) => {
"use strict";
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports.DISABLED_CONTROL_CONFIG = exports.DEFAULT_CONTROL_VALUES = exports.CONTROL_TYPES = exports.ACTION_TYPES = void 0;
// These values will match the Controls_Manager
const CONTROL_TYPES = exports.CONTROL_TYPES = {
MULTIPLE_SELECT: 'select2',
SELECT: 'select',
QUERY: 'query',
DATE_TIME: 'date_time',
TEXT_FIELD: 'text'
};
const DEFAULT_CONTROL_VALUES = exports.DEFAULT_CONTROL_VALUES = {
select2: [],
query: [],
select: '',
text: '',
date_time: null
};
const ACTION_TYPES = exports.ACTION_TYPES = {
CHANGE_CONTROL_VALUE: 'CHANGE_CONTROL_VALUE',
SET_ERRORS: 'SET_ERRORS',
ADD_OR_CONDITION: 'ADD_OR_CONDITION',
CHANGE_CONDITION_TYPE: 'CHANGE_CONDITION_TYPE',
ADD_AND_CONDITION: 'ADD_AND_CONDITION',
REMOVE_AND_CONDITION: 'REMOVE_AND_CONDITION',
REMOVE_OR_CONDITION: 'REMOVE_OR_CONDITION'
};
const DISABLED_CONTROL_CONFIG = exports.DISABLED_CONTROL_CONFIG = {
CONDITION_NAME: 'dynamic_tags',
CONTROL_NAME: 'dynamic_tag_value',
COMPARATORS: ['is_empty', 'is_not_empty']
};
/***/ }),
/***/ "../modules/display-conditions/assets/js/editor/utils/utils.js":
/*!*********************************************************************!*\
!*** ../modules/display-conditions/assets/js/editor/utils/utils.js ***!
\*********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
/* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports.getControlDefaults = exports.getConditionInitialState = void 0;
exports.getControlValue = getControlValue;
exports.getControlValueMaxWidth = getControlValueMaxWidth;
exports.getDefaultActiveCondition = getDefaultActiveCondition;
exports.getInvalidInputFeedback = getInvalidInputFeedback;
exports.getSelectOptionMaxWidth = getSelectOptionMaxWidth;
exports.hasDecimalSeparator = hasDecimalSeparator;
exports.shouldCastToArray = shouldCastToArray;
exports.shouldDisableControl = shouldDisableControl;
exports.shouldEmptyValuePassValidation = shouldEmptyValuePassValidation;
__webpack_require__(/*! core-js/modules/es.array.includes.js */ "../node_modules/core-js/modules/es.array.includes.js");
var _constants = __webpack_require__(/*! ./constants */ "../modules/display-conditions/assets/js/editor/utils/constants.js");
function shouldCastToArray(controlType) {
return _constants.CONTROL_TYPES.MULTIPLE_SELECT === controlType || _constants.CONTROL_TYPES.QUERY === controlType;
}
function getDefaultActiveCondition(conditionsByGroup) {
return Object.values(conditionsByGroup)[0][0];
}
function getInvalidInputFeedback(type, variant, value) {
let shouldShow = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
return !value?.length ? {
message: _getErrorMessage(type, variant),
shouldShow
} : {};
}
const getControlDefaults = (controlKey, control) => {
const {
type,
variant = null,
options
} = control,
defaultValue = control?.default || (options && _constants.CONTROL_TYPES.MULTIPLE_SELECT !== type ? Object.keys(options)[0] : _constants.DEFAULT_CONTROL_VALUES[type]),
formattedDefaultValue = shouldCastToArray(type) && !Array.isArray(defaultValue) ? [defaultValue] : defaultValue,
error = getInvalidInputFeedback(type, variant, formattedDefaultValue);
return {
defaultValue: formattedDefaultValue,
error
};
};
exports.getControlDefaults = getControlDefaults;
const getConditionInitialState = (conditions, conditionKey) => {
const {
controls = {}
} = conditions?.[conditionKey] || {};
return Object.keys(controls).reduce((defaults, controlKey) => {
if ('__settings' === controlKey) {
return defaults;
}
const {
defaultValue,
error
} = getControlDefaults(controlKey, controls[controlKey]);
defaults[controlKey] = defaultValue;
defaults.errors[controlKey] = error;
return defaults;
}, {
errors: {}
});
};
exports.getConditionInitialState = getConditionInitialState;
function hasDecimalSeparator(newValue) {
if (isNaN(parseFloat(newValue))) {
return false;
}
if (newValue.toString().indexOf('.') !== -1) {
return true;
}
if (newValue.toString().indexOf(',') !== -1) {
return true;
}
}
function getSelectOptionMaxWidth(controlCount) {
return 3 === controlCount ? 200 : 150;
}
function getControlValueMaxWidth(controlCount) {
return 3 === controlCount ? 190 : 135;
}
function getControlValue(value, altValue) {
return 'undefined' !== typeof value ? value : altValue;
}
function _getErrorMessage(controlType) {
let variant = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
if (shouldCastToArray(controlType)) {
return __('Select an option', 'elementor-pro');
}
if (_constants.CONTROL_TYPES.DATE_TIME === controlType) {
return 'time' === variant ? __('Select a time', 'elementor-pro') : __('Select a date', 'elementor-pro');
}
return __('Enter a value', 'elementor-pro');
}
function shouldDisableControl(control, comparator) {
return _constants.DISABLED_CONTROL_CONFIG.CONTROL_NAME === control && _constants.DISABLED_CONTROL_CONFIG.COMPARATORS.includes(comparator);
}
function shouldEmptyValuePassValidation(condition, comparator) {
return _constants.DISABLED_CONTROL_CONFIG.CONDITION_NAME === condition && _constants.DISABLED_CONTROL_CONFIG.COMPARATORS.includes(comparator);
}
/***/ }),
/***/ "../node_modules/dayjs/dayjs.min.js":
/*!******************************************!*\
!*** ../node_modules/dayjs/dayjs.min.js ***!
\******************************************/
/***/ (function(module) {
!function(t,e){ true?module.exports=e():0}(this,(function(){"use strict";var t=1e3,e=6e4,n=36e5,r="millisecond",i="second",s="minute",u="hour",a="day",o="week",c="month",f="quarter",h="year",d="date",l="Invalid Date",$=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(t){var e=["th","st","nd","rd"],n=t%100;return"["+t+(e[(n-20)%10]||e[n]||e[0])+"]"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:""+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?"+":"-")+m(r,2,"0")+":"+m(i,2,"0")},m:function t(e,n){if(e.date()