import{h}from"@stencil/core";export class ScPaymentSelected{constructor(){this.iconName=void 0,this.label=void 0}render(){return h("div",{class:"payment-selected",part:"base"},h("slot",{name:"icon"}),h("div",{class:"payment-selected__label"},this.label),h("sc-divider",{style:{"--spacing":"var(--sc-spacing-xx-small)"},exportparts:"base:divider, line:divider__line"}),h("div",{part:"instructions",class:"payment-selected__instructions"},h("svg",{part:"icon",viewBox:"0 0 48 40",fill:"var(--sc-color-gray-500)",xmlns:"http://www.w3.org/2000/svg",role:"presentation"},h("path",{opacity:".6","fill-rule":"evenodd","clip-rule":"evenodd",d:"M43 5a4 4 0 00-4-4H17a4 4 0 00-4 4v11a1 1 0 102 0V5a2 2 0 012-2h22a2 2 0 012 2v30a2 2 0 01-2 2H17a2 2 0 01-2-2v-9a1 1 0 10-2 0v9a4 4 0 004 4h22a4 4 0 004-4V5zM17.992 16.409L21.583 20H6a1 1 0 100 2h15.583l-3.591 3.591a1 1 0 101.415 1.416l5.3-5.3a1 1 0 000-1.414l-5.3-5.3a1 1 0 10-1.415 1.416zM17 6a1 1 0 011-1h15a1 1 0 011 1v2a1 1 0 01-1 1H18a1 1 0 01-1-1V6zm21-1a1 1 0 100 2 1 1 0 000-2z"})),h("div",{part:"text",class:"payment-selected__instructions-text"},h("slot",null))))}static get is(){return"sc-payment-selected"}static get encapsulation(){return"shadow"}static get originalStyleUrls(){return{$:["sc-payment-selected.scss"]}}static get styleUrls(){return{$:["sc-payment-selected.css"]}}static get properties(){return{iconName:{type:"string",mutable:!1,complexType:{original:"string",resolved:"string",references:{}},required:!1,optional:!1,docs:{tags:[],text:""},attribute:"icon-name",reflect:!1},label:{type:"string",mutable:!1,complexType:{original:"string",resolved:"string",references:{}},required:!1,optional:!1,docs:{tags:[],text:""},attribute:"label",reflect:!1}}}} const { __ } = wp.i18n; const { useState } = wp.element; const baseUrl = `${prestoPlayer.root}${prestoPlayer.prestoVersionString}bunny/`; export default (onRefetch) => { const [apikey, setApikey] = useState(""); const [saveMessage, setSaveMessage] = useState(""); const [saving, setSaving] = useState(false); const [step, setStep] = useState(0); const [error, setError] = useState(""); const getError = (errorString) => { if (errorString.includes("Authorization has been denied")) { return "Your API key is incorrect. Please double-check to make sure you've copied it correctly."; } if (errorString.includes("localhost")) { return "You cannot use a CDN on a local site. Please use Bunny.net on a live, publicly accessible site."; } return errorString; }; const saveKey = async () => { setError(""); try { setSaving(true); setStep(0); setSaveMessage(__("Validating API Key...", "presto-player")); const { success } = await wp.apiFetch({ url: `${baseUrl}api-key`, method: "POST", data: { api_key: apikey, }, }); if (!success) { throw { message: "Could not save the API key. Please double check it to make sure it's correct.", }; } } catch (e) { setStep(0); setError( e?.message ? getError(e.message) : "Something went wrong. Please try again" ); return; } finally { setStep(1); setSaving(false); setSaveMessage(""); } // create storage zone try { setSaving(true); setSaveMessage( __( "Setting up storage zones. This make take a few minutes...", "presto-player" ) ); const { id } = await wp.apiFetch({ url: `${baseUrl}storage-zones`, method: "POST", }); } catch (e) { setStep(0); setError( e?.message ? getError(e.message) : "Something went wrong. Please try again" ); return; } finally { setStep(2); setSaving(false); setSaveMessage(""); } // create storage zone try { setSaving(true); setSaveMessage( __( "Setting up pull zones. This make take a few minutes...", "presto-player" ) ); const { id } = await wp.apiFetch({ url: `${baseUrl}pull-zones`, method: "POST", }); } catch (e) { setStep(0); setError( e?.message ? getError(e.message) : "Something went wrong. Please try again" ); return; } finally { setStep(3); setSaving(false); setSaveMessage(""); } onRefetch(); }; const totalSteps = 3; return { saveKey, setApikey, step, saveMessage, saving, error, totalSteps }; }; var ResizeObserverBoxOptions,resizeObservers=[],hasActiveObservations=function(){return resizeObservers.some((function(e){return e.activeTargets.length>0}))},hasSkippedObservations=function(){return resizeObservers.some((function(e){return e.skippedTargets.length>0}))},msg="ResizeObserver loop completed with undelivered notifications.",deliverResizeLoopError=function(){var e;"function"==typeof ErrorEvent?e=new ErrorEvent("error",{message:msg}):((e=document.createEvent("Event")).initEvent("error",!1,!1),e.message=msg),window.dispatchEvent(e)};!function(e){e.BORDER_BOX="border-box",e.CONTENT_BOX="content-box",e.DEVICE_PIXEL_CONTENT_BOX="device-pixel-content-box"}(ResizeObserverBoxOptions||(ResizeObserverBoxOptions={}));var trigger,freeze=function(e){return Object.freeze(e)},ResizeObserverSize=function(e,t){this.inlineSize=e,this.blockSize=t,freeze(this)},DOMRectReadOnly=function(){function e(e,t,r,i){return this.x=e,this.y=t,this.width=r,this.height=i,this.top=this.y,this.left=this.x,this.bottom=this.top+this.height,this.right=this.left+this.width,freeze(this)}return e.prototype.toJSON=function(){var e=this;return{x:e.x,y:e.y,top:e.top,right:e.right,bottom:e.bottom,left:e.left,width:e.width,height:e.height}},e.fromRect=function(t){return new e(t.x,t.y,t.width,t.height)},e}(),isSVG=function(e){return e instanceof SVGElement&&"getBBox"in e},isHidden=function(e){if(isSVG(e)){var t=e.getBBox(),r=t.width,i=t.height;return!r&&!i}var n=e,o=n.offsetWidth,s=n.offsetHeight;return!(o||s||e.getClientRects().length)},isElement=function(e){var t;if(e instanceof Element)return!0;var r=null===(t=null==e?void 0:e.ownerDocument)||void 0===t?void 0:t.defaultView;return!!(r&&e instanceof r.Element)},isReplacedElement=function(e){switch(e.tagName){case"INPUT":if("image"!==e.type)break;case"VIDEO":case"AUDIO":case"EMBED":case"OBJECT":case"CANVAS":case"IFRAME":case"IMG":return!0}return!1},global="undefined"!=typeof window?window:{},cache=new WeakMap,scrollRegexp=/auto|scroll/,verticalRegexp=/^tb|vertical/,IE=/msie|trident/i.test(global.navigator&&global.navigator.userAgent),parseDimension=function(e){return parseFloat(e||"0")},size=function(e,t,r){return void 0===e&&(e=0),void 0===t&&(t=0),void 0===r&&(r=!1),new ResizeObserverSize((r?t:e)||0,(r?e:t)||0)},zeroBoxes=freeze({devicePixelContentBoxSize:size(),borderBoxSize:size(),contentBoxSize:size(),contentRect:new DOMRectReadOnly(0,0,0,0)}),calculateBoxSizes=function(e,t){if(void 0===t&&(t=!1),cache.has(e)&&!t)return cache.get(e);if(isHidden(e))return cache.set(e,zeroBoxes),zeroBoxes;var r=getComputedStyle(e),i=isSVG(e)&&e.ownerSVGElement&&e.getBBox(),n=!IE&&"border-box"===r.boxSizing,o=verticalRegexp.test(r.writingMode||""),s=!i&&scrollRegexp.test(r.overflowY||""),a=!i&&scrollRegexp.test(r.overflowX||""),c=i?0:parseDimension(r.paddingTop),u=i?0:parseDimension(r.paddingRight),v=i?0:parseDimension(r.paddingBottom),l=i?0:parseDimension(r.paddingLeft),h=i?0:parseDimension(r.borderTopWidth),d=i?0:parseDimension(r.borderRightWidth),p=i?0:parseDimension(r.borderBottomWidth),f=l+u,b=c+v,g=(i?0:parseDimension(r.borderLeftWidth))+d,z=h+p,O=a?e.offsetHeight-z-e.clientHeight:0,x=s?e.offsetWidth-g-e.clientWidth:0,R=n?f+g:0,m=n?b+z:0,E=i?i.width:parseDimension(r.width)-R-x,w=i?i.height:parseDimension(r.height)-m-O,S=E+f+x+g,B=w+b+O+z,y=freeze({devicePixelContentBoxSize:size(Math.round(E*devicePixelRatio),Math.round(w*devicePixelRatio),o),borderBoxSize:size(S,B,o),contentBoxSize:size(E,w,o),contentRect:new DOMRectReadOnly(l,c,E,w)});return cache.set(e,y),y},calculateBoxSize=function(e,t,r){var i=calculateBoxSizes(e,r),n=i.borderBoxSize,o=i.contentBoxSize,s=i.devicePixelContentBoxSize;switch(t){case ResizeObserverBoxOptions.DEVICE_PIXEL_CONTENT_BOX:return s;case ResizeObserverBoxOptions.BORDER_BOX:return n;default:return o}},ResizeObserverEntry=function(e){var t=calculateBoxSizes(e);this.target=e,this.contentRect=t.contentRect,this.borderBoxSize=freeze([t.borderBoxSize]),this.contentBoxSize=freeze([t.contentBoxSize]),this.devicePixelContentBoxSize=freeze([t.devicePixelContentBoxSize])},calculateDepthForNode=function(e){if(isHidden(e))return 1/0;for(var t=0,r=e.parentNode;r;)t+=1,r=r.parentNode;return t},broadcastActiveObservations=function(){var e=1/0,t=[];resizeObservers.forEach((function(r){if(0!==r.activeTargets.length){var i=[];r.activeTargets.forEach((function(t){var r=new ResizeObserverEntry(t.target),n=calculateDepthForNode(t.target);i.push(r),t.lastReportedSize=calculateBoxSize(t.target,t.observedBox),ne?t.activeTargets.push(r):t.skippedTargets.push(r))}))}))},process=function(){var e=0;for(gatherActiveObservationsAtDepth(e);hasActiveObservations();)e=broadcastActiveObservations(),gatherActiveObservationsAtDepth(e);return hasSkippedObservations()&&deliverResizeLoopError(),e>0},callbacks=[],notify=function(){return callbacks.splice(0).forEach((function(e){return e()}))},queueMicroTask=function(e){if(!trigger){var t=0,r=document.createTextNode("");new MutationObserver((function(){return notify()})).observe(r,{characterData:!0}),trigger=function(){r.textContent="".concat(t?t--:t++)}}callbacks.push(e),trigger()},queueResizeObserver=function(e){queueMicroTask((function(){requestAnimationFrame(e)}))},watching=0,isWatching=function(){return!!watching},CATCH_PERIOD=250,observerConfig={attributes:!0,characterData:!0,childList:!0,subtree:!0},events=["resize","load","transitionend","animationend","animationstart","animationiteration","keyup","keydown","mouseup","mousedown","mouseover","mouseout","blur","focus"],time=function(e){return void 0===e&&(e=0),Date.now()+e},scheduled=!1,Scheduler=function(){function e(){var e=this;this.stopped=!0,this.listener=function(){return e.schedule()}}return e.prototype.run=function(e){var t=this;if(void 0===e&&(e=CATCH_PERIOD),!scheduled){scheduled=!0;var r=time(e);queueResizeObserver((function(){var i=!1;try{i=process()}finally{if(scheduled=!1,e=r-time(),!isWatching())return;i?t.run(1e3):e>0?t.run(e):t.start()}}))}},e.prototype.schedule=function(){this.stop(),this.run()},e.prototype.observe=function(){var e=this,t=function(){return e.observer&&e.observer.observe(document.body,observerConfig)};document.body?t():global.addEventListener("DOMContentLoaded",t)},e.prototype.start=function(){var e=this;this.stopped&&(this.stopped=!1,this.observer=new MutationObserver(this.listener),this.observe(),events.forEach((function(t){return global.addEventListener(t,e.listener,!0)})))},e.prototype.stop=function(){var e=this;this.stopped||(this.observer&&this.observer.disconnect(),events.forEach((function(t){return global.removeEventListener(t,e.listener,!0)})),this.stopped=!0)},e}(),scheduler=new Scheduler,updateCount=function(e){!watching&&e>0&&scheduler.start(),!(watching+=e)&&scheduler.stop()},skipNotifyOnElement=function(e){return!isSVG(e)&&!isReplacedElement(e)&&"inline"===getComputedStyle(e).display},ResizeObservation=function(){function e(e,t){this.target=e,this.observedBox=t||ResizeObserverBoxOptions.CONTENT_BOX,this.lastReportedSize={inlineSize:0,blockSize:0}}return e.prototype.isActive=function(){var e=calculateBoxSize(this.target,this.observedBox,!0);return skipNotifyOnElement(this.target)&&(this.lastReportedSize=e),this.lastReportedSize.inlineSize!==e.inlineSize||this.lastReportedSize.blockSize!==e.blockSize},e}(),ResizeObserverDetail=function(e,t){this.activeTargets=[],this.skippedTargets=[],this.observationTargets=[],this.observer=e,this.callback=t},observerMap=new WeakMap,getObservationIndex=function(e,t){for(var r=0;r=0&&(n&&resizeObservers.splice(resizeObservers.indexOf(r),1),r.observationTargets.splice(i,1),updateCount(-1))},e.disconnect=function(e){var t=this,r=observerMap.get(e);r.observationTargets.slice().forEach((function(r){return t.unobserve(e,r.target)})),r.activeTargets.splice(0,r.activeTargets.length)},e}(),ResizeObserver=function(){function e(e){if(0===arguments.length)throw new TypeError("Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.");if("function"!=typeof e)throw new TypeError("Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.");ResizeObserverController.connect(this,e)}return e.prototype.observe=function(e,t){if(0===arguments.length)throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!isElement(e))throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element");ResizeObserverController.observe(this,e,t)},e.prototype.unobserve=function(e){if(0===arguments.length)throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!isElement(e))throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element");ResizeObserverController.unobserve(this,e)},e.prototype.disconnect=function(){ResizeObserverController.disconnect(this)},e.toString=function(){return"function ResizeObserver () { [polyfill code] }"},e}();export{ResizeObserver,ResizeObserverEntry,ResizeObserverSize};/*! elementor-pro - v3.27.0 - 16-02-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()1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n="object"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t) { "use strict"; /* object-assign (c) Sindre Sorhus @license MIT */ /* eslint-disable no-unused-vars */ var getOwnPropertySymbols = Object.getOwnPropertySymbols; var hasOwnProperty = Object.prototype.hasOwnProperty; var propIsEnumerable = Object.prototype.propertyIsEnumerable; function toObject(val) { if (val === null || val === undefined) { throw new TypeError('Object.assign cannot be called with null or undefined'); } return Object(val); } function shouldUseNative() { try { if (!Object.assign) { return false; } // Detect buggy property enumeration order in older V8 versions. // https://bugs.chromium.org/p/v8/issues/detail?id=4118 var test1 = new String('abc'); // eslint-disable-line no-new-wrappers test1[5] = 'de'; if (Object.getOwnPropertyNames(test1)[0] === '5') { return false; } // https://bugs.chromium.org/p/v8/issues/detail?id=3056 var test2 = {}; for (var i = 0; i < 10; i++) { test2['_' + String.fromCharCode(i)] = i; } var order2 = Object.getOwnPropertyNames(test2).map(function (n) { return test2[n]; }); if (order2.join('') !== '0123456789') { return false; } // https://bugs.chromium.org/p/v8/issues/detail?id=3056 var test3 = {}; 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { test3[letter] = letter; }); if (Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst') { return false; } return true; } catch (err) { // We don't expect any of the above to throw, but better to be safe. return false; } } module.exports = shouldUseNative() ? Object.assign : function (target, source) { var from; var to = toObject(target); var symbols; for (var s = 1; s < arguments.length; s++) { from = Object(arguments[s]); for (var key in from) { if (hasOwnProperty.call(from, key)) { to[key] = from[key]; } } if (getOwnPropertySymbols) { symbols = getOwnPropertySymbols(from); for (var i = 0; i < symbols.length; i++) { if (propIsEnumerable.call(from, symbols[i])) { to[symbols[i]] = from[symbols[i]]; } } } } return to; }; /***/ }), /***/ "../node_modules/prop-types/checkPropTypes.js": /*!****************************************************!*\ !*** ../node_modules/prop-types/checkPropTypes.js ***! \****************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; /** * Copyright (c) 2013-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ var printWarning = function() {}; if (true) { var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ "../node_modules/prop-types/lib/ReactPropTypesSecret.js"); var loggedTypeFailures = {}; var has = __webpack_require__(/*! ./lib/has */ "../node_modules/prop-types/lib/has.js"); printWarning = function(text) { var message = 'Warning: ' + text; if (typeof console !== 'undefined') { console.error(message); } try { // --- Welcome to debugging React --- // This error was thrown as a convenience so that you can use this stack // to find the callsite that caused this warning to fire. throw new Error(message); } catch (x) { /**/ } }; } /** * Assert that the values match with the type specs. * Error messages are memorized and will only be shown once. * * @param {object} typeSpecs Map of name to a ReactPropType * @param {object} values Runtime values that need to be type-checked * @param {string} location e.g. "prop", "context", "child context" * @param {string} componentName Name of the component for error messages. * @param {?Function} getStack Returns the component stack. * @private */ function checkPropTypes(typeSpecs, values, location, componentName, getStack) { if (true) { for (var typeSpecName in typeSpecs) { if (has(typeSpecs, typeSpecName)) { var error; // Prop type validation may throw. In case they do, we don't want to // fail the render phase where it didn't fail before. So we log it. // After these have been cleaned up, we'll let them throw. try { // This is intentionally an invariant that gets caught. It's the same // behavior as without this statement except with a better message. if (typeof typeSpecs[typeSpecName] !== 'function') { var err = Error( (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.' ); err.name = 'Invariant Violation'; throw err; } error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret); } catch (ex) { error = ex; } if (error && !(error instanceof Error)) { printWarning( (componentName || 'React class') + ': type specification of ' + location + ' `' + typeSpecName + '` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).' ); } if (error instanceof Error && !(error.message in loggedTypeFailures)) { // Only monitor this failure once because there tends to be a lot of the // same error. loggedTypeFailures[error.message] = true; var stack = getStack ? getStack() : ''; printWarning( 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '') ); } } } } } /** * Resets warning cache when testing. * * @private */ checkPropTypes.resetWarningCache = function() { if (true) { loggedTypeFailures = {}; } } module.exports = checkPropTypes; /***/ }), /***/ "../node_modules/prop-types/factoryWithTypeCheckers.js": /*!*************************************************************!*\ !*** ../node_modules/prop-types/factoryWithTypeCheckers.js ***! \*************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; /** * Copyright (c) 2013-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ var ReactIs = __webpack_require__(/*! react-is */ "../node_modules/prop-types/node_modules/react-is/index.js"); var assign = __webpack_require__(/*! object-assign */ "../node_modules/object-assign/index.js"); var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ "../node_modules/prop-types/lib/ReactPropTypesSecret.js"); var has = __webpack_require__(/*! ./lib/has */ "../node_modules/prop-types/lib/has.js"); var checkPropTypes = __webpack_require__(/*! ./checkPropTypes */ "../node_modules/prop-types/checkPropTypes.js"); var printWarning = function() {}; if (true) { printWarning = function(text) { var message = 'Warning: ' + text; if (typeof console !== 'undefined') { console.error(message); } try { // --- Welcome to debugging React --- // This error was thrown as a convenience so that you can use this stack // to find the callsite that caused this warning to fire. throw new Error(message); } catch (x) {} }; } function emptyFunctionThatReturnsNull() { return null; } module.exports = function(isValidElement, throwOnDirectAccess) { /* global Symbol */ var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec. /** * Returns the iterator method function contained on the iterable object. * * Be sure to invoke the function with the iterable as context: * * var iteratorFn = getIteratorFn(myIterable); * if (iteratorFn) { * var iterator = iteratorFn.call(myIterable); * ... * } * * @param {?object} maybeIterable * @return {?function} */ function getIteratorFn(maybeIterable) { var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]); if (typeof iteratorFn === 'function') { return iteratorFn; } } /** * Collection of methods that allow declaration and validation of props that are * supplied to React components. Example usage: * * var Props = require('ReactPropTypes'); * var MyArticle = React.createClass({ * propTypes: { * // An optional string prop named "description". * description: Props.string, * * // A required enum prop named "category". * category: Props.oneOf(['News','Photos']).isRequired, * * // A prop named "dialog" that requires an instance of Dialog. * dialog: Props.instanceOf(Dialog).isRequired * }, * render: function() { ... } * }); * * A more formal specification of how these methods are used: * * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...) * decl := ReactPropTypes.{type}(.isRequired)? * * Each and every declaration produces a function with the same signature. This * allows the creation of custom validation functions. For example: * * var MyLink = React.createClass({ * propTypes: { * // An optional string or URI prop named "href". * href: function(props, propName, componentName) { * var propValue = props[propName]; * if (propValue != null && typeof propValue !== 'string' && * !(propValue instanceof URI)) { * return new Error( * 'Expected a string or an URI for ' + propName + ' in ' + * componentName * ); * } * } * }, * render: function() {...} * }); * * @internal */ var ANONYMOUS = '<>'; // Important! // Keep this list in sync with production version in `./factoryWithThrowingShims.js`. var ReactPropTypes = { array: createPrimitiveTypeChecker('array'), bigint: createPrimitiveTypeChecker('bigint'), bool: createPrimitiveTypeChecker('boolean'), func: createPrimitiveTypeChecker('function'), number: createPrimitiveTypeChecker('number'), object: createPrimitiveTypeChecker('object'), string: createPrimitiveTypeChecker('string'), symbol: createPrimitiveTypeChecker('symbol'), any: createAnyTypeChecker(), arrayOf: createArrayOfTypeChecker, element: createElementTypeChecker(), elementType: createElementTypeTypeChecker(), instanceOf: createInstanceTypeChecker, node: createNodeChecker(), objectOf: createObjectOfTypeChecker, oneOf: createEnumTypeChecker, oneOfType: createUnionTypeChecker, shape: createShapeTypeChecker, exact: createStrictShapeTypeChecker, }; /** * inlined Object.is polyfill to avoid requiring consumers ship their own * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is */ /*eslint-disable no-self-compare*/ function is(x, y) { // SameValue algorithm if (x === y) { // Steps 1-5, 7-10 // Steps 6.b-6.e: +0 != -0 return x !== 0 || 1 / x === 1 / y; } else { // Step 6.a: NaN == NaN return x !== x && y !== y; } } /*eslint-enable no-self-compare*/ /** * We use an Error-like object for backward compatibility as people may call * PropTypes directly and inspect their output. However, we don't use real * Errors anymore. We don't inspect their stack anyway, and creating them * is prohibitively expensive if they are created too often, such as what * happens in oneOfType() for any type before the one that matched. */ function PropTypeError(message, data) { this.message = message; this.data = data && typeof data === 'object' ? data: {}; this.stack = ''; } // Make `instanceof Error` still work for returned errors. PropTypeError.prototype = Error.prototype; function createChainableTypeChecker(validate) { if (true) { var manualPropTypeCallCache = {}; var manualPropTypeWarningCount = 0; } function checkType(isRequired, props, propName, componentName, location, propFullName, secret) { componentName = componentName || ANONYMOUS; propFullName = propFullName || propName; if (secret !== ReactPropTypesSecret) { if (throwOnDirectAccess) { // New behavior only for users of `prop-types` package var err = new Error( 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use `PropTypes.checkPropTypes()` to call them. ' + 'Read more at http://fb.me/use-check-prop-types' ); err.name = 'Invariant Violation'; throw err; } else if ( true && typeof console !== 'undefined') { // Old behavior for people using React.PropTypes var cacheKey = componentName + ':' + propName; if ( !manualPropTypeCallCache[cacheKey] && // Avoid spamming the console because they are often not actionable except for lib authors manualPropTypeWarningCount < 3 ) { printWarning( 'You are manually calling a React.PropTypes validation ' + 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' + 'and will throw in the standalone `prop-types` package. ' + 'You may be seeing this warning due to a third-party PropTypes ' + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.' ); manualPropTypeCallCache[cacheKey] = true; manualPropTypeWarningCount++; } } } if (props[propName] == null) { if (isRequired) { if (props[propName] === null) { return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.')); } return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.')); } return null; } else { return validate(props, propName, componentName, location, propFullName); } } var chainedCheckType = checkType.bind(null, false); chainedCheckType.isRequired = checkType.bind(null, true); return chainedCheckType; } function createPrimitiveTypeChecker(expectedType) { function validate(props, propName, componentName, location, propFullName, secret) { var propValue = props[propName]; var propType = getPropType(propValue); if (propType !== expectedType) { // `propValue` being instance of, say, date/regexp, pass the 'object' // check, but we can offer a more precise error message here rather than // 'of type `object`'. var preciseType = getPreciseType(propValue); return new PropTypeError( 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'), {expectedType: expectedType} ); } return null; } return createChainableTypeChecker(validate); } function createAnyTypeChecker() { return createChainableTypeChecker(emptyFunctionThatReturnsNull); } function createArrayOfTypeChecker(typeChecker) { function validate(props, propName, componentName, location, propFullName) { if (typeof typeChecker !== 'function') { return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.'); } var propValue = props[propName]; if (!Array.isArray(propValue)) { var propType = getPropType(propValue); return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.')); } for (var i = 0; i < propValue.length; i++) { var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret); if (error instanceof Error) { return error; } } return null; } return createChainableTypeChecker(validate); } function createElementTypeChecker() { function validate(props, propName, componentName, location, propFullName) { var propValue = props[propName]; if (!isValidElement(propValue)) { var propType = getPropType(propValue); return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.')); } return null; } return createChainableTypeChecker(validate); } function createElementTypeTypeChecker() { function validate(props, propName, componentName, location, propFullName) { var propValue = props[propName]; if (!ReactIs.isValidElementType(propValue)) { var propType = getPropType(propValue); return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.')); } return null; } return createChainableTypeChecker(validate); } function createInstanceTypeChecker(expectedClass) { function validate(props, propName, componentName, location, propFullName) { if (!(props[propName] instanceof expectedClass)) { var expectedClassName = expectedClass.name || ANONYMOUS; var actualClassName = getClassName(props[propName]); return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.')); } return null; } return createChainableTypeChecker(validate); } function createEnumTypeChecker(expectedValues) { if (!Array.isArray(expectedValues)) { if (true) { if (arguments.length > 1) { printWarning( 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' + 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).' ); } else { printWarning('Invalid argument supplied to oneOf, expected an array.'); } } return emptyFunctionThatReturnsNull; } function validate(props, propName, componentName, location, propFullName) { var propValue = props[propName]; for (var i = 0; i < expectedValues.length; i++) { if (is(propValue, expectedValues[i])) { return null; } } var valuesString = JSON.stringify(expectedValues, function replacer(key, value) { var type = getPreciseType(value); if (type === 'symbol') { return String(value); } return value; }); return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.')); } return createChainableTypeChecker(validate); } function createObjectOfTypeChecker(typeChecker) { function validate(props, propName, componentName, location, propFullName) { if (typeof typeChecker !== 'function') { return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.'); } var propValue = props[propName]; var propType = getPropType(propValue); if (propType !== 'object') { return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.')); } for (var key in propValue) { if (has(propValue, key)) { var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); if (error instanceof Error) { return error; } } } return null; } return createChainableTypeChecker(validate); } function createUnionTypeChecker(arrayOfTypeCheckers) { if (!Array.isArray(arrayOfTypeCheckers)) { true ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : 0; return emptyFunctionThatReturnsNull; } for (var i = 0; i < arrayOfTypeCheckers.length; i++) { var checker = arrayOfTypeCheckers[i]; if (typeof checker !== 'function') { printWarning( 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' + 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.' ); return emptyFunctionThatReturnsNull; } } function validate(props, propName, componentName, location, propFullName) { var expectedTypes = []; for (var i = 0; i < arrayOfTypeCheckers.length; i++) { var checker = arrayOfTypeCheckers[i]; var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret); if (checkerResult == null) { return null; } if (checkerResult.data && has(checkerResult.data, 'expectedType')) { expectedTypes.push(checkerResult.data.expectedType); } } var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': ''; return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.')); } return createChainableTypeChecker(validate); } function createNodeChecker() { function validate(props, propName, componentName, location, propFullName) { if (!isNode(props[propName])) { return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.')); } return null; } return createChainableTypeChecker(validate); } function invalidValidatorError(componentName, location, propFullName, key, type) { return new PropTypeError( (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.' ); } function createShapeTypeChecker(shapeTypes) { function validate(props, propName, componentName, location, propFullName) { var propValue = props[propName]; var propType = getPropType(propValue); if (propType !== 'object') { return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); } for (var key in shapeTypes) { var checker = shapeTypes[key]; if (typeof checker !== 'function') { return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker)); } var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); if (error) { return error; } } return null; } return createChainableTypeChecker(validate); } function createStrictShapeTypeChecker(shapeTypes) { function validate(props, propName, componentName, location, propFullName) { var propValue = props[propName]; var propType = getPropType(propValue); if (propType !== 'object') { return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); } // We need to check all keys in case some are required but missing from props. var allKeys = assign({}, props[propName], shapeTypes); for (var key in allKeys) { var checker = shapeTypes[key]; if (has(shapeTypes, key) && typeof checker !== 'function') { return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker)); } if (!checker) { return new PropTypeError( 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' + '\nBad object: ' + JSON.stringify(props[propName], null, ' ') + '\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ') ); } var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); if (error) { return error; } } return null; } return createChainableTypeChecker(validate); } function isNode(propValue) { switch (typeof propValue) { case 'number': case 'string': case 'undefined': return true; case 'boolean': return !propValue; case 'object': if (Array.isArray(propValue)) { return propValue.every(isNode); } if (propValue === null || isValidElement(propValue)) { return true; } var iteratorFn = getIteratorFn(propValue); if (iteratorFn) { var iterator = iteratorFn.call(propValue); var step; if (iteratorFn !== propValue.entries) { while (!(step = iterator.next()).done) { if (!isNode(step.value)) { return false; } } } else { // Iterator will provide entry [k,v] tuples rather than values. while (!(step = iterator.next()).done) { var entry = step.value; if (entry) { if (!isNode(entry[1])) { return false; } } } } } else { return false; } return true; default: return false; } } function isSymbol(propType, propValue) { // Native Symbol. if (propType === 'symbol') { return true; } // falsy value can't be a Symbol if (!propValue) { return false; } // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol' if (propValue['@@toStringTag'] === 'Symbol') { return true; } // Fallback for non-spec compliant Symbols which are polyfilled. if (typeof Symbol === 'function' && propValue instanceof Symbol) { return true; } return false; } // Equivalent of `typeof` but with special handling for array and regexp. function getPropType(propValue) { var propType = typeof propValue; if (Array.isArray(propValue)) { return 'array'; } if (propValue instanceof RegExp) { // Old webkits (at least until Android 4.0) return 'function' rather than // 'object' for typeof a RegExp. We'll normalize this here so that /bla/ // passes PropTypes.object. return 'object'; } if (isSymbol(propType, propValue)) { return 'symbol'; } return propType; } // This handles more types than `getPropType`. Only used for error messages. // See `createPrimitiveTypeChecker`. function getPreciseType(propValue) { if (typeof propValue === 'undefined' || propValue === null) { return '' + propValue; } var propType = getPropType(propValue); if (propType === 'object') { if (propValue instanceof Date) { return 'date'; } else if (propValue instanceof RegExp) { return 'regexp'; } } return propType; } // Returns a string that is postfixed to a warning about an invalid type. // For example, "undefined" or "of type array" function getPostfixForTypeWarning(value) { var type = getPreciseType(value); switch (type) { case 'array': case 'object': return 'an ' + type; case 'boolean': case 'date': case 'regexp': return 'a ' + type; default: return type; } } // Returns class name of the object, if any. function getClassName(propValue) { if (!propValue.constructor || !propValue.constructor.name) { return ANONYMOUS; } return propValue.constructor.name; } ReactPropTypes.checkPropTypes = checkPropTypes; ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache; ReactPropTypes.PropTypes = ReactPropTypes; return ReactPropTypes; }; /***/ }), /***/ "../node_modules/prop-types/index.js": /*!*******************************************!*\ !*** ../node_modules/prop-types/index.js ***! \*******************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /** * Copyright (c) 2013-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ if (true) { var ReactIs = __webpack_require__(/*! react-is */ "../node_modules/prop-types/node_modules/react-is/index.js"); // By explicitly using `prop-types` you are opting into new development behavior. // http://fb.me/prop-types-in-prod var throwOnDirectAccess = true; module.exports = __webpack_require__(/*! ./factoryWithTypeCheckers */ "../node_modules/prop-types/factoryWithTypeCheckers.js")(ReactIs.isElement, throwOnDirectAccess); } else {} /***/ }), /***/ "../node_modules/prop-types/lib/ReactPropTypesSecret.js": /*!**************************************************************!*\ !*** ../node_modules/prop-types/lib/ReactPropTypesSecret.js ***! \**************************************************************/ /***/ ((module) => { "use strict"; /** * Copyright (c) 2013-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; module.exports = ReactPropTypesSecret; /***/ }), /***/ "../node_modules/prop-types/lib/has.js": /*!*********************************************!*\ !*** ../node_modules/prop-types/lib/has.js ***! \*********************************************/ /***/ ((module) => { module.exports = Function.call.bind(Object.prototype.hasOwnProperty); /***/ }), /***/ "../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js": /*!************************************************************************************!*\ !*** ../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js ***! \************************************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; /** @license React v16.13.1 * react-is.development.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ if (true) { (function() { 'use strict'; // The Symbol used to tag the ReactElement-like types. If there is no native Symbol // nor polyfill, then a plain number is used for performance. var hasSymbol = typeof Symbol === 'function' && Symbol.for; var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7; var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca; var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb; var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc; var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2; var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd; var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary // (unstable) APIs that have been removed. Can we remove the symbols? var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf; var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf; var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0; var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1; var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8; var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3; var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4; var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9; var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5; var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6; var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7; function isValidElementType(type) { return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill. type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE); } function typeOf(object) { if (typeof object === 'object' && object !== null) { var $$typeof = object.$$typeof; switch ($$typeof) { case REACT_ELEMENT_TYPE: var type = object.type; switch (type) { case REACT_ASYNC_MODE_TYPE: case REACT_CONCURRENT_MODE_TYPE: case REACT_FRAGMENT_TYPE: case REACT_PROFILER_TYPE: case REACT_STRICT_MODE_TYPE: case REACT_SUSPENSE_TYPE: return type; default: var $$typeofType = type && type.$$typeof; switch ($$typeofType) { case REACT_CONTEXT_TYPE: case REACT_FORWARD_REF_TYPE: case REACT_LAZY_TYPE: case REACT_MEMO_TYPE: case REACT_PROVIDER_TYPE: return $$typeofType; default: return $$typeof; } } case REACT_PORTAL_TYPE: return $$typeof; } } return undefined; } // AsyncMode is deprecated along with isAsyncMode var AsyncMode = REACT_ASYNC_MODE_TYPE; var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE; var ContextConsumer = REACT_CONTEXT_TYPE; var ContextProvider = REACT_PROVIDER_TYPE; var Element = REACT_ELEMENT_TYPE; var ForwardRef = REACT_FORWARD_REF_TYPE; var Fragment = REACT_FRAGMENT_TYPE; var Lazy = REACT_LAZY_TYPE; var Memo = REACT_MEMO_TYPE; var Portal = REACT_PORTAL_TYPE; var Profiler = REACT_PROFILER_TYPE; var StrictMode = REACT_STRICT_MODE_TYPE; var Suspense = REACT_SUSPENSE_TYPE; var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated function isAsyncMode(object) { { if (!hasWarnedAboutDeprecatedIsAsyncMode) { hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.'); } } return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE; } function isConcurrentMode(object) { return typeOf(object) === REACT_CONCURRENT_MODE_TYPE; } function isContextConsumer(object) { return typeOf(object) === REACT_CONTEXT_TYPE; } function isContextProvider(object) { return typeOf(object) === REACT_PROVIDER_TYPE; } function isElement(object) { return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; } function isForwardRef(object) { return typeOf(object) === REACT_FORWARD_REF_TYPE; } function isFragment(object) { return typeOf(object) === REACT_FRAGMENT_TYPE; } function isLazy(object) { return typeOf(object) === REACT_LAZY_TYPE; } function isMemo(object) { return typeOf(object) === REACT_MEMO_TYPE; } function isPortal(object) { return typeOf(object) === REACT_PORTAL_TYPE; } function isProfiler(object) { return typeOf(object) === REACT_PROFILER_TYPE; } function isStrictMode(object) { return typeOf(object) === REACT_STRICT_MODE_TYPE; } function isSuspense(object) { return typeOf(object) === REACT_SUSPENSE_TYPE; } exports.AsyncMode = AsyncMode; exports.ConcurrentMode = ConcurrentMode; exports.ContextConsumer = ContextConsumer; exports.ContextProvider = ContextProvider; exports.Element = Element; exports.ForwardRef = ForwardRef; exports.Fragment = Fragment; exports.Lazy = Lazy; exports.Memo = Memo; exports.Portal = Portal; exports.Profiler = Profiler; exports.StrictMode = StrictMode; exports.Suspense = Suspense; exports.isAsyncMode = isAsyncMode; exports.isConcurrentMode = isConcurrentMode; exports.isContextConsumer = isContextConsumer; exports.isContextProvider = isContextProvider; exports.isElement = isElement; exports.isForwardRef = isForwardRef; exports.isFragment = isFragment; exports.isLazy = isLazy; exports.isMemo = isMemo; exports.isPortal = isPortal; exports.isProfiler = isProfiler; exports.isStrictMode = isStrictMode; exports.isSuspense = isSuspense; exports.isValidElementType = isValidElementType; exports.typeOf = typeOf; })(); } /***/ }), /***/ "../node_modules/prop-types/node_modules/react-is/index.js": /*!*****************************************************************!*\ !*** ../node_modules/prop-types/node_modules/react-is/index.js ***! \*****************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; if (false) {} else { module.exports = __webpack_require__(/*! ./cjs/react-is.development.js */ "../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js"); } /***/ }), /***/ "react": /*!************************!*\ !*** external "React" ***! \************************/ /***/ ((module) => { "use strict"; module.exports = React; /***/ }), /***/ "@elementor/icons": /*!************************************!*\ !*** external "elementorV2.icons" ***! \************************************/ /***/ ((module) => { "use strict"; module.exports = elementorV2.icons; /***/ }), /***/ "@elementor/ui": /*!*********************************!*\ !*** external "elementorV2.ui" ***! \*********************************/ /***/ ((module) => { "use strict"; module.exports = elementorV2.ui; /***/ }), /***/ "@wordpress/i18n": /*!**************************!*\ !*** external "wp.i18n" ***! \**************************/ /***/ ((module) => { "use strict"; module.exports = wp.i18n; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/extends.js": /*!*********************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/extends.js ***! \*********************************************************/ /***/ ((module) => { function _extends() { return module.exports = _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, module.exports.__esModule = true, module.exports["default"] = module.exports, _extends.apply(null, arguments); } module.exports = _extends, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js": /*!***********************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/interopRequireDefault.js ***! \***********************************************************************/ /***/ ((module) => { function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/core-js/internals/a-callable.js": /*!*******************************************************!*\ !*** ../node_modules/core-js/internals/a-callable.js ***! \*******************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var isCallable = __webpack_require__(/*! ../internals/is-callable */ "../node_modules/core-js/internals/is-callable.js"); var tryToString = __webpack_require__(/*! ../internals/try-to-string */ "../node_modules/core-js/internals/try-to-string.js"); var $TypeError = TypeError; // `Assert: IsCallable(argument) is true` module.exports = function (argument) { if (isCallable(argument)) return argument; throw new $TypeError(tryToString(argument) + ' is not a function'); }; /***/ }), /***/ "../node_modules/core-js/internals/add-to-unscopables.js": /*!***************************************************************!*\ !*** ../node_modules/core-js/internals/add-to-unscopables.js ***! \***************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "../node_modules/core-js/internals/well-known-symbol.js"); var create = __webpack_require__(/*! ../internals/object-create */ "../node_modules/core-js/internals/object-create.js"); var defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ "../node_modules/core-js/internals/object-define-property.js").f); var UNSCOPABLES = wellKnownSymbol('unscopables'); var ArrayPrototype = Array.prototype; // Array.prototype[@@unscopables] // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables if (ArrayPrototype[UNSCOPABLES] === undefined) { defineProperty(ArrayPrototype, UNSCOPABLES, { configurable: true, value: create(null) }); } // add a key to Array.prototype[@@unscopables] module.exports = function (key) { ArrayPrototype[UNSCOPABLES][key] = true; }; /***/ }), /***/ "../node_modules/core-js/internals/an-object.js": /*!******************************************************!*\ !*** ../node_modules/core-js/internals/an-object.js ***! \******************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var isObject = __webpack_require__(/*! ../internals/is-object */ "../node_modules/core-js/internals/is-object.js"); var $String = String; var $TypeError = TypeError; // `Assert: Type(argument) is Object` module.exports = function (argument) { if (isObject(argument)) return argument; throw new $TypeError($String(argument) + ' is not an object'); }; /***/ }), /***/ "../node_modules/core-js/internals/array-includes.js": /*!***********************************************************!*\ !*** ../node_modules/core-js/internals/array-includes.js ***! \***********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "../node_modules/core-js/internals/to-indexed-object.js"); var toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ "../node_modules/core-js/internals/to-absolute-index.js"); var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "../node_modules/core-js/internals/length-of-array-like.js"); // `Array.prototype.{ indexOf, includes }` methods implementation var createMethod = function (IS_INCLUDES) { return function ($this, el, fromIndex) { var O = toIndexedObject($this); var length = lengthOfArrayLike(O); if (length === 0) return !IS_INCLUDES && -1; var index = toAbsoluteIndex(fromIndex, length); var value; // Array#includes uses SameValueZero equality algorithm // eslint-disable-next-line no-self-compare -- NaN check if (IS_INCLUDES && el !== el) while (length > index) { value = O[index++]; // eslint-disable-next-line no-self-compare -- NaN check if (value !== value) return true; // Array#indexOf ignores holes, Array#includes - not } else for (;length > index; index++) { if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; } return !IS_INCLUDES && -1; }; }; module.exports = { // `Array.prototype.includes` method // https://tc39.es/ecma262/#sec-array.prototype.includes includes: createMethod(true), // `Array.prototype.indexOf` method // https://tc39.es/ecma262/#sec-array.prototype.indexof indexOf: createMethod(false) }; /***/ }), /***/ "../node_modules/core-js/internals/array-set-length.js": /*!*************************************************************!*\ !*** ../node_modules/core-js/internals/array-set-length.js ***! \*************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "../node_modules/core-js/internals/descriptors.js"); var isArray = __webpack_require__(/*! ../internals/is-array */ "../node_modules/core-js/internals/is-array.js"); var $TypeError = TypeError; // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; // Safari < 13 does not throw an error in this case var SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () { // makes no sense without proper strict mode support if (this !== undefined) return true; try { // eslint-disable-next-line es/no-object-defineproperty -- safe Object.defineProperty([], 'length', { writable: false }).length = 1; } catch (error) { return error instanceof TypeError; } }(); module.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) { if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) { throw new $TypeError('Cannot set read only .length'); } return O.length = length; } : function (O, length) { return O.length = length; }; /***/ }), /***/ "../node_modules/core-js/internals/classof-raw.js": /*!********************************************************!*\ !*** ../node_modules/core-js/internals/classof-raw.js ***! \********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "../node_modules/core-js/internals/function-uncurry-this.js"); var toString = uncurryThis({}.toString); var stringSlice = uncurryThis(''.slice); module.exports = function (it) { return stringSlice(toString(it), 8, -1); }; /***/ }), /***/ "../node_modules/core-js/internals/copy-constructor-properties.js": /*!************************************************************************!*\ !*** ../node_modules/core-js/internals/copy-constructor-properties.js ***! \************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "../node_modules/core-js/internals/has-own-property.js"); var ownKeys = __webpack_require__(/*! ../internals/own-keys */ "../node_modules/core-js/internals/own-keys.js"); var getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "../node_modules/core-js/internals/object-get-own-property-descriptor.js"); var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "../node_modules/core-js/internals/object-define-property.js"); module.exports = function (target, source, exceptions) { var keys = ownKeys(source); var defineProperty = definePropertyModule.f; var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; for (var i = 0; i < keys.length; i++) { var key = keys[i]; if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) { defineProperty(target, key, getOwnPropertyDescriptor(source, key)); } } }; /***/ }), /***/ "../node_modules/core-js/internals/create-non-enumerable-property.js": /*!***************************************************************************!*\ !*** ../node_modules/core-js/internals/create-non-enumerable-property.js ***! \***************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "../node_modules/core-js/internals/descriptors.js"); var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "../node_modules/core-js/internals/object-define-property.js"); var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "../node_modules/core-js/internals/create-property-descriptor.js"); module.exports = DESCRIPTORS ? function (object, key, value) { return definePropertyModule.f(object, key, createPropertyDescriptor(1, value)); } : function (object, key, value) { object[key] = value; return object; }; /***/ }), /***/ "../node_modules/core-js/internals/create-property-descriptor.js": /*!***********************************************************************!*\ !*** ../node_modules/core-js/internals/create-property-descriptor.js ***! \***********************************************************************/ /***/ ((module) => { "use strict"; module.exports = function (bitmap, value) { return { enumerable: !(bitmap & 1), configurable: !(bitmap & 2), writable: !(bitmap & 4), value: value }; }; /***/ }), /***/ "../node_modules/core-js/internals/define-built-in.js": /*!************************************************************!*\ !*** ../node_modules/core-js/internals/define-built-in.js ***! \************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var isCallable = __webpack_require__(/*! ../internals/is-callable */ "../node_modules/core-js/internals/is-callable.js"); var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "../node_modules/core-js/internals/object-define-property.js"); var makeBuiltIn = __webpack_require__(/*! ../internals/make-built-in */ "../node_modules/core-js/internals/make-built-in.js"); var defineGlobalProperty = __webpack_require__(/*! ../internals/define-global-property */ "../node_modules/core-js/internals/define-global-property.js"); module.exports = function (O, key, value, options) { if (!options) options = {}; var simple = options.enumerable; var name = options.name !== undefined ? options.name : key; if (isCallable(value)) makeBuiltIn(value, name, options); if (options.global) { if (simple) O[key] = value; else defineGlobalProperty(key, value); } else { try { if (!options.unsafe) delete O[key]; else if (O[key]) simple = true; } catch (error) { /* empty */ } if (simple) O[key] = value; else definePropertyModule.f(O, key, { value: value, enumerable: false, configurable: !options.nonConfigurable, writable: !options.nonWritable }); } return O; }; /***/ }), /***/ "../node_modules/core-js/internals/define-global-property.js": /*!*******************************************************************!*\ !*** ../node_modules/core-js/internals/define-global-property.js ***! \*******************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var globalThis = __webpack_require__(/*! ../internals/global-this */ "../node_modules/core-js/internals/global-this.js"); // eslint-disable-next-line es/no-object-defineproperty -- safe var defineProperty = Object.defineProperty; module.exports = function (key, value) { try { defineProperty(globalThis, key, { value: value, configurable: true, writable: true }); } catch (error) { globalThis[key] = value; } return value; }; /***/ }), /***/ "../node_modules/core-js/internals/descriptors.js": /*!********************************************************!*\ !*** ../node_modules/core-js/internals/descriptors.js ***! \********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var fails = __webpack_require__(/*! ../internals/fails */ "../node_modules/core-js/internals/fails.js"); // Detect IE8's incomplete defineProperty implementation module.exports = !fails(function () { // eslint-disable-next-line es/no-object-defineproperty -- required for testing return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7; }); /***/ }), /***/ "../node_modules/core-js/internals/document-create-element.js": /*!********************************************************************!*\ !*** ../node_modules/core-js/internals/document-create-element.js ***! \********************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var globalThis = __webpack_require__(/*! ../internals/global-this */ "../node_modules/core-js/internals/global-this.js"); var isObject = __webpack_require__(/*! ../internals/is-object */ "../node_modules/core-js/internals/is-object.js"); var document = globalThis.document; // typeof document.createElement is 'object' in old IE var EXISTS = isObject(document) && isObject(document.createElement); module.exports = function (it) { return EXISTS ? document.createElement(it) : {}; }; /***/ }), /***/ "../node_modules/core-js/internals/does-not-exceed-safe-integer.js": /*!*************************************************************************!*\ !*** ../node_modules/core-js/internals/does-not-exceed-safe-integer.js ***! \*************************************************************************/ /***/ ((module) => { "use strict"; var $TypeError = TypeError; var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991 module.exports = function (it) { if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded'); return it; }; /***/ }), /***/ "../node_modules/core-js/internals/enum-bug-keys.js": /*!**********************************************************!*\ !*** ../node_modules/core-js/internals/enum-bug-keys.js ***! \**********************************************************/ /***/ ((module) => { "use strict"; // IE8- don't enum bug keys module.exports = [ 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'valueOf' ]; /***/ }), /***/ "../node_modules/core-js/internals/environment-user-agent.js": /*!*******************************************************************!*\ !*** ../node_modules/core-js/internals/environment-user-agent.js ***! \*******************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var globalThis = __webpack_require__(/*! ../internals/global-this */ "../node_modules/core-js/internals/global-this.js"); var navigator = globalThis.navigator; var userAgent = navigator && navigator.userAgent; module.exports = userAgent ? String(userAgent) : ''; /***/ }), /***/ "../node_modules/core-js/internals/environment-v8-version.js": /*!*******************************************************************!*\ !*** ../node_modules/core-js/internals/environment-v8-version.js ***! \*******************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var globalThis = __webpack_require__(/*! ../internals/global-this */ "../node_modules/core-js/internals/global-this.js"); var userAgent = __webpack_require__(/*! ../internals/environment-user-agent */ "../node_modules/core-js/internals/environment-user-agent.js"); var process = globalThis.process; var Deno = globalThis.Deno; var versions = process && process.versions || Deno && Deno.version; var v8 = versions && versions.v8; var match, version; if (v8) { match = v8.split('.'); // in old Chrome, versions of V8 isn't V8 = Chrome / 10 // but their correct versions are not interesting for us version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]); } // BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0` // so check `userAgent` even if `.v8` exists, but 0 if (!version && userAgent) { match = userAgent.match(/Edge\/(\d+)/); if (!match || match[1] >= 74) { match = userAgent.match(/Chrome\/(\d+)/); if (match) version = +match[1]; } } module.exports = version; /***/ }), /***/ "../node_modules/core-js/internals/export.js": /*!***************************************************!*\ !*** ../node_modules/core-js/internals/export.js ***! \***************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var globalThis = __webpack_require__(/*! ../internals/global-this */ "../node_modules/core-js/internals/global-this.js"); var getOwnPropertyDescriptor = (__webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "../node_modules/core-js/internals/object-get-own-property-descriptor.js").f); var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "../node_modules/core-js/internals/create-non-enumerable-property.js"); var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "../node_modules/core-js/internals/define-built-in.js"); var defineGlobalProperty = __webpack_require__(/*! ../internals/define-global-property */ "../node_modules/core-js/internals/define-global-property.js"); var copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ "../node_modules/core-js/internals/copy-constructor-properties.js"); var isForced = __webpack_require__(/*! ../internals/is-forced */ "../node_modules/core-js/internals/is-forced.js"); /* options.target - name of the target object options.global - target is the global object options.stat - export as static methods of target options.proto - export as prototype methods of target options.real - real prototype method for the `pure` version options.forced - export even if the native feature is available options.bind - bind methods to the target, required for the `pure` version options.wrap - wrap constructors to preventing global pollution, required for the `pure` version options.unsafe - use the simple assignment of property instead of delete + defineProperty options.sham - add a flag to not completely full polyfills options.enumerable - export as enumerable property options.dontCallGetSet - prevent calling a getter on target options.name - the .name of the function if it does not match the key */ module.exports = function (options, source) { var TARGET = options.target; var GLOBAL = options.global; var STATIC = options.stat; var FORCED, target, key, targetProperty, sourceProperty, descriptor; if (GLOBAL) { target = globalThis; } else if (STATIC) { target = globalThis[TARGET] || defineGlobalProperty(TARGET, {}); } else { target = globalThis[TARGET] && globalThis[TARGET].prototype; } if (target) for (key in source) { sourceProperty = source[key]; if (options.dontCallGetSet) { descriptor = getOwnPropertyDescriptor(target, key); targetProperty = descriptor && descriptor.value; } else targetProperty = target[key]; FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); // contained in target if (!FORCED && targetProperty !== undefined) { if (typeof sourceProperty == typeof targetProperty) continue; copyConstructorProperties(sourceProperty, targetProperty); } // add a flag to not completely full polyfills if (options.sham || (targetProperty && targetProperty.sham)) { createNonEnumerableProperty(sourceProperty, 'sham', true); } defineBuiltIn(target, key, sourceProperty, options); } }; /***/ }), /***/ "../node_modules/core-js/internals/fails.js": /*!**************************************************!*\ !*** ../node_modules/core-js/internals/fails.js ***! \**************************************************/ /***/ ((module) => { "use strict"; module.exports = function (exec) { try { return !!exec(); } catch (error) { return true; } }; /***/ }), /***/ "../node_modules/core-js/internals/function-bind-native.js": /*!*****************************************************************!*\ !*** ../node_modules/core-js/internals/function-bind-native.js ***! \*****************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var fails = __webpack_require__(/*! ../internals/fails */ "../node_modules/core-js/internals/fails.js"); module.exports = !fails(function () { // eslint-disable-next-line es/no-function-prototype-bind -- safe var test = (function () { /* empty */ }).bind(); // eslint-disable-next-line no-prototype-builtins -- safe return typeof test != 'function' || test.hasOwnProperty('prototype'); }); /***/ }), /***/ "../node_modules/core-js/internals/function-call.js": /*!**********************************************************!*\ !*** ../node_modules/core-js/internals/function-call.js ***! \**********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ "../node_modules/core-js/internals/function-bind-native.js"); var call = Function.prototype.call; module.exports = NATIVE_BIND ? call.bind(call) : function () { return call.apply(call, arguments); }; /***/ }), /***/ "../node_modules/core-js/internals/function-name.js": /*!**********************************************************!*\ !*** ../node_modules/core-js/internals/function-name.js ***! \**********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "../node_modules/core-js/internals/descriptors.js"); var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "../node_modules/core-js/internals/has-own-property.js"); var FunctionPrototype = Function.prototype; // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe var getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor; var EXISTS = hasOwn(FunctionPrototype, 'name'); // additional protection from minified / mangled / dropped function names var PROPER = EXISTS && (function something() { /* empty */ }).name === 'something'; var CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable)); module.exports = { EXISTS: EXISTS, PROPER: PROPER, CONFIGURABLE: CONFIGURABLE }; /***/ }), /***/ "../node_modules/core-js/internals/function-uncurry-this.js": /*!******************************************************************!*\ !*** ../node_modules/core-js/internals/function-uncurry-this.js ***! \******************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ "../node_modules/core-js/internals/function-bind-native.js"); var FunctionPrototype = Function.prototype; var call = FunctionPrototype.call; var uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call); module.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) { return function () { return call.apply(fn, arguments); }; }; /***/ }), /***/ "../node_modules/core-js/internals/get-built-in.js": /*!*********************************************************!*\ !*** ../node_modules/core-js/internals/get-built-in.js ***! \*********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var globalThis = __webpack_require__(/*! ../internals/global-this */ "../node_modules/core-js/internals/global-this.js"); var isCallable = __webpack_require__(/*! ../internals/is-callable */ "../node_modules/core-js/internals/is-callable.js"); var aFunction = function (argument) { return isCallable(argument) ? argument : undefined; }; module.exports = function (namespace, method) { return arguments.length < 2 ? aFunction(globalThis[namespace]) : globalThis[namespace] && globalThis[namespace][method]; }; /***/ }), /***/ "../node_modules/core-js/internals/get-method.js": /*!*******************************************************!*\ !*** ../node_modules/core-js/internals/get-method.js ***! \*******************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var aCallable = __webpack_require__(/*! ../internals/a-callable */ "../node_modules/core-js/internals/a-callable.js"); var isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ "../node_modules/core-js/internals/is-null-or-undefined.js"); // `GetMethod` abstract operation // https://tc39.es/ecma262/#sec-getmethod module.exports = function (V, P) { var func = V[P]; return isNullOrUndefined(func) ? undefined : aCallable(func); }; /***/ }), /***/ "../node_modules/core-js/internals/global-this.js": /*!********************************************************!*\ !*** ../node_modules/core-js/internals/global-this.js ***! \********************************************************/ /***/ (function(module, __unused_webpack_exports, __webpack_require__) { "use strict"; var check = function (it) { return it && it.Math === Math && it; }; // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 module.exports = // eslint-disable-next-line es/no-global-this -- safe check(typeof globalThis == 'object' && globalThis) || check(typeof window == 'object' && window) || // eslint-disable-next-line no-restricted-globals -- safe check(typeof self == 'object' && self) || check(typeof __webpack_require__.g == 'object' && __webpack_require__.g) || check(typeof this == 'object' && this) || // eslint-disable-next-line no-new-func -- fallback (function () { return this; })() || Function('return this')(); /***/ }), /***/ "../node_modules/core-js/internals/has-own-property.js": /*!*************************************************************!*\ !*** ../node_modules/core-js/internals/has-own-property.js ***! \*************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "../node_modules/core-js/internals/function-uncurry-this.js"); var toObject = __webpack_require__(/*! ../internals/to-object */ "../node_modules/core-js/internals/to-object.js"); var hasOwnProperty = uncurryThis({}.hasOwnProperty); // `HasOwnProperty` abstract operation // https://tc39.es/ecma262/#sec-hasownproperty // eslint-disable-next-line es/no-object-hasown -- safe module.exports = Object.hasOwn || function hasOwn(it, key) { return hasOwnProperty(toObject(it), key); }; /***/ }), /***/ "../node_modules/core-js/internals/hidden-keys.js": /*!********************************************************!*\ !*** ../node_modules/core-js/internals/hidden-keys.js ***! \********************************************************/ /***/ ((module) => { "use strict"; module.exports = {}; /***/ }), /***/ "../node_modules/core-js/internals/html.js": /*!*************************************************!*\ !*** ../node_modules/core-js/internals/html.js ***! \*************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "../node_modules/core-js/internals/get-built-in.js"); module.exports = getBuiltIn('document', 'documentElement'); /***/ }), /***/ "../node_modules/core-js/internals/ie8-dom-define.js": /*!***********************************************************!*\ !*** ../node_modules/core-js/internals/ie8-dom-define.js ***! \***********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "../node_modules/core-js/internals/descriptors.js"); var fails = __webpack_require__(/*! ../internals/fails */ "../node_modules/core-js/internals/fails.js"); var createElement = __webpack_require__(/*! ../internals/document-create-element */ "../node_modules/core-js/internals/document-create-element.js"); // Thanks to IE8 for its funny defineProperty module.exports = !DESCRIPTORS && !fails(function () { // eslint-disable-next-line es/no-object-defineproperty -- required for testing return Object.defineProperty(createElement('div'), 'a', { get: function () { return 7; } }).a !== 7; }); /***/ }), /***/ "../node_modules/core-js/internals/indexed-object.js": /*!***********************************************************!*\ !*** ../node_modules/core-js/internals/indexed-object.js ***! \***********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "../node_modules/core-js/internals/function-uncurry-this.js"); var fails = __webpack_require__(/*! ../internals/fails */ "../node_modules/core-js/internals/fails.js"); var classof = __webpack_require__(/*! ../internals/classof-raw */ "../node_modules/core-js/internals/classof-raw.js"); var $Object = Object; var split = uncurryThis(''.split); // fallback for non-array-like ES3 and non-enumerable old V8 strings module.exports = fails(function () { // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 // eslint-disable-next-line no-prototype-builtins -- safe return !$Object('z').propertyIsEnumerable(0); }) ? function (it) { return classof(it) === 'String' ? split(it, '') : $Object(it); } : $Object; /***/ }), /***/ "../node_modules/core-js/internals/inspect-source.js": /*!***********************************************************!*\ !*** ../node_modules/core-js/internals/inspect-source.js ***! \***********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "../node_modules/core-js/internals/function-uncurry-this.js"); var isCallable = __webpack_require__(/*! ../internals/is-callable */ "../node_modules/core-js/internals/is-callable.js"); var store = __webpack_require__(/*! ../internals/shared-store */ "../node_modules/core-js/internals/shared-store.js"); var functionToString = uncurryThis(Function.toString); // this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper if (!isCallable(store.inspectSource)) { store.inspectSource = function (it) { return functionToString(it); }; } module.exports = store.inspectSource; /***/ }), /***/ "../node_modules/core-js/internals/internal-state.js": /*!***********************************************************!*\ !*** ../node_modules/core-js/internals/internal-state.js ***! \***********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/weak-map-basic-detection */ "../node_modules/core-js/internals/weak-map-basic-detection.js"); var globalThis = __webpack_require__(/*! ../internals/global-this */ "../node_modules/core-js/internals/global-this.js"); var isObject = __webpack_require__(/*! ../internals/is-object */ "../node_modules/core-js/internals/is-object.js"); var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "../node_modules/core-js/internals/create-non-enumerable-property.js"); var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "../node_modules/core-js/internals/has-own-property.js"); var shared = __webpack_require__(/*! ../internals/shared-store */ "../node_modules/core-js/internals/shared-store.js"); var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "../node_modules/core-js/internals/shared-key.js"); var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "../node_modules/core-js/internals/hidden-keys.js"); var OBJECT_ALREADY_INITIALIZED = 'Object already initialized'; var TypeError = globalThis.TypeError; var WeakMap = globalThis.WeakMap; var set, get, has; var enforce = function (it) { return has(it) ? get(it) : set(it, {}); }; var getterFor = function (TYPE) { return function (it) { var state; if (!isObject(it) || (state = get(it)).type !== TYPE) { throw new TypeError('Incompatible receiver, ' + TYPE + ' required'); } return state; }; }; if (NATIVE_WEAK_MAP || shared.state) { var store = shared.state || (shared.state = new WeakMap()); /* eslint-disable no-self-assign -- prototype methods protection */ store.get = store.get; store.has = store.has; store.set = store.set; /* eslint-enable no-self-assign -- prototype methods protection */ set = function (it, metadata) { if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED); metadata.facade = it; store.set(it, metadata); return metadata; }; get = function (it) { return store.get(it) || {}; }; has = function (it) { return store.has(it); }; } else { var STATE = sharedKey('state'); hiddenKeys[STATE] = true; set = function (it, metadata) { if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED); metadata.facade = it; createNonEnumerableProperty(it, STATE, metadata); return metadata; }; get = function (it) { return hasOwn(it, STATE) ? it[STATE] : {}; }; has = function (it) { return hasOwn(it, STATE); }; } module.exports = { set: set, get: get, has: has, enforce: enforce, getterFor: getterFor }; /***/ }), /***/ "../node_modules/core-js/internals/is-array.js": /*!*****************************************************!*\ !*** ../node_modules/core-js/internals/is-array.js ***! \*****************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var classof = __webpack_require__(/*! ../internals/classof-raw */ "../node_modules/core-js/internals/classof-raw.js"); // `IsArray` abstract operation // https://tc39.es/ecma262/#sec-isarray // eslint-disable-next-line es/no-array-isarray -- safe module.exports = Array.isArray || function isArray(argument) { return classof(argument) === 'Array'; }; /***/ }), /***/ "../node_modules/core-js/internals/is-callable.js": /*!********************************************************!*\ !*** ../node_modules/core-js/internals/is-callable.js ***! \********************************************************/ /***/ ((module) => { "use strict"; // https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot var documentAll = typeof document == 'object' && document.all; // `IsCallable` abstract operation // https://tc39.es/ecma262/#sec-iscallable // eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing module.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) { return typeof argument == 'function' || argument === documentAll; } : function (argument) { return typeof argument == 'function'; }; /***/ }), /***/ "../node_modules/core-js/internals/is-forced.js": /*!******************************************************!*\ !*** ../node_modules/core-js/internals/is-forced.js ***! \******************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var fails = __webpack_require__(/*! ../internals/fails */ "../node_modules/core-js/internals/fails.js"); var isCallable = __webpack_require__(/*! ../internals/is-callable */ "../node_modules/core-js/internals/is-callable.js"); var replacement = /#|\.prototype\./; var isForced = function (feature, detection) { var value = data[normalize(feature)]; return value === POLYFILL ? true : value === NATIVE ? false : isCallable(detection) ? fails(detection) : !!detection; }; var normalize = isForced.normalize = function (string) { return String(string).replace(replacement, '.').toLowerCase(); }; var data = isForced.data = {}; var NATIVE = isForced.NATIVE = 'N'; var POLYFILL = isForced.POLYFILL = 'P'; module.exports = isForced; /***/ }), /***/ "../node_modules/core-js/internals/is-null-or-undefined.js": /*!*****************************************************************!*\ !*** ../node_modules/core-js/internals/is-null-or-undefined.js ***! \*****************************************************************/ /***/ ((module) => { "use strict"; // we can't use just `it == null` since of `document.all` special case // https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec module.exports = function (it) { return it === null || it === undefined; }; /***/ }), /***/ "../node_modules/core-js/internals/is-object.js": /*!******************************************************!*\ !*** ../node_modules/core-js/internals/is-object.js ***! \******************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var isCallable = __webpack_require__(/*! ../internals/is-callable */ "../node_modules/core-js/internals/is-callable.js"); module.exports = function (it) { return typeof it == 'object' ? it !== null : isCallable(it); }; /***/ }), /***/ "../node_modules/core-js/internals/is-pure.js": /*!****************************************************!*\ !*** ../node_modules/core-js/internals/is-pure.js ***! \****************************************************/ /***/ ((module) => { "use strict"; module.exports = false; /***/ }), /***/ "../node_modules/core-js/internals/is-symbol.js": /*!******************************************************!*\ !*** ../node_modules/core-js/internals/is-symbol.js ***! \******************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "../node_modules/core-js/internals/get-built-in.js"); var isCallable = __webpack_require__(/*! ../internals/is-callable */ "../node_modules/core-js/internals/is-callable.js"); var isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ "../node_modules/core-js/internals/object-is-prototype-of.js"); var USE_SYMBOL_AS_UID = __webpack_require__(/*! ../internals/use-symbol-as-uid */ "../node_modules/core-js/internals/use-symbol-as-uid.js"); var $Object = Object; module.exports = USE_SYMBOL_AS_UID ? function (it) { return typeof it == 'symbol'; } : function (it) { var $Symbol = getBuiltIn('Symbol'); return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it)); }; /***/ }), /***/ "../node_modules/core-js/internals/length-of-array-like.js": /*!*****************************************************************!*\ !*** ../node_modules/core-js/internals/length-of-array-like.js ***! \*****************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var toLength = __webpack_require__(/*! ../internals/to-length */ "../node_modules/core-js/internals/to-length.js"); // `LengthOfArrayLike` abstract operation // https://tc39.es/ecma262/#sec-lengthofarraylike module.exports = function (obj) { return toLength(obj.length); }; /***/ }), /***/ "../node_modules/core-js/internals/make-built-in.js": /*!**********************************************************!*\ !*** ../node_modules/core-js/internals/make-built-in.js ***! \**********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "../node_modules/core-js/internals/function-uncurry-this.js"); var fails = __webpack_require__(/*! ../internals/fails */ "../node_modules/core-js/internals/fails.js"); var isCallable = __webpack_require__(/*! ../internals/is-callable */ "../node_modules/core-js/internals/is-callable.js"); var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "../node_modules/core-js/internals/has-own-property.js"); var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "../node_modules/core-js/internals/descriptors.js"); var CONFIGURABLE_FUNCTION_NAME = (__webpack_require__(/*! ../internals/function-name */ "../node_modules/core-js/internals/function-name.js").CONFIGURABLE); var inspectSource = __webpack_require__(/*! ../internals/inspect-source */ "../node_modules/core-js/internals/inspect-source.js"); var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "../node_modules/core-js/internals/internal-state.js"); var enforceInternalState = InternalStateModule.enforce; var getInternalState = InternalStateModule.get; var $String = String; // eslint-disable-next-line es/no-object-defineproperty -- safe var defineProperty = Object.defineProperty; var stringSlice = uncurryThis(''.slice); var replace = uncurryThis(''.replace); var join = uncurryThis([].join); var CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () { return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8; }); var TEMPLATE = String(String).split('String'); var makeBuiltIn = module.exports = function (value, name, options) { if (stringSlice($String(name), 0, 7) === 'Symbol(') { name = '[' + replace($String(name), /^Symbol\(([^)]*)\).*$/, '$1') + ']'; } if (options && options.getter) name = 'get ' + name; if (options && options.setter) name = 'set ' + name; if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) { if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true }); else value.name = name; } if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) { defineProperty(value, 'length', { value: options.arity }); } try { if (options && hasOwn(options, 'constructor') && options.constructor) { if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false }); // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable } else if (value.prototype) value.prototype = undefined; } catch (error) { /* empty */ } var state = enforceInternalState(value); if (!hasOwn(state, 'source')) { state.source = join(TEMPLATE, typeof name == 'string' ? name : ''); } return value; }; // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative // eslint-disable-next-line no-extend-native -- required Function.prototype.toString = makeBuiltIn(function toString() { return isCallable(this) && getInternalState(this).source || inspectSource(this); }, 'toString'); /***/ }), /***/ "../node_modules/core-js/internals/math-trunc.js": /*!*******************************************************!*\ !*** ../node_modules/core-js/internals/math-trunc.js ***! \*******************************************************/ /***/ ((module) => { "use strict"; var ceil = Math.ceil; var floor = Math.floor; // `Math.trunc` method // https://tc39.es/ecma262/#sec-math.trunc // eslint-disable-next-line es/no-math-trunc -- safe module.exports = Math.trunc || function trunc(x) { var n = +x; return (n > 0 ? floor : ceil)(n); }; /***/ }), /***/ "../node_modules/core-js/internals/object-create.js": /*!**********************************************************!*\ !*** ../node_modules/core-js/internals/object-create.js ***! \**********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; /* global ActiveXObject -- old IE, WSH */ var anObject = __webpack_require__(/*! ../internals/an-object */ "../node_modules/core-js/internals/an-object.js"); var definePropertiesModule = __webpack_require__(/*! ../internals/object-define-properties */ "../node_modules/core-js/internals/object-define-properties.js"); var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "../node_modules/core-js/internals/enum-bug-keys.js"); var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "../node_modules/core-js/internals/hidden-keys.js"); var html = __webpack_require__(/*! ../internals/html */ "../node_modules/core-js/internals/html.js"); var documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ "../node_modules/core-js/internals/document-create-element.js"); var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "../node_modules/core-js/internals/shared-key.js"); var GT = '>'; var LT = '<'; var PROTOTYPE = 'prototype'; var SCRIPT = 'script'; var IE_PROTO = sharedKey('IE_PROTO'); var EmptyConstructor = function () { /* empty */ }; var scriptTag = function (content) { return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT; }; // Create object with fake `null` prototype: use ActiveX Object with cleared prototype var NullProtoObjectViaActiveX = function (activeXDocument) { activeXDocument.write(scriptTag('')); activeXDocument.close(); var temp = activeXDocument.parentWindow.Object; // eslint-disable-next-line no-useless-assignment -- avoid memory leak activeXDocument = null; return temp; }; // Create object with fake `null` prototype: use iframe Object with cleared prototype var NullProtoObjectViaIFrame = function () { // Thrash, waste and sodomy: IE GC bug var iframe = documentCreateElement('iframe'); var JS = 'java' + SCRIPT + ':'; var iframeDocument; iframe.style.display = 'none'; html.appendChild(iframe); // https://github.com/zloirock/core-js/issues/475 iframe.src = String(JS); iframeDocument = iframe.contentWindow.document; iframeDocument.open(); iframeDocument.write(scriptTag('document.F=Object')); iframeDocument.close(); return iframeDocument.F; }; // Check for document.domain and active x support // No need to use active x approach when document.domain is not set // see https://github.com/es-shims/es5-shim/issues/150 // variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346 // avoid IE GC bug var activeXDocument; var NullProtoObject = function () { try { activeXDocument = new ActiveXObject('htmlfile'); } catch (error) { /* ignore */ } NullProtoObject = typeof document != 'undefined' ? document.domain && activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) // old IE : NullProtoObjectViaIFrame() : NullProtoObjectViaActiveX(activeXDocument); // WSH var length = enumBugKeys.length; while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]]; return NullProtoObject(); }; hiddenKeys[IE_PROTO] = true; // `Object.create` method // https://tc39.es/ecma262/#sec-object.create // eslint-disable-next-line es/no-object-create -- safe module.exports = Object.create || function create(O, Properties) { var result; if (O !== null) { EmptyConstructor[PROTOTYPE] = anObject(O); result = new EmptyConstructor(); EmptyConstructor[PROTOTYPE] = null; // add "__proto__" for Object.getPrototypeOf polyfill result[IE_PROTO] = O; } else result = NullProtoObject(); return Properties === undefined ? result : definePropertiesModule.f(result, Properties); }; /***/ }), /***/ "../node_modules/core-js/internals/object-define-properties.js": /*!*********************************************************************!*\ !*** ../node_modules/core-js/internals/object-define-properties.js ***! \*********************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "../node_modules/core-js/internals/descriptors.js"); var V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(/*! ../internals/v8-prototype-define-bug */ "../node_modules/core-js/internals/v8-prototype-define-bug.js"); var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "../node_modules/core-js/internals/object-define-property.js"); var anObject = __webpack_require__(/*! ../internals/an-object */ "../node_modules/core-js/internals/an-object.js"); var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "../node_modules/core-js/internals/to-indexed-object.js"); var objectKeys = __webpack_require__(/*! ../internals/object-keys */ "../node_modules/core-js/internals/object-keys.js"); // `Object.defineProperties` method // https://tc39.es/ecma262/#sec-object.defineproperties // eslint-disable-next-line es/no-object-defineproperties -- safe exports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) { anObject(O); var props = toIndexedObject(Properties); var keys = objectKeys(Properties); var length = keys.length; var index = 0; var key; while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]); return O; }; /***/ }), /***/ "../node_modules/core-js/internals/object-define-property.js": /*!*******************************************************************!*\ !*** ../node_modules/core-js/internals/object-define-property.js ***! \*******************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "../node_modules/core-js/internals/descriptors.js"); var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "../node_modules/core-js/internals/ie8-dom-define.js"); var V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(/*! ../internals/v8-prototype-define-bug */ "../node_modules/core-js/internals/v8-prototype-define-bug.js"); var anObject = __webpack_require__(/*! ../internals/an-object */ "../node_modules/core-js/internals/an-object.js"); var toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ "../node_modules/core-js/internals/to-property-key.js"); var $TypeError = TypeError; // eslint-disable-next-line es/no-object-defineproperty -- safe var $defineProperty = Object.defineProperty; // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; var ENUMERABLE = 'enumerable'; var CONFIGURABLE = 'configurable'; var WRITABLE = 'writable'; // `Object.defineProperty` method // https://tc39.es/ecma262/#sec-object.defineproperty exports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) { anObject(O); P = toPropertyKey(P); anObject(Attributes); if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) { var current = $getOwnPropertyDescriptor(O, P); if (current && current[WRITABLE]) { O[P] = Attributes.value; Attributes = { configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE], enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE], writable: false }; } } return $defineProperty(O, P, Attributes); } : $defineProperty : function defineProperty(O, P, Attributes) { anObject(O); P = toPropertyKey(P); anObject(Attributes); if (IE8_DOM_DEFINE) try { return $defineProperty(O, P, Attributes); } catch (error) { /* empty */ } if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported'); if ('value' in Attributes) O[P] = Attributes.value; return O; }; /***/ }), /***/ "../node_modules/core-js/internals/object-get-own-property-descriptor.js": /*!*******************************************************************************!*\ !*** ../node_modules/core-js/internals/object-get-own-property-descriptor.js ***! \*******************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "../node_modules/core-js/internals/descriptors.js"); var call = __webpack_require__(/*! ../internals/function-call */ "../node_modules/core-js/internals/function-call.js"); var propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ "../node_modules/core-js/internals/object-property-is-enumerable.js"); var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "../node_modules/core-js/internals/create-property-descriptor.js"); var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "../node_modules/core-js/internals/to-indexed-object.js"); var toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ "../node_modules/core-js/internals/to-property-key.js"); var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "../node_modules/core-js/internals/has-own-property.js"); var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "../node_modules/core-js/internals/ie8-dom-define.js"); // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; // `Object.getOwnPropertyDescriptor` method // https://tc39.es/ecma262/#sec-object.getownpropertydescriptor exports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { O = toIndexedObject(O); P = toPropertyKey(P); if (IE8_DOM_DEFINE) try { return $getOwnPropertyDescriptor(O, P); } catch (error) { /* empty */ } if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]); }; /***/ }), /***/ "../node_modules/core-js/internals/object-get-own-property-names.js": /*!**************************************************************************!*\ !*** ../node_modules/core-js/internals/object-get-own-property-names.js ***! \**************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ "../node_modules/core-js/internals/object-keys-internal.js"); var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "../node_modules/core-js/internals/enum-bug-keys.js"); var hiddenKeys = enumBugKeys.concat('length', 'prototype'); // `Object.getOwnPropertyNames` method // https://tc39.es/ecma262/#sec-object.getownpropertynames // eslint-disable-next-line es/no-object-getownpropertynames -- safe exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { return internalObjectKeys(O, hiddenKeys); }; /***/ }), /***/ "../node_modules/core-js/internals/object-get-own-property-symbols.js": /*!****************************************************************************!*\ !*** ../node_modules/core-js/internals/object-get-own-property-symbols.js ***! \****************************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; // eslint-disable-next-line es/no-object-getownpropertysymbols -- safe exports.f = Object.getOwnPropertySymbols; /***/ }), /***/ "../node_modules/core-js/internals/object-is-prototype-of.js": /*!*******************************************************************!*\ !*** ../node_modules/core-js/internals/object-is-prototype-of.js ***! \*******************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "../node_modules/core-js/internals/function-uncurry-this.js"); module.exports = uncurryThis({}.isPrototypeOf); /***/ }), /***/ "../node_modules/core-js/internals/object-keys-internal.js": /*!*****************************************************************!*\ !*** ../node_modules/core-js/internals/object-keys-internal.js ***! \*****************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "../node_modules/core-js/internals/function-uncurry-this.js"); var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "../node_modules/core-js/internals/has-own-property.js"); var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "../node_modules/core-js/internals/to-indexed-object.js"); var indexOf = (__webpack_require__(/*! ../internals/array-includes */ "../node_modules/core-js/internals/array-includes.js").indexOf); var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "../node_modules/core-js/internals/hidden-keys.js"); var push = uncurryThis([].push); module.exports = function (object, names) { var O = toIndexedObject(object); var i = 0; var result = []; var key; for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key); // Don't enum bug & hidden keys while (names.length > i) if (hasOwn(O, key = names[i++])) { ~indexOf(result, key) || push(result, key); } return result; }; /***/ }), /***/ "../node_modules/core-js/internals/object-keys.js": /*!********************************************************!*\ !*** ../node_modules/core-js/internals/object-keys.js ***! \********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ "../node_modules/core-js/internals/object-keys-internal.js"); var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "../node_modules/core-js/internals/enum-bug-keys.js"); // `Object.keys` method // https://tc39.es/ecma262/#sec-object.keys // eslint-disable-next-line es/no-object-keys -- safe module.exports = Object.keys || function keys(O) { return internalObjectKeys(O, enumBugKeys); }; /***/ }), /***/ "../node_modules/core-js/internals/object-property-is-enumerable.js": /*!**************************************************************************!*\ !*** ../node_modules/core-js/internals/object-property-is-enumerable.js ***! \**************************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; var $propertyIsEnumerable = {}.propertyIsEnumerable; // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; // Nashorn ~ JDK8 bug var NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1); // `Object.prototype.propertyIsEnumerable` method implementation // https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) { var descriptor = getOwnPropertyDescriptor(this, V); return !!descriptor && descriptor.enumerable; } : $propertyIsEnumerable; /***/ }), /***/ "../node_modules/core-js/internals/ordinary-to-primitive.js": /*!******************************************************************!*\ !*** ../node_modules/core-js/internals/ordinary-to-primitive.js ***! \******************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var call = __webpack_require__(/*! ../internals/function-call */ "../node_modules/core-js/internals/function-call.js"); var isCallable = __webpack_require__(/*! ../internals/is-callable */ "../node_modules/core-js/internals/is-callable.js"); var isObject = __webpack_require__(/*! ../internals/is-object */ "../node_modules/core-js/internals/is-object.js"); var $TypeError = TypeError; // `OrdinaryToPrimitive` abstract operation // https://tc39.es/ecma262/#sec-ordinarytoprimitive module.exports = function (input, pref) { var fn, val; if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val; if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val; if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val; throw new $TypeError("Can't convert object to primitive value"); }; /***/ }), /***/ "../node_modules/core-js/internals/own-keys.js": /*!*****************************************************!*\ !*** ../node_modules/core-js/internals/own-keys.js ***! \*****************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "../node_modules/core-js/internals/get-built-in.js"); var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "../node_modules/core-js/internals/function-uncurry-this.js"); var getOwnPropertyNamesModule = __webpack_require__(/*! ../internals/object-get-own-property-names */ "../node_modules/core-js/internals/object-get-own-property-names.js"); var getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ "../node_modules/core-js/internals/object-get-own-property-symbols.js"); var anObject = __webpack_require__(/*! ../internals/an-object */ "../node_modules/core-js/internals/an-object.js"); var concat = uncurryThis([].concat); // all object keys, includes non-enumerable and symbols module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) { var keys = getOwnPropertyNamesModule.f(anObject(it)); var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys; }; /***/ }), /***/ "../node_modules/core-js/internals/require-object-coercible.js": /*!*********************************************************************!*\ !*** ../node_modules/core-js/internals/require-object-coercible.js ***! \*********************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ "../node_modules/core-js/internals/is-null-or-undefined.js"); var $TypeError = TypeError; // `RequireObjectCoercible` abstract operation // https://tc39.es/ecma262/#sec-requireobjectcoercible module.exports = function (it) { if (isNullOrUndefined(it)) throw new $TypeError("Can't call method on " + it); return it; }; /***/ }), /***/ "../node_modules/core-js/internals/shared-key.js": /*!*******************************************************!*\ !*** ../node_modules/core-js/internals/shared-key.js ***! \*******************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var shared = __webpack_require__(/*! ../internals/shared */ "../node_modules/core-js/internals/shared.js"); var uid = __webpack_require__(/*! ../internals/uid */ "../node_modules/core-js/internals/uid.js"); var keys = shared('keys'); module.exports = function (key) { return keys[key] || (keys[key] = uid(key)); }; /***/ }), /***/ "../node_modules/core-js/internals/shared-store.js": /*!*********************************************************!*\ !*** ../node_modules/core-js/internals/shared-store.js ***! \*********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "../node_modules/core-js/internals/is-pure.js"); var globalThis = __webpack_require__(/*! ../internals/global-this */ "../node_modules/core-js/internals/global-this.js"); var defineGlobalProperty = __webpack_require__(/*! ../internals/define-global-property */ "../node_modules/core-js/internals/define-global-property.js"); var SHARED = '__core-js_shared__'; var store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {}); (store.versions || (store.versions = [])).push({ version: '3.38.1', mode: IS_PURE ? 'pure' : 'global', copyright: '© 2014-2024 Denis Pushkarev (zloirock.ru)', license: 'https://github.com/zloirock/core-js/blob/v3.38.1/LICENSE', source: 'https://github.com/zloirock/core-js' }); /***/ }), /***/ "../node_modules/core-js/internals/shared.js": /*!***************************************************!*\ !*** ../node_modules/core-js/internals/shared.js ***! \***************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var store = __webpack_require__(/*! ../internals/shared-store */ "../node_modules/core-js/internals/shared-store.js"); module.exports = function (key, value) { return store[key] || (store[key] = value || {}); }; /***/ }), /***/ "../node_modules/core-js/internals/symbol-constructor-detection.js": /*!*************************************************************************!*\ !*** ../node_modules/core-js/internals/symbol-constructor-detection.js ***! \*************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; /* eslint-disable es/no-symbol -- required for testing */ var V8_VERSION = __webpack_require__(/*! ../internals/environment-v8-version */ "../node_modules/core-js/internals/environment-v8-version.js"); var fails = __webpack_require__(/*! ../internals/fails */ "../node_modules/core-js/internals/fails.js"); var globalThis = __webpack_require__(/*! ../internals/global-this */ "../node_modules/core-js/internals/global-this.js"); var $String = globalThis.String; // eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing module.exports = !!Object.getOwnPropertySymbols && !fails(function () { var symbol = Symbol('symbol detection'); // Chrome 38 Symbol has incorrect toString conversion // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will, // of course, fail. return !$String(symbol) || !(Object(symbol) instanceof Symbol) || // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances !Symbol.sham && V8_VERSION && V8_VERSION < 41; }); /***/ }), /***/ "../node_modules/core-js/internals/to-absolute-index.js": /*!**************************************************************!*\ !*** ../node_modules/core-js/internals/to-absolute-index.js ***! \**************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ "../node_modules/core-js/internals/to-integer-or-infinity.js"); var max = Math.max; var min = Math.min; // Helper for a popular repeating case of the spec: // Let integer be ? ToInteger(index). // If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length). module.exports = function (index, length) { var integer = toIntegerOrInfinity(index); return integer < 0 ? max(integer + length, 0) : min(integer, length); }; /***/ }), /***/ "../node_modules/core-js/internals/to-indexed-object.js": /*!**************************************************************!*\ !*** ../node_modules/core-js/internals/to-indexed-object.js ***! \**************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; // toObject with fallback for non-array-like ES3 strings var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ "../node_modules/core-js/internals/indexed-object.js"); var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "../node_modules/core-js/internals/require-object-coercible.js"); module.exports = function (it) { return IndexedObject(requireObjectCoercible(it)); }; /***/ }), /***/ "../node_modules/core-js/internals/to-integer-or-infinity.js": /*!*******************************************************************!*\ !*** ../node_modules/core-js/internals/to-integer-or-infinity.js ***! \*******************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var trunc = __webpack_require__(/*! ../internals/math-trunc */ "../node_modules/core-js/internals/math-trunc.js"); // `ToIntegerOrInfinity` abstract operation // https://tc39.es/ecma262/#sec-tointegerorinfinity module.exports = function (argument) { var number = +argument; // eslint-disable-next-line no-self-compare -- NaN check return number !== number || number === 0 ? 0 : trunc(number); }; /***/ }), /***/ "../node_modules/core-js/internals/to-length.js": /*!******************************************************!*\ !*** ../node_modules/core-js/internals/to-length.js ***! \******************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ "../node_modules/core-js/internals/to-integer-or-infinity.js"); var min = Math.min; // `ToLength` abstract operation // https://tc39.es/ecma262/#sec-tolength module.exports = function (argument) { var len = toIntegerOrInfinity(argument); return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 }; /***/ }), /***/ "../node_modules/core-js/internals/to-object.js": /*!******************************************************!*\ !*** ../node_modules/core-js/internals/to-object.js ***! \******************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "../node_modules/core-js/internals/require-object-coercible.js"); var $Object = Object; // `ToObject` abstract operation // https://tc39.es/ecma262/#sec-toobject module.exports = function (argument) { return $Object(requireObjectCoercible(argument)); }; /***/ }), /***/ "../node_modules/core-js/internals/to-primitive.js": /*!*********************************************************!*\ !*** ../node_modules/core-js/internals/to-primitive.js ***! \*********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var call = __webpack_require__(/*! ../internals/function-call */ "../node_modules/core-js/internals/function-call.js"); var isObject = __webpack_require__(/*! ../internals/is-object */ "../node_modules/core-js/internals/is-object.js"); var isSymbol = __webpack_require__(/*! ../internals/is-symbol */ "../node_modules/core-js/internals/is-symbol.js"); var getMethod = __webpack_require__(/*! ../internals/get-method */ "../node_modules/core-js/internals/get-method.js"); var ordinaryToPrimitive = __webpack_require__(/*! ../internals/ordinary-to-primitive */ "../node_modules/core-js/internals/ordinary-to-primitive.js"); var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "../node_modules/core-js/internals/well-known-symbol.js"); var $TypeError = TypeError; var TO_PRIMITIVE = wellKnownSymbol('toPrimitive'); // `ToPrimitive` abstract operation // https://tc39.es/ecma262/#sec-toprimitive module.exports = function (input, pref) { if (!isObject(input) || isSymbol(input)) return input; var exoticToPrim = getMethod(input, TO_PRIMITIVE); var result; if (exoticToPrim) { if (pref === undefined) pref = 'default'; result = call(exoticToPrim, input, pref); if (!isObject(result) || isSymbol(result)) return result; throw new $TypeError("Can't convert object to primitive value"); } if (pref === undefined) pref = 'number'; return ordinaryToPrimitive(input, pref); }; /***/ }), /***/ "../node_modules/core-js/internals/to-property-key.js": /*!************************************************************!*\ !*** ../node_modules/core-js/internals/to-property-key.js ***! \************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "../node_modules/core-js/internals/to-primitive.js"); var isSymbol = __webpack_require__(/*! ../internals/is-symbol */ "../node_modules/core-js/internals/is-symbol.js"); // `ToPropertyKey` abstract operation // https://tc39.es/ecma262/#sec-topropertykey module.exports = function (argument) { var key = toPrimitive(argument, 'string'); return isSymbol(key) ? key : key + ''; }; /***/ }), /***/ "../node_modules/core-js/internals/try-to-string.js": /*!**********************************************************!*\ !*** ../node_modules/core-js/internals/try-to-string.js ***! \**********************************************************/ /***/ ((module) => { "use strict"; var $String = String; module.exports = function (argument) { try { return $String(argument); } catch (error) { return 'Object'; } }; /***/ }), /***/ "../node_modules/core-js/internals/uid.js": /*!************************************************!*\ !*** ../node_modules/core-js/internals/uid.js ***! \************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "../node_modules/core-js/internals/function-uncurry-this.js"); var id = 0; var postfix = Math.random(); var toString = uncurryThis(1.0.toString); module.exports = function (key) { return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36); }; /***/ }), /***/ "../node_modules/core-js/internals/use-symbol-as-uid.js": /*!**************************************************************!*\ !*** ../node_modules/core-js/internals/use-symbol-as-uid.js ***! \**************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; /* eslint-disable es/no-symbol -- required for testing */ var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ "../node_modules/core-js/internals/symbol-constructor-detection.js"); module.exports = NATIVE_SYMBOL && !Symbol.sham && typeof Symbol.iterator == 'symbol'; /***/ }), /***/ "../node_modules/core-js/internals/v8-prototype-define-bug.js": /*!********************************************************************!*\ !*** ../node_modules/core-js/internals/v8-prototype-define-bug.js ***! \********************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "../node_modules/core-js/internals/descriptors.js"); var fails = __webpack_require__(/*! ../internals/fails */ "../node_modules/core-js/internals/fails.js"); // V8 ~ Chrome 36- // https://bugs.chromium.org/p/v8/issues/detail?id=3334 module.exports = DESCRIPTORS && fails(function () { // eslint-disable-next-line es/no-object-defineproperty -- required for testing return Object.defineProperty(function () { /* empty */ }, 'prototype', { value: 42, writable: false }).prototype !== 42; }); /***/ }), /***/ "../node_modules/core-js/internals/weak-map-basic-detection.js": /*!*********************************************************************!*\ !*** ../node_modules/core-js/internals/weak-map-basic-detection.js ***! \*********************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var globalThis = __webpack_require__(/*! ../internals/global-this */ "../node_modules/core-js/internals/global-this.js"); var isCallable = __webpack_require__(/*! ../internals/is-callable */ "../node_modules/core-js/internals/is-callable.js"); var WeakMap = globalThis.WeakMap; module.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap)); /***/ }), /***/ "../node_modules/core-js/internals/well-known-symbol.js": /*!**************************************************************!*\ !*** ../node_modules/core-js/internals/well-known-symbol.js ***! \**************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var globalThis = __webpack_require__(/*! ../internals/global-this */ "../node_modules/core-js/internals/global-this.js"); var shared = __webpack_require__(/*! ../internals/shared */ "../node_modules/core-js/internals/shared.js"); var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "../node_modules/core-js/internals/has-own-property.js"); var uid = __webpack_require__(/*! ../internals/uid */ "../node_modules/core-js/internals/uid.js"); var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ "../node_modules/core-js/internals/symbol-constructor-detection.js"); var USE_SYMBOL_AS_UID = __webpack_require__(/*! ../internals/use-symbol-as-uid */ "../node_modules/core-js/internals/use-symbol-as-uid.js"); var Symbol = globalThis.Symbol; var WellKnownSymbolsStore = shared('wks'); var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid; module.exports = function (name) { if (!hasOwn(WellKnownSymbolsStore, name)) { WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name) ? Symbol[name] : createWellKnownSymbol('Symbol.' + name); } return WellKnownSymbolsStore[name]; }; /***/ }), /***/ "../node_modules/core-js/modules/es.array.includes.js": /*!************************************************************!*\ !*** ../node_modules/core-js/modules/es.array.includes.js ***! \************************************************************/ /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var $ = __webpack_require__(/*! ../internals/export */ "../node_modules/core-js/internals/export.js"); var $includes = (__webpack_require__(/*! ../internals/array-includes */ "../node_modules/core-js/internals/array-includes.js").includes); var fails = __webpack_require__(/*! ../internals/fails */ "../node_modules/core-js/internals/fails.js"); var addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ "../node_modules/core-js/internals/add-to-unscopables.js"); // FF99+ bug var BROKEN_ON_SPARSE = fails(function () { // eslint-disable-next-line es/no-array-prototype-includes -- detection return !Array(1).includes(); }); // `Array.prototype.includes` method // https://tc39.es/ecma262/#sec-array.prototype.includes $({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, { includes: function includes(el /* , fromIndex = 0 */) { return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined); } }); // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables addToUnscopables('includes'); /***/ }), /***/ "../node_modules/core-js/modules/es.array.push.js": /*!********************************************************!*\ !*** ../node_modules/core-js/modules/es.array.push.js ***! \********************************************************/ /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { "use strict"; var $ = __webpack_require__(/*! ../internals/export */ "../node_modules/core-js/internals/export.js"); var toObject = __webpack_require__(/*! ../internals/to-object */ "../node_modules/core-js/internals/to-object.js"); var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "../node_modules/core-js/internals/length-of-array-like.js"); var setArrayLength = __webpack_require__(/*! ../internals/array-set-length */ "../node_modules/core-js/internals/array-set-length.js"); var doesNotExceedSafeInteger = __webpack_require__(/*! ../internals/does-not-exceed-safe-integer */ "../node_modules/core-js/internals/does-not-exceed-safe-integer.js"); var fails = __webpack_require__(/*! ../internals/fails */ "../node_modules/core-js/internals/fails.js"); var INCORRECT_TO_LENGTH = fails(function () { return [].push.call({ length: 0x100000000 }, 1) !== 4294967297; }); // V8 <= 121 and Safari <= 15.4; FF < 23 throws InternalError // https://bugs.chromium.org/p/v8/issues/detail?id=12681 var properErrorOnNonWritableLength = function () { try { // eslint-disable-next-line es/no-object-defineproperty -- safe Object.defineProperty([], 'length', { writable: false }).push(); } catch (error) { return error instanceof TypeError; } }; var FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength(); // `Array.prototype.push` method // https://tc39.es/ecma262/#sec-array.prototype.push $({ target: 'Array', proto: true, arity: 1, forced: FORCED }, { // eslint-disable-next-line no-unused-vars -- required for `.length` push: function push(item) { var O = toObject(this); var len = lengthOfArrayLike(O); var argCount = arguments.length; doesNotExceedSafeInteger(len + argCount); for (var i = 0; i < argCount; i++) { O[len] = arguments[i]; len++; } setArrayLength(O, len); return len; } }); /***/ }) /******/ }); /************************************************************************/ /******/ // The module cache /******/ var __webpack_module_cache__ = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ var cachedModule = __webpack_module_cache__[moduleId]; /******/ if (cachedModule !== undefined) { /******/ return cachedModule.exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = __webpack_module_cache__[moduleId] = { /******/ // no module.id needed /******/ // no module.loaded needed /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /************************************************************************/ /******/ /* webpack/runtime/global */ /******/ (() => { /******/ __webpack_require__.g = (function() { /******/ if (typeof globalThis === 'object') return globalThis; /******/ try { /******/ return this || new Function('return this')(); /******/ } catch (e) { /******/ if (typeof window === 'object') return window; /******/ } /******/ })(); /******/ })(); /******/ /************************************************************************/ var __webpack_exports__ = {}; // This entry need to be wrapped in an IIFE because it need to be in strict mode. (() => { "use strict"; /*!***************************************************************!*\ !*** ../modules/display-conditions/assets/js/editor/index.js ***! \***************************************************************/ var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); var _module = _interopRequireDefault(__webpack_require__(/*! ./module.js */ "../modules/display-conditions/assets/js/editor/module.js")); new _module.default(); })(); /******/ })() ; //# sourceMappingURL=display-conditions.js.mapContainer interface ============== This repository holds all interfaces related to [PSR-11 (Container Interface)][psr-url]. Note that this is not a Container implementation of its own. It is merely abstractions that describe the components of a Dependency Injection Container. The installable [package][package-url] and [implementations][implementation-url] are listed on Packagist. [psr-url]: https://www.php-fig.org/psr/psr-11/ [package-url]: https://packagist.org/packages/psr/container [implementation-url]: https://packagist.org/providers/psr/container-implementation /*! * headroom.js v0.12.0 - Give your page some headroom. Hide your header until you need it * Copyright (c) 2020 Nick Williams - http://wicky.nillia.ms/headroom.js * License: MIT */ !function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(t=t||self).Headroom=n()}(this,function(){"use strict";function t(){return"undefined"!=typeof window}function d(t){return function(t){return t&&t.document&&function(t){return 9===t.nodeType}(t.document)}(t)?function(t){var n=t.document,o=n.body,s=n.documentElement;return{scrollHeight:function(){return Math.max(o.scrollHeight,s.scrollHeight,o.offsetHeight,s.offsetHeight,o.clientHeight,s.clientHeight)},height:function(){return t.innerHeight||s.clientHeight||o.clientHeight},scrollY:function(){return void 0!==t.pageYOffset?t.pageYOffset:(s||o.parentNode||o).scrollTop}}}(t):function(t){return{scrollHeight:function(){return Math.max(t.scrollHeight,t.offsetHeight,t.clientHeight)},height:function(){return Math.max(t.offsetHeight,t.clientHeight)},scrollY:function(){return t.scrollTop}}}(t)}function n(t,s,e){var n,o=function(){var n=!1;try{var t={get passive(){n=!0}};window.addEventListener("test",t,t),window.removeEventListener("test",t,t)}catch(t){n=!1}return n}(),i=!1,r=d(t),l=r.scrollY(),a={};function c(){var t=Math.round(r.scrollY()),n=r.height(),o=r.scrollHeight();a.scrollY=t,a.lastScrollY=l,a.direction=ls.tolerance[a.direction],e(a),l=t,i=!1}function h(){i||(i=!0,n=requestAnimationFrame(c))}var u=!!o&&{passive:!0,capture:!1};return t.addEventListener("scroll",h,u),c(),{destroy:function(){cancelAnimationFrame(n),t.removeEventListener("scroll",h,u)}}}function o(t){return t===Object(t)?t:{down:t,up:t}}function s(t,n){n=n||{},Object.assign(this,s.options,n),this.classes=Object.assign({},s.options.classes,n.classes),this.elem=t,this.tolerance=o(this.tolerance),this.offset=o(this.offset),this.initialised=!1,this.frozen=!1}return s.prototype={constructor:s,init:function(){return s.cutsTheMustard&&!this.initialised&&(this.addClass("initial"),this.initialised=!0,setTimeout(function(t){t.scrollTracker=n(t.scroller,{offset:t.offset,tolerance:t.tolerance},t.update.bind(t))},100,this)),this},destroy:function(){this.initialised=!1,Object.keys(this.classes).forEach(this.removeClass,this),this.scrollTracker.destroy()},unpin:function(){!this.hasClass("pinned")&&this.hasClass("unpinned")||(this.addClass("unpinned"),this.removeClass("pinned"),this.onUnpin&&this.onUnpin.call(this))},pin:function(){this.hasClass("unpinned")&&(this.addClass("pinned"),this.removeClass("unpinned"),this.onPin&&this.onPin.call(this))},freeze:function(){this.frozen=!0,this.addClass("frozen")},unfreeze:function(){this.frozen=!1,this.removeClass("frozen")},top:function(){this.hasClass("top")||(this.addClass("top"),this.removeClass("notTop"),this.onTop&&this.onTop.call(this))},notTop:function(){this.hasClass("notTop")||(this.addClass("notTop"),this.removeClass("top"),this.onNotTop&&this.onNotTop.call(this))},bottom:function(){this.hasClass("bottom")||(this.addClass("bottom"),this.removeClass("notBottom"),this.onBottom&&this.onBottom.call(this))},notBottom:function(){this.hasClass("notBottom")||(this.addClass("notBottom"),this.removeClass("bottom"),this.onNotBottom&&this.onNotBottom.call(this))},shouldUnpin:function(t){return"down"===t.direction&&!t.top&&t.toleranceExceeded},shouldPin:function(t){return"up"===t.direction&&t.toleranceExceeded||t.top},addClass:function(t){this.elem.classList.add.apply(this.elem.classList,this.classes[t].split(" "))},removeClass:function(t){this.elem.classList.remove.apply(this.elem.classList,this.classes[t].split(" "))},hasClass:function(t){return this.classes[t].split(" ").every(function(t){return this.classList.contains(t)},this.elem)},update:function(t){t.isOutOfBounds||!0!==this.frozen&&(t.top?this.top():this.notTop(),t.bottom?this.bottom():this.notBottom(),this.shouldUnpin(t)?this.unpin():this.shouldPin(t)&&this.pin())}},s.options={tolerance:{up:0,down:0},offset:0,scroller:t()?window:null,classes:{frozen:"headroom--frozen",pinned:"headroom--pinned",unpinned:"headroom--unpinned",top:"headroom--top",notTop:"headroom--not-top",bottom:"headroom--bottom",notBottom:"headroom--not-bottom",initial:"headroom"}},s.cutsTheMustard=!!(t()&&function(){}.bind&&"classList"in document.documentElement&&Object.assign&&Object.keys&&requestAnimationFrame),s});{"translation-revision-date":"2024-11-27T11:30:35+00:00","generator":"WP-CLI\/2.11.0","source":"inc\/lib\/gutenberg-templates\/dist\/main.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"en","plural-forms":"nplurals=2; plural=(n != 1);"},"The page template you are about to import contains a dynamic widget\/module. Please note this dynamic data will not be available with the imported page.":["Die Seitenschablone, die Sie importieren m\u00f6chten, enth\u00e4lt ein dynamisches Widget\/Modul. Bitte beachten Sie, dass diese dynamischen Daten mit der importierten Seite nicht verf\u00fcgbar sein werden."],"You will need to add it manually on the page.":["Sie m\u00fcssen es manuell auf der Seite hinzuf\u00fcgen."],"Filter by Color":["Nach Farbe filtern"],"Pages":["Seiten"],"Back to Templates":["Zur\u00fcck zu den Vorlagen"],"Insert":["Einf\u00fcgen"],"Cancel":["Abbrechen"],"Design Library":["Designbibliothek"],"Are you sure?":["Bist du sicher?"],"Exit":["Beenden"],"There was a problem processing the request. Please try again. If this error continues please contact our support team<\/a>.":["Es gab ein Problem bei der Bearbeitung der Anfrage. Bitte versuchen Sie es erneut. Wenn dieser Fehler weiterhin auftritt, kontaktieren Sie bitte unser Support-Team<\/a>."],"Back to Main Screen":["Zur\u00fcck zum Hauptbildschirm"],"Enter your %s account URL":["Geben Sie die URL Ihres %s-Kontos ein"],"Enter your Google Business URL":["Geben Sie Ihre Google Business-URL ein"],"Enter your Yelp business URL":["Geben Sie Ihre Yelp-Gesch\u00e4fts-URL ein"],"Enter your account URL":["Geben Sie Ihre Konto-URL ein"],"Social Media":["Soziale Medien"],"Please enter a full URL. Eg. https:\/\/twitter.com\/abcd, https:\/\/instagram.com\/abcd, https:\/\/facebook.com\/abcd":["Bitte geben Sie eine vollst\u00e4ndige URL ein. Z.B. https:\/\/twitter.com\/abcd, https:\/\/instagram.com\/abcd, https:\/\/facebook.com\/abcd"],"This might not be a valid URL.":["Dies k\u00f6nnte keine g\u00fcltige URL sein."],"Upload images":["Bilder hochladen"],"Invalid file name! Please avoid special characters. (%s)":["Ung\u00fcltiger Dateiname! Bitte vermeiden Sie Sonderzeichen. (%s)"],"Upload Your Images":["Laden Sie Ihre Bilder hoch"],"Name of the website:":["Name der Website:"],"Enter name or title of the website":["Geben Sie den Namen oder Titel der Website ein"],"This website is for:":["Diese Website ist f\u00fcr:"],"Name, language & type":["Name, Sprache & Typ"],"The best way to describe anything is by answering a few WH questions. Who, What, Where, Why, When, etc.":["Die beste Art, etwas zu beschreiben, ist, indem man einige W-Fragen beantwortet. Wer, Was, Wo, Warum, Wann, usw."],"Please enter a valid email":["Bitte geben Sie eine g\u00fcltige E-Mail-Adresse ein"],"You can only upload 20 images at once":["Sie k\u00f6nnen nur 20 Bilder auf einmal hochladen"],"Suggested Keywords":["Vorgeschlagene Schl\u00fcsselw\u00f6rter"],"Clear":["Klar"],"or drop your images here (Max 20)":["oder ziehen Sie Ihre Bilder hierher (maximal 20)"],"PNG, JPG, JPEG":["PNG, JPG, JPEG"],"Max size: 5 MB per file":["Maximale Gr\u00f6\u00dfe: 5 MB pro Datei"],"Try to refine your search.":["Versuchen Sie, Ihre Suche zu verfeinern."],"Find the perfect images for your website by entering a keyword or selecting from the suggested options.":["Finden Sie die perfekten Bilder f\u00fcr Ihre Website, indem Sie ein Schl\u00fcsselwort eingeben oder aus den vorgeschlagenen Optionen ausw\u00e4hlen."],"End of the search results":["Ende der Suchergebnisse"],"Activating Spectra plugin\u2026":["Aktivierung des Spectra-Plugins\u2026"],"Activating WPForms plugin\u2026":["WPForms-Plugin wird aktiviert\u2026"],"Installing Spectra plugin\u2026":["Installation des Spectra-Plugins\u2026"],"Installing WPForms plugin\u2026":["WPForms-Plugin wird installiert\u2026"],"Error Occurred!":["Fehler aufgetreten!"],"Error: %s":["Fehler: %s"],"Import":["Importieren"],"Installed the required plugin. The page will be saved and refreshed.":["Das erforderliche Plugin wurde installiert. Die Seite wird gespeichert und aktualisiert."],"Error saving the page: %s":["Fehler beim Speichern der Seite: %s"],"Update AI":["KI aktualisieren"],"Personalize Library":["Bibliothek personalisieren"],"Update the details for the AI to suggest new text and images.":["Aktualisieren Sie die Details, damit die KI neue Texte und Bilder vorschlagen kann."],"Add details for the AI to suggest relevant text and images.":["F\u00fcgen Sie Details hinzu, damit die KI relevante Texte und Bilder vorschlagen kann."],"Update images":["Bilder aktualisieren"],"Revise the previously entered information from AI setup.":["\u00dcberpr\u00fcfen Sie die zuvor eingegebenen Informationen aus der KI-Einrichtung."],"Reset AI Information":["KI-Informationen zur\u00fccksetzen"],"Reset the previously entered information from AI setup and erase all the generated AI content.":["Setzen Sie die zuvor eingegebenen Informationen aus der KI-Einrichtung zur\u00fcck und l\u00f6schen Sie alle generierten KI-Inhalte."],"Disable AI":["KI deaktivieren"],"This option will preview & import only wireframe (default) content and images.":["Diese Option wird nur Drahtgitter (Standard) Inhalte und Bilder in der Vorschau anzeigen und importieren."],"Adaptive Mode":["Adaptiver Modus"],"Disabling Adaptive Mode shows templates without personalized text, images, and theme styling.":["Das Deaktivieren des adaptiven Modus zeigt Vorlagen ohne personalisierten Text, Bilder und Themenstil an."],"AI Credits in Your Account":["AI-Guthaben in Ihrem Konto"],"Buy AI Credits":["KI-Guthaben kaufen"],"Revoke Access":["Zugriff widerrufen"],"Are you sure you wish to revoke the authorization token?":["Sind Sie sicher, dass Sie das Autorisierungstoken widerrufen m\u00f6chten?"],"You will need to re-authorize Zip to use it again.":["Sie m\u00fcssen Zip erneut autorisieren, um es wieder verwenden zu k\u00f6nnen."],"Revoke":["Widerrufen"],"Are you sure you want to cancel the content generation process?":["Sind Sie sicher, dass Sie den Inhaltserstellungsprozess abbrechen m\u00f6chten?"],"Syncing":["Synchronisieren"],"Patterns":["Muster"],"Kits":["Kits"],"Favorites":["Favoriten"],"Categories":["Kategorien"],"AI Credits remaining":["Verbleibende KI-Guthaben"],"Color Styles: ":["Farbstile:"],"Did you know, you can personalize this design library with content and images tailored to your website project?":["Wussten Sie, dass Sie diese Designbibliothek mit Inhalten und Bildern anpassen k\u00f6nnen, die auf Ihr Website-Projekt zugeschnitten sind?"],"Install Spectra & Insert":["Installieren Sie Spectra & Insert"],"Activate Spectra & Insert":["Aktivieren Sie Spectra & Einf\u00fcgen"],"This template includes dynamic content that won't carry over with the import. You'll need to manually add this dynamic data to the page.":["Diese Vorlage enth\u00e4lt dynamische Inhalte, die beim Import nicht \u00fcbernommen werden. Sie m\u00fcssen diese dynamischen Daten manuell zur Seite hinzuf\u00fcgen."],"Heads Up!":["Achtung!"],"Skip & Import \"%s\" Page":["\u00dcberspringen & \"%s\" Seite importieren"],"Access this template and all others with Essentials & Business Toolkit package starting at just $79.":["Zugreifen Sie auf diese Vorlage und alle anderen mit dem Essentials & Business Toolkit-Paket ab nur 79 $."],"Please Enter your Licence Key":["Bitte geben Sie Ihren Lizenzschl\u00fcssel ein"],"License key":["Lizenzschl\u00fcssel"],"Page":["Seite"],"No Result Found":["Kein Ergebnis gefunden"],"The search result not found. Try another search.":["Das Suchergebnis wurde nicht gefunden. Versuchen Sie eine andere Suche."],"Live Preview":["Live-Vorschau"],"Get Access":["Zugang erhalten"],"Updated templates design library":["Aktualisierte Vorlagen-Designbibliothek"],"Free AI credits to create personalized content":["Kostenlose KI-Guthaben zur Erstellung personalisierter Inhalte"],"Easily find stunning images for your website":["Finden Sie ganz einfach atemberaubende Bilder f\u00fcr Ihre Website"],"Localized your website to any language":["Lokalisieren Sie Ihre Website in jede Sprache"],"Access Design Library":["Zugriff auf die Designbibliothek"],"Get access to our library of hundreds of pixel-perfect, designer-made templates by creating a free account on ZipWP.":["Erhalten Sie Zugriff auf unsere Bibliothek mit Hunderten von pixelgenauen, von Designern erstellten Vorlagen, indem Sie ein kostenloses Konto bei ZipWP erstellen."],"Plus, you will get these extra benefits:":["Au\u00dferdem erhalten Sie diese zus\u00e4tzlichen Vorteile:"],"Generate Content for Pages":["Inhalt f\u00fcr Seiten generieren"],"Get the content for all your pages with just a click. You can generate content page by page by making use of the \"Skip\" option. We're here to make everything easy and tailored to suit your needs perfectly!":["Erhalten Sie den Inhalt f\u00fcr alle Ihre Seiten mit nur einem Klick. Sie k\u00f6nnen den Inhalt Seite f\u00fcr Seite generieren, indem Sie die Option \u201e\u00dcberspringen\u201c verwenden. Wir sind hier, um alles einfach und perfekt auf Ihre Bed\u00fcrfnisse zugeschnitten zu gestalten!"],"Let\u2019s Go (%s Credits)":["Los geht's (%s Credits)"],"Skip":["\u00dcberspringen"],"My Favorites":["Meine Favoriten"],"Sorry No Favorites Found \ud83d\ude15":["Leider keine Favoriten gefunden \ud83d\ude15"],"No favorites added.":["Keine Favoriten hinzugef\u00fcgt."],"Your favorite templates will be displayed here. You do not have any favorites yet. Click the heart icon and start adding them!":["Ihre Lieblingstemplates werden hier angezeigt. Sie haben noch keine Favoriten. Klicken Sie auf das Herzsymbol und fangen Sie an, sie hinzuzuf\u00fcgen!"],"Please wait a moment":["Bitte warten Sie einen Moment"],"support team":["Support-Team"],"If this error continues please contact our %1$s.":["Wenn dieser Fehler weiterhin auftritt, kontaktieren Sie bitte unser %1$s."],"Failed to active Spectra. Please try again later.":["Aktivierung von Spectra fehlgeschlagen. Bitte versuchen Sie es sp\u00e4ter erneut."],"Failed to active WPForms. Please try again later.":["WPForms konnte nicht aktiviert werden. Bitte versuchen Sie es sp\u00e4ter erneut."],"Failed to import the block. Please try again later.":["Der Block konnte nicht importiert werden. Bitte versuchen Sie es sp\u00e4ter erneut."],"Failed import WPForms. Please try again later.":["Import von WPForms fehlgeschlagen. Bitte versuchen Sie es sp\u00e4ter erneut."],"Failed to install Spectra. Please try again later.":["Installation von Spectra fehlgeschlagen. Bitte versuchen Sie es sp\u00e4ter erneut."],"Failed to install WPForms. Please try again later.":["Fehler bei der Installation von WPForms. Bitte versuchen Sie es sp\u00e4ter erneut."],"Failed to fetch block data. Please try again later.":["Fehler beim Abrufen der Blockdaten. Bitte versuchen Sie es sp\u00e4ter erneut."],"If you prefer to continue, press \u201cCancel\u201d.":["Wenn Sie fortfahren m\u00f6chten, dr\u00fccken Sie \u201eAbbrechen\u201c."],"(Please enter a valid email":["(Bitte geben Sie eine g\u00fcltige E-Mail-Adresse ein"],"How can people get in touch with ":["Wie k\u00f6nnen Menschen Kontakt aufnehmen mit"],"Please provide the contact information details below. These will be used on the website.":["Bitte geben Sie die Kontaktdaten unten an. Diese werden auf der Website verwendet."],"Description Generation Error!":["Fehler bei der Beschreibungserstellung!"],"Failed to generate business description using AI. Please retry or enter details manually.":["Fehler bei der Erstellung der Unternehmensbeschreibung mit KI. Bitte versuchen Sie es erneut oder geben Sie die Details manuell ein."],"Uh Oh, you're out of AI credits \ud83d\ude15":["Oh oh, Ihnen sind die KI-Guthaben ausgegangen \ud83d\ude15"],"With AI credits, you have the power to personalize the design library with unique copy and beautiful images specific to your website.":["Mit AI-Credits haben Sie die M\u00f6glichkeit, die Designbibliothek mit einzigartigen Texten und sch\u00f6nen Bildern, die speziell f\u00fcr Ihre Website sind, zu personalisieren."],"Your account has %1$s AI credits left. If you want to personalize the entire design library with content and images tailored to your business and website project, you'll require %2$s credits.":["Ihr Konto hat %1$s KI-Guthaben \u00fcbrig. Wenn Sie die gesamte Designbibliothek mit Inhalten und Bildern personalisieren m\u00f6chten, die auf Ihr Unternehmen und Ihr Website-Projekt zugeschnitten sind, ben\u00f6tigen Sie %2$s Guthaben."],"Unlock 200,000 AI Credits for Just $39":["Schalte 200.000 KI-Credits f\u00fcr nur 39 $ frei"],"Want to see how this works?":["M\u00f6chten Sie sehen, wie das funktioniert?"],"Begin with the 1000 AI credits provided when you signed up for your free account. With this, you can personalize templates in the %s categories.":["Beginnen Sie mit den 1000 KI-Credits, die Sie bei der Anmeldung f\u00fcr Ihr kostenloses Konto erhalten haben. Damit k\u00f6nnen Sie Vorlagen in den %s Kategorien personalisieren."],"You can easily purchase additional AI credits later anytime.":["Sie k\u00f6nnen jederzeit problemlos zus\u00e4tzliche KI-Guthaben erwerben."],"We couldn`t find anything with your keyword.":["Wir konnten mit Ihrem Schl\u00fcsselwort nichts finden."],"No images are selected yet.":["Noch keine Bilder ausgew\u00e4hlt."],"Connect":["Verbinden"],"Connect your account":["Verbinden Sie Ihr Konto"],"Let's Start":["Lass uns anfangen"],"Build using AI":["Mit KI bauen"]}}}=== CMB2 === Contributors: jtsternberg, webdevstudios, tw2113 Donate link: https://cmb2.io Tags: metaboxes, forms, fields, options, settings Requires at least: 3.8.0 Requires PHP: 5.2 Tested up to: 5.9 Stable tag: 2.10.1 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html CMB2 is a metabox, custom fields, and forms library for WordPress that will blow your mind. == Description == CMB2 is a developer's toolkit for building metaboxes, custom fields, and forms for WordPress that will blow your mind. Easily manage meta for posts, terms, users, comments, or create custom option pages. CMB2 is a complete rewrite of Custom Metaboxes and Fields for WordPress. To get started, please follow the examples in the included `example-functions.php` file and have a look at the [basic usage instructions](https://github.com/CMB2/CMB2/wiki/Basic-Usage). You can see a list of available field types [here](https://github.com/CMB2/CMB2/wiki/Field-Types#types). ### Contribution Development occurs on Github, and all contributions welcome. Please read the [CONTRIBUTING](https://github.com/CMB2/CMB2/blob/master/CONTRIBUTING.md) doc for more details. A complete list of all our awesome contributors found here: [github.com/CMB2/CMB2/graphs/contributors](https://github.com/CMB2/CMB2/graphs/contributors) ### Features: * Create metaboxes to be used on post edit screens. * [Create forms to be used on an options pages](https://github.com/CMB2/CMB2/wiki/Using-CMB-to-create-an-Admin-Theme-Options-Page). * Create forms to handle user meta and display them on user profile add/edit pages. * Create forms to handle term meta and display wherever your taxonomies are used. * [Flexible API that allows you to use CMB forms almost anywhere, even on the front-end](https://github.com/CMB2/CMB2/wiki/Bringing-Metaboxes-to-the-Front-end). * [Several field types are included](https://github.com/CMB2/CMB2/wiki/Field-Types). * [Custom API hook that allows you to create your own field types](https://github.com/CMB2/CMB2/wiki/Adding-your-own-field-types). * There are numerous hooks and filters, allowing you to modify many aspects of the library (without editing it directly). * Repeatable fields for most field types are supported, as well as repeatable field groups. * CMB2 is safe to bundle with any project. It will only load the newest version in the system. ### Translation If you are looking to provide language translation files, Please do so via [WordPress Plugin Translations](https://translate.wordpress.org/projects/wp-plugins/cmb2). ### Documentation * CMB2 documentation can be found at [the CMB2 wiki](https://github.com/CMB2/CMB2/wiki) on github. Also, If you're into reading code and inline documentation, we tried to keep all functions and methods fully inline-documented. ### 3rd Party Resources ##### Custom Field Types * [CMB2 Field Type: CMB Attached Posts Field](https://github.com/coreymcollins/cmb-attached-posts) from [coreymcollins](https://github.com/coreymcollins): `custom_attached_posts`, for attaching posts to a page. * [CMB2 Field Type: Post Search Ajax](https://github.com/alexis-magina/cmb2-field-post-search-ajax) by [alexis-magina](https://github.com/alexis-magina): `post_search_ajax` Attach posts to each other. Same approach as [CMB2 Attached Posts Field](https://github.com/coreymcollins/cmb-attached-posts) but with Ajax request, multiple/single option, and different UI. * [CMB2 Field Type: CMB2 Post Search field](https://github.com/CMB2/CMB2-Post-Search-field): `post_search_text` adds a post-search dialog for searching/attaching other post IDs. * [CMB2 Field Type: CMB2 User Search field](https://github.com/Mte90/CMB2-User-Search-field) from [Mte90](https://github.com/Mte90): `user_search_text` adds a user-search dialog for searching/attaching other User IDs. * [CMB2 Field Type: Google Maps](https://github.com/mustardBees/cmb_field_map) from [mustardBees](https://github.com/mustardBees): Custom field type for Google Maps. > The `pw_map` field stores the latitude/longitude values which you can then use to display a map in your theme. * [CMB2 Field Type: Leaflet Maps](https://github.com/villeristi/CMB2-field-Leaflet-Geocoder) from [villeristi](https://github.com/villeristi): Custom field type for [Leaflet](https://leafletjs.com/) Maps. * [CMB2 Field Type: Select2](https://github.com/mustardBees/cmb-field-select2) from [mustardBees](https://github.com/mustardBees): Custom field types which use the [Select2](https://select2.org/) script: > 1. The `pw_select field` acts much like the default select field. However, it adds typeahead-style search allowing you to quickly make a selection from a large list > 2. The `pw_multiselect` field allows you to select multiple values with typeahead-style search. The values can be dragged and dropped to reorder * [CMB Field Type: Slider](https://github.com/qmatt/cmb2-field-slider) from [mattkrupnik](https://github.com/mattkrupnik/): Adds a jQuery UI Slider field. * [WDS CMB2 Date Range Field](https://github.com/CMB2/CMB2-Date-Range-Field) from [dustyf](https://github.com/dustyf) of [WebDevStudios](https://github.com/WebDevStudios): Adds a date range field. * [CMB2 Remote Image Select](https://github.com/CMB2/CMB2-Remote-Image-Select-Field) from [JayWood](https://github.com/JayWood) of [WebDevStudios](https://github.com/WebDevStudios): Allows users to enter a URL in a text field and select a single image for use in post meta. Similar to Facebook's featured image selector. * [CMB Field Type: Sorter](https://wordpress.org/plugins/cmb-field-type-sorter/): This plugin gives you two CMB field types based on the Sorter script. * [CMB Field Type: Tags](https://github.com/florianbeck/cmb2-field-type-tags): WordPress-Tags-like field type for CMB2. _note: this does not set the post tags, but simply provides a unique text input_ * [CMB Field Type: Link Picker](https://wordpress.org/plugins/link-picker-for-cmb2/): Using the Link Picker for CMB2 control, you can choose a link from your WordPress site, or manually enter a link. You can also identify if the link should open in a new window, or not. * [CMB Field Type: MultidatesPicker](https://github.com/origgami/cmb2-multidates-picker): Creates a CMB2 field type that enables a multiple date calendar. It uses a plugin called [MultiDatesPicker v1.6.3 for jQuery UI](https://dubrox.github.io/Multiple-Dates-Picker-for-jQuery-UI/). * [CMB Field Type: CMB2-radio-image](https://github.com/satwinderrathore/CMB2-radio-image): Image as radio buttons. * [CMB2 Term Select](https://github.com/florianbeck/cmb2-field-type-tags): Special CMB2 Field that allows users to define an autocomplete text field for terms. _Note: this will set the taxonomy terms, but has the option (`'apply_term' => false`) to disable and save the term ids as data instead (like for options pages, etc)._ * [CMB2 Related Links](https://github.com/jtsternberg/CMB2-Related-Links): Allows users to add a related links via a repeating field group. Field inputs are powered by the [CMB2 Field Type: CMB2 Post Search field](https://github.com/CMB2/CMB2-Post-Search-field) documented above, and so each link can be populated with existing WordPress content by clicking on the search button. _Note: this is not a standard field type, but instead a function you use in combination with CMB2::add_field()._ * [CMB2 Field Type: Order](https://github.com/rubengc/cmb2-field-order) by [rubengc](https://github.com/rubengc): Allows users to define custom order of predefined options. * [CMB2 Field Type: Animation](https://github.com/rubengc/cmb2-field-animation) by [rubengc](https://github.com/rubengc): Allows users to pickup an animation from [Animate.css](https://github.com/daneden/animate.css) (includes preview of chosen animation). * [CMB2 Field Type: Ajax Search](https://github.com/rubengc/cmb2-field-ajax-search) by [rubengc](https://github.com/rubengc): Based on [CMB2 Field Type: Post Search Ajax](https://github.com/alexis-magina/cmb2-field-post-search-ajax), adds the ability to attach posts/users/terms, and the ability to limit the maximum number of attached objects. * [CMB2 Field Type: Visual Style Editor](https://github.com/rubengc/cmb2-field-visual-style-editor) by [rubengc](https://github.com/rubengc): Custom field for CMB2 which allows customizing style from a small set of controls. * [CMB2 Field Type: Content Wrap](https://github.com/rubengc/cmb2-field-content-wrap) by [rubengc](https://github.com/rubengc): Custom field for CMB2 to store a content wrap values (padding, margin or border width). * [CMB2 Field JS Controls](https://github.com/rubengc/cmb2-field-js-controls) by [rubengc](https://github.com/rubengc): Show any field similar to Wordpress publishing actions (Post/Page post_status, visibility and post_date submit box field). * [CMB2 Field Type: Position](https://github.com/rubengc/cmb2-field-position) by [rubengc](https://github.com/rubengc): CMB2 field type to setup a jquery UI position values. * [CMB2 Field Type: CMB2 Roadway Segments](https://github.com/pixelwatt/cmb2-roadway-segments) by [pixelwatt](https://github.com/pixelwatt): This plugin adds a new CMB2 fieldtype for drawing roadway segments onto a map and provides a shortcode for display. * [CMB2 Field Type: Font Awesome](https://github.com/serkanalgur/cmb2-field-faiconselect) by [serkanalgur](https://github.com/serkanalgur): This plugin adds a new CMB2 field type for selecting Font Awesome icons. * [CMB2 Field Type: Typography](https://github.com/eduplessis/cmb2-typography) by [eduplessis](https://github.com/eduplessis): This plugin adds a new CMB2 field type "Typography" and it use jQuery fontselect for the font-family selection. * [CMB2 Field Type: Markdown](https://github.com/Rekenna/cmb2-markdown) by [Rekenna](https://github.com/Rekenna): This plugin adds a new CMB2 field type "CMB2 Markdown" where you can type in markdown and view a live preview of the results or convert to html with a button. * [CMB2 Field Type: Switch Button](https://github.com/themevan/CMB2-Switch-Button) by [themevan](https://github.com/themevan): This plugin adds a Custom Switch Button field type for CMB2. * [CMB2 Field Type: select_plus](https://github.com/manzoorwanijk/cmb2-select-plus) from [manzoorwanijk](https://github.com/manzoorwanijk/): Select field type which acts much like the default `select` field. However, it adds the support for `optgroup` and saving of values with `multiple` attribute. * [CMB2 Field Type: Address](https://github.com/scottsawyer/cmb2-field-address) by [scottsawyer](https://github.com/scottsawyer): Just a simple, repeatable address field. It's really just the snippet from [CMB2 Snippet Library](https://github.com/CMB2/CMB2-Snippet-Library) converted to a plugin. * [CMB2 Field Type: Link](https://github.com/scottsawyer/cmb2-field-link) by [scottsawyer](https://github.com/scottsawyer): Create a link field with some attributes. Very nice for styling links. * [CMB2 Field Type: Widget Selector](https://github.com/scottsawyer/cmb2-field-widget-selector) by [scottsawyer](https://github.com/scottsawyer): Need a field that lets you ( or your editor ) select / display an existing widget instance? Then this is the plugin for you. ##### Other Helpful Resources * [CMB2 Admin Extension](https://github.com/twoelevenjay/CMB2-Admin-Extension): Adds a UI to create CMB2 meta boxes from the WordPress admin. Also on [wordpress.org](https://wordpress.org/plugins/cmb2-admin-extension/). * [WordPress Shortcode Button](https://github.com/jtsternberg/Shortcode_Button): Uses CMB2 fields to generate fields for shortcode input modals. * [WDS-Simple-Page-Builder](https://github.com/WebDevStudios/WDS-Simple-Page-Builder): Uses existing template parts in the currently-active theme to build a customized page with rearrangeable elements. Built with CMB2. * [CMB2 Example Theme](https://github.com/CMB2/CMB2-Example-Theme): Demonstrate how to include CMB2 in your theme, as well as some cool tips and tricks. * [facetwp-cmb2](https://github.com//WebDevStudios/facetwp-cmb2): FacetWP integration with CMB2. * [CMB2-grid](https://github.com/origgami/CMB2-grid) from [origgami](https://github.com/origgami/): A grid system for WordPress CMB2 library that allows the creation of columns for a better layout in the admin. * [CMB2 Metatabs Options](https://github.com/rogerlos/cmb2-metatabs-options) from [rogerlos](https://github.com/rogerlos/): CMO makes it easy to create options pages with multiple metaboxes--and optional WordPress admin tabs. * [CMB2 Conditionals](https://github.com/jcchavezs/cmb2-conditionals) from [jcchavezs](https://github.com/jcchavezs/): Allows developers to relate fields so the display of one is conditional on the value of another. * [CMB2 Metabox Code Generator](https://willthemoor.github.io/cmb2-metabox-generator/) from [willthemoor](https://github.com/willthemoor/): Skip the boring bits. Use this generator to create fully functional CMB2 metaboxes easily. Now with bulk entry! * [Caldera Metaplate](https://wordpress.org/plugins/caldera-metaplate/) by [CalderaWP](https://calderawp.com/): Not specific to CMB2, but allows creating templates for outputting your custom fields. * [Yoast CMB2 Field Analysis WP Plugin](https://github.com/alexis-magina/yoast-cmb2-field-analysis) by [alexis-magina](https://github.com/alexis-magina): This plugin adds in a js based method of recalculating Yoast SEO's content scores when updating page content, specifically custom meta fields added via the CMB2 library. * [Skeleton](https://github.com/awethemes/skeleton) by [awethemes](https://github.com/awethemes): A complete framework for WordPress, uses CMB2 engine. * [WP Simple Iconfonts](https://wordpress.org/plugins/wp-simple-iconfonts/) by [awethemes](https://github.com/awethemes): An icon fonts manager and provides a font icon picker for CMB2. * [CMB2 Nav Menus](https://github.com/nsrosenqvist/cmb2-nav-menus) by [nsrosenqvist](https://github.com/nsrosenqvist): Lets you use CMB2 in nav menu entries.. ### Links * [Project Homepage](http://cmb2.io) * [Github project page](https://github.com/CMB2/CMB2) * [Documentation (GitHub wiki)](https://github.com/CMB2/CMB2/wiki) * [Snippet Library](https://github.com/CMB2/CMB2-Snippet-Library/) **[View CHANGELOG](https://github.com/CMB2/CMB2/blob/master/CHANGELOG.md)** ### Known Issues * Metabox containing WYSIWYG editor cannot be moved or used in a repeatable way at this time (this is a TinyMCE issue). * Not all fields work well in a repeatable group. == Installation == If installing the plugin from wordpress.org: 1. Upload the entire `/CMB2` directory to the `/wp-content/plugins/` directory. 2. Activate CMB2 through the 'Plugins' menu in WordPress. 2. Copy (and rename if desired) `example-functions.php` into to your theme or plugin's directory. 2. Edit to only include the fields you need and rename the functions. 4. Profit. If including the library in your plugin or theme: 1. Place the CMB directory inside of your theme or plugin. 2. Copy (and rename if desired) `example-functions.php` into a folder *above* the CMB directory OR copy the entirety of its contents to your theme's `functions.php` file. 2. Edit to only include the fields you need and rename the functions (CMB directory should be left unedited in order to easily update the library). 4. Profit. == Frequently Asked Questions == FAQ's usually end up in the [github wiki](https://github.com/CMB2/CMB2/wiki). == Changelog == ### 2.10.1 #### Bug Fixes * Fix issue with date picker formatting. Fixes [#1448](https://github.com/CMB2/CMB2/issues/1448). ### 2.10.0 #### Enhancements * Sanitize URLs, defaulting to `https`. Props [@paulschreiber](https://github.com/paulschreiber) ([#1413](https://github.com/CMB2/CMB2/pull/1413)). * Establish Cypress E2E Testing. Props [@markjaquith](https://github.com/markjaquith) ([#1437](https://github.com/CMB2/CMB2/pull/1437)). * Updated the JS `shiftRows` functionality to be simpler, and fix issues with JS initialization. Fixes [#1426](https://github.com/CMB2/CMB2/issues/1426) and [#1431](https://github.com/CMB2/CMB2/issues/1431). * Updated various NPM dependencies for security issues. #### Bug Fixes * Update to prevent deprecation notice:`Required parameter $i follows optional parameter $args...`. Props [@carloswph](https://github.com/carloswph) ([#1417](https://github.com/CMB2/CMB2/pull/1417)). * Make each date field more resilient to various date/timestamp values passed in (from REST API). ### 2.9.0 #### Enhancements * Added `cmb2_tab_group_tabs` filter for adding arbitrary menu page urls to the cmb2 tabs, and move tab markup output to separate method, `CMB2_Options_Hookup::options_page_tab_nav_output()`. Fixes [#1407](https://github.com/CMB2/CMB2/issues/1407). * Limit use of italic, including removing from field descriptions. Fixes [#1404](https://github.com/CMB2/CMB2/issues/1404). * Add to list of valid image types from `get_allowed_mime_types()`, which makes SVGs more reliable when using the [Safe SVG](https://wordpress.org/plugins/safe-svg/) plugin. Fixes [#1223](https://github.com/CMB2/CMB2/issues/1223). #### Bug Fixes * Fixes PHP warnings on repeatable ColorPicker with an array as default. Props [@rubengc](https://github.com/rubengc) ([#1340](https://github.com/CMB2/CMB2/pull/1340)). * Address PHP 7.4, compatibility issues with `func_get_args()`. Fixes [#1389](https://github.com/CMB2/CMB2/issues/1389). * Better generated array key for cached fields, fixes issue where wrong field is found. Fixes [#14053](https://github.com/CMB2/CMB2/issues/14053). * Fix issue with options-pages being changed to register on a hook priority of `5` instead of the default `10`, causing some back-compatibility issues. Fixes [#1410](https://github.com/CMB2/CMB2/issues/1410). ### 2.8.0 #### Enhancements * Added [CODE_OF_CONDUCT.md](https://github.com/CMB2/CMB2/blob/develop/CODE_OF_CONDUCT.md) file to meet GitHub Community standards. Props [@RubenMartins](https://github.com/RubenMartins) ([#1331](https://github.com/CMB2/CMB2/pull/1331)). * Add ability to define the page-registration admin menu hook priority for options pages. Fixes [#1380](https://github.com/CMB2/CMB2/issues/1380). #### Bug Fixes * Ensure `enqueue wp-color-picker` is enqueued for color fields. Props [@rubengc](https://github.com/rubengc) ([#1339](https://github.com/CMB2/CMB2/pull/1339)). * Fix empty name/id attributes on `'file_list'` buttons. Props [@pgroot91](https://github.com/pgroot91) ([#1347](https://github.com/CMB2/CMB2/pull/1347)). * Fix `wysiwyg` field type not working in a group, by ensuring scripts properly enqueued. Props [@yoren](https://github.com/yoren) ([#1361](https://github.com/CMB2/CMB2/pull/1361)). * Fix `$object_id` doc block types in helper-functions.php. Fixes [#1365](https://github.com/CMB2/CMB2/issues/1365). * Fix Metabox toggles visually broken with WP 5.5.x. Fixes [#1382](https://github.com/CMB2/CMB2/issues/1382). * Fix `PHP Deprecated: Required parameter $field_id follows optional parameter $type`, due to changes in PHP 8.0. Fixes [#1396](https://github.com/CMB2/CMB2/issues/1396). * Fix PHP notice caused by `deprecated_param` method in PHP 7.4. Props [@jonathanstegall](https://github.com/jonathanstegall) ([#1400](https://github.com/CMB2/CMB2/pull/1400)). ### 2.7.0 #### Enhancements * Added support for sortable columns by default, with ability to disable with `'column' => array( 'disable_sortable' => true )`. Props [@RubenMartins](https://github.com/RubenMartins) ([#1281](https://github.com/CMB2/CMB2/pull/1281)). * New field type, `'taxonomy_select_hierarchical'`. Fixes [#751](https://github.com/CMB2/CMB2/issues/751) * New `text`, `textarea` and `wysiwyg` character counter options. For now, this feature is not available to `wysiwyg` field types within repeatable groups. Props [@gyrus](https://github.com/gyrus) ([#1276](https://github.com/CMB2/CMB2/pull/1276)). - The new parameters: - `'char_counter'` - Defaults to false, no counter. Set to true, or `words` to count words instead of characters. - `'char_max'` - integer. When defined, counter shows remaining characters/words. - `'char_max_enforce'` - boolean, default: false. Currently only applied (as maxlength attribute) to `text` and `textarea` fields which use `'characters'` for counter. - You can also [override the default text strings](https://github.com/CMB2/CMB2/wiki/Field-Parameters#text) associated with these parameters: - `'words_left_text'` - Default: "Words left" - `'words_text'` - Default: "Words" - `'characters_left_text'` - Default: "Characters left" - `'characters_text'` - Default: "Characters" - `'characters_truncated_text'` - Default: "Your text may be truncated." * Update styling to be more compatible with WordPress 5.3. Props [@galengidman](https://github.com/galengidman) ([#1314](https://github.com/CMB2/CMB2/pull/1314)) * Add a new box parameter, `register_rest_field_cb`, which when used allows overriding the way CMB2 handles the `register_rest_field` callbacks, and defining your own REST prefix for your fields. See [this PR comment](https://github.com/CMB2/CMB2/pull/1240#issuecomment-552548488) for more context. * Cleanup by renaming `CMB2_hookup` to `CMB2_Hookup`. Classes are case-insensitive, so this is a backwards-compatible change. Props [@szepeviktor](https://github.com/szepeviktor) ([#1330](https://github.com/CMB2/CMB2/pull/1330), [#1328](https://github.com/CMB2/CMB2/issues/1328)). * Validate composer.json for Travis CI. Props [@szepeviktor](https://github.com/szepeviktor) ([#1326](https://github.com/CMB2/CMB2/pull/1326)). * Added [LICENSE](https://github.com/CMB2/CMB2/blob/develop/LICENSE) file to meet GitHub Community standards. Props [@RubenMartins](https://github.com/RubenMartins) ([#1316](https://github.com/CMB2/CMB2/pull/1316)). * Add new `"cmb2_display_class_{$fieldtype}"` filter and `'display_class'` field parameter to allow specifying the class to use to display the field (in admin columns, etc). * Update `CMB2_Types::_id()` to allow not appending the iterator attribute if a repeatable field. * Added `CMB2_Utils::concat_attrs()` test for nested arrays as data attributes. * Various updates per [VIP feedback](https://github.com/CMB2/CMB2/issues/1260). Props [@kevinlangleyjr](https://github.com/kevinlangleyjr), [@mikeselander](https://github.com/mikeselander) ([#1255](https://github.com/CMB2/CMB2/pull/1255), [#1257](https://github.com/CMB2/CMB2/pull/1257), [#1259](https://github.com/CMB2/CMB2/pull/1259), [#1261](https://github.com/CMB2/CMB2/pull/1261) [#1262](https://github.com/CMB2/CMB2/pull/1262), and various direct commits. See [#1260](https://github.com/CMB2/CMB2/issues/1260)). #### Bug Fixes * Fix some issues with Travis. Props [@anhskohbo](https://github.com/anhskohbo) ([#1220](https://github.com/CMB2/CMB2/pull/1220)). * Javascript: Correctly pass the newly created row to the `cmb2_add_row` triggered event. * Various code-formatting and code documentation improvements. Props [@tw2113](https://github.com/tw2113). * Don't exclude composer.json from the distribution. Props [@johnbillion](https://github.com/johnbillion) ([#1225](https://github.com/CMB2/CMB2/pull/1225)). * Ignore some more directories in the distribution package. Props [@johnbillion](https://github.com/johnbillion) ([#1226](https://github.com/CMB2/CMB2/pull/1226)). * Use `CMB2_Field::get_rest_value()` to get values for fields in the post REST API endpoints ([#1284](https://github.com/CMB2/CMB2/issues/1284)). * Fix issue where oEmbed fields' live-preview would not work if the field was added within a group, along with some other similarly related issues. Fixes [#1157](https://github.com/CMB2/CMB2/issues/1157). * Fix issue when using REST API for `file` and `text_datetime_timestamp_timezone` field types, the supporting field data was not provided (e.g. the file id for `file` field, and the `utc` value for the `text_datetime_timestamp_timezone` field). Fixes [https://wordpress.org/support/topic/cmb2-rest-api-image-file-field-as-an-object/](https://wordpress.org/support/topic/cmb2-rest-api-image-file-field-as-an-object/). * Escaping Improvements to File Base and File Fields. Props [@tomjn](https://github.com/tomjn) ([#1296](https://github.com/CMB2/CMB2/pull/1296), [#1297](https://github.com/CMB2/CMB2/pull/1297)). * Fix issue where repeatable CodeMirror textareas could not be clicked/draggged to highlight text. Props [@JPry](https://github.com/JPry) ([#1300](https://github.com/CMB2/CMB2/pull/1300)). * `taxonomy_select_hierarchical` now saves to the correct location, the term relationships table. Props [@latheva](https://github.com/latheva) ([#1307](https://github.com/CMB2/CMB2/pull/1307)). * Fix issue ([#1158](https://github.com/CMB2/CMB2/issues/1158)) where default REST API endpoints (e.g. `/wp/v2/{post_type}`) would show all boxes for all custom post types even though not registered to the post-type. Props [@Mte90](https://github.com/Mte90) ([#1238](https://github.com/CMB2/CMB2/pull/1238)). * Update and cull npm dependencis. Fixes [#1308](https://github.com/CMB2/CMB2/issues/1308). * Fix some jshint issues. * Updated the WordPress embeds URL references. * Updates to account for WordPress 5.2 oEmbed changes. * Fix to ensure date picker fields can have a default value. Fixes [#1245](https://github.com/CMB2/CMB2/issues/1245). * Added `function_exists( 'add_action' )` check to bootstrap file to ensure compatibility with composer usage. Props [@salcode](https://github.com/salcode) ([#1271](https://github.com/CMB2/CMB2/pull/1271), [#1270](https://github.com/CMB2/CMB2/issues/1270)) * Corrected link to facetwp-cmb2 in README.md. Props [@marcelreschke](https://github.com/marcelreschke) ([#1248](https://github.com/CMB2/CMB2/pull/1248)). * Use `get_user_locale()` in admin area instead of `get_locale()`. Fixes [#1267](https://github.com/CMB2/CMB2/issues/1267). * `CMB2::is_box_type()` now also checks for taxonomies if box is registered to "term" object type. This should fix some issues where CMB2 term meta was not showing up in REST API requests to the term endpoints. ### 2.6.0 #### Bug Fixes * Remove superfluous method definitions. Props [@tnorthcutt](https://github.com/tnorthcutt) ([#1200](https://github.com/CMB2/CMB2/pull/1200)). * Fix `rest_value_cb` registering of filter. Props [@lipemat](https://github.com/lipemat) ([#1212](https://github.com/CMB2/CMB2/pull/1212)). * Do not trigger tinyMCE editor save for the activeEditor. Prevents cursor jump in Gutenberg. Fixes [#1202](https://github.com/CMB2/CMB2/issues/1202) * Fix issue where making a field repeatable would generate a Javascript error because of missing sortable library. Props [@slaFFik](https://github.com/slaFFik) ([#1216](https://github.com/CMB2/CMB2/pull/1216)). * Ensure value passed to `CMB2_Utils::filter_empty` from `CMB2::save_group_field` is always an array. ([#1026](https://github.com/CMB2/CMB2/issues/1026)) * Fix potential issue with test path location. Props [@quasel](https://github.com/quasel) ([#463](https://github.com/CMB2/CMB2/pull/463)). #### Enhancements * Updated PHPUnit version in composer.json. Props [@slaFFik](https://github.com/slaFFik) ([#1204](https://github.com/CMB2/CMB2/pull/1204)). * Package.json: fix the need of global (old) grunt. Props [@slaFFik](https://github.com/slaFFik) ([#1206](https://github.com/CMB2/CMB2/pull/1206)). * Add optional confirmation dialog to group field's Remove button. Example [documented in the example functions file](https://github.com/CMB2/CMB2/blob/12036e2dcdeb5b019e844b814eca154bb0eee791/example-functions.php#L525). Props [@slaFFik](https://github.com/slaFFik) ([#1208](https://github.com/CMB2/CMB2/pull/1208)). * Add 'id' attribute on group field `.postbox` divs to ensure compatibility with scripts which expect ids there. Props [@amans2k](https://github.com/amans2k) ([#1108](https://github.com/CMB2/CMB2/pull/1108)). * Make `CMB2_Option` properties accessible. ([#1052](https://github.com/CMB2/CMB2/issues/1052)) * New Before/After row hooks: `'cmb2_before_field_row'`, `"cmb2_before_{$field_type}_field_row"`, `"cmb2_after_{$field_type}_field_row"`, `'cmb2_after_field_row'`. Props [@rubengc](https://github.com/rubengc) ([#953](https://github.com/CMB2/CMB2/pull/953)). * Introduce three new filters to filter field arguments: `'cmb2_field_defaults'`, `'cmb2_field_arguments_raw'`, `'cmb2_field_arguments'`. Props [@jrfnl](https://github.com/jrfnl) ([#588](https://github.com/CMB2/CMB2/pull/588)). ### 2.5.1 #### Bug Fixes * Fix issue when the `core/editor` object does not exist (is undefined), causing incompatibility issues with Yoast and likely others. Fixes [#1197](https://github.com/CMB2/CMB2/issues/1197) ### 2.5.0 #### Enhancements * Repeatable fields are now drag-sortable. Props [@lipemat](https://github.com/lipemat) ([#1142](https://github.com/CMB2/CMB2/pull/1142)). * Update the `sv_SE` translation. Props [@edvind](https://github.com/edvind) ([#370](https://github.com/CMB2/CMB2/pull/370)). * QA/PHPCS cleanup. Props [@tw2113](https://github.com/tw2113) ([#1179](https://github.com/CMB2/CMB2/pull/1179)). * Add optional `'mb_callback_args'` CMB2 box property which allows defining the `$callback_args` passed into `add_meta_box()`. This allows using defining the new [Gutenberg/block-editor compatibility parameters](https://wordpress.org/gutenberg/handbook/extensibility/meta-box/). Fixes [#1191](https://github.com/CMB2/CMB2/issues/1191) * Support any type of markup when customizing repeating group row. Props [@lipemat](https://github.com/lipemat) ([#1187](https://github.com/CMB2/CMB2/pull/1187)). * Add `cmb_init_pickers` and `cmb_init_code_editors` Javascript events for allowing just-in-time configuration for pickers/editors. * Fix field descriptions color contrast ratio for better accessibility. h/t [@rianrietveld](https://github.com/rianrietveld). Fixes [#1193](https://github.com/CMB2/CMB2/issues/1193). * Add `CMB2_Field::get_rest_value()` method for sending value through several filters (`'cmb2_get_rest_value'`, `"cmb2_get_rest_value_{$field_type}"`, `"cmb2_get_rest_value_for_{$field_id}"` ) before sending to REST request. #### Bug Fixes * Fix the options page errors when using CMB2 in WordPress prior to 4.7. Props [@manzoorwanijk](https://github.com/manzoorwanijk) ([#1166](https://github.com/CMB2/CMB2/pull/1166)). * Fix occasonal fatal errors that can occur by using callback functions directly vs `call_user_func`. Props [@manzoorwanijk](https://github.com/manzoorwanijk) ([#1177](https://github.com/CMB2/CMB2/pull/1177)). * Fix issue where `wysiwyg` fields' visual tab wouldn't save content on Gutenberg/block-editor posts. Props [@staurand](https://github.com/staurand) ([#1190](https://github.com/CMB2/CMB2/pull/1190) fixes [#1156](https://github.com/CMB2/CMB2/issues/1156)). * Fix issue when `remove_default` wouldn't actually remove the default taxonomy metabox when box registration used an alternate box context. Props [@lipemat](https://github.com/lipemat) ([#1147](https://github.com/CMB2/CMB2/pull/1147)). ### 2.4.2 #### Bug Fixes * Do not enqueue/register WordPress code editor JS if there are no `textarea_code` fields registered on the page. Fixes [#1110](https://github.com/CMB2/CMB2/issues/1110). * Do not set repeated `wysiwyg` field values to string "false" when boolean false. Fixes [#1138](https://github.com/CMB2/CMB2/issues/1138) (again!). ### 2.4.1 #### Bug Fixes * Do not set repeated field values to string "false" when boolean false. Fixes [#1138](https://github.com/CMB2/CMB2/issues/1138). ### 2.4.0 #### Enhancements * Enable linking options pages via tabbed-navigation. Will output tabbed navigation for options-pages which share the same `'tab_group'` CMB2 box property. [This snippet](https://github.com/CMB2/CMB2-Snippet-Library/blob/master/options-and-settings-pages/options-pages-with-tabs-and-submenus.php) demonstrates how to create a top-level menu options page with multiple submenu pages, each with the tabbed navigation. To specify a different tab title than the options-page title, set the `'tab_title'` CMB2 box property. See [#301](https://github.com/CMB2/CMB2/issues/301), [#627](https://github.com/CMB2/CMB2/issues/627). * Complete the `zh-CN` translation. Props [@uicestone](https://github.com/uicestone) ([#1089](https://github.com/CMB2/CMB2/issues/1089)). * Update the `nl_NL` translation. Props [@tammohaannl](https://github.com/tammohaannl) ([#1101](https://github.com/CMB2/CMB2/issues/1101)). * Better display for white over transparent images (e.g. logos) by using a checkered background for images. ([#1103](https://github.com/CMB2/CMB2/issues/1103)) * Ability to disable the options [autoload parameter](https://codex.wordpress.org/Function_Reference/add_option#Parameters) via filter (`"cmb2_should_autoload_{$options_key}"`) or via a box parameter for `'options-page'` box registrations (`'autoload' => false,`). ([#1093](https://github.com/CMB2/CMB2/issues/1093)) * `'textarea_code'` field type now uses CodeMirror that is [used by WordPress](https://make.wordpress.org/core/2017/10/22/code-editing-improvements-in-wordpress-4-9/) ([#1096](https://github.com/CMB2/CMB2/issues/1096)). A field can opt-out to return to the previous behavior by specifying an `'options'` parameter: `'options' => array( 'disable_codemirror' => true )` As with the other javascript-enabled fields, the code-editor defaults can be overridden via a `data-codeeditor` attribute. E.g: ```php 'attributes' => array( 'data-codeeditor' => json_encode( array( 'codemirror' => array( 'mode' => 'css', ), ) ), ), ``` * Improve/add comment info banners at top of CMB2 CSS files. * Added `resetBoxes`/`resetBox` Javascript methods for resetting CMB2 box forms. * Improved styles for fields in the new-term form. * New `CMB2_Boxes` methods for filtering instances of `CMB2`, `CMB2_Boxes::get_by( $property, $optional_compare )` and `CMB2_Boxes::filter_by( $property, $to_ignore = null )`. #### Bug Fixes * Fix the `'taxonomy_*'` fields when used for term fields/meta. Save the value to term-meta. * Clear the CMB2 fields when a term is added. Fixes [#794](https://github.com/CMB2/CMB2/issues/794). * Repeated fields now use registered field defaults for values. Fixes [#1137](https://github.com/CMB2/CMB2/issues/1137). * Fixed the formatting for deprecated messages in the log. * Prevent opening of media modal when clicking the file "Download" link. Fixes [#1130](https://github.com/CMB2/CMB2/issues/1130). ### 2.3.0 #### Enhancements * Updated Italian translation. Props [@Mte90](https://github.com/Mte90) ([#1067](https://github.com/CMB2/CMB2/issues/1067)). * Starting with this release, we are fully switching to the more communicative and standard [Semantic Versioning](https://semver.org/). ([#1061](https://github.com/CMB2/CMB2/issues/1061)). #### Bug Fixes * Update for compatibility with PHP 7.2 (e.g. fixes `Fatal error: Declaration of CMB2_Type_Colorpicker::render() must be compatible with CMB2_Type_Text::render($args = Array)...`). ([#1070](https://github.com/CMB2/CMB2/issues/1070), [#1074](https://github.com/CMB2/CMB2/issues/1074), [#1075](https://github.com/CMB2/CMB2/issues/1075)). ### 2.2.6.2 #### Bug Fixes * Fix another issue (introduced in 2.2.6) with repeatable fields not being able to save additional fields. Props [@anhskohbo](https://github.com/anhskohbo) ([#1059](https://github.com/CMB2/CMB2/pull/1059), [#1058](https://github.com/CMB2/CMB2/issues/1058)). * Only dequeue `jw-cmb2-rgba-picker-js` script (and enqueue our `wp-color-picker-alpha`) if it is actually found. ### 2.2.6.1 #### Enhancements * Merge in the [CMB2 RGBa Colorpicker](https://github.com/JayWood/CMB2_RGBa_Picker) field type functionality to the CMB2 colopicker field type. Adds the ability to add an alpha (transparency) slider to the colorpicker by adding the `'alpha'` option [to the field options array](https://github.com/CMB2/CMB2/blob/6fce2e7ba8f41345a23bc2064e30433bdb11c16c/example-functions.php#L263-L265). Thank you to [JayWood](https://github.com/JayWood) for his work on his custom field type. #### Bug Fixes * Fix issue (introduced in 2.2.6) with complex fields set as repeatable not being able to save additional fields. Fixes [#1054](https://github.com/CMB2/CMB2/issues/1054). ### 2.2.6 #### Enhancements * Move the fetching of group label and description to _after_ calling `'before_group'` parameter. * Allow using the `'render_row_cb'` param for group fields. Fixes [#1041](https://github.com/CMB2/CMB2/issues/1041). * Allow resetting cached CMB2 field objects (new 3rd parameter to `CMB2::get_field()`). * Allow resetting cached callback results (`CMB2_Base::unset_param_callback_cache()`). * Persian translation provided by [@reza-irdev](https://github.com/reza-irdev) ([#1046](https://github.com/CMB2/CMB2/issues/1046)). * Added a `'message_cb'` box property, which allows defining a custom callback for adding options-save messages on `options-page` boxes. * Updated many the oembed-related unit tests to more reliably test the relevant parts, and not so much the actual success of the WordPress functions. * Updated travis config to Install PHP5.2/5.3 on trusty for unit tests. Stolen from [gutenberg/pull/2049](https://github.com/WordPress/gutenberg/pull/2049). Intended to compensate for Travis removing support for PHP 5.2/5.3. #### Bug Fixes * Ensure `'file'` field type ID is removed from the database if the `'file'` field type's value is empty ([Support thread](https://wordpress.org/support/topic/bug-field-of-type-file-does-not-delete-postmeta-properly/)). * Fix JS errors when `user_can_richedit()` is false ("Disable the visual editor when writing" user option is checked, or various unsupported browsers). See [#1031](https://github.com/CMB2/CMB2/pull/1031). * Fix issue where some European date formats (e.g. `F j, Y`) would not properly translate into jQuery UI date formats. [Support thread](https://wordpress.org/support/topic/using-wordpresss-date-time-format-settings) * Fix repeating fields within repeating groups having the values/indexes incorrectly associated. Props [@daggerhart](https://github.com/daggerhart) ([#1047](https://github.com/CMB2/CMB2/pull/1047)). Fixes [#1035](https://github.com/CMB2/CMB2/issues/1035), [#348](https://github.com/CMB2/CMB2/issues/348). * Fixed multiple update messages on settings pages when CMB2 option pages were registered ([#1049](https://github.com/CMB2/CMB2/issues/1049)). * Fix issue where using multiple oembed fields could cause incorrectly cached arguments to be used. * Fix bug where `'select_all_button' => false` was not working for `'taxonomy_multicheck'` field type ([#1005](https://github.com/CMB2/CMB2/issues/1005)). ### 2.2.5.3 #### Enhancements * Update to instead initate CMB2 hookup via `"cmb2_init_hookup_{$cmb_id}"` hook. Allows plugins to unhook/rehook/etc. #### Bug Fixes * Spelling/Grammar fixes. Props [@garrett-eclipse](https://github.com/garrett-eclipse) ([#1012](https://github.com/CMB2/CMB2/pull/1012)). * Fix "PHP Strict Standards: Static function should not be abstract" notice. * Add `CMB2_Utils::normalize_if_numeric()` to address problems when using floats as select/radio values. Fixes [#869](https://github.com/CMB2/CMB2/issues/869). See [#1013](https://github.com/CMB2/CMB2/pull/1013). * Fix issues with apostrophes in money values. (e.g. in Swiss German the thousand separator is an apostrophe). Props [@ocean90](https://github.com/ocean90) ([#1014](https://github.com/CMB2/CMB2/issues/1014), [#1015](https://github.com/CMB2/CMB2/pull/1015)). * Provide public access to the `CMB2_Options_Hookup::$option_key` property. * Change the updated-settings notice query variable so that WordPress does not auto-add settings notices on top of ours. * For settings pages, only output settings errors if WordPress does not do it by default (for sub-pages of `options-general.php`), and if the errors are not disabled via the `'disable_settings_errors'` box property. ### 2.2.5.2 #### Bug Fixes * Fix issue in 2.2.5 with non-sortable repeatable groups not having new groups values be emptied on creation/clone. * Fix issue in 2.2.5 with options pages not saving when parent_slug was used. Fixes [#1008](https://github.com/CMB2/CMB2/issues/1008). ### 2.2.5.1 #### Bug Fixes * Fix issue in 2.2.5 which caused empty repeatable groups having the buttons set to have a disabled "Remove Group" button. ### 2.2.5 - 2017-08-07 #### Enhancements * Options pages are now first-class CMB2 citizens, and registering a box to show on an options page will automatically register the menu page and output the form on the page. [See example](https://github.com/CMB2/CMB2/blob/v2.2.5/example-functions.php#L640-L683). (The [snippets](https://github.com/CMB2/CMB2-Snippet-Library/tree/master/options-and-settings-pages) in the snippet library will be updated to reflect this change) * Improved Options Page styling. Props [@anhskohbo](https://github.com/anhskohbo) ([#1006](https://github.com/CMB2/CMB2/pull/1006)). * Improved cohesive styles for repeatable fields. Props [@anhskohbo](https://github.com/anhskohbo) ([#819](https://github.com/CMB2/CMB2/pull/819)). * New field types, `'taxonomy_radio_hierarchical'`, and `'taxonomy_multicheck_hierarchical'`, for displaying taxonomy options in a hierarchical layout. Props to [eriktelepovsky](https://github.com/eriktelepovsky) for the [working code](https://github.com/CMB2/CMB2/issues/640#issuecomment-246938690). ([#640](https://github.com/CMB2/CMB2/issues/640)) * Removing last repeat item row (and repeat group row) is now somewhat allowed in that the "remove" button simply resets the last item to empty. Fixes [#312](https://github.com/CMB2/CMB2/issues/312). * Enable the additional media library modal filters. Fixes [#873](https://github.com/CMB2/CMB2/issues/873). * Sanitize the attributes added via the `cmb2_group_wrap_attributes` filter. * New field parameter, `'query_args'`, which can be used by the `'taxonomy_*'` fields. Provides ability to override the arguments passed to `get_terms()`. * The `cmb2_can_save` filter now passes the CMB2 object as the 2nd parameter. Props [@Arno33](https://github.com/Arno33) ([#994](https://github.com/CMB2/CMB2/pull/994)). * Update the file field type to work properly within a custom field context by allowing the passing of override arguments to `CMB2_Types::file()` method. * Many WordPress Code Standards improvements/updates. Props [@bradp](https://github.com/bradp) * Include absolute paths when including the core php files. Props [@anhskohbo](https://github.com/anhskohbo) ([#998](https://github.com/CMB2/CMB2/pull/998)). * Change language throught to reflect CMB2's move to its own organization. * Break `CMB2_Field:options()` method apart to allow re-setting options from field params. Related: [reaktivstudios/cmb2-flexible-content/pull/8](https://github.com/reaktivstudios/cmb2-flexible-content/pull/8). * New `CMB2:box_types()` method for getting the array of registered `'object_types'` for a box. Ensures the return is an array. * Improved inline hooks documentation. * Updated several CMB2 methods to return the CMB2 object (for method chaining). Methods include: * `CMB2::show_form()` * `CMB2::render_form_open()` * `CMB2::render_form_close()` * `CMB2::render_group_row()` * `CMB2::render_hidden_fields()` * `CMB2::save_fields()` * `CMB2::process_fields()` * `CMB2::process_field()` * `CMB2::pre_process()` * `CMB2::after_save()` * `CMB2::add_fields()` #### Bug Fixes * Update for `file`/`file_list` fields to properly show a preview for SVG images. Fixes [#874](https://github.com/CMB2/CMB2/pull/874). * Fix and standardize inconsistent button classes. Update all buttons to use the `.button-secondary` class instead of the `.button` class. This alleviates some front-end issues for themes which target the `.button` class. _This is a backwards-compatibility break._ If your theme or plugin targets the `.button` class within CMB2, you will need to update to use `.button-secondary`. * Correct the before/after form hooks order. For more details see ([#954](https://github.com/CMB2/CMB2/pull/954)). * Fix regression with custom fields not properly repeating. Props [@desrosj](https://github.com/desrosj) ([#969](https://github.com/CMB2/CMB2/pull/969)). Fixes [#901](https://github.com/CMB2/CMB2/issues/901). * Fix "Illegal string offset" notices when `CMB2_Option` methods are called when the option value is empty, as well as additional unit tests for the `CMB2_Option` class. Props [@anhskohbo](https://github.com/anhskohbo) ([#993](https://github.com/CMB2/CMB2/pull/993)). * Fix bug where select fields or checkbox fields occasionally would retain previous group's value when adding new groups. Fixes [#853](https://github.com/CMB2/CMB2/issues/853). * Fix JS to prevent meta keys with `|` or `/` from breaking file fields. Props [@lipemat](https://github.com/lipemat) ([#1003](https://github.com/CMB2/CMB2/pull/1003)). * Fix jQuery Migrate's `jQuery.fn.attr('value', val) no longer sets properties` warning. * Fix issue with CMB2 being too aggressive with stripping slashes from values. Fixes [#981](https://github.com/CMB2/CMB2/issues/981). ### 2.2.4 - 2017-02-27 #### Enhancements * Modify `'taxonomy_*'` fields to return stored terms for non-post objects. * Modify `CMB2::get_sanitized_values()` to return the sanitized `'taxonomy_*'` field values. Also added `"cmb2_return_taxonomy_values_{$cmb_id}"` filter to modify if `'taxonomy_*'` field values are returned. Fixes [#538](https://github.com/CMB2/CMB2/issues/538). * Allow outputting CMB2 boxes/fields in additional locations in the post-editor. **The new locations are:** [`form_top`](https://developer.wordpress.org/reference/hooks/edit_form_top/), [`before_permalink`](https://developer.wordpress.org/reference/hooks/edit_form_before_permalink/), [`after_title`](https://developer.wordpress.org/reference/hooks/edit_form_after_title/), and [`after_editor`](https://developer.wordpress.org/reference/hooks/edit_form_after_editor/) These would be defined by setting the `context` property for your box: ```php $cmb_demo = new_cmb2_box( array( ... 'context' => 'before_permalink', ) ); ``` If it is preferred that the fields are output without the metabox, then omit the `'title'` property from the metabox registration array, and instead add ` 'remove_box_wrap' => true,`. Props [@norcross](https://github.com/norcross) ([#836](https://github.com/CMB2/CMB2/pull/836)). * New field parameter, `'render_class'`, allowing you to override the default `'CMB2_Type_Base'` class that is used when rendering the field. This provides interesting object-oriented ways to override default CMB2 behavior by subclassing the default class and overriding methods. The render class can also be overridden with the `"cmb2_render_class_{$fieldtype}"` filter, which is passed the default render class name as well as the `CMB2_Types` object, but this should be used sparingly, and within the context of your project's boxes/fields or you could break other plugins'/themes' CMB2 fields. * Improvements to the `file`/`file_list` fields javascript APIs, including using undersore templates. * Small improvements to the styling for the `file_list` field type. * New action hook, `cmb2_footer_enqueue`, which occurs after CMB2 enqueues its assets. * Example functions clean up. Props [@PavelK27](https://github.com/PavelK27) ([#866](https://github.com/CMB2/CMB2/pull/866)). * New `CMB2_Utils` methods, `get_available_image_sizes()` and `get_named_size()`. Props [@Cai333](https://github.com/Cai333). #### Bug Fixes * Fix datepicker month/year dropdown text color. On windows, the option text was showing as white (invisible). Fixes [#770](https://github.com/CMB2/CMB2/issues/770). * Repeatable WYSIWYG no longer breaks if `'quicktags'` param is set to false. Props [@timburden](https://github.com/timburden) ([#797](https://github.com/CMB2/CMB2/pull/797), [#796](https://github.com/CMB2/CMB2/issues/796)). * Do not process title fields during group field save process. * Fix issue where term-meta values were not being displayed for some users. Props [@sbussetti](https://github.com/sbussetti) ([#763](https://github.com/CMB2/CMB2/pull/763), [#700](https://github.com/CMB2/CMB2/issues/700)). * Fix issue where term meta would not be applied when using the new term form if multiple object types were specified. Props [@ADC07](https://github.com/ADC07) ([#842](https://github.com/CMB2/CMB2/pull/842), [#841](https://github.com/CMB2/CMB2/issues/841)). * Fix WordPress spinner styling when boxes/fields used on the frontend. * Fix issue where clicking to remove a `file_list` item could occasionally remove the field row. ([#828](https://github.com/CMB2/CMB2/pull/828)). * Fix issue where empty file field in group would still cause non-empty values to store to database. ([#721](https://github.com/CMB2/CMB2/issues/721)). * Make `file`/`file_list` field preview images work with named sizes. Props [@Cai333](https://github.com/Cai333) ([#848](https://github.com/CMB2/CMB2/pull/848), [#844](https://github.com/CMB2/CMB2/issues/844)). * Fix incorrect text-domain. ([#798](https://github.com/CMB2/CMB2/issues/798)) * Do not silence notices/errors in `CMB2_Utils::get_file_ext()`. * If `title` field type has no name value, then only output a span element (instead of a header element). ### 2.2.3.1 - 2016-11-08 #### Enhancements * Better styling for disabled group "X" buttons, and add title attr. Fixes [#773](https://github.com/CMB2/CMB2/issues/773). #### Bug Fixes * Use quotes for `label[for=""]` selector. Fixed `Syntax error, unrecognized expression`. Props [@anhskohbo](https://github.com/anhskohbo) ([#789](https://github.com/CMB2/CMB2/pull/789)). * Fix `ReferenceError: tinyMCE is not defined` javascript errors (happening when trying to remove a repeatable field/group). Fixes [#790](https://github.com/CMB2/CMB2/issues/790), and [#730](https://github.com/CMB2/CMB2/issues/730). * Fix REST API `'show_in_rest'` examples in `example-functions.php`. Any REST API boxes/fields must use the `'cmb2_init'` hook (as opposed to the `'cmb2_admin_init'` hook). ### 2.2.3 - 2016-10-25 #### Enhancements * CMB2 REST API! CMB2 now has WP REST API endpoints for displaying your boxes and fields data, as well as registers rest fields in the existing post, user, term, and comment endpoints (in the cmb2 namespace). Enabling the REST API for your boxes/fields is opt-in, meaning it will not be automatically enabled. For more info, [check out the wiki](https://github.com/CMB2/CMB2/wiki/REST-API). * Small string improvement, move a period inside the translatable string. Props [@pedro-mendonca](https://github.com/pedro-mendonca) ([#672](https://github.com/CMB2/CMB2/pull/672)). * Introduce the `'save_field'` boolean field parameter for disabling the saving of a field. Useful if you want to display the value of another field, or use a disabled/read-only field. Props [@jamesgol](https://github.com/jamesgol) ([#674](https://github.com/CMB2/CMB2/pull/674), [#346](https://github.com/CMB2/CMB2/issues/346), [#500](https://github.com/CMB2/CMB2/issues/500)). * Update docblocks for `CMB2_Field::save_field_from_data()` and `CMB2_Field::save_field()`. Props [@jamesgol](https://github.com/jamesgol) ([#675](https://github.com/CMB2/CMB2/pull/675)). * More javascript events tied to the media modal actions (related to the `'file'` and '`file_list'` fields). `'cmb_media_modal_init'`, `'cmb_media_modal_open'`, and `'cmb_media_modal_select'`. * All CMB2 JS events now also get the CMB2 JS object passed in the list of arguments. * CMB2 JS object is now instantiated without stomping existing object, to enable extending. * New field parameter for taxonomy fields, `'remove_default'` which allows disabling the default taxonomy metabox. Props [@c3mdigital](https://github.com/c3mdigital) ([#593](https://github.com/CMB2/CMB2/pull/593)). * Change `'row_classes'` to just `'classes'`, to mirror the metabox `'classes'` property. Also now accepts a `'classes_cb'` parameter for specifying a callback which returns a string or array. The callback will receive `$field_args` as the first argument, and the CMB2_Field `$field` object as the second argument. (`'row_classes'` will continue to work, but is deprecated) * Make wysiwyg editors work in the repeatable groups context. A standard repeatable (non-group) wysiwyg field is not supported (but will possibly be included in a future update). Props [@johnsonpaul1014](https://github.com/johnsonpaul1014) ([#26](https://github.com/CMB2/CMB2/pull/26), [#99](https://github.com/CMB2/CMB2/pull/99), [#260](https://github.com/CMB2/CMB2/pull/260), [#264](https://github.com/CMB2/CMB2/pull/264), [#356](https://github.com/CMB2/CMB2/pull/356), [#431](https://github.com/CMB2/CMB2/pull/431), [#462](https://github.com/CMB2/CMB2/pull/462), [#657](https://github.com/CMB2/CMB2/pull/657), [#693](https://github.com/CMB2/CMB2/pull/693)). * Add an id to the heading tag in the title field. This allows linking to a particular title using the id. * Internationalization improvements. Props [ramiy](https://github.com/ramiy) ([#696](https://github.com/CMB2/CMB2/pull/696)). * Ensure that saving does not happen during a switch-to-blog session, as data would be saved to the wrong object. [See more](https://wordpress.org/support/topic/bug-in-lastest-version?replies=2). * Add `'cmb2_group_wrap_attributes'` filter to modifying the group wrap div's attributes. Filter gets passed an array of attributes and expects the return to be an array. Props [jrfnl](https://github.com/jrfnl) ([#582](https://github.com/CMB2/CMB2/pull/582)). * Update the unit-tests README and inline docs. Props [bobbingwide](https://github.com/bobbingwide) ([#714](https://github.com/CMB2/CMB2/pull/714), [#715](https://github.com/CMB2/CMB2/pull/715)). * Minor update to make naming-conventions consistent. Props [ramiy](https://github.com/ramiy) ([#718](https://github.com/CMB2/CMB2/pull/718)). * Update files to be compatible with PHP7 CodeSniffer standards. Props [ryanshoover](https://github.com/ryanshoover) ([#719](https://github.com/CMB2/CMB2/pull/719), [#720](https://github.com/CMB2/CMB2/pull/720)). * Make exception message translatable. Props [ramiy](https://github.com/ramiy) ([#724](https://github.com/CMB2/CMB2/pull/724)). * Portuguese translation provided by [@alvarogois](https://github.com/alvarogois) and [@pedro-mendonca](https://github.com/pedro-mendonca) - [#709](https://github.com/CMB2/CMB2/pull/709), [#727](https://github.com/CMB2/CMB2/pull/727). * Stop using `$wp_version` global. Props [ramiy](https://github.com/ramiy) ([#731](https://github.com/CMB2/CMB2/pull/731)). * Closures (anonymous functions) are now supported for any box/field `'*_cb'` parameters. E.g. ```php ... 'show_on_cb' => function( $cmb ) { return has_tag( 'cats', $cmb->object_id ); }, ... ``` #### Bug Fixes * If custom field types use a method and the Type object has not been instantiated, Try to guess the Type object and instantiate. * Normalize WordPress root path (`ABSPATH`) and theme rooth path (`get_theme_root()`). Props [@rianbotha](https://github.com/rianbotha) ([#677](https://github.com/CMB2/CMB2/pull/677), [#676](https://github.com/CMB2/CMB2/pull/676)). * Fix issue with `'cmb2_remove_row'` Javascript callback for non-group row removal. Fixes [#729](https://github.com/CMB2/CMB2/pull/729)). * Fix issue with missing assignment of variable (undefined variable). Props [@anhskohbo](https://github.com/anhskohbo) ([#779](https://github.com/CMB2/CMB2/pull/779)). ### 2.2.2.1 - 2016-06-27 #### Bug Fixes * Fix issue that kept CMB2 stylesheet from being enqueued when using the [options-page snippets](https://github.com/CMB2/CMB2-Snippet-Library/tree/master/options-and-settings-pages). * Fix issue which caused the CMB2 column display styles to be enqueued in the wrong pages. Now only enqueues on admin pages with columns. ### 2.2.2 - 2016-06-27 #### Enhancements * You can now set admin post-listing columns with an extra field parameter, `'column' => true,`. If you want to dictate what position the column is, use `'column' => array( 'position' => 2 ),`. If you want to dictate the column title (instead of using the field `'name'` value), use `'column' => array( 'name' => 'My Column' ),`. If you need to specify the column display callback, set the `'display_cb'` parameter to [a callback function](https://github.com/CMB2/CMB2/wiki/Field-Parameters#render_row_cb). Columns work for post (all post-types), comment, user, and term object types. * Updated Datepicker styles using JJJ's "jQuery UI Datepicker CSS for WordPress", so props Props [@stuttter](https://github.com/stuttter), [@johnjamesjacoby](https://github.com/johnjamesjacoby). Also cleaned up the timepicker styles (specifically the buttons) to more closely align with the datepicker and WordPress styles. * CMB2 is now a lot more intelligent about where it is located in your installation. This update should solve almost all of the reasons to use the `'cmb2_meta_box_url'` filter (thought it will continue to work as expected). ([#27](https://github.com/CMB2/CMB2/issues/27), [#118](https://github.com/CMB2/CMB2/issues/118), [#432](https://github.com/CMB2/CMB2/issues/432), [related wiki item](https://github.com/CMB2/CMB2/wiki/Troubleshooting#cmb2-urls-issues)) * Implement CMB2_Ajax as a singleton. Props [jrfnl](https://github.com/jrfnl) ([#602](https://github.com/CMB2/CMB2/pull/602)). * Add `classes` and `classes_cb` CMB2 box params which allows you to add additional classes to the cmb-wrap. The `classes` parameter can take a string or array, and the `classes_cb` takes a callback which returns a string or array. The callback will receive `$cmb` as an argument. These classes are also passed through a new filter, `'cmb2_wrap_classes'`, which receives the array of classes as the first argument, and the CMB2 object as the second. Reported/requested in [#364](https://github.com/CMB2/CMB2/issues/364#issuecomment-213223692). * Make the `'title'` field type accept extra arguments. Props [@vladolaru](https://github.com/vladolaru), [@pixelgrade](https://github.com/pixelgrade) ([#656](https://github.com/CMB2/CMB2/pull/656)). * Updated `cmb2_get_oembed()` function to NOT return the "remove" link, as it's intended for outputting the oembed only. **This is a backwards-compatibility concern.** If you were depending on the "remove" link, use `cmb2_ajax()->get_oembed( $args )` instead. * New function, `cmb2_do_oembed()`', which is hooked to `'cmb2_do_oembed'`, so you can use `do_action( 'cmb2_do_oembed', $args )` in your themes without `function_exists()` checks. * New method, `CMB2:set_prop( $property, $value )`, for setting a CMB2 metabox object property. * The `CMB2_Field` object instances will now have a `cmb_id` property and a `get_cmb` method to enable access to the field's `CMB2` parent object's instance, in places like field callbacks and filters (e.g. `$cmb = $field->get_cmb();`). * Add a `data-fieldtype` attribute to the field rows for simpler identification in Javascript. * Moved each type in `CMB2_Types` to it's own class so that each field type can handle it's own field display, and added the infrastructure to maintainn back-compatibility. * New `CMB2_Utils` methods, `notempty()` and `filter_empty()`, both of which consider `null`, `''` and `false` as empty, but allow `0` (for saving `0` as a field value). * New `CMB2_Utils` public methods, `get_url_from_dir()`, `get_file_ext()`, `get_file_name_from_path()`, and `wp_at_least()`. * Add a `cmb_pre_init` Javascript event to allow overriding CMB2 defaults via JS. #### Bug Fixes * Fix issue with 'default' callback not being applied in all instances. Introduced new `CMB2_Field::get_default()` method, and `'default_cb'` field parameter. Using the `'default'` field parameter with a callback will be deprecated in the next few releases. ([#572](https://github.com/CMB2/CMB2/issues/572)). * Be sure to call `CMB2_Field::row_classes()` for group field rows. Also, update CSS to use the "cmb-type-group" classname instead of "cmb-repeat-group-wrap". * Introduce new `'text'` and `'text_cb'` field parameters for overriding CMB2 text strings instead of using the `'options'` array. ([#630](https://github.com/CMB2/CMB2/pull/630)) * Fix bug where the value of '0' could not be saved in group fields. * Fix bug where a serialized empty array value in the database for a repeatable field would output as "Array". * Allow for optional/empty money field. Props [@jrfnl](https://github.com/jrfnl) ([#577](https://github.com/CMB2/CMB2/pull/577)). * The `CMB2::$updated` parameter (which contains field ids for all fields updated during a save) now also correctly adds group field ids to the array. ### 2.2.1 #### Bug Fixes * Fixes back-compatibility issue which could allow multiple CMB2 instances to load (causing fatal errors). ([#520](https://github.com/CMB2/CMB2/pull/520)) ### 2.2.0 - 2016-02-27 #### Enhancements * Term Meta! As of WordPress 4.4, [WordPress will have the ability to use term metadata](https://make.wordpress.org/core/2015/10/23/4-4-taxonomy-roundup/). CMB2 will work with term meta out of the box. To do so, see the example cmb registration in the `yourprefix_register_taxonomy_metabox` function in [example-functions.php](https://github.com/CMB2/CMB2/blob/master/example-functions.php). * New hooks which hook in after save field action: `'cmb2_save_field'` and `"cmb2_save_field_{$field_id}"`. Props [wpsmith](https://github.com/wpsmith) ([#475](https://github.com/CMB2/CMB2/pull/475)). * The "cmb2_sanitize_{$field_type}" hook now runs for every field type (not just custom types) so you can override the sanitization for all field types via a filter. * `CMB2::show_form()` is now composed of 3 smaller methods, `CMB2::render_form_open()`, `CMB2::render_field()`, `CMB2::render_form_close()` ([#506](https://github.com/CMB2/CMB2/pull/506)). * RTL Style generated. Props [@devinsays](https://github.com/devinsays) ([#510](https://github.com/CMB2/CMB2/pull/510)). * Properly scope date/time-pickers styling by adding a class to only cmb2 picker instances. ([#527](https://github.com/CMB2/CMB2/pull/527)) * Allow per-field overrides for the date/time/color picker options (wiki documentation: [Modify Field Date, Time, or Color Picker options](https://github.com/CMB2/CMB2/wiki/Tips-&-Tricks#modify-field-date-time-or-color-picker-options)) * Fix some inline documentation issues. Props [@jrfnl](https://github.com/jrfnl) ([#579](https://github.com/CMB2/CMB2/pull/579)). * Include `.gitattributes` file for excluding development resources when using Composer. Props [@benoitchantre](https://github.com/benoitchantre) ([#575](https://github.com/CMB2/CMB2/pull/575), [#53](https://github.com/CMB2/CMB2/pull/53)). #### Bug Fixes * Fixed issue with `'taxonomy_select'` field type where a term which evaluated falsey would not be displayed properly. Props [adamcapriola](https://github.com/adamcapriola) ([#477](https://github.com/CMB2/CMB2/pull/477)). * Fix issue with colorpickers not changing when sorting groups. * `'show_option_none'` field parameter now works on taxonomy fields when explicitly setting to false. * Fix so the date/time-picker javascript respects the `'date_format'` and `'time_format'` field parameters. Props [@yivi](https://github.com/yivi) ([#39](https://github.com/CMB2/CMB2/pull/39), [#282](https://github.com/CMB2/CMB2/pull/282), [#300](https://github.com/CMB2/CMB2/pull/300), [#318](https://github.com/CMB2/CMB2/pull/318), [#330](https://github.com/CMB2/CMB2/pull/330), [#446](https://github.com/CMB2/CMB2/pull/446), [#498](https://github.com/CMB2/CMB2/pull/498)). * Fix a sometimes-broken unit test. Props [JPry](https://github.com/JPry) ([#539](https://github.com/CMB2/CMB2/pull/539)). * Fix issue with oembed fields not working correctly on options pages. ([#542](https://github.com/CMB2/CMB2/pull/542)). * Fix issue with repeatable field