/*! elementor-pro - v3.23.0 - 05-08-2024 */ /******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ /***/ "../node_modules/@reach/router/es/index.js": /*!*************************************************!*\ !*** ../node_modules/@reach/router/es/index.js ***! \*************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ Link: () => (/* binding */ Link), /* harmony export */ Location: () => (/* binding */ Location), /* harmony export */ LocationProvider: () => (/* binding */ LocationProvider), /* harmony export */ Match: () => (/* binding */ Match), /* harmony export */ Redirect: () => (/* binding */ Redirect), /* harmony export */ Router: () => (/* binding */ Router), /* harmony export */ ServerLocation: () => (/* binding */ ServerLocation), /* harmony export */ createHistory: () => (/* reexport safe */ _lib_history__WEBPACK_IMPORTED_MODULE_5__.createHistory), /* harmony export */ createMemorySource: () => (/* reexport safe */ _lib_history__WEBPACK_IMPORTED_MODULE_5__.createMemorySource), /* harmony export */ globalHistory: () => (/* reexport safe */ _lib_history__WEBPACK_IMPORTED_MODULE_5__.globalHistory), /* harmony export */ isRedirect: () => (/* binding */ isRedirect), /* harmony export */ matchPath: () => (/* reexport safe */ _lib_utils__WEBPACK_IMPORTED_MODULE_4__.match), /* harmony export */ navigate: () => (/* reexport safe */ _lib_history__WEBPACK_IMPORTED_MODULE_5__.navigate), /* harmony export */ redirectTo: () => (/* binding */ redirectTo), /* harmony export */ useLocation: () => (/* binding */ useLocation), /* harmony export */ useMatch: () => (/* binding */ useMatch), /* harmony export */ useNavigate: () => (/* binding */ useNavigate), /* harmony export */ useParams: () => (/* binding */ useParams) /* harmony export */ }); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"); /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_6__); /* harmony import */ var invariant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! invariant */ "../node_modules/invariant/browser.js"); /* harmony import */ var invariant__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(invariant__WEBPACK_IMPORTED_MODULE_1__); /* harmony import */ var create_react_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! create-react-context */ "../node_modules/@reach/router/node_modules/create-react-context/lib/index.js"); /* harmony import */ var create_react_context__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(create_react_context__WEBPACK_IMPORTED_MODULE_2__); /* harmony import */ var react_lifecycles_compat__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-lifecycles-compat */ "../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js"); /* harmony import */ var _lib_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./lib/utils */ "../node_modules/@reach/router/es/lib/utils.js"); /* harmony import */ var _lib_history__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./lib/history */ "../node_modules/@reach/router/es/lib/history.js"); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* eslint-disable jsx-a11y/anchor-has-content */ //////////////////////////////////////////////////////////////////////////////// var createNamedContext = function createNamedContext(name, defaultValue) { var Ctx = create_react_context__WEBPACK_IMPORTED_MODULE_2___default()(defaultValue); Ctx.displayName = name; return Ctx; }; //////////////////////////////////////////////////////////////////////////////// // Location Context/Provider var LocationContext = createNamedContext("Location"); // sets up a listener if there isn't one already so apps don't need to be // wrapped in some top level provider var Location = function Location(_ref) { var children = _ref.children; return react__WEBPACK_IMPORTED_MODULE_0___default().createElement( LocationContext.Consumer, null, function (context) { return context ? children(context) : react__WEBPACK_IMPORTED_MODULE_0___default().createElement( LocationProvider, null, children ); } ); }; var LocationProvider = function (_React$Component) { _inherits(LocationProvider, _React$Component); function LocationProvider() { var _temp, _this, _ret; _classCallCheck(this, LocationProvider); for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = { context: _this.getContext(), refs: { unlisten: null } }, _temp), _possibleConstructorReturn(_this, _ret); } LocationProvider.prototype.getContext = function getContext() { var _props$history = this.props.history, navigate = _props$history.navigate, location = _props$history.location; return { navigate: navigate, location: location }; }; LocationProvider.prototype.componentDidCatch = function componentDidCatch(error, info) { if (isRedirect(error)) { var _navigate = this.props.history.navigate; _navigate(error.uri, { replace: true }); } else { throw error; } }; LocationProvider.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) { if (prevState.context.location !== this.state.context.location) { this.props.history._onTransitionComplete(); } }; LocationProvider.prototype.componentDidMount = function componentDidMount() { var _this2 = this; var refs = this.state.refs, history = this.props.history; history._onTransitionComplete(); refs.unlisten = history.listen(function () { Promise.resolve().then(function () { // TODO: replace rAF with react deferred update API when it's ready https://github.com/facebook/react/issues/13306 requestAnimationFrame(function () { if (!_this2.unmounted) { _this2.setState(function () { return { context: _this2.getContext() }; }); } }); }); }); }; LocationProvider.prototype.componentWillUnmount = function componentWillUnmount() { var refs = this.state.refs; this.unmounted = true; refs.unlisten(); }; LocationProvider.prototype.render = function render() { var context = this.state.context, children = this.props.children; return react__WEBPACK_IMPORTED_MODULE_0___default().createElement( LocationContext.Provider, { value: context }, typeof children === "function" ? children(context) : children || null ); }; return LocationProvider; }((react__WEBPACK_IMPORTED_MODULE_0___default().Component)); //////////////////////////////////////////////////////////////////////////////// LocationProvider.defaultProps = { history: _lib_history__WEBPACK_IMPORTED_MODULE_5__.globalHistory }; true ? LocationProvider.propTypes = { history: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().object).isRequired } : 0; var ServerLocation = function ServerLocation(_ref2) { var url = _ref2.url, children = _ref2.children; var searchIndex = url.indexOf("?"); var searchExists = searchIndex > -1; var pathname = void 0; var search = ""; var hash = ""; if (searchExists) { pathname = url.substring(0, searchIndex); search = url.substring(searchIndex); } else { pathname = url; } return react__WEBPACK_IMPORTED_MODULE_0___default().createElement( LocationContext.Provider, { value: { location: { pathname: pathname, search: search, hash: hash }, navigate: function navigate() { throw new Error("You can't call navigate on the server."); } } }, children ); }; //////////////////////////////////////////////////////////////////////////////// // Sets baseuri and basepath for nested routers and links var BaseContext = createNamedContext("Base", { baseuri: "/", basepath: "/" }); //////////////////////////////////////////////////////////////////////////////// // The main event, welcome to the show everybody. var Router = function Router(props) { return react__WEBPACK_IMPORTED_MODULE_0___default().createElement( BaseContext.Consumer, null, function (baseContext) { return react__WEBPACK_IMPORTED_MODULE_0___default().createElement( Location, null, function (locationContext) { return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(RouterImpl, _extends({}, baseContext, locationContext, props)); } ); } ); }; var RouterImpl = function (_React$PureComponent) { _inherits(RouterImpl, _React$PureComponent); function RouterImpl() { _classCallCheck(this, RouterImpl); return _possibleConstructorReturn(this, _React$PureComponent.apply(this, arguments)); } RouterImpl.prototype.render = function render() { var _props = this.props, location = _props.location, _navigate2 = _props.navigate, basepath = _props.basepath, primary = _props.primary, children = _props.children, baseuri = _props.baseuri, _props$component = _props.component, component = _props$component === undefined ? "div" : _props$component, domProps = _objectWithoutProperties(_props, ["location", "navigate", "basepath", "primary", "children", "baseuri", "component"]); var routes = react__WEBPACK_IMPORTED_MODULE_0___default().Children.toArray(children).reduce(function (array, child) { var routes = createRoute(basepath)(child); return array.concat(routes); }, []); var pathname = location.pathname; var match = (0,_lib_utils__WEBPACK_IMPORTED_MODULE_4__.pick)(routes, pathname); if (match) { var params = match.params, uri = match.uri, route = match.route, element = match.route.value; // remove the /* from the end for child routes relative paths basepath = route.default ? basepath : route.path.replace(/\*$/, ""); var props = _extends({}, params, { uri: uri, location: location, navigate: function navigate(to, options) { return _navigate2((0,_lib_utils__WEBPACK_IMPORTED_MODULE_4__.resolve)(to, uri), options); } }); var clone = react__WEBPACK_IMPORTED_MODULE_0___default().cloneElement(element, props, element.props.children ? react__WEBPACK_IMPORTED_MODULE_0___default().createElement( Router, { location: location, primary: primary }, element.props.children ) : undefined); // using 'div' for < 16.3 support var FocusWrapper = primary ? FocusHandler : component; // don't pass any props to 'div' var wrapperProps = primary ? _extends({ uri: uri, location: location, component: component }, domProps) : domProps; return react__WEBPACK_IMPORTED_MODULE_0___default().createElement( BaseContext.Provider, { value: { baseuri: uri, basepath: basepath } }, react__WEBPACK_IMPORTED_MODULE_0___default().createElement( FocusWrapper, wrapperProps, clone ) ); } else { // Not sure if we want this, would require index routes at every level // warning( // false, // `\n\nNothing matched:\n\t${ // location.pathname // }\n\nPaths checked: \n\t${routes // .map(route => route.path) // .join( // "\n\t" // )}\n\nTo get rid of this warning, add a default NotFound component as child of Router: // \n\tlet NotFound = () =>
Not Found!
// \n\t\n\t \n\t {/* ... */}\n\t` // ); return null; } }; return RouterImpl; }((react__WEBPACK_IMPORTED_MODULE_0___default().PureComponent)); RouterImpl.defaultProps = { primary: true }; var FocusContext = createNamedContext("Focus"); var FocusHandler = function FocusHandler(_ref3) { var uri = _ref3.uri, location = _ref3.location, component = _ref3.component, domProps = _objectWithoutProperties(_ref3, ["uri", "location", "component"]); return react__WEBPACK_IMPORTED_MODULE_0___default().createElement( FocusContext.Consumer, null, function (requestFocus) { return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(FocusHandlerImpl, _extends({}, domProps, { component: component, requestFocus: requestFocus, uri: uri, location: location })); } ); }; // don't focus on initial render var initialRender = true; var focusHandlerCount = 0; var FocusHandlerImpl = function (_React$Component2) { _inherits(FocusHandlerImpl, _React$Component2); function FocusHandlerImpl() { var _temp2, _this4, _ret2; _classCallCheck(this, FocusHandlerImpl); for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { args[_key2] = arguments[_key2]; } return _ret2 = (_temp2 = (_this4 = _possibleConstructorReturn(this, _React$Component2.call.apply(_React$Component2, [this].concat(args))), _this4), _this4.state = {}, _this4.requestFocus = function (node) { if (!_this4.state.shouldFocus && node) { node.focus(); } }, _temp2), _possibleConstructorReturn(_this4, _ret2); } FocusHandlerImpl.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) { var initial = prevState.uri == null; if (initial) { return _extends({ shouldFocus: true }, nextProps); } else { var myURIChanged = nextProps.uri !== prevState.uri; var navigatedUpToMe = prevState.location.pathname !== nextProps.location.pathname && nextProps.location.pathname === nextProps.uri; return _extends({ shouldFocus: myURIChanged || navigatedUpToMe }, nextProps); } }; FocusHandlerImpl.prototype.componentDidMount = function componentDidMount() { focusHandlerCount++; this.focus(); }; FocusHandlerImpl.prototype.componentWillUnmount = function componentWillUnmount() { focusHandlerCount--; if (focusHandlerCount === 0) { initialRender = true; } }; FocusHandlerImpl.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) { if (prevProps.location !== this.props.location && this.state.shouldFocus) { this.focus(); } }; FocusHandlerImpl.prototype.focus = function focus() { if (false) {} var requestFocus = this.props.requestFocus; if (requestFocus) { requestFocus(this.node); } else { if (initialRender) { initialRender = false; } else if (this.node) { // React polyfills [autofocus] and it fires earlier than cDM, // so we were stealing focus away, this line prevents that. if (!this.node.contains(document.activeElement)) { this.node.focus(); } } } }; FocusHandlerImpl.prototype.render = function render() { var _this5 = this; var _props2 = this.props, children = _props2.children, style = _props2.style, requestFocus = _props2.requestFocus, _props2$component = _props2.component, Comp = _props2$component === undefined ? "div" : _props2$component, uri = _props2.uri, location = _props2.location, domProps = _objectWithoutProperties(_props2, ["children", "style", "requestFocus", "component", "uri", "location"]); return react__WEBPACK_IMPORTED_MODULE_0___default().createElement( Comp, _extends({ style: _extends({ outline: "none" }, style), tabIndex: "-1", ref: function ref(n) { return _this5.node = n; } }, domProps), react__WEBPACK_IMPORTED_MODULE_0___default().createElement( FocusContext.Provider, { value: this.requestFocus }, this.props.children ) ); }; return FocusHandlerImpl; }((react__WEBPACK_IMPORTED_MODULE_0___default().Component)); (0,react_lifecycles_compat__WEBPACK_IMPORTED_MODULE_3__.polyfill)(FocusHandlerImpl); var k = function k() {}; //////////////////////////////////////////////////////////////////////////////// var forwardRef = (react__WEBPACK_IMPORTED_MODULE_0___default().forwardRef); if (typeof forwardRef === "undefined") { forwardRef = function forwardRef(C) { return C; }; } var Link = forwardRef(function (_ref4, ref) { var innerRef = _ref4.innerRef, props = _objectWithoutProperties(_ref4, ["innerRef"]); return react__WEBPACK_IMPORTED_MODULE_0___default().createElement( BaseContext.Consumer, null, function (_ref5) { var basepath = _ref5.basepath, baseuri = _ref5.baseuri; return react__WEBPACK_IMPORTED_MODULE_0___default().createElement( Location, null, function (_ref6) { var location = _ref6.location, navigate = _ref6.navigate; var to = props.to, state = props.state, replace = props.replace, _props$getProps = props.getProps, getProps = _props$getProps === undefined ? k : _props$getProps, anchorProps = _objectWithoutProperties(props, ["to", "state", "replace", "getProps"]); var href = (0,_lib_utils__WEBPACK_IMPORTED_MODULE_4__.resolve)(to, baseuri); var encodedHref = encodeURI(href); var isCurrent = location.pathname === encodedHref; var isPartiallyCurrent = (0,_lib_utils__WEBPACK_IMPORTED_MODULE_4__.startsWith)(location.pathname, encodedHref); return react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", _extends({ ref: ref || innerRef, "aria-current": isCurrent ? "page" : undefined }, anchorProps, getProps({ isCurrent: isCurrent, isPartiallyCurrent: isPartiallyCurrent, href: href, location: location }), { href: href, onClick: function onClick(event) { if (anchorProps.onClick) anchorProps.onClick(event); if (shouldNavigate(event)) { event.preventDefault(); var shouldReplace = replace; if (typeof replace !== "boolean" && isCurrent) { var _location$state = _extends({}, location.state), key = _location$state.key, restState = _objectWithoutProperties(_location$state, ["key"]); shouldReplace = (0,_lib_utils__WEBPACK_IMPORTED_MODULE_4__.shallowCompare)(_extends({}, state), restState); } navigate(href, { state: state, replace: shouldReplace }); } } })); } ); } ); }); Link.displayName = "Link"; true ? Link.propTypes = { to: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().string).isRequired } : 0; //////////////////////////////////////////////////////////////////////////////// function RedirectRequest(uri) { this.uri = uri; } var isRedirect = function isRedirect(o) { return o instanceof RedirectRequest; }; var redirectTo = function redirectTo(to) { throw new RedirectRequest(to); }; var RedirectImpl = function (_React$Component3) { _inherits(RedirectImpl, _React$Component3); function RedirectImpl() { _classCallCheck(this, RedirectImpl); return _possibleConstructorReturn(this, _React$Component3.apply(this, arguments)); } // Support React < 16 with this hook RedirectImpl.prototype.componentDidMount = function componentDidMount() { var _props3 = this.props, navigate = _props3.navigate, to = _props3.to, from = _props3.from, _props3$replace = _props3.replace, replace = _props3$replace === undefined ? true : _props3$replace, state = _props3.state, noThrow = _props3.noThrow, baseuri = _props3.baseuri, props = _objectWithoutProperties(_props3, ["navigate", "to", "from", "replace", "state", "noThrow", "baseuri"]); Promise.resolve().then(function () { var resolvedTo = (0,_lib_utils__WEBPACK_IMPORTED_MODULE_4__.resolve)(to, baseuri); navigate((0,_lib_utils__WEBPACK_IMPORTED_MODULE_4__.insertParams)(resolvedTo, props), { replace: replace, state: state }); }); }; RedirectImpl.prototype.render = function render() { var _props4 = this.props, navigate = _props4.navigate, to = _props4.to, from = _props4.from, replace = _props4.replace, state = _props4.state, noThrow = _props4.noThrow, baseuri = _props4.baseuri, props = _objectWithoutProperties(_props4, ["navigate", "to", "from", "replace", "state", "noThrow", "baseuri"]); var resolvedTo = (0,_lib_utils__WEBPACK_IMPORTED_MODULE_4__.resolve)(to, baseuri); if (!noThrow) redirectTo((0,_lib_utils__WEBPACK_IMPORTED_MODULE_4__.insertParams)(resolvedTo, props)); return null; }; return RedirectImpl; }((react__WEBPACK_IMPORTED_MODULE_0___default().Component)); var Redirect = function Redirect(props) { return react__WEBPACK_IMPORTED_MODULE_0___default().createElement( BaseContext.Consumer, null, function (_ref7) { var baseuri = _ref7.baseuri; return react__WEBPACK_IMPORTED_MODULE_0___default().createElement( Location, null, function (locationContext) { return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(RedirectImpl, _extends({}, locationContext, { baseuri: baseuri }, props)); } ); } ); }; true ? Redirect.propTypes = { from: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().string), to: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().string).isRequired } : 0; //////////////////////////////////////////////////////////////////////////////// var Match = function Match(_ref8) { var path = _ref8.path, children = _ref8.children; return react__WEBPACK_IMPORTED_MODULE_0___default().createElement( BaseContext.Consumer, null, function (_ref9) { var baseuri = _ref9.baseuri; return react__WEBPACK_IMPORTED_MODULE_0___default().createElement( Location, null, function (_ref10) { var navigate = _ref10.navigate, location = _ref10.location; var resolvedPath = (0,_lib_utils__WEBPACK_IMPORTED_MODULE_4__.resolve)(path, baseuri); var result = (0,_lib_utils__WEBPACK_IMPORTED_MODULE_4__.match)(resolvedPath, location.pathname); return children({ navigate: navigate, location: location, match: result ? _extends({}, result.params, { uri: result.uri, path: path }) : null }); } ); } ); }; //////////////////////////////////////////////////////////////////////////////// // Hooks var useLocation = function useLocation() { var context = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(LocationContext); if (!context) { throw new Error("useLocation hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router"); } return context.location; }; var useNavigate = function useNavigate() { var context = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(LocationContext); if (!context) { throw new Error("useNavigate hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router"); } return context.navigate; }; var useParams = function useParams() { var context = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(BaseContext); if (!context) { throw new Error("useParams hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router"); } var location = useLocation(); var results = (0,_lib_utils__WEBPACK_IMPORTED_MODULE_4__.match)(context.basepath, location.pathname); return results ? results.params : null; }; var useMatch = function useMatch(path) { if (!path) { throw new Error("useMatch(path: string) requires an argument of a string to match against"); } var context = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(BaseContext); if (!context) { throw new Error("useMatch hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router"); } var location = useLocation(); var resolvedPath = (0,_lib_utils__WEBPACK_IMPORTED_MODULE_4__.resolve)(path, context.baseuri); var result = (0,_lib_utils__WEBPACK_IMPORTED_MODULE_4__.match)(resolvedPath, location.pathname); return result ? _extends({}, result.params, { uri: result.uri, path: path }) : null; }; //////////////////////////////////////////////////////////////////////////////// // Junk var stripSlashes = function stripSlashes(str) { return str.replace(/(^\/+|\/+$)/g, ""); }; var createRoute = function createRoute(basepath) { return function (element) { if (!element) { return null; } if (element.type === (react__WEBPACK_IMPORTED_MODULE_0___default().Fragment) && element.props.children) { return react__WEBPACK_IMPORTED_MODULE_0___default().Children.map(element.props.children, createRoute(basepath)); } !(element.props.path || element.props.default || element.type === Redirect) ? true ? invariant__WEBPACK_IMPORTED_MODULE_1___default()(false, ": Children of must have a `path` or `default` prop, or be a ``. None found on element type `" + element.type + "`") : 0 : void 0; !!(element.type === Redirect && (!element.props.from || !element.props.to)) ? true ? invariant__WEBPACK_IMPORTED_MODULE_1___default()(false, " requires both \"from\" and \"to\" props when inside a .") : 0 : void 0; !!(element.type === Redirect && !(0,_lib_utils__WEBPACK_IMPORTED_MODULE_4__.validateRedirect)(element.props.from, element.props.to)) ? true ? invariant__WEBPACK_IMPORTED_MODULE_1___default()(false, " has mismatched dynamic segments, ensure both paths have the exact same dynamic segments.") : 0 : void 0; if (element.props.default) { return { value: element, default: true }; } var elementPath = element.type === Redirect ? element.props.from : element.props.path; var path = elementPath === "/" ? basepath : stripSlashes(basepath) + "/" + stripSlashes(elementPath); return { value: element, default: element.props.default, path: element.props.children ? stripSlashes(path) + "/*" : path }; }; }; var shouldNavigate = function shouldNavigate(event) { return !event.defaultPrevented && event.button === 0 && !(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey); }; //////////////////////////////////////////////////////////////////////// /***/ }), /***/ "../node_modules/@reach/router/es/lib/history.js": /*!*******************************************************!*\ !*** ../node_modules/@reach/router/es/lib/history.js ***! \*******************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ createHistory: () => (/* binding */ createHistory), /* harmony export */ createMemorySource: () => (/* binding */ createMemorySource), /* harmony export */ globalHistory: () => (/* binding */ globalHistory), /* harmony export */ navigate: () => (/* binding */ navigate) /* harmony export */ }); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var getLocation = function getLocation(source) { var _source$location = source.location, search = _source$location.search, hash = _source$location.hash, href = _source$location.href, origin = _source$location.origin, protocol = _source$location.protocol, host = _source$location.host, hostname = _source$location.hostname, port = _source$location.port; var pathname = source.location.pathname; if (!pathname && href && canUseDOM) { var url = new URL(href); pathname = url.pathname; } return { pathname: encodeURI(decodeURI(pathname)), search: search, hash: hash, href: href, origin: origin, protocol: protocol, host: host, hostname: hostname, port: port, state: source.history.state, key: source.history.state && source.history.state.key || "initial" }; }; var createHistory = function createHistory(source, options) { var listeners = []; var location = getLocation(source); var transitioning = false; var resolveTransition = function resolveTransition() {}; return { get location() { return location; }, get transitioning() { return transitioning; }, _onTransitionComplete: function _onTransitionComplete() { transitioning = false; resolveTransition(); }, listen: function listen(listener) { listeners.push(listener); var popstateListener = function popstateListener() { location = getLocation(source); listener({ location: location, action: "POP" }); }; source.addEventListener("popstate", popstateListener); return function () { source.removeEventListener("popstate", popstateListener); listeners = listeners.filter(function (fn) { return fn !== listener; }); }; }, navigate: function navigate(to) { var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, state = _ref.state, _ref$replace = _ref.replace, replace = _ref$replace === undefined ? false : _ref$replace; if (typeof to === "number") { source.history.go(to); } else { state = _extends({}, state, { key: Date.now() + "" }); // try...catch iOS Safari limits to 100 pushState calls try { if (transitioning || replace) { source.history.replaceState(state, null, to); } else { source.history.pushState(state, null, to); } } catch (e) { source.location[replace ? "replace" : "assign"](to); } } location = getLocation(source); transitioning = true; var transition = new Promise(function (res) { return resolveTransition = res; }); listeners.forEach(function (listener) { return listener({ location: location, action: "PUSH" }); }); return transition; } }; }; //////////////////////////////////////////////////////////////////////////////// // Stores history entries in memory for testing or other platforms like Native var createMemorySource = function createMemorySource() { var initialPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "/"; var searchIndex = initialPath.indexOf("?"); var initialLocation = { pathname: searchIndex > -1 ? initialPath.substr(0, searchIndex) : initialPath, search: searchIndex > -1 ? initialPath.substr(searchIndex) : "" }; var index = 0; var stack = [initialLocation]; var states = [null]; return { get location() { return stack[index]; }, addEventListener: function addEventListener(name, fn) {}, removeEventListener: function removeEventListener(name, fn) {}, history: { get entries() { return stack; }, get index() { return index; }, get state() { return states[index]; }, pushState: function pushState(state, _, uri) { var _uri$split = uri.split("?"), pathname = _uri$split[0], _uri$split$ = _uri$split[1], search = _uri$split$ === undefined ? "" : _uri$split$; index++; stack.push({ pathname: pathname, search: search.length ? "?" + search : search }); states.push(state); }, replaceState: function replaceState(state, _, uri) { var _uri$split2 = uri.split("?"), pathname = _uri$split2[0], _uri$split2$ = _uri$split2[1], search = _uri$split2$ === undefined ? "" : _uri$split2$; stack[index] = { pathname: pathname, search: search }; states[index] = state; }, go: function go(to) { var newIndex = index + to; if (newIndex < 0 || newIndex > states.length - 1) { return; } index = newIndex; } } }; }; //////////////////////////////////////////////////////////////////////////////// // global history - uses window.history as the source if available, otherwise a // memory history var canUseDOM = !!(typeof window !== "undefined" && window.document && window.document.createElement); var getSource = function getSource() { return canUseDOM ? window : createMemorySource(); }; var globalHistory = createHistory(getSource()); var navigate = globalHistory.navigate; //////////////////////////////////////////////////////////////////////////////// /***/ }), /***/ "../node_modules/@reach/router/es/lib/utils.js": /*!*****************************************************!*\ !*** ../node_modules/@reach/router/es/lib/utils.js ***! \*****************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ insertParams: () => (/* binding */ insertParams), /* harmony export */ match: () => (/* binding */ match), /* harmony export */ pick: () => (/* binding */ pick), /* harmony export */ resolve: () => (/* binding */ resolve), /* harmony export */ shallowCompare: () => (/* binding */ shallowCompare), /* harmony export */ startsWith: () => (/* binding */ startsWith), /* harmony export */ validateRedirect: () => (/* binding */ validateRedirect) /* harmony export */ }); /* harmony import */ var invariant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! invariant */ "../node_modules/invariant/browser.js"); /* harmony import */ var invariant__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(invariant__WEBPACK_IMPORTED_MODULE_0__); //////////////////////////////////////////////////////////////////////////////// // startsWith(string, search) - Check if `string` starts with `search` var startsWith = function startsWith(string, search) { return string.substr(0, search.length) === search; }; //////////////////////////////////////////////////////////////////////////////// // pick(routes, uri) // // Ranks and picks the best route to match. Each segment gets the highest // amount of points, then the type of segment gets an additional amount of // points where // // static > dynamic > splat > root // // This way we don't have to worry about the order of our routes, let the // computers do it. // // A route looks like this // // { path, default, value } // // And a returned match looks like: // // { route, params, uri } // // I know, I should use TypeScript not comments for these types. var pick = function pick(routes, uri) { var match = void 0; var default_ = void 0; var _uri$split = uri.split("?"), uriPathname = _uri$split[0]; var uriSegments = segmentize(uriPathname); var isRootUri = uriSegments[0] === ""; var ranked = rankRoutes(routes); for (var i = 0, l = ranked.length; i < l; i++) { var missed = false; var route = ranked[i].route; if (route.default) { default_ = { route: route, params: {}, uri: uri }; continue; } var routeSegments = segmentize(route.path); var params = {}; var max = Math.max(uriSegments.length, routeSegments.length); var index = 0; for (; index < max; index++) { var routeSegment = routeSegments[index]; var uriSegment = uriSegments[index]; if (isSplat(routeSegment)) { // Hit a splat, just grab the rest, and return a match // uri: /files/documents/work // route: /files/* var param = routeSegment.slice(1) || "*"; params[param] = uriSegments.slice(index).map(decodeURIComponent).join("/"); break; } if (uriSegment === undefined) { // URI is shorter than the route, no match // uri: /users // route: /users/:userId missed = true; break; } var dynamicMatch = paramRe.exec(routeSegment); if (dynamicMatch && !isRootUri) { var matchIsNotReserved = reservedNames.indexOf(dynamicMatch[1]) === -1; !matchIsNotReserved ? true ? invariant__WEBPACK_IMPORTED_MODULE_0___default()(false, " dynamic segment \"" + dynamicMatch[1] + "\" is a reserved name. Please use a different name in path \"" + route.path + "\".") : 0 : void 0; var value = decodeURIComponent(uriSegment); params[dynamicMatch[1]] = value; } else if (routeSegment !== uriSegment) { // Current segments don't match, not dynamic, not splat, so no match // uri: /users/123/settings // route: /users/:id/profile missed = true; break; } } if (!missed) { match = { route: route, params: params, uri: "/" + uriSegments.slice(0, index).join("/") }; break; } } return match || default_ || null; }; //////////////////////////////////////////////////////////////////////////////// // match(path, uri) - Matches just one path to a uri, also lol var match = function match(path, uri) { return pick([{ path: path }], uri); }; //////////////////////////////////////////////////////////////////////////////// // resolve(to, basepath) // // Resolves URIs as though every path is a directory, no files. Relative URIs // in the browser can feel awkward because not only can you be "in a directory" // you can be "at a file", too. For example // // browserSpecResolve('foo', '/bar/') => /bar/foo // browserSpecResolve('foo', '/bar') => /foo // // But on the command line of a file system, it's not as complicated, you can't // `cd` from a file, only directories. This way, links have to know less about // their current path. To go deeper you can do this: // // // // instead of // // // Just like `cd`, if you want to go deeper from the command line, you do this: // // cd deeper // # not // cd $(pwd)/deeper // // By treating every path as a directory, linking to relative paths should // require less contextual information and (fingers crossed) be more intuitive. var resolve = function resolve(to, base) { // /foo/bar, /baz/qux => /foo/bar if (startsWith(to, "/")) { return to; } var _to$split = to.split("?"), toPathname = _to$split[0], toQuery = _to$split[1]; var _base$split = base.split("?"), basePathname = _base$split[0]; var toSegments = segmentize(toPathname); var baseSegments = segmentize(basePathname); // ?a=b, /users?b=c => /users?a=b if (toSegments[0] === "") { return addQuery(basePathname, toQuery); } // profile, /users/789 => /users/789/profile if (!startsWith(toSegments[0], ".")) { var pathname = baseSegments.concat(toSegments).join("/"); return addQuery((basePathname === "/" ? "" : "/") + pathname, toQuery); } // ./ /users/123 => /users/123 // ../ /users/123 => /users // ../.. /users/123 => / // ../../one /a/b/c/d => /a/b/one // .././one /a/b/c/d => /a/b/c/one var allSegments = baseSegments.concat(toSegments); var segments = []; for (var i = 0, l = allSegments.length; i < l; i++) { var segment = allSegments[i]; if (segment === "..") segments.pop();else if (segment !== ".") segments.push(segment); } return addQuery("/" + segments.join("/"), toQuery); }; //////////////////////////////////////////////////////////////////////////////// // insertParams(path, params) var insertParams = function insertParams(path, params) { var _path$split = path.split("?"), pathBase = _path$split[0], _path$split$ = _path$split[1], query = _path$split$ === undefined ? "" : _path$split$; var segments = segmentize(pathBase); var constructedPath = "/" + segments.map(function (segment) { var match = paramRe.exec(segment); return match ? params[match[1]] : segment; }).join("/"); var _params$location = params.location; _params$location = _params$location === undefined ? {} : _params$location; var _params$location$sear = _params$location.search, search = _params$location$sear === undefined ? "" : _params$location$sear; var searchSplit = search.split("?")[1] || ""; constructedPath = addQuery(constructedPath, query, searchSplit); return constructedPath; }; var validateRedirect = function validateRedirect(from, to) { var filter = function filter(segment) { return isDynamic(segment); }; var fromString = segmentize(from).filter(filter).sort().join("/"); var toString = segmentize(to).filter(filter).sort().join("/"); return fromString === toString; }; //////////////////////////////////////////////////////////////////////////////// // Junk var paramRe = /^:(.+)/; var SEGMENT_POINTS = 4; var STATIC_POINTS = 3; var DYNAMIC_POINTS = 2; var SPLAT_PENALTY = 1; var ROOT_POINTS = 1; var isRootSegment = function isRootSegment(segment) { return segment === ""; }; var isDynamic = function isDynamic(segment) { return paramRe.test(segment); }; var isSplat = function isSplat(segment) { return segment && segment[0] === "*"; }; var rankRoute = function rankRoute(route, index) { var score = route.default ? 0 : segmentize(route.path).reduce(function (score, segment) { score += SEGMENT_POINTS; if (isRootSegment(segment)) score += ROOT_POINTS;else if (isDynamic(segment)) score += DYNAMIC_POINTS;else if (isSplat(segment)) score -= SEGMENT_POINTS + SPLAT_PENALTY;else score += STATIC_POINTS; return score; }, 0); return { route: route, score: score, index: index }; }; var rankRoutes = function rankRoutes(routes) { return routes.map(rankRoute).sort(function (a, b) { return a.score < b.score ? 1 : a.score > b.score ? -1 : a.index - b.index; }); }; var segmentize = function segmentize(uri) { return uri // strip starting/ending slashes .replace(/(^\/+|\/+$)/g, "").split("/"); }; var addQuery = function addQuery(pathname) { for (var _len = arguments.length, query = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { query[_key - 1] = arguments[_key]; } query = query.filter(function (q) { return q && q.length > 0; }); return pathname + (query && query.length > 0 ? "?" + query.join("&") : ""); }; var reservedNames = ["uri", "path"]; /** * Shallow compares two objects. * @param {Object} obj1 The first object to compare. * @param {Object} obj2 The second object to compare. */ var shallowCompare = function shallowCompare(obj1, obj2) { var obj1Keys = Object.keys(obj1); return obj1Keys.length === Object.keys(obj2).length && obj1Keys.every(function (key) { return obj2.hasOwnProperty(key) && obj1[key] === obj2[key]; }); }; //////////////////////////////////////////////////////////////////////////////// /***/ }), /***/ "../node_modules/@reach/router/node_modules/create-react-context/lib/implementation.js": /*!*********************************************************************************************!*\ !*** ../node_modules/@reach/router/node_modules/create-react-context/lib/implementation.js ***! \*********************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; exports.__esModule = true; var _react = __webpack_require__(/*! react */ "react"); var _react2 = _interopRequireDefault(_react); var _propTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js"); var _propTypes2 = _interopRequireDefault(_propTypes); var _gud = __webpack_require__(/*! gud */ "../node_modules/gud/index.js"); var _gud2 = _interopRequireDefault(_gud); var _warning = __webpack_require__(/*! warning */ "../node_modules/warning/warning.js"); var _warning2 = _interopRequireDefault(_warning); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var MAX_SIGNED_31_BIT_INT = 1073741823; // Inlined Object.is polyfill. // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is function objectIs(x, y) { if (x === y) { return x !== 0 || 1 / x === 1 / y; } else { return x !== x && y !== y; } } function createEventEmitter(value) { var handlers = []; return { on: function on(handler) { handlers.push(handler); }, off: function off(handler) { handlers = handlers.filter(function (h) { return h !== handler; }); }, get: function get() { return value; }, set: function set(newValue, changedBits) { value = newValue; handlers.forEach(function (handler) { return handler(value, changedBits); }); } }; } function onlyChild(children) { return Array.isArray(children) ? children[0] : children; } function createReactContext(defaultValue, calculateChangedBits) { var _Provider$childContex, _Consumer$contextType; var contextProp = '__create-react-context-' + (0, _gud2.default)() + '__'; var Provider = function (_Component) { _inherits(Provider, _Component); function Provider() { var _temp, _this, _ret; _classCallCheck(this, Provider); for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return _ret = (_temp = (_this = _possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.emitter = createEventEmitter(_this.props.value), _temp), _possibleConstructorReturn(_this, _ret); } Provider.prototype.getChildContext = function getChildContext() { var _ref; return _ref = {}, _ref[contextProp] = this.emitter, _ref; }; Provider.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) { if (this.props.value !== nextProps.value) { var oldValue = this.props.value; var newValue = nextProps.value; var changedBits = void 0; if (objectIs(oldValue, newValue)) { changedBits = 0; // No change } else { changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT; if (true) { (0, _warning2.default)((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: %s', changedBits); } changedBits |= 0; if (changedBits !== 0) { this.emitter.set(nextProps.value, changedBits); } } } }; Provider.prototype.render = function render() { return this.props.children; }; return Provider; }(_react.Component); Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = _propTypes2.default.object.isRequired, _Provider$childContex); var Consumer = function (_Component2) { _inherits(Consumer, _Component2); function Consumer() { var _temp2, _this2, _ret2; _classCallCheck(this, Consumer); for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { args[_key2] = arguments[_key2]; } return _ret2 = (_temp2 = (_this2 = _possibleConstructorReturn(this, _Component2.call.apply(_Component2, [this].concat(args))), _this2), _this2.state = { value: _this2.getValue() }, _this2.onUpdate = function (newValue, changedBits) { var observedBits = _this2.observedBits | 0; if ((observedBits & changedBits) !== 0) { _this2.setState({ value: _this2.getValue() }); } }, _temp2), _possibleConstructorReturn(_this2, _ret2); } Consumer.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) { var observedBits = nextProps.observedBits; this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default : observedBits; }; Consumer.prototype.componentDidMount = function componentDidMount() { if (this.context[contextProp]) { this.context[contextProp].on(this.onUpdate); } var observedBits = this.props.observedBits; this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default : observedBits; }; Consumer.prototype.componentWillUnmount = function componentWillUnmount() { if (this.context[contextProp]) { this.context[contextProp].off(this.onUpdate); } }; Consumer.prototype.getValue = function getValue() { if (this.context[contextProp]) { return this.context[contextProp].get(); } else { return defaultValue; } }; Consumer.prototype.render = function render() { return onlyChild(this.props.children)(this.state.value); }; return Consumer; }(_react.Component); Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = _propTypes2.default.object, _Consumer$contextType); return { Provider: Provider, Consumer: Consumer }; } exports["default"] = createReactContext; module.exports = exports['default']; /***/ }), /***/ "../node_modules/@reach/router/node_modules/create-react-context/lib/index.js": /*!************************************************************************************!*\ !*** ../node_modules/@reach/router/node_modules/create-react-context/lib/index.js ***! \************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; exports.__esModule = true; var _react = __webpack_require__(/*! react */ "react"); var _react2 = _interopRequireDefault(_react); var _implementation = __webpack_require__(/*! ./implementation */ "../node_modules/@reach/router/node_modules/create-react-context/lib/implementation.js"); var _implementation2 = _interopRequireDefault(_implementation); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports["default"] = _react2.default.createContext || _implementation2.default; module.exports = exports['default']; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/app.js": /*!***********************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/app.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"] = App; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); var _router = __webpack_require__(/*! @reach/router */ "../node_modules/@reach/router/es/index.js"); var _noticesContext = __webpack_require__(/*! ./context/notices-context */ "../modules/forms/submissions/assets/js/admin/context/notices-context.js"); var _settingsContext = __webpack_require__(/*! ./context/settings-context */ "../modules/forms/submissions/assets/js/admin/context/settings-context.js"); var _notices = _interopRequireDefault(__webpack_require__(/*! ./components/notices */ "../modules/forms/submissions/assets/js/admin/components/notices.js")); var _item = _interopRequireDefault(__webpack_require__(/*! ./pages/item */ "../modules/forms/submissions/assets/js/admin/pages/item.js")); var _pages = _interopRequireDefault(__webpack_require__(/*! ./pages */ "../modules/forms/submissions/assets/js/admin/pages/index.js")); var _reachRouterHashHistory = __webpack_require__(/*! reach-router-hash-history */ "../node_modules/reach-router-hash-history/index.js"); const history = (0, _router.createHistory)((0, _reachRouterHashHistory.createHashSource)()); function App() { return /*#__PURE__*/_react.default.createElement("div", { id: "elementor-form-submissions" }, /*#__PURE__*/_react.default.createElement(_settingsContext.SettingsProvider, { value: window.elementorSubmissionsConfig }, /*#__PURE__*/_react.default.createElement(_noticesContext.NoticesProvider, null, /*#__PURE__*/_react.default.createElement(_notices.default, null), /*#__PURE__*/_react.default.createElement(_router.LocationProvider, { history: history }, /*#__PURE__*/_react.default.createElement(_router.Router, null, /*#__PURE__*/_react.default.createElement(_pages.default, { path: "/" }), /*#__PURE__*/_react.default.createElement(_item.default, { path: "/:id" })))))); } /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/components/bulk-action-select.js": /*!*************************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/components/bulk-action-select.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.BulkActionSelect = BulkActionSelect; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); 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 && Object.prototype.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 { useState, useCallback } = _react.default; function BulkActionSelect(props) { const [value, setValue] = useState(''), applyAction = useCallback(e => { e.preventDefault(); const action = props.actions.find(item => item.value === value); if (!action) { return; } action.onApply(); setValue(''); }, [value, props.actions]); return /*#__PURE__*/_react.default.createElement("form", { className: `actions bulkactions ${props.className}`, onSubmit: applyAction }, /*#__PURE__*/_react.default.createElement("label", { htmlFor: "bulk-action-selector-top", className: "screen-reader-text" }, __('Select bulk action', 'elementor-pro')), /*#__PURE__*/_react.default.createElement("select", { name: "action", value: value, onChange: e => setValue(e.target.value) }, /*#__PURE__*/_react.default.createElement("option", { value: "", disabled: true }, __('Bulk actions', 'elementor-pro')), props.actions.map(action => { return /*#__PURE__*/_react.default.createElement("option", { key: action.value, value: action.value }, action.label); })), /*#__PURE__*/_react.default.createElement("input", { type: "submit", className: "button action", value: __('Apply', 'elementor-pro') })); } BulkActionSelect.propTypes = { className: PropTypes.string, actions: PropTypes.arrayOf(PropTypes.shape({ label: PropTypes.string.isRequired, value: PropTypes.string.isRequired, onApply: PropTypes.func.isRequired })).isRequired }; BulkActionSelect.defaultProps = { className: '' }; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/components/checkbox/bulk.js": /*!********************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/components/checkbox/bulk.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"] = Bulk; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); 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 && Object.prototype.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 { useCallback } = _react.default; function Bulk(props) { const onChange = useCallback(e => { const value = e.target.checked ? [...props.allValues] : []; props.onChange(value); }, [props.onChange, props.checkedGroup, props.allValues]); return /*#__PURE__*/_react.default.createElement("input", { type: "checkbox", checked: props.checkedGroup.length === props.allValues.length && props.allValues.length > 0, onChange: onChange }); } Bulk.propTypes = { checkedGroup: PropTypes.array.isRequired, allValues: PropTypes.array.isRequired, onChange: PropTypes.func.isRequired }; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/components/checkbox/index.js": /*!*********************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/components/checkbox/index.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"] = Checkbox; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); var _bulk = _interopRequireDefault(__webpack_require__(/*! ./bulk */ "../modules/forms/submissions/assets/js/admin/components/checkbox/bulk.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 && Object.prototype.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 { useCallback } = _react.default; function Checkbox(props) { const onChange = useCallback(e => { const value = e.target.checked ? [...props.checkedGroup, props.value] : props.checkedGroup.filter(checkedItem => checkedItem !== props.value); props.onChange(value); }, [props.onChange, props.checkedGroup, props.value]); return /*#__PURE__*/_react.default.createElement("input", { type: "checkbox", checked: props.checkedGroup.includes(props.value), onChange: onChange }); } Checkbox.propTypes = { checkedGroup: PropTypes.array.isRequired, value: PropTypes.number.isRequired, onChange: PropTypes.func.isRequired }; Checkbox.Bulk = _bulk.default; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/components/date-filter.js": /*!******************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/components/date-filter.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"] = DateFilter; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); const { useState, useMemo, useCallback } = _react.default; function DateFilter(props) { const [forceCustomSelect, setForceCustomSelect] = useState(false); // All the options of the select input const options = useMemo(() => { const format = date => wp.date.date('Y-m-d', date), now = new Date(), yesterday = new Date(now), last7Days = new Date(now), last30Days = new Date(now); yesterday.setDate(yesterday.getDate() - 1); last7Days.setDate(last7Days.getDate() - 7); last30Days.setDate(last30Days.getDate() - 30); return [{ label: __('All Time', 'elementor-pro'), value: 'all', filter: { before: null, after: null } }, { label: __('Today', 'elementor-pro'), value: 'today', filter: { before: null, after: format(now) } }, { label: __('Yesterday', 'elementor-pro'), value: 'yesterday', filter: { before: format(yesterday), after: format(yesterday) } }, { label: __('Last 7 days', 'elementor-pro'), value: 'last7', filter: { before: null, after: format(last7Days) } }, { label: __('Last 30 days', 'elementor-pro'), value: 'last_30', filter: { before: null, after: format(last30Days) } }, { label: __('Custom', 'elementor-pro'), value: 'custom', filter: { before: null, after: null } }]; }, []); // Response to show the selected value of the select. const selectedValue = useMemo(() => { if (forceCustomSelect) { return 'custom'; } const selected = options.find(option => option.filter.after === props.value.after && option.filter.before === props.value.before); if (!selected) { return 'custom'; } return selected.value; }, [options, props.value, forceCustomSelect]); // On select changed. const onSelectChanged = useCallback(({ target: { value } }) => { const selected = options.find(option => option.value === value); setForceCustomSelect('custom' === selected.value); props.onChange(selected.filter); }, [options]); // On date inputs changed. const onDateInputChanged = useCallback(value => { if (selectedValue !== 'custom') { return; } props.onChange(value); }, [selectedValue]); return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, props.label && /*#__PURE__*/_react.default.createElement("label", { htmlFor: `filter-by-${props.name}`, className: "screen-reader-text" }, props.label), /*#__PURE__*/_react.default.createElement("select", { id: `filter-by-${props.name}`, value: selectedValue, onChange: onSelectChanged }, options.map(({ value, label }) => { return /*#__PURE__*/_react.default.createElement("option", { key: value, value: value }, " ", label, " "); })), 'custom' === selectedValue && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("input", { type: "date", "aria-label": __('Start Date', 'elementor-pro'), value: props.value.after || '', onChange: ({ target: { value } }) => onDateInputChanged({ after: value }) }), "\xA0 - \xA0", /*#__PURE__*/_react.default.createElement("input", { type: "date", "aria-label": __('End Date', 'elementor-pro'), value: props.value.before || '', onChange: ({ target: { value } }) => onDateInputChanged({ before: value }) }))); } DateFilter.propTypes = { value: PropTypes.shape({ after: PropTypes.string, before: PropTypes.string }), label: PropTypes.string, onChange: PropTypes.func.isRequired, name: PropTypes.string.isRequired }; DateFilter.defaultProps = { value: { after: null, before: null }, options: [] }; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/components/export-button.js": /*!********************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/components/export-button.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"] = ExportButton; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); var _useExport = __webpack_require__(/*! modules/forms/submissions/assets/js/admin/hooks/use-export */ "../modules/forms/submissions/assets/js/admin/hooks/use-export.js"); const { useMemo } = _react.default; const buttonContentOptions = { [_useExport.EXPORT_MODE_ALL]: __('Export All to CSV', 'elementor-pro'), [_useExport.EXPORT_MODE_FILTERED]: __('Export Filtered to CSV', 'elementor-pro'), [_useExport.EXPORT_MODE_SELECTED]: __('Export Selected to CSV', 'elementor-pro') }; function ExportButton(props) { const ProgressPercentage = useMemo(() => { if (!props.progress) { return 0; } const { count, success } = props.progress; if (0 === count || 0 === success) { return 0; } return Math.round(success / count * 100); }, [props.progress]); return /*#__PURE__*/_react.default.createElement("button", { className: "button button-primary e-export-button", onClick: () => !props.disabled && props.onClick(), disabled: props.disabled }, props.isLoading ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("i", { className: "eicon-loading eicon-animation-spin" }), " \xA0", /*#__PURE__*/_react.default.createElement("span", null, " ", ProgressPercentage, "% "), " \xA0", __('Click to Cancel', 'elementor-pro')) : buttonContentOptions[props.mode]); } ExportButton.propTypes = { onClick: PropTypes.func.isRequired, isLoading: PropTypes.bool, mode: PropTypes.oneOf([_useExport.EXPORT_MODE_ALL, _useExport.EXPORT_MODE_SELECTED, _useExport.EXPORT_MODE_FILTERED]), disabled: PropTypes.bool, progress: PropTypes.shape({ count: PropTypes.number, success: PropTypes.number }) }; ExportButton.defaultProps = { isLoading: false, hasSelected: false, disabled: false }; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/components/form-actions-log.js": /*!***********************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/components/form-actions-log.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"] = FormActionsLog; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); var _postBox = _interopRequireDefault(__webpack_require__(/*! ./post-box */ "../modules/forms/submissions/assets/js/admin/components/post-box.js")); var _date = __webpack_require__(/*! ../utils/date */ "../modules/forms/submissions/assets/js/admin/utils/date.js"); var _noticeMessages = _interopRequireDefault(__webpack_require__(/*! ../notice-messages */ "../modules/forms/submissions/assets/js/admin/notice-messages.js")); function FormActionsLog(props) { return /*#__PURE__*/_react.default.createElement(_postBox.default, { header: /*#__PURE__*/_react.default.createElement("h2", null, __('Actions Log', 'elementor-pro')) }, 0 === props.actions.length && /*#__PURE__*/_react.default.createElement("div", { className: "inside" }, /*#__PURE__*/_react.default.createElement("p", { style: { margin: 0 } }, " ", __('No form actions.', 'elementor-pro'), " ")), props.actions.map(actionLog => { return /*#__PURE__*/_react.default.createElement("div", { className: `inside e-form-submissions-action-log e-form-submissions-action-log--${'success' === actionLog.status ? 'success' : 'error'}`, key: actionLog.name }, /*#__PURE__*/_react.default.createElement("p", null, /*#__PURE__*/_react.default.createElement("strong", { className: "e-form-submissions-action-log__label" }, " ", actionLog.label, " "), /*#__PURE__*/_react.default.createElement("i", { className: `${'success' === actionLog.status ? 'eicon-success eicon-check-circle-o' : 'eicon-error eicon-warning'} e-form-submissions-action-log__icon` }), /*#__PURE__*/_react.default.createElement("span", { className: "e-form-submissions-action-log__date" }, " ", (0, _date.formatToLocalDateTime)(actionLog.created_at), " ")), /*#__PURE__*/_react.default.createElement("p", { className: `e-form-submissions-action-log__message` }, actionLog.log || _noticeMessages.default.actionLogs[actionLog.status]())); })); } FormActionsLog.propTypes = { actions: PropTypes.arrayOf(PropTypes.shape({ status: PropTypes.oneOf(['success', 'failed']), name: PropTypes.string, label: PropTypes.string, created_at: PropTypes.string, log: PropTypes.string })).isRequired }; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/components/link.js": /*!***********************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/components/link.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"] = Link; var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react")); var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); var _router = __webpack_require__(/*! @reach/router */ "../node_modules/@reach/router/es/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 && Object.prototype.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; } function Link(props) { const ref = (0, _react.useRef)(); (0, _react.useEffect)(() => { if (!ref.current) { return; } ref.current.setAttribute('href', `${location.href.split('#')[0]}#${props.to}`); }, [props.to, ref.current]); return /*#__PURE__*/_react.default.createElement(_router.Link, (0, _extends2.default)({}, props, { ref: ref })); } Link.propTypes = { ..._router.Link.propTypes }; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/components/links-filter.js": /*!*******************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/components/links-filter.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"] = LinksFilter; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); /* eslint-disable jsx-a11y/anchor-is-valid */ const { useCallback, useMemo } = _react.default; function LinksFilter(props) { const onChange = useCallback((e, value) => { e.preventDefault(); if (!props.onChange) { return; } props.onChange(value); }, []); const options = useMemo(() => { return props.options.filter(option => option.shouldShow); }, [props.options]); return /*#__PURE__*/_react.default.createElement("ul", { className: "subsubsub" }, options.map((option, index) => { const isLast = index + 1 === options.length; return /*#__PURE__*/_react.default.createElement("li", { key: option.value }, "\xA0", /*#__PURE__*/_react.default.createElement("a", { href: "#", className: option.value === props.value ? 'current' : '', onClick: e => onChange(e, option.value) }, option.label, undefined !== option.count && /*#__PURE__*/_react.default.createElement("span", { className: "count" }, " (", option.count, ")")), "\xA0", isLast ? '' : '|'); })); } LinksFilter.propTypes = { options: PropTypes.arrayOf(PropTypes.shape({ value: PropTypes.string, label: PropTypes.string, count: PropTypes.number, shouldShow: PropTypes.bool })), value: PropTypes.string, onChange: PropTypes.func }; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/components/notice.js": /*!*************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/components/notice.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"] = Notice; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); var _noticesContext = __webpack_require__(/*! ../context/notices-context */ "../modules/forms/submissions/assets/js/admin/context/notices-context.js"); /* eslint-disable jsx-a11y/anchor-is-valid */ function Notice(props) { return /*#__PURE__*/_react.default.createElement("div", { className: `notice notice-${props.model.type} ${props.model.dismissible ? 'is-dismissible' : ''}` }, /*#__PURE__*/_react.default.createElement("p", null, props.model.message, props.model.undoAction && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, "\xA0", /*#__PURE__*/_react.default.createElement("a", { href: "#", onClick: e => { e.preventDefault(); props.model.undoAction(); } }, __('Undo', 'elementor-pro')))), props.model.dismissible && /*#__PURE__*/_react.default.createElement("button", { type: "button", className: "notice-dismiss", onClick: props.dismiss }, /*#__PURE__*/_react.default.createElement("span", { className: "screen-reader-text" }, __('Dismiss this notice.', 'elementor-pro')))); } Notice.propTypes = { model: PropTypes.shape({ key: PropTypes.number.isRequired, message: PropTypes.string.isRequired, type: PropTypes.oneOf([_noticesContext.NOTICE_TYPE_SUCCESS, _noticesContext.NOTICE_TYPE_ERROR]).isRequired, dismissible: PropTypes.bool, undoAction: PropTypes.func }), dismiss: PropTypes.func }; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/components/notices.js": /*!**************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/components/notices.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"] = Notices; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); var _noticesContext = __webpack_require__(/*! ../context/notices-context */ "../modules/forms/submissions/assets/js/admin/context/notices-context.js"); var _notice = _interopRequireDefault(__webpack_require__(/*! ./notice */ "../modules/forms/submissions/assets/js/admin/components/notice.js")); function Notices() { const { notices, dismiss } = (0, _noticesContext.useNoticesContext)(); return notices.map(notice => /*#__PURE__*/_react.default.createElement(_notice.default, { key: notice.key, model: notice, dismiss: () => dismiss(notice.key) })); } /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/components/pagination.js": /*!*****************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/components/pagination.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"] = Pagination; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); const { useCallback, useMemo } = _react.default; /** * The characters » ‹, ›, » are flipped automatically in RTL. * * @see https://developer.mozilla.org/en-US/docs/Mozilla/Localization/Web_Localizability/Creating_localizable_web_applications#D'ont_use_text_as_decoration * * @param {any} props * @return {JSX.Element|string} Element * @class */ function Pagination(props) { const canNavigateBack = useMemo(() => 1 !== props.currentPage, [props.currentPage]); const canNavigateNext = useMemo(() => props.lastPage > props.currentPage, [props.currentPage, props.lastPage]); const NavigateBackElement = canNavigateBack ? 'a' : 'span'; const NavigateNextElement = canNavigateNext ? 'a' : 'span'; const navigate = useCallback((e, shouldNavigate, page) => { e.preventDefault(); if (!shouldNavigate) { return; } props.onChange(page); }, [props.onChange]); if (!props.currentPage) { return ''; } return /*#__PURE__*/_react.default.createElement("div", { className: `tablenav-pages ${props.lastPage <= 1 && 'one-page'}` }, /*#__PURE__*/_react.default.createElement("span", { className: "displaying-num" }, props.total, " ", __('items', 'elementor-pro')), 1 < props.lastPage && /*#__PURE__*/_react.default.createElement("span", { className: "pagination-links" }, /*#__PURE__*/_react.default.createElement(NavigateBackElement, { className: `tablenav-pages-navspan button ${!canNavigateBack && 'disabled'}`, onClick: e => navigate(e, canNavigateBack, 1) }, "\xAB"), "\xA0", /*#__PURE__*/_react.default.createElement(NavigateBackElement, { className: `tablenav-pages-navspan button ${!canNavigateBack && 'disabled'}`, onClick: e => navigate(e, canNavigateBack, props.currentPage - 1) }, "\u2039"), /*#__PURE__*/_react.default.createElement("span", { className: "paging-input" }, /*#__PURE__*/_react.default.createElement("span", { className: "screen-reader-text" }, __('Current Page', 'elementor-pro')), /*#__PURE__*/_react.default.createElement("span", { className: "paging-input", style: { margin: '0 6px' } }, /*#__PURE__*/_react.default.createElement("span", { className: "tablenav-paging-text" }, props.currentPage, " ", __('of', 'elementor-pro'), /*#__PURE__*/_react.default.createElement("span", { className: "total-pages", style: { margin: '0' } }, " ", props.lastPage)))), /*#__PURE__*/_react.default.createElement(NavigateNextElement, { className: `tablenav-pages-navspan button ${!canNavigateNext && 'disabled'}`, onClick: e => navigate(e, canNavigateNext, props.currentPage + 1) }, "\u203A"), "\xA0", /*#__PURE__*/_react.default.createElement(NavigateNextElement, { className: `tablenav-pages-navspan button ${!canNavigateNext && 'disabled'}`, onClick: e => navigate(e, canNavigateNext, props.lastPage) }, "\xBB"))); } Pagination.propTypes = { currentPage: PropTypes.number, total: PropTypes.number, lastPage: PropTypes.number, perPage: PropTypes.number, onChange: PropTypes.func.isRequired }; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/components/post-box.js": /*!***************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/components/post-box.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"] = PostBox; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); function PostBox(props) { return /*#__PURE__*/_react.default.createElement("div", { className: "postbox" }, /*#__PURE__*/_react.default.createElement("div", { className: "postbox-header" }, props.header), /*#__PURE__*/_react.default.createElement("div", { className: "inner" }, props.children)); } PostBox.propTypes = { header: PropTypes.oneOfType([PropTypes.string, PropTypes.node, PropTypes.arrayOf(PropTypes.node)]), children: PropTypes.oneOfType([PropTypes.node, PropTypes.arrayOf(PropTypes.node)]) }; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/components/referer-filter.js": /*!*********************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/components/referer-filter.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"] = RefererFilter; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); const { useEffect, useRef, useState } = _react.default; function renderSelect2(el, onChange) { jQuery(el).select2({ allowClear: true, placeholder: __('All Pages', 'elementor-pro'), dir: elementorCommon.config.isRTL ? 'rtl' : 'ltr', ajax: { delay: 400, transport({ data: { search } }, success, failure) { return $e.data.get('form-submissions/referer', { search }, { refresh: true }).then(success).catch(failure); }, data(params) { return { search: params.term }; }, processResults({ data }) { return { results: data.data.map(({ value, label }) => ({ id: encodeURIComponent(value), text: label })) }; }, cache: true }, minimumInputLength: 3 }).on('select2:select select2:unselect', e => { onChange(e.target.value); }); } function RefererFilter(props) { const [options, setOptions] = useState([{ value: '', label: __('All Pages', 'elementor-pro') }]); const ref = useRef(); useEffect(() => { let $select2 = null; if (props.value) { $e.data.get('form-submissions/referer', { value: props.value }, { refresh: true }).then(({ data }) => setOptions(prev => [...prev, ...data.data])).then(() => $select2 = renderSelect2(ref.current, props.onChange)); } else { $select2 = renderSelect2(ref.current, props.onChange); } return () => { if (!$select2) { return; } $select2.select2('destroy').off('select2:select select2:unselect'); }; }, []); return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("label", { htmlFor: "filter-by-referer", className: "screen-reader-text" }, __('Filter by Page', 'elementor-pro')), /*#__PURE__*/_react.default.createElement("select", { ref: ref, id: "filter-by-referer", value: props.value }, options.map(({ value, label }) => { return /*#__PURE__*/_react.default.createElement("option", { key: value, value: encodeURIComponent(value) }, " ", label, " "); }))); } RefererFilter.propTypes = { value: PropTypes.string, onChange: PropTypes.func.isRequired }; RefererFilter.defaultProps = { value: '' }; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/components/resource-filter.js": /*!**********************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/components/resource-filter.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"] = ResourceFilter; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); const { useState, useEffect } = _react.default; function ResourceFilter(props) { const [localOptions, setLocalOptions] = useState([]); useEffect(() => { $e.data.get(props.resourceOptions.command, props.resourceOptions.args, { refresh: true }).then(result => setLocalOptions(result.data.data)); }, []); return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, props.label && /*#__PURE__*/_react.default.createElement("label", { htmlFor: `filter-by-${props.name}`, className: "screen-reader-text" }, props.label), /*#__PURE__*/_react.default.createElement("select", { id: `filter-by-${props.name}`, value: props.value, onChange: e => props.onChange(e.target.value) }, [...props.options, ...localOptions].map(({ value, label }) => { return /*#__PURE__*/_react.default.createElement("option", { key: value, value: value }, " ", label, " "); }))); } ResourceFilter.propTypes = { value: PropTypes.string, onChange: PropTypes.func.isRequired, label: PropTypes.string, name: PropTypes.string.isRequired, options: PropTypes.arrayOf(PropTypes.shape({ label: PropTypes.string, value: PropTypes.string })), resourceOptions: PropTypes.shape({ command: PropTypes.string, args: PropTypes.object }) }; ResourceFilter.defaultProps = { value: '', options: [] }; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/components/search-box.js": /*!*****************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/components/search-box.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"] = SearchBox; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); const { useState, useRef, useCallback } = _react.default; // In milliseconds const DEFAULT_DEBOUNCE_TIMEOUT = 600; /** * First render - nothing happens. * Second render - the query string value fills the search (should not trigger the debounce here in order to avoid onChange call) * Third render - the user type and the debounce get activate, and then it send the value up in the component tree. * * @param {any} props * @return {JSX.Element} Element * @class */ function SearchBox(props) { const [localValue, setLocalValue] = useState(props.value || ''), debounceHandler = useRef(null); const onChange = useCallback(e => { if (debounceHandler.current) { clearTimeout(debounceHandler.current); } const value = e.target.value; setLocalValue(value); debounceHandler.current = setTimeout(() => props.onChange(value), props.debounceTimeout); }, []); return /*#__PURE__*/_react.default.createElement("p", { className: "search-box e-form-submissions-search" }, props.label && /*#__PURE__*/_react.default.createElement("label", { className: "screen-reader-text", htmlFor: "search-input" }, props.label), props.isSearching && /*#__PURE__*/_react.default.createElement("span", { className: "e-form-submissions-search__spinner" }, /*#__PURE__*/_react.default.createElement("i", { className: "eicon-loading eicon-animation-spin" })), /*#__PURE__*/_react.default.createElement("input", { type: "search", id: "search-input", name: "s", value: localValue, onChange: onChange, placeholder: __('Search...', 'elementor-pro') })); } SearchBox.propTypes = { value: PropTypes.string, onChange: PropTypes.func.isRequired, label: PropTypes.string, debounceTimeout: PropTypes.number, isSearching: PropTypes.bool }; SearchBox.defaultProps = { debounceTimeout: DEFAULT_DEBOUNCE_TIMEOUT, isSearching: false }; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/components/submission-row.js": /*!*********************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/components/submission-row.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"] = SubmissionRow; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); var _link = _interopRequireDefault(__webpack_require__(/*! ./link */ "../modules/forms/submissions/assets/js/admin/components/link.js")); var _wpTable = _interopRequireDefault(__webpack_require__(/*! ./wp-table */ "../modules/forms/submissions/assets/js/admin/components/wp-table/index.js")); var _date = __webpack_require__(/*! ../utils/date */ "../modules/forms/submissions/assets/js/admin/utils/date.js"); const { useState } = _react.default; function SubmissionRow(props) { const [isMobileRowOpen, setIsMobileRowOpen] = useState(false); const mainValue = props.item?.main?.value || __('Unknown', 'elementor-pro'); return /*#__PURE__*/_react.default.createElement(_wpTable.default.Row, { className: isMobileRowOpen ? 'is-expanded' : '', style: { fontWeight: !props.item.is_read ? 'bold' : 'inherit' } }, /*#__PURE__*/_react.default.createElement(_wpTable.default.Cell, { component: "th", className: "check-column" }, props.checkBoxComponent), /*#__PURE__*/_react.default.createElement(_wpTable.default.Cell, { className: "has-row-actions column-primary" }, 'trash' === props.item.status ? mainValue : /*#__PURE__*/_react.default.createElement(_link.default, { to: `/${props.item.id}`, "aria-label": "View" }, mainValue), props.rowActionComponent, /*#__PURE__*/_react.default.createElement("button", { type: "button", className: "toggle-row", onClick: () => setIsMobileRowOpen(prev => !prev) }, /*#__PURE__*/_react.default.createElement("span", { className: "screen-reader-text" }, __('Show more details', 'elementor-pro')))), /*#__PURE__*/_react.default.createElement(_wpTable.default.Cell, { className: "column-actions", colName: props.tableTitles.actions_log_status.label }, props.item.actions_count > 0 && /*#__PURE__*/_react.default.createElement("i", { className: `${props.item.actions_count === props.item.actions_succeeded_count ? 'eicon-success eicon-check-circle-o' : 'eicon-error eicon-warning'}`, title: `${props.item.actions_succeeded_count}/${props.item.actions_count} ${__('Succeed', 'elementor-pro')}` })), /*#__PURE__*/_react.default.createElement(_wpTable.default.Cell, { className: "column-form", colName: props.tableTitles.form.label }, props.item.post && /*#__PURE__*/_react.default.createElement("a", { href: props.item.post.edit_url, target: "_blank", rel: "noreferrer" }, props.item.form.name, " (", props.item.form.element_id, ")")), /*#__PURE__*/_react.default.createElement(_wpTable.default.Cell, { className: "column-page", colName: props.tableTitles.page.label }, /*#__PURE__*/_react.default.createElement("a", { href: props.item.referer, target: "_blank", rel: "noreferrer", title: props.item.referer_title }, props.item.referer_title || /*#__PURE__*/_react.default.createElement("i", { className: "eicon-editor-external-link e-form-submissions-referer-icon" }))), /*#__PURE__*/_react.default.createElement(_wpTable.default.Cell, { className: "column-id", colName: props.tableTitles.id.label }, props.item.id), /*#__PURE__*/_react.default.createElement(_wpTable.default.Cell, { className: "column-date", colName: props.tableTitles.created_at.label }, (0, _date.formatToLocalDateTime)(props.item.created_at))); } SubmissionRow.propTypes = { // The resource item that the table present. item: PropTypes.object.isRequired, tableTitles: PropTypes.objectOf(PropTypes.shape({ label: PropTypes.string })), rowActionComponent: PropTypes.node, checkBoxComponent: PropTypes.node }; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/components/submission-value/acceptance.js": /*!**********************************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/components/submission-value/acceptance.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"] = Acceptance; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); var _index = __webpack_require__(/*! ./index */ "../modules/forms/submissions/assets/js/admin/components/submission-value/index.js"); const { useState } = _react.default; function Acceptance(props) { const [localValue, setLocalValue] = useState(props.value), id = props.field.id + '-' + props.value; return /*#__PURE__*/_react.default.createElement("label", { className: "e-form-submissions-value-label", htmlFor: id }, /*#__PURE__*/_react.default.createElement("input", { id: id, type: "checkbox", value: "on", checked: props.isEditMode ? 'on' === localValue : 'on' === props.value, onChange: e => { const value = e.target.checked ? 'on' : ''; setLocalValue(value); props.onChange(value); }, disabled: !props.isEditMode })); } Acceptance.propTypes = { ..._index.basePropTypes }; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/components/submission-value/checkbox.js": /*!********************************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/components/submission-value/checkbox.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"] = Checkbox; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); var _index = __webpack_require__(/*! ./index */ "../modules/forms/submissions/assets/js/admin/components/submission-value/index.js"); var _useWatch = _interopRequireDefault(__webpack_require__(/*! ../../hooks/use-watch */ "../modules/forms/submissions/assets/js/admin/hooks/use-watch.js")); var _useFormFieldOptions = _interopRequireDefault(__webpack_require__(/*! ../../hooks/use-form-field-options */ "../modules/forms/submissions/assets/js/admin/hooks/use-form-field-options.js")); const { useState, useMemo } = _react.default; function Checkbox(props) { const value = useMemo(() => props.value.split(', '), [props.value]), [localValue, setLocalValue] = useState(value); (0, _useWatch.default)(() => props.onChange(localValue.join(', ')), [localValue]); const options = (0, _useFormFieldOptions.default)(props.field.options); return options.map(option => { const id = props.field.id + '-' + option.value; return /*#__PURE__*/_react.default.createElement("label", { className: "e-form-submissions-value-label", key: option.value, htmlFor: id }, /*#__PURE__*/_react.default.createElement("input", { id: id, type: "checkbox", value: option.value, checked: props.isEditMode ? localValue.includes(option.value) : value.includes(option.value), onChange: e => { const checked = e.target.checked; setLocalValue(prev => { if (!checked) { prev = prev.filter(item => item !== option.value); } else { prev = [...prev, option.value]; } return prev; }); }, disabled: !props.isEditMode }), option.label); }); } Checkbox.propTypes = { ..._index.basePropTypes }; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/components/submission-value/date.js": /*!****************************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/components/submission-value/date.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"] = Date; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); var _index = __webpack_require__(/*! ./index */ "../modules/forms/submissions/assets/js/admin/components/submission-value/index.js"); var _text = _interopRequireDefault(__webpack_require__(/*! ./text */ "../modules/forms/submissions/assets/js/admin/components/submission-value/text.js")); var _date = __webpack_require__(/*! ../../utils/date */ "../modules/forms/submissions/assets/js/admin/utils/date.js"); function Date(props) { return /*#__PURE__*/_react.default.createElement(_text.default, { value: props.value, isEditMode: props.isEditMode, onChange: props.onChange, field: props.field }, props.value && (0, _date.formatToLocalDate)(props.value)); } Date.propTypes = { ..._index.basePropTypes }; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/components/submission-value/email.js": /*!*****************************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/components/submission-value/email.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"] = Email; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); var _index = __webpack_require__(/*! ./index */ "../modules/forms/submissions/assets/js/admin/components/submission-value/index.js"); var _text = _interopRequireDefault(__webpack_require__(/*! ./text */ "../modules/forms/submissions/assets/js/admin/components/submission-value/text.js")); function Email(props) { return /*#__PURE__*/_react.default.createElement(_text.default, { value: props.value, isEditMode: props.isEditMode, onChange: props.onChange, field: props.field }, props.value && /*#__PURE__*/_react.default.createElement("a", { href: `mailto:${props.value}` }, props.value)); } Email.propTypes = { ..._index.basePropTypes }; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/components/submission-value/index.js": /*!*****************************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/components/submission-value/index.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.basePropTypes = void 0; exports["default"] = SubmissionValue; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); var _text = _interopRequireDefault(__webpack_require__(/*! ./text */ "../modules/forms/submissions/assets/js/admin/components/submission-value/text.js")); var _email = _interopRequireDefault(__webpack_require__(/*! ./email */ "../modules/forms/submissions/assets/js/admin/components/submission-value/email.js")); var _tel = _interopRequireDefault(__webpack_require__(/*! ./tel */ "../modules/forms/submissions/assets/js/admin/components/submission-value/tel.js")); var _url = _interopRequireDefault(__webpack_require__(/*! ./url */ "../modules/forms/submissions/assets/js/admin/components/submission-value/url.js")); var _radio = _interopRequireDefault(__webpack_require__(/*! ./radio */ "../modules/forms/submissions/assets/js/admin/components/submission-value/radio.js")); var _select = _interopRequireDefault(__webpack_require__(/*! ./select */ "../modules/forms/submissions/assets/js/admin/components/submission-value/select.js")); var _checkbox = _interopRequireDefault(__webpack_require__(/*! ./checkbox */ "../modules/forms/submissions/assets/js/admin/components/submission-value/checkbox.js")); var _acceptance = _interopRequireDefault(__webpack_require__(/*! ./acceptance */ "../modules/forms/submissions/assets/js/admin/components/submission-value/acceptance.js")); var _upload = _interopRequireDefault(__webpack_require__(/*! ./upload */ "../modules/forms/submissions/assets/js/admin/components/submission-value/upload.js")); var _date = _interopRequireDefault(__webpack_require__(/*! ./date */ "../modules/forms/submissions/assets/js/admin/components/submission-value/date.js")); var _time = _interopRequireDefault(__webpack_require__(/*! ./time */ "../modules/forms/submissions/assets/js/admin/components/submission-value/time.js")); var _textarea = _interopRequireDefault(__webpack_require__(/*! ./textarea */ "../modules/forms/submissions/assets/js/admin/components/submission-value/textarea.js")); const { useMemo } = _react.default; const defaultComponent = _text.default; const components = Object.entries({ Email: _email.default, Tel: _tel.default, Url: _url.default, Radio: _radio.default, Select: _select.default, Checkbox: _checkbox.default, Acceptance: _acceptance.default, Upload: _upload.default, Date: _date.default, Time: _time.default, Textarea: _textarea.default, Text: _text.default }).reduce((current, [key, component]) => ({ ...current, [key.toLowerCase()]: component }), {}); const basePropTypes = exports.basePropTypes = { value: PropTypes.string, isEditMode: PropTypes.bool, onChange: PropTypes.func.isRequired, field: PropTypes.shape({ id: PropTypes.string.isRequired, type: PropTypes.string, options: PropTypes.arrayOf(PropTypes.string), is_multiple: PropTypes.bool }) }; function SubmissionValue(props) { const Component = useMemo(() => { const key = props.field?.type; return Object.prototype.hasOwnProperty.call(components, key) ? components[key] : defaultComponent; }, [props.field, props.value]); return /*#__PURE__*/_react.default.createElement(Component, { value: props.value, field: props.field, isEditMode: props.isEditMode, onChange: value => props.onChange(props.field.id, value) }); } SubmissionValue.propTypes = { ...basePropTypes }; SubmissionValue.defaultProps = { isEditMode: false }; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/components/submission-value/radio.js": /*!*****************************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/components/submission-value/radio.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"] = Radio; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); var _index = __webpack_require__(/*! ./index */ "../modules/forms/submissions/assets/js/admin/components/submission-value/index.js"); var _useFormFieldOptions = _interopRequireDefault(__webpack_require__(/*! ../../hooks/use-form-field-options */ "../modules/forms/submissions/assets/js/admin/hooks/use-form-field-options.js")); const { useState } = _react.default; function Radio(props) { const [localValue, setLocalValue] = useState(props.value); const options = (0, _useFormFieldOptions.default)(props.field.options); return options.map(option => { const id = props.field.id + '-' + option.value; return /*#__PURE__*/_react.default.createElement("label", { className: "e-form-submissions-value-label", key: option.value, htmlFor: id }, /*#__PURE__*/_react.default.createElement("input", { id: id, type: "radio", value: option.value, checked: props.isEditMode ? option.value === localValue : option.value === props.value, onChange: () => { setLocalValue(option.value); props.onChange(option.value); }, disabled: !props.isEditMode }), option.label); }); } Radio.propTypes = { ..._index.basePropTypes }; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/components/submission-value/select.js": /*!******************************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/components/submission-value/select.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"] = Select; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); var _index = __webpack_require__(/*! ./index */ "../modules/forms/submissions/assets/js/admin/components/submission-value/index.js"); var _useFormFieldOptions = _interopRequireDefault(__webpack_require__(/*! ../../hooks/use-form-field-options */ "../modules/forms/submissions/assets/js/admin/hooks/use-form-field-options.js")); const { useState } = _react.default; function Select(props) { const value = props.field.is_multiple ? props.value.split(', ') : props.value; const [localValue, setLocalValue] = useState(value); const options = (0, _useFormFieldOptions.default)(props.field.options); return /*#__PURE__*/_react.default.createElement("select", { value: props.isEditMode ? localValue : value, multiple: props.field.is_multiple, onChange: e => { const selectedValues = Array.from(e.target.selectedOptions, option => option.value); setLocalValue(props.field.is_multiple ? selectedValues : selectedValues[0]); props.onChange(selectedValues.join(', ')); }, disabled: !props.isEditMode }, options.map(option => /*#__PURE__*/_react.default.createElement("option", { value: option.value, key: option.value }, option.label))); } Select.propTypes = { ..._index.basePropTypes }; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/components/submission-value/tel.js": /*!***************************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/components/submission-value/tel.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"] = Tel; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); var _index = __webpack_require__(/*! ./index */ "../modules/forms/submissions/assets/js/admin/components/submission-value/index.js"); var _text = _interopRequireDefault(__webpack_require__(/*! ./text */ "../modules/forms/submissions/assets/js/admin/components/submission-value/text.js")); function Tel(props) { return /*#__PURE__*/_react.default.createElement(_text.default, { value: props.value, isEditMode: props.isEditMode, onChange: props.onChange, field: props.field }, props.value && /*#__PURE__*/_react.default.createElement("a", { href: `tel:${props.value}` }, props.value)); } Tel.propTypes = { ..._index.basePropTypes }; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/components/submission-value/text.js": /*!****************************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/components/submission-value/text.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"] = Text; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); var _index = __webpack_require__(/*! ./index */ "../modules/forms/submissions/assets/js/admin/components/submission-value/index.js"); const { useState, useMemo } = _react.default; const availableInputTypes = { email: 'email', date: 'date', time: 'time', tel: 'tel', url: 'url', number: 'number', text: 'text' }; const defaultInputType = availableInputTypes.text; function Text(props) { const [localValue, setLocalValue] = useState(props.value); const inputType = useMemo(() => Object.prototype.hasOwnProperty.call(availableInputTypes, props.field?.type) ? availableInputTypes[props.field.type] : defaultInputType, [props.field]); return props.isEditMode ? /*#__PURE__*/_react.default.createElement("input", { type: inputType, value: localValue, onChange: ({ target: { value } }) => { setLocalValue(value); props.onChange(value); } }) : props.children || props.value; } Text.propTypes = { children: PropTypes.oneOfType([PropTypes.node, PropTypes.string]), ..._index.basePropTypes }; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/components/submission-value/textarea.js": /*!********************************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/components/submission-value/textarea.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"] = Textarea; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); var _index = __webpack_require__(/*! ./index */ "../modules/forms/submissions/assets/js/admin/components/submission-value/index.js"); const { useState } = _react.default; function Textarea(props) { const [localValue, setLocalValue] = useState(props.value); return props.isEditMode ? /*#__PURE__*/_react.default.createElement("textarea", { value: props.isEditMode ? localValue : props.value, rows: "4", onChange: e => { const value = e.target.value; setLocalValue(value); props.onChange(value); } }) : props.value; } Textarea.propTypes = { ..._index.basePropTypes }; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/components/submission-value/time.js": /*!****************************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/components/submission-value/time.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"] = Time; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); var _index = __webpack_require__(/*! ./index */ "../modules/forms/submissions/assets/js/admin/components/submission-value/index.js"); var _text = _interopRequireDefault(__webpack_require__(/*! ./text */ "../modules/forms/submissions/assets/js/admin/components/submission-value/text.js")); var _date = __webpack_require__(/*! ../../utils/date */ "../modules/forms/submissions/assets/js/admin/utils/date.js"); function Time(props) { return /*#__PURE__*/_react.default.createElement(_text.default, { value: props.value, isEditMode: props.isEditMode, onChange: props.onChange, field: props.field }, props.value && (0, _date.formatToLocalTime)(`2000-01-01 ${props.value}`)); } Time.propTypes = { ..._index.basePropTypes }; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/components/submission-value/upload.js": /*!******************************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/components/submission-value/upload.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"] = Upload; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); var _index = __webpack_require__(/*! ./index */ "../modules/forms/submissions/assets/js/admin/components/submission-value/index.js"); function Upload(props) { const value = props.value.split(' , '); const isAttached = 'attached' === value[0]; if (isAttached) { const message = value.length > 1 ? __("Attachments to email won't be saved.", 'elementor-pro') : __("Attachment to email won't be saved.", 'elementor-pro'); return /*#__PURE__*/_react.default.createElement("span", null, message); } return value.map(path => /*#__PURE__*/_react.default.createElement("div", { key: path }, /*#__PURE__*/_react.default.createElement("a", { href: path, target: "_blank", rel: "noreferrer" }, path))); } Upload.propTypes = { ..._index.basePropTypes }; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/components/submission-value/url.js": /*!***************************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/components/submission-value/url.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"] = Url; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); var _index = __webpack_require__(/*! ./index */ "../modules/forms/submissions/assets/js/admin/components/submission-value/index.js"); var _text = _interopRequireDefault(__webpack_require__(/*! ./text */ "../modules/forms/submissions/assets/js/admin/components/submission-value/text.js")); function Url(props) { return /*#__PURE__*/_react.default.createElement(_text.default, { value: props.value, isEditMode: props.isEditMode, onChange: props.onChange, field: props.field }, props.value && /*#__PURE__*/_react.default.createElement("a", { href: props.value, target: "_blank", rel: "noreferrer" }, props.value)); } Url.propTypes = { ..._index.basePropTypes }; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/components/wp-table/body.js": /*!********************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/components/wp-table/body.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"] = Body; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); function Body(props) { return /*#__PURE__*/_react.default.createElement("tbody", { id: "the-list" }, props.children); } Body.propTypes = { children: PropTypes.any }; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/components/wp-table/cell.js": /*!********************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/components/wp-table/cell.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"] = Cell; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); function Cell(props) { const Component = props.component; return /*#__PURE__*/_react.default.createElement(Component, { className: props.className, style: props.style, "data-colname": props.colName, colSpan: props.colSpan }, props.children); } Cell.propTypes = { component: PropTypes.string, children: PropTypes.any, className: PropTypes.string, style: PropTypes.object, colName: PropTypes.string, colSpan: PropTypes.number }; Cell.defaultProps = { component: 'td', className: '' }; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/components/wp-table/footer.js": /*!**********************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/components/wp-table/footer.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"] = Footer; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); function Footer(props) { return /*#__PURE__*/_react.default.createElement("tfoot", null, props.children); } Footer.propTypes = { children: PropTypes.any }; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/components/wp-table/header.js": /*!**********************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/components/wp-table/header.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"] = Header; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); function Header(props) { return /*#__PURE__*/_react.default.createElement("thead", null, props.children); } Header.propTypes = { children: PropTypes.any }; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/components/wp-table/index.js": /*!*********************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/components/wp-table/index.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"] = WpTable; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); var _header = _interopRequireDefault(__webpack_require__(/*! ./header */ "../modules/forms/submissions/assets/js/admin/components/wp-table/header.js")); var _body = _interopRequireDefault(__webpack_require__(/*! ./body */ "../modules/forms/submissions/assets/js/admin/components/wp-table/body.js")); var _footer = _interopRequireDefault(__webpack_require__(/*! ./footer */ "../modules/forms/submissions/assets/js/admin/components/wp-table/footer.js")); var _row = _interopRequireDefault(__webpack_require__(/*! ./row */ "../modules/forms/submissions/assets/js/admin/components/wp-table/row.js")); var _cell = _interopRequireDefault(__webpack_require__(/*! ./cell */ "../modules/forms/submissions/assets/js/admin/components/wp-table/cell.js")); var _orderableCell = _interopRequireDefault(__webpack_require__(/*! ./orderable-cell */ "../modules/forms/submissions/assets/js/admin/components/wp-table/orderable-cell.js")); var _rowActions = _interopRequireDefault(__webpack_require__(/*! ./row-actions */ "../modules/forms/submissions/assets/js/admin/components/wp-table/row-actions.js")); function WpTable(props) { return /*#__PURE__*/_react.default.createElement("table", { className: `wp-list-table widefat fixed table-view-list ${props.className}`, style: props.style }, props.children); } WpTable.propTypes = { children: PropTypes.any, style: PropTypes.object, className: PropTypes.string }; WpTable.defaultProps = { className: '' }; WpTable.Header = _header.default; WpTable.Body = _body.default; WpTable.Footer = _footer.default; WpTable.Row = _row.default; WpTable.Cell = _cell.default; WpTable.OrderableCell = _orderableCell.default; WpTable.RowActions = _rowActions.default; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/components/wp-table/orderable-cell.js": /*!******************************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/components/wp-table/orderable-cell.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"] = OrderableCell; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); var _cell = _interopRequireDefault(__webpack_require__(/*! ./cell */ "../modules/forms/submissions/assets/js/admin/components/wp-table/cell.js")); /* eslint-disable jsx-a11y/anchor-is-valid */ function OrderableCell(props) { const className = `${props.className} sortable ${props.order.current.by === props.order.key && `sorted ${props.order.current.direction}`}`; return /*#__PURE__*/_react.default.createElement(_cell.default, { component: props.component, style: props.style, className: className }, /*#__PURE__*/_react.default.createElement("a", { href: "#", onClick: () => props.order.onChange({ by: props.order.key, direction: props.order.key === props.order.current.by && 'asc' === props.order.current.direction ? 'desc' : 'asc' }) }, /*#__PURE__*/_react.default.createElement("span", null, props.children), /*#__PURE__*/_react.default.createElement("span", { className: "sorting-indicator" }))); } OrderableCell.propTypes = { ..._cell.default.propTypes, order: PropTypes.shape({ key: PropTypes.string.isRequired, current: PropTypes.shape({ by: PropTypes.string, direction: PropTypes.oneOf(['asc', 'desc']) }).isRequired, onChange: PropTypes.func.isRequired }).isRequired }; OrderableCell.defaultProps = { ..._cell.default.defaultProps, component: 'th' }; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/components/wp-table/row-actions.js": /*!***************************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/components/wp-table/row-actions.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"] = RowActions; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); function RowActions(props) { return /*#__PURE__*/_react.default.createElement("div", { className: "row-actions", style: { fontWeight: 'normal' } }, props.actions.map((action, index) => { const isLastAction = index + 1 === props.actions.length; const ActionComponent = action.component || 'a'; return /*#__PURE__*/_react.default.createElement("span", { key: action.key, className: action.className }, /*#__PURE__*/_react.default.createElement(ActionComponent, (0, _extends2.default)({ href: "#", "aria-label": action.label, onClick: e => { e.preventDefault(); action.onApply(props.item); } }, action.props ? action.props(props.item) : {}), action.label), !isLastAction && /*#__PURE__*/_react.default.createElement("span", null, "\xA0|\xA0")); })); } RowActions.propTypes = { actions: PropTypes.arrayOf(PropTypes.shape({ key: PropTypes.string.isRequired, label: PropTypes.string.isRequired, onApply: PropTypes.func, className: PropTypes.string, props: PropTypes.func, component: PropTypes.any })), // The resource item that the table present. item: PropTypes.object }; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/components/wp-table/row.js": /*!*******************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/components/wp-table/row.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"] = Row; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); function Row(props) { return /*#__PURE__*/_react.default.createElement("tr", { style: props.style, className: props.className }, props.children); } Row.propTypes = { children: PropTypes.any, style: PropTypes.object, className: PropTypes.string }; Row.defaultProps = { style: {}, className: '' }; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/context/notices-context.js": /*!*******************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/context/notices-context.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.NOTICE_TYPE_SUCCESS = exports.NOTICE_TYPE_ERROR = void 0; exports.NoticesProvider = NoticesProvider; exports.useNoticesContext = useNoticesContext; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); const { createContext, useState, useCallback, useContext } = _react.default; const NOTICE_TYPE_SUCCESS = exports.NOTICE_TYPE_SUCCESS = 'success'; const NOTICE_TYPE_ERROR = exports.NOTICE_TYPE_ERROR = 'error'; const NoticesContext = createContext({ notices: [] }); /** * Use Notifications context. * * @return {{}} Notices context */ function useNoticesContext() { return useContext(NoticesContext); } /** * Notification Provider. * * @param {any} props * @return {JSX.Element} Element * @class */ function NoticesProvider(props) { const [notices, setNotices] = useState([]); // Dismiss notification (remove from view). const dismiss = useCallback(key => { setNotices(prev => prev.filter(notice => notice.key !== key)); }, []); // Add notification (show in view). const notify = useCallback(({ message, undoAction, type, dismissible = true }) => { if (!message) { return; } const key = Date.now() + Math.random(); setNotices(prev => [{ key, message, type, undoAction, dismissible }, ...prev]); if (props.dismissTimeout) { setTimeout(() => dismiss(key), props.dismissTimeout); } }, []); // Notify an error message const notifyError = useCallback(message => { notify({ message, type: NOTICE_TYPE_ERROR }); }, [notify]); // Notify a success message const notifySuccess = useCallback((message, undoAction) => { notify({ message, undoAction, type: NOTICE_TYPE_SUCCESS }); }, [notify]); return /*#__PURE__*/_react.default.createElement(NoticesContext.Provider, { value: { notices, notify, notifyError, notifySuccess, dismiss } }, props.children); } NoticesProvider.propTypes = { children: PropTypes.any, dismissTimeout: PropTypes.number }; NoticesProvider.defaultProps = { dismissTimeout: 4000 }; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/context/settings-context.js": /*!********************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/context/settings-context.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.SettingsProvider = SettingsProvider; exports.useSettingsContext = useSettingsContext; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); const { createContext, useContext } = _react.default; const SettingsContext = createContext({}); /** * Consume the context * * @return {{emptyTrashDays: number}} Settings context */ function useSettingsContext() { return useContext(SettingsContext); } /** * Settings Provider * * @param {any} props * @return {JSX.Element} Element * @class */ function SettingsProvider(props) { return /*#__PURE__*/_react.default.createElement(SettingsContext.Provider, { value: props.value }, props.children); } SettingsProvider.propTypes = { children: PropTypes.any, value: PropTypes.object.isRequired }; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/data/commands/export.js": /*!****************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/data/commands/export.js ***! \****************************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.Export = void 0; class Export extends $e.modules.CommandData { static getEndpointFormat() { return 'form-submissions/export/{id}'; } onCatchApply() { // Do nothing. (override parent behavior) } } exports.Export = Export; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/data/commands/forms-index.js": /*!*********************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/data/commands/forms-index.js ***! \*********************************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.Index = void 0; class Index extends $e.modules.CommandData { static getEndpointFormat() { return 'forms/{id}'; } } exports.Index = Index; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/data/commands/index.js": /*!***************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/data/commands/index.js ***! \***************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); Object.defineProperty(exports, "Export", ({ enumerable: true, get: function () { return _export.Export; } })); exports.Index = void 0; Object.defineProperty(exports, "Referer", ({ enumerable: true, get: function () { return _referer.Referer; } })); Object.defineProperty(exports, "Restore", ({ enumerable: true, get: function () { return _restore.Restore; } })); var _restore = __webpack_require__(/*! ./restore */ "../modules/forms/submissions/assets/js/admin/data/commands/restore.js"); var _export = __webpack_require__(/*! ./export */ "../modules/forms/submissions/assets/js/admin/data/commands/export.js"); var _referer = __webpack_require__(/*! ./referer */ "../modules/forms/submissions/assets/js/admin/data/commands/referer.js"); class Index extends $e.modules.CommandData { static getEndpointFormat() { return 'form-submissions/{id}'; } } exports.Index = Index; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/data/commands/referer.js": /*!*****************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/data/commands/referer.js ***! \*****************************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.Referer = void 0; class Referer extends $e.modules.CommandData { static getEndpointFormat() { return 'form-submissions/referer/{id}'; } } exports.Referer = Referer; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/data/commands/restore.js": /*!*****************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/data/commands/restore.js ***! \*****************************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.Restore = void 0; class Restore extends $e.modules.CommandData { static getEndpointFormat() { return 'form-submissions/restore/{id}'; } } exports.Restore = Restore; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/data/component.js": /*!**********************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/data/component.js ***! \**********************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var dataCommands = _interopRequireWildcard(__webpack_require__(/*! ./commands */ "../modules/forms/submissions/assets/js/admin/data/commands/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 && Object.prototype.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; } class Component extends $e.modules.ComponentBase { getNamespace() { return 'form-submissions'; } defaultData() { return this.importCommands(dataCommands); } } exports["default"] = Component; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/data/forms-component.js": /*!****************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/data/forms-component.js ***! \****************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var dataCommands = _interopRequireWildcard(__webpack_require__(/*! ./commands/forms-index */ "../modules/forms/submissions/assets/js/admin/data/commands/forms-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 && Object.prototype.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; } class FormsComponent extends $e.modules.ComponentBase { static namespace = 'forms'; getNamespace() { return this.constructor.namespace; } defaultData() { return this.importCommands(dataCommands); } } exports["default"] = FormsComponent; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/hooks/use-data-action.js": /*!*****************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/hooks/use-data-action.js ***! \*****************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; /* provided dependency */ var React = __webpack_require__(/*! react */ "react"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports.STATUS_SUCCESS = exports.STATUS_LOADING = exports.STATUS_IDLE = exports.STATUS_ERROR = void 0; exports["default"] = useDataAction; const { useRef, useCallback, useState, useMemo } = React; const STATUS_IDLE = exports.STATUS_IDLE = 'idle'; const STATUS_LOADING = exports.STATUS_LOADING = 'loading'; const STATUS_SUCCESS = exports.STATUS_SUCCESS = 'success'; const STATUS_ERROR = exports.STATUS_ERROR = 'error'; function useDataAction(action, deps = []) { const abortControllerRef = useRef(); const [status, setStatus] = useState(STATUS_IDLE); // To avoid multiple declaration of the action callback, it memorize the argument that SHOULD // trigger a new declaration of the action callback. const calculatedDeps = useMemo(() => [...deps, status], [deps, status]); const wrappedAction = useCallback((...args) => { if (abortControllerRef.current) { abortControllerRef.current.abort(); } abortControllerRef.current = new AbortController(); setStatus(STATUS_LOADING); return action(args, { abortController: abortControllerRef.current, status }).then(result => { setStatus(STATUS_SUCCESS); return result; }).catch(error => { setStatus(STATUS_ERROR); return Promise.reject(error); }); }, [calculatedDeps]); return [wrappedAction, { abortController: abortControllerRef.current, status }]; } /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/hooks/use-export.js": /*!************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/hooks/use-export.js ***! \************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; /* provided dependency */ var React = __webpack_require__(/*! react */ "react"); var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports.EXPORT_MODE_SELECTED = exports.EXPORT_MODE_FILTERED = exports.EXPORT_MODE_ALL = void 0; exports.useExport = useExport; var _useDataAction = _interopRequireWildcard(__webpack_require__(/*! ./use-data-action */ "../modules/forms/submissions/assets/js/admin/hooks/use-data-action.js")); var _downloadBlob = _interopRequireDefault(__webpack_require__(/*! ../utils/download-blob */ "../modules/forms/submissions/assets/js/admin/utils/download-blob.js")); var _noticesContext = __webpack_require__(/*! ../context/notices-context */ "../modules/forms/submissions/assets/js/admin/context/notices-context.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 && Object.prototype.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 EXPORT_MODE_ALL = exports.EXPORT_MODE_ALL = 'all'; const EXPORT_MODE_SELECTED = exports.EXPORT_MODE_SELECTED = 'selected'; const EXPORT_MODE_FILTERED = exports.EXPORT_MODE_FILTERED = 'filtered'; const { useState, useMemo } = React; const ZIP_NAME_FORMAT = 'elementor-submissions-export-{DATE}'; const EXPORT_FILE_NAME_FORMAT = 'elementor-submissions-export-{FORM_LABEL}-{DATE}'; const DEFAULT_MAX_ROWS_PER_REQUEST = 10000; const defaultOptions = { maxRowsPerRequest: DEFAULT_MAX_ROWS_PER_REQUEST, checked: [], filter: {} }; /** * Export functionality * * @param {any} hookOptions * @return {(any|{mode: (string), progress: {success: number, count: number}, status: string})[]} [ exportSubmissions, { mode, progress, status: exportStatus } ] */ function useExport(hookOptions) { const options = useMemo(() => ({ ...defaultOptions, ...hookOptions }), [hookOptions]); const { notifyError } = (0, _noticesContext.useNoticesContext)(); const [progress, setProgress] = useState({ count: 0, success: 0 }); const mode = useMemo(() => { if (options.checked.length > 0) { return EXPORT_MODE_SELECTED; } const filter = Object.fromEntries(Object.entries(options.filter).filter(([, value]) => value)); if (1 === Object.keys(filter).length && 'all' === filter.status) { return EXPORT_MODE_ALL; } return EXPORT_MODE_FILTERED; }, [options.checked, options.filter]); const [exportSubmissions, { status: exportStatus }] = (0, _useDataAction.default)(([query, total], { abortController, status }) => { if (status === _useDataAction.STATUS_LOADING && abortController) { abortController.abort(); return Promise.reject({ message: 'Aborted' }); } const numberOfRequests = Math.ceil(total / options.maxRowsPerRequest); let exportDataByForm = {}; let promise = Promise.resolve(); setProgress({ count: numberOfRequests, success: 0 }); for (let i = 1; i <= numberOfRequests; i++) { promise = promise.then(() => $e.data.get('form-submissions/export', { ...query, per_page: options.maxRowsPerRequest, page: i }, { refresh: true, signal: abortController.signal })).then(result => { const shouldSaveHeaders = 1 === i; exportDataByForm = mergeFormExportData(result.data.data, exportDataByForm, shouldSaveHeaders); setProgress(prev => ({ ...prev, success: i })); }); } return promise.then(() => downloadExportsResults(Object.values(exportDataByForm))).catch(error => notifyError(error.message)); }, [options.maxRowsPerRequest]); return [exportSubmissions, { mode, progress, status: exportStatus }]; } /** * Merge data from one response into the current data from all the other responses. * * @param {Array} response * @param {any} current * @param {boolean} shouldSaveHeaders * @return {any} Form results */ function mergeFormExportData(response, current, shouldSaveHeaders) { response.forEach(formResult => { // The first row of each csv response is the headers row. When it merges all csv responses, it deletes // the headers for each response except from the first one, the result will be only one row headers in the final csv. if (!shouldSaveHeaders) { delete formResult.content[0]; } current = { ...current, [formResult.id]: { ...formResult, content: (current[formResult.id]?.content || '') + formResult.content.join('\n') } }; }); return current; } /** * Merge all the promises result into one csv and download it. * * @param {Array} dataResults */ function downloadExportsResults(dataResults) { const currentDate = wp.date.date('Y-m-d'); const files = dataResults.map(item => transformFormResultIntoBlob(item, currentDate)); // If there is only one form file, just download it as csv instead of compressing it into a zip file. if (1 === files.length) { (0, _downloadBlob.default)(files[0].blob, files[0].filename); return; } __webpack_require__.e(/*! import() | jszip.vendor */ "jszip.vendor").then(__webpack_require__.t.bind(__webpack_require__, /*! jszip */ "../node_modules/jszip/dist/jszip.min.js", 23)).then(({ default: JSZip }) => { const zip = new JSZip(); files.forEach(({ filename, blob }) => zip.file(filename, blob)); return zip.generateAsync({ type: 'blob' }); }).then(zipBlob => { (0, _downloadBlob.default)(zipBlob, ZIP_NAME_FORMAT.replace('{DATE}', currentDate)); }); } /** * Transform the merged result from the server into a blob. * * @param {any} formResult * @param {Date} currentDate * @return {{filename: string, blob: Blob}} Filename and blob */ function transformFormResultIntoBlob(formResult, currentDate) { return { filename: EXPORT_FILE_NAME_FORMAT.replace('{FORM_LABEL}', formResult.form_label).replace('{DATE}', currentDate).concat(`.${formResult.extension}`), blob: new Blob([ // UTF-8 BOM to support microsoft excel // ref: https://stackoverflow.com/questions/31959487/utf-8-encoidng-issue-when-exporting-csv-file-javascript '\ufeff', formResult.content], { type: formResult.mimetype }) }; } /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/hooks/use-form-field-options.js": /*!************************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/hooks/use-form-field-options.js ***! \************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; /* provided dependency */ var React = __webpack_require__(/*! react */ "react"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = useFormFieldOptions; const { useMemo } = React; /** * The options that received from the API is an array of strings, * each string can be a regular value e.g: 'red' or 'blue' * or a pair of label and value e.g: 'Red|red' or 'Blue|blue' * this parse the array and return an object of 'value' and 'label' * * @param {Array} options */ function useFormFieldOptions(options) { return useMemo(() => { return options.map(rawOption => { const [label, value] = rawOption.split('|'); return { label, value: value === undefined ? label : value }; }); }, [options]); } /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/hooks/use-methods-reducer.js": /*!*********************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/hooks/use-methods-reducer.js ***! \*********************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; /* provided dependency */ var React = __webpack_require__(/*! react */ "react"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = useMethodsReducer; /** * Creates a more convenient way to use `useReducer`. * Inspired by useMethods package * * @see https://github.com/pelotom/use-methods * * @param {any} methods * @param {any} initialState * @param {any} init * @return {Array} [state, actions, dispatch] */ function useMethodsReducer(methods, initialState, init = undefined) { const [state, dispatch] = React.useReducer((currentState, action) => { if (!Object.prototype.hasOwnProperty.call(methods, action.type)) { throw Error(`The action type ${action.type} is not exists`); } return methods[action.type](currentState, action.payload); }, initialState, init); return [state, generateActions(methods, dispatch), dispatch]; } /** * Bind all the actions to the dispatcher. * * @param {any} methods * @param {Function} dispatch * @return {{}} Actions */ function generateActions(methods, dispatch) { return Object.keys(methods).reduce((current, type) => { return { ...current, [type]: payload => dispatch({ type, payload }) }; }, {}); } /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/hooks/use-rest-data-list.js": /*!********************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/hooks/use-rest-data-list.js ***! \********************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; /* provided dependency */ var React = __webpack_require__(/*! react */ "react"); var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = useRestDataList; var _useMethodsReducer = _interopRequireDefault(__webpack_require__(/*! ./use-methods-reducer */ "../modules/forms/submissions/assets/js/admin/hooks/use-methods-reducer.js")); var _useRouterQueryString = _interopRequireDefault(__webpack_require__(/*! ./use-router-query-string */ "../modules/forms/submissions/assets/js/admin/hooks/use-router-query-string.js")); var _useDataAction = _interopRequireDefault(__webpack_require__(/*! ./use-data-action */ "../modules/forms/submissions/assets/js/admin/hooks/use-data-action.js")); const { useState, useEffect, useMemo } = React; /** * Default options for the use function * * @type {{useRouterQueryString: boolean, allowedFilters: Array}} */ const defaultOptions = { allowedFilters: [], useRouterQueryString: false, hooks: { afterFetch: () => {} } }; const defaultQueryArgs = ['order', 'order_by', 'page', 'per_page']; let currentFlatQuery = {}; /** * Main function * * @param {any} command * @param {Object} options * @return {{fetchData: any, data: any, meta: any, query: any, actions: {setOrder: any, setFilter: any, setPage: any}}} REST data */ function useRestDataList(command, options = {}) { options = { ...defaultOptions, ...options }; const queryArgs = [...defaultQueryArgs, ...options.allowedFilters], [{ data, meta }, setFetchResult] = useState({ data: [], meta: {} }), { query, flatQuery, actions: { setFilter, setPage, setOrder, setInitial } } = useQuery(), [routerQueryString, setRouterQueryString] = (0, _useRouterQueryString.default)(queryArgs); // There is a weird bug, when calling the fetch data function from another function // the flatQuery inside the function is an old version of the flatQuery and not the updated one. // this cause a wrong request to the server that retrieve a wrong result. currentFlatQuery = flatQuery; // The fetch data action. const [fetchData, { status: fetchDataStatus }] = (0, _useDataAction.default)((args, { abortController }) => $e.data.get(command, currentFlatQuery, { refresh: true, signal: abortController.signal }).then(response => setFetchResult(response.data)).then(() => options.hooks.afterFetch()), [command, flatQuery]); useEffect(() => { const queryStringResult = options.useRouterQueryString ? routerQueryString : {}; setInitial({ filter: { search: queryStringResult?.search || null, status: queryStringResult?.status || 'all', form: queryStringResult?.form || null, referer: queryStringResult?.referer || null, after: queryStringResult?.after || null, before: queryStringResult?.before || null }, page: queryStringResult.page || 1, perPage: queryStringResult.per_page || 50, order: { by: queryStringResult.order_by || 'created_at', direction: queryStringResult.order || 'desc' } }); }, []); // This effect runs every time the query object changes, and it fetch the data from the server. useEffect(() => { if (!query.ready) { return; } if (options.useRouterQueryString) { setRouterQueryString(flatQuery); } fetchData(); }, [flatQuery]); return { data, meta, query, flatQuery, fetchData, statuses: { fetchDataStatus }, actions: { setFilter, setOrder, setPage } }; } /** * A reducer for the query of the rest list fetch. * * @return {{perPage: any, page: number}|{filter: any, page: number}|{ready: boolean}|{page: any}|(any|{})|Array|{sort: any}} { query, flatQuery, actions } */ function useQuery() { const [query, actions] = (0, _useMethodsReducer.default)({ setFilter: (state, filter) => ({ ...state, page: 1, filter: { ...state.filter, ...filter } }), setPage: (state, page) => ({ ...state, page }), setPerPage: (state, perPage) => ({ ...state, page: 1, perPage }), setOrder: (state, order) => ({ ...state, order }), setInitial: (state, payload) => ({ ...state, ...payload, ready: true }) }, { ready: false, filter: {}, page: 1, perPage: null, order: { by: 'id', direction: 'desc' } }); const flatQuery = useMemo(() => { return Object.fromEntries(Object.entries({ ...query.filter, page: query.page, per_page: query.perPage, order: query.order.direction, order_by: query.order.by }).filter(([, value]) => { // Removes all the falsy values from the flatQuery. In JS empty array is not a falsy value // so there is a special case that checks array and removes it from the flatQuery if it is an empty array. if (Array.isArray(value) && 0 === value.length) { return false; } return !!value; })); }, [query]); return { query, flatQuery, actions }; } /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/hooks/use-router-query-string.js": /*!*************************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/hooks/use-router-query-string.js ***! \*************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; /* provided dependency */ var React = __webpack_require__(/*! react */ "react"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = useRouterQueryString; var _router = __webpack_require__(/*! @reach/router */ "../node_modules/@reach/router/es/index.js"); const { useEffect, useState } = React; /** * Manage the router query string base on "hash" history. * * @param {string[]} queryArgs * @return {Array} [ query, setQuery ] */ function useRouterQueryString(queryArgs = []) { const location = (0, _router.useLocation)(), [isLocationRead, setIsLocationRead] = useState(false), [query, setQuery] = useState(false); // Read the query string (only at first render) useEffect(() => { if (!location?.pathname || isLocationRead) { return; } const parsedQueryString = queryArgs.reduce((current, arg) => { const value = wp.url.getQueryArg(location.pathname, arg); if (undefined === value) { return current; } return { ...current, [arg]: value }; }, {}); setQuery(parsedQueryString); setIsLocationRead(true); }, [location]); // Update the query string based on the query. useEffect(() => { if (!query) { return; } const basePath = location.pathname.split('?')[0] || '/'; history.pushState(undefined, undefined, `#${wp.url.addQueryArgs(basePath, query)}`); }, [query]); return [query, setQuery]; } /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/hooks/use-watch.js": /*!***********************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/hooks/use-watch.js ***! \***********************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; /* provided dependency */ var React = __webpack_require__(/*! react */ "react"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = useWatch; const { useEffect, useRef } = React; function useWatch(callback, deps) { const isFirstRender = useRef(true); useEffect(() => { if (isFirstRender.current) { isFirstRender.current = false; return; } callback(); }, deps); } /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/notice-messages.js": /*!***********************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/notice-messages.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["default"] = void 0; var _i18n = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n"); const generalError = () => __('Something went wrong, please try again later.', 'elementor-pro'); var _default = exports["default"] = { trashed: { success: (count = 1) => (0, _i18n.sprintf)((0, _i18n._n)('%d submission moved to Trash.', '%d submissions moved to Trash.', count, 'elementor-pro'), count), error: generalError }, deleted: { success: (count = 1) => (0, _i18n.sprintf)((0, _i18n._n)('%d submission permanently deleted.', '%d submissions permanently deleted.', count, 'elementor-pro'), count), error: generalError }, updated: { success: (count = 1) => (0, _i18n.sprintf)((0, _i18n._n)('Submission has been successfully updated.', '%d submissions have been successfully updated.', count, 'elementor-pro'), count), error: generalError }, restored: { success: (count = 1) => (0, _i18n.sprintf)((0, _i18n._n)('%d submission restored from Trash.', '%d submissions restored from Trash.', count, 'elementor-pro'), count), error: generalError }, markedAsRead: { success: () => null, error: generalError }, markedAsUnread: { success: () => null, error: generalError }, actionLogs: { success: () => __('Action completed successfully.', 'elementor-pro'), failed: () => __('Action failed to run, please check your integration.', 'elementor-pro') } }; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/pages/index.js": /*!*******************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/pages/index.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"] = Index; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js")); var _checkbox = _interopRequireDefault(__webpack_require__(/*! ../components/checkbox */ "../modules/forms/submissions/assets/js/admin/components/checkbox/index.js")); var _dateFilter = _interopRequireDefault(__webpack_require__(/*! ../components/date-filter */ "../modules/forms/submissions/assets/js/admin/components/date-filter.js")); var _exportButton = _interopRequireDefault(__webpack_require__(/*! ../components/export-button */ "../modules/forms/submissions/assets/js/admin/components/export-button.js")); var _link = _interopRequireDefault(__webpack_require__(/*! ../components/link */ "../modules/forms/submissions/assets/js/admin/components/link.js")); var _linksFilter = _interopRequireDefault(__webpack_require__(/*! ../components/links-filter */ "../modules/forms/submissions/assets/js/admin/components/links-filter.js")); var _noticeMessages = _interopRequireDefault(__webpack_require__(/*! ../notice-messages */ "../modules/forms/submissions/assets/js/admin/notice-messages.js")); var _pagination = _interopRequireDefault(__webpack_require__(/*! ../components/pagination */ "../modules/forms/submissions/assets/js/admin/components/pagination.js")); var _refererFilter = _interopRequireDefault(__webpack_require__(/*! ../components/referer-filter */ "../modules/forms/submissions/assets/js/admin/components/referer-filter.js")); var _resourceFilter = _interopRequireDefault(__webpack_require__(/*! ../components/resource-filter */ "../modules/forms/submissions/assets/js/admin/components/resource-filter.js")); var _searchBox = _interopRequireDefault(__webpack_require__(/*! ../components/search-box */ "../modules/forms/submissions/assets/js/admin/components/search-box.js")); var _submissionRow = _interopRequireDefault(__webpack_require__(/*! ../components/submission-row */ "../modules/forms/submissions/assets/js/admin/components/submission-row.js")); var _useDataAction = _interopRequireWildcard(__webpack_require__(/*! ../hooks/use-data-action */ "../modules/forms/submissions/assets/js/admin/hooks/use-data-action.js")); var _useRestDataList = _interopRequireDefault(__webpack_require__(/*! ../hooks/use-rest-data-list */ "../modules/forms/submissions/assets/js/admin/hooks/use-rest-data-list.js")); var _wpTable = _interopRequireDefault(__webpack_require__(/*! ../components/wp-table */ "../modules/forms/submissions/assets/js/admin/components/wp-table/index.js")); var _bulkActionSelect = __webpack_require__(/*! ../components/bulk-action-select */ "../modules/forms/submissions/assets/js/admin/components/bulk-action-select.js"); var _useExport = __webpack_require__(/*! ../hooks/use-export */ "../modules/forms/submissions/assets/js/admin/hooks/use-export.js"); var _noticesContext = __webpack_require__(/*! ../context/notices-context */ "../modules/forms/submissions/assets/js/admin/context/notices-context.js"); var _settingsContext = __webpack_require__(/*! ../context/settings-context */ "../modules/forms/submissions/assets/js/admin/context/settings-context.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 && Object.prototype.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 { useMemo, useState } = _react.default; const ORDERABLE_CELLS = ['id', 'created_at', 'main_meta_id']; const STATUSES = [{ value: 'all', label: __('All', 'elementor-pro') }, { value: 'unread', label: __('Unread', 'elementor-pro') }, { value: 'read', label: __('Read', 'elementor-pro') }, { value: 'trash', label: __('Trash', 'elementor-pro') }]; function Index() { const { notifyError, notifySuccess } = (0, _noticesContext.useNoticesContext)(); const { isTrashEnabled } = (0, _settingsContext.useSettingsContext)(); const [checked, setChecked] = useState([]); const { data, meta, fetchData, flatQuery, query: { order, filter }, statuses: { fetchDataStatus }, actions: { setFilter, setOrder, setPage } } = (0, _useRestDataList.default)('form-submissions/index', { allowedFilters: ['search', 'status', 'form', 'referer', 'after', 'before'], useRouterQueryString: true, hooks: { afterFetch: () => setChecked([]) } }); const isTrashFilterOn = useMemo(() => 'trash' === filter.status, [filter.status]); const [exportSubmissions, exportOptions] = (0, _useExport.useExport)({ checked, filter }); const [updateRead] = (0, _useDataAction.default)(([query, isRead], { abortController }) => { if (!validateRestAction(query)) { return Promise.reject(); } const messages = _noticeMessages.default[isRead ? 'markedAsRead' : 'markedAsUnread']; return $e.data.update('form-submissions/index', { is_read: isRead }, query, { signal: abortController.signal }).then(result => notifySuccess(messages.success(result.data.meta?.affected || 1))).then(fetchData).catch(() => notifyError(messages.error())); }); const [restoreItems] = (0, _useDataAction.default)(([query], { abortController }) => { if (!validateRestAction(query)) { return Promise.reject(); } return $e.data.update('form-submissions/restore', {}, query, { signal: abortController.signal }).then(result => notifySuccess(_noticeMessages.default.restored.success(result.data.meta?.affected || 1))).then(fetchData).catch(() => notifyError(_noticeMessages.default.restored.error())); }); const [deleteItems] = (0, _useDataAction.default)(([query], { abortController }) => { if (!validateRestAction(query)) { return Promise.reject(); } const messages = _noticeMessages.default[query.force ? 'deleted' : 'trashed']; return $e.data.delete('form-submissions/index', query, { signal: abortController.signal }).then(result => notifySuccess(messages.success(result.data.meta?.affected || 1), query.force ? null : () => restoreItems(query))).then(fetchData).catch(() => notifyError(messages.error())); }); const rowActions = useMemo(() => [{ key: 'view', label: __('View', 'elementor-pro'), shouldShow: item => 'trash' !== item.status, props: item => ({ to: `/${item.id}`, // Override the default behavior of click event onClick: undefined }), component: _link.default }, { key: 'restore', label: __('Restore', 'elementor-pro'), onApply: item => restoreItems({ id: item.id }), shouldShow: item => 'trash' === item.status }, { key: 'trash', label: __('Trash', 'elementor-pro'), onApply: item => deleteItems({ id: item.id }), shouldShow: item => 'trash' !== item.status && isTrashEnabled, className: 'trash' }, { key: 'delete', label: __('Delete Permanently', 'elementor-pro'), onApply: item => deleteItems({ id: item.id, force: 1 }), shouldShow: item => 'trash' === item.status || !isTrashEnabled, className: 'trash' }, { key: 'read', label: __('Mark as Read', 'elementor-pro'), onApply: item => updateRead({ id: item.id }, true), shouldShow: item => 'trash' !== item.status && !item.is_read }, { key: 'unread', label: __('Mark as Unread', 'elementor-pro'), onApply: item => updateRead({ id: item.id }, false), shouldShow: item => 'trash' !== item.status && item.is_read }], []); const bulkActions = useMemo(() => { return [{ label: __('Mark as Read', 'elementor-pro'), value: 'read', onApply: () => updateRead({ ids: checked }, true), shouldShow: () => !isTrashFilterOn }, { label: __('Mark as Unread', 'elementor-pro'), value: 'unread', onApply: () => updateRead({ ids: checked }, false), shouldShow: () => !isTrashFilterOn }, { label: __('Move to Trash', 'elementor-pro'), value: 'trash', onApply: () => deleteItems({ ids: checked }), shouldShow: () => !isTrashFilterOn && isTrashEnabled }, { label: __('Delete Permanently', 'elementor-pro'), value: 'delete', onApply: () => deleteItems({ ids: checked, force: 1 }), shouldShow: () => isTrashFilterOn || !isTrashEnabled }, { label: __('Restore', 'elementor-pro'), value: 'restore', onApply: () => restoreItems({ ids: checked }), shouldShow: () => isTrashFilterOn }].filter(action => action.shouldShow()); }, [checked, isTrashFilterOn]); const tableTitles = useMemo(() => ({ main_meta_id: { label: __('Main', 'elementor-pro'), className: 'column-primary' }, actions_log_status: { label: __('Actions Status', 'elementor-pro'), className: 'column-actions' }, form: { label: __('Form', 'elementor-pro'), className: 'column-form' }, page: { label: __('Page', 'elementor-pro'), className: 'column-page' }, id: { label: __('ID', 'elementor-pro'), className: 'column-id' }, created_at: { label: __('Submission Date', 'elementor-pro'), className: 'column-date' } }), []); const headerFooterRow = /*#__PURE__*/_react.default.createElement(_wpTable.default.Row, null, /*#__PURE__*/_react.default.createElement(_wpTable.default.Cell, { className: "manage-column bulk-checkbox-column" }, /*#__PURE__*/_react.default.createElement(_checkbox.default.Bulk, { checkedGroup: checked, onChange: setChecked, allValues: data.map(checkedItem => checkedItem.id) })), Object.entries(tableTitles).map(([key, tableTitle]) => { const cellProps = { component: 'th', className: `manage-column ${tableTitle.className || ''}` }; if (ORDERABLE_CELLS.includes(key)) { return /*#__PURE__*/_react.default.createElement(_wpTable.default.OrderableCell, (0, _extends2.default)({}, cellProps, { key: key, order: { key, current: order, onChange: value => setOrder(value) } }), tableTitle.label); } return /*#__PURE__*/_react.default.createElement(_wpTable.default.Cell, (0, _extends2.default)({ key: key }, cellProps), tableTitle.label); })); const exportButton = /*#__PURE__*/_react.default.createElement("div", { className: "alignright" }, /*#__PURE__*/_react.default.createElement(_exportButton.default, { onClick: () => { exportSubmissions(_useExport.EXPORT_MODE_SELECTED === exportOptions.mode ? { ids: checked } : { ...flatQuery }, checked.length || meta.pagination?.total); }, isLoading: _useDataAction.STATUS_LOADING === exportOptions.status, progress: exportOptions.progress, mode: exportOptions.mode, disabled: !meta.pagination?.total && _useDataAction.STATUS_LOADING !== exportOptions.status })); const tablePagination = meta.pagination && /*#__PURE__*/_react.default.createElement(_pagination.default, { total: meta.pagination.total, currentPage: meta.pagination.current_page, lastPage: meta.pagination.last_page, perPage: meta.pagination.per_page, onChange: value => setPage(value) }); return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_searchBox.default, { key: 'search', value: filter.search, onChange: value => setFilter({ search: value }), isSearching: !!filter.search && fetchDataStatus === _useDataAction.STATUS_LOADING }), /*#__PURE__*/_react.default.createElement(_linksFilter.default, { options: STATUSES.map(({ value, label }) => ({ value, label, count: meta.count?.[value], shouldShow: 'all' === value || meta.count?.[value] > 0 })), value: filter.status, onChange: value => setFilter({ status: value }) }), /*#__PURE__*/_react.default.createElement("div", { className: "clear" }), /*#__PURE__*/_react.default.createElement("div", { className: "tablenav top" }, /*#__PURE__*/_react.default.createElement(_bulkActionSelect.BulkActionSelect, { actions: bulkActions, className: "alignleft" }), /*#__PURE__*/_react.default.createElement("div", { className: "alignleft actions" }, /*#__PURE__*/_react.default.createElement(_refererFilter.default, { value: filter.referer || '', onChange: value => setFilter({ referer: value }) }), /*#__PURE__*/_react.default.createElement(_resourceFilter.default, { value: filter.form || '', onChange: value => setFilter({ form: value }), options: [{ value: '', label: __('All Forms', 'elementor-pro') }], resourceOptions: { type: 'resource', command: 'forms/index', args: { context: 'options' } }, name: 'form', label: __('Filter by form', 'elementor-pro') }), /*#__PURE__*/_react.default.createElement(_dateFilter.default, { value: { after: filter.after, before: filter.before }, onChange: ({ after, before }) => { setFilter({ ...(after !== undefined ? { after } : {}), ...(before !== undefined ? { before } : {}) }); }, label: __('Filter by date', 'elementor-pro'), name: "date" })), exportButton, tablePagination), /*#__PURE__*/_react.default.createElement(_wpTable.default, { className: "e-form-submissions-list-table striped table-view-list" }, headerFooterRow && /*#__PURE__*/_react.default.createElement(_wpTable.default.Header, null, headerFooterRow), /*#__PURE__*/_react.default.createElement(_wpTable.default.Body, null, !['loading', 'idle'].includes(fetchDataStatus) && 0 === data.length && /*#__PURE__*/_react.default.createElement(_wpTable.default.Row, { className: "no-items" }, /*#__PURE__*/_react.default.createElement(_wpTable.default.Cell, { className: "colspanchange", colSpan: 7 }, __('No submissions found.', 'elementor-pro'))), data.map(item => { const filteredRowActions = rowActions.filter(action => action.shouldShow(item)); return /*#__PURE__*/_react.default.createElement(_submissionRow.default, { key: item.id, item: item, tableTitles: tableTitles, checkBoxComponent: /*#__PURE__*/_react.default.createElement(_checkbox.default, { checkedGroup: checked, onChange: setChecked, value: item.id }), rowActionComponent: /*#__PURE__*/_react.default.createElement(_wpTable.default.RowActions, { actions: filteredRowActions, item: item }) }); })), headerFooterRow && /*#__PURE__*/_react.default.createElement(_wpTable.default.Footer, null, headerFooterRow)), /*#__PURE__*/_react.default.createElement("div", { className: "tablenav bottom" }, /*#__PURE__*/_react.default.createElement(_bulkActionSelect.BulkActionSelect, { actions: bulkActions, className: "alignleft" }), exportButton, tablePagination))); } function validateRestAction(query) { return query.id || query.ids && query.ids.length > 0; } /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/pages/item.js": /*!******************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/pages/item.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"] = Item; var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); var _wpTable = _interopRequireDefault(__webpack_require__(/*! ../components/wp-table */ "../modules/forms/submissions/assets/js/admin/components/wp-table/index.js")); var _router = __webpack_require__(/*! @reach/router */ "../node_modules/@reach/router/es/index.js"); var _noticesContext = __webpack_require__(/*! ../context/notices-context */ "../modules/forms/submissions/assets/js/admin/context/notices-context.js"); var _postBox = _interopRequireDefault(__webpack_require__(/*! ../components/post-box */ "../modules/forms/submissions/assets/js/admin/components/post-box.js")); var _formActionsLog = _interopRequireDefault(__webpack_require__(/*! ../components/form-actions-log */ "../modules/forms/submissions/assets/js/admin/components/form-actions-log.js")); var _noticeMessages = _interopRequireDefault(__webpack_require__(/*! ../notice-messages */ "../modules/forms/submissions/assets/js/admin/notice-messages.js")); var _useDataAction = _interopRequireWildcard(__webpack_require__(/*! ../hooks/use-data-action */ "../modules/forms/submissions/assets/js/admin/hooks/use-data-action.js")); var _date = __webpack_require__(/*! ../utils/date */ "../modules/forms/submissions/assets/js/admin/utils/date.js"); var _submissionValue = _interopRequireDefault(__webpack_require__(/*! ../components/submission-value */ "../modules/forms/submissions/assets/js/admin/components/submission-value/index.js")); var _settingsContext = __webpack_require__(/*! ../context/settings-context */ "../modules/forms/submissions/assets/js/admin/context/settings-context.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 && Object.prototype.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; } /* eslint-disable jsx-a11y/anchor-is-valid */ const { useEffect, useState, useMemo } = _react.default; function Item(props) { const [{ data }, setFetchResult] = useState({ data: {}, meta: {} }), [error, setError] = useState(null), [isEditMode, setIsEditMode] = useState(false), [formData, setFormData] = useState({}), navigate = (0, _router.useNavigate)(), { notifySuccess, notifyError } = (0, _noticesContext.useNoticesContext)(), { isTrashEnabled } = (0, _settingsContext.useSettingsContext)(); const fields = useMemo(() => data.form?.fields.reduce((current, field) => ({ ...current, [field.id]: field }), {}), [data.form?.fields]); // Fetch a single submission on first render useEffect(() => { $e.data.get('form-submissions/index', { id: props.id }, { refresh: true }).then(result => { setFetchResult(result.data); return result.data; }).then(resultData => { if (resultData.data.is_read) { return; } // Mark the submission as read if is not read already $e.data.update('form-submissions/index', { is_read: true }, { id: props.id }); }).catch(e => setError(e)); }, []); // Move submission to trash const [deleteItem] = (0, _useDataAction.default)(([query = {}], { abortController }) => { const messages = _noticeMessages.default[query.force ? 'deleted' : 'trashed']; return $e.data.delete('form-submissions/index', { id: props.id, ...query }, { signal: abortController.signal }).then(() => notifySuccess(messages.success(1))).then(() => navigate('/')).catch(() => notifyError(messages.error())); }, [props.id]); // Update field values. const [update, { status: updateStatus }] = (0, _useDataAction.default)(([values]) => { return $e.data.update('form-submissions/index', { values }, { id: props.id }).then(result => setFetchResult(result.data)).then(() => { setIsEditMode(false); setFormData({}); }).then(() => notifySuccess(_noticeMessages.default.updated.success(1))).catch(() => notifyError(_noticeMessages.default.updated.error())); }, [props.id]); if (!Object.keys(data).length) { if (error) { return /*#__PURE__*/_react.default.createElement("p", null, " ", error.message || __('Not Found', 'elementor-pro'), " "); } return __('Loading...', 'elementor-pro'); } return /*#__PURE__*/_react.default.createElement("div", { id: "poststuff" }, /*#__PURE__*/_react.default.createElement("form", { id: "post-body", className: "metabox-holder columns-2", onSubmit: e => { e.preventDefault(); if (!isEditMode || updateStatus === _useDataAction.STATUS_LOADING) { return; } update(formData); } }, /*#__PURE__*/_react.default.createElement("div", { id: "post-body-content" }, /*#__PURE__*/_react.default.createElement("div", { className: "e-form-submissions-main" }, /*#__PURE__*/_react.default.createElement(_postBox.default, { header: /*#__PURE__*/_react.default.createElement("div", { className: "e-form-submissions-main__header" }, /*#__PURE__*/_react.default.createElement("h2", null, __('Submission', 'elementor-pro'), " #", data.id), /*#__PURE__*/_react.default.createElement("button", { onClick: e => { e.preventDefault(); if (updateStatus === _useDataAction.STATUS_LOADING) { return; } setIsEditMode(prev => !prev); }, className: "button button-secondary", type: "button", disabled: updateStatus === _useDataAction.STATUS_LOADING }, isEditMode ? __('Cancel', 'elementor-pro') : __('Edit', 'elementor-pro'))) }, /*#__PURE__*/_react.default.createElement(_wpTable.default, { className: "e-form-submissions-item-table" }, /*#__PURE__*/_react.default.createElement(_wpTable.default.Body, null, data.values?.length > 0 ? data.values.map(value => /*#__PURE__*/_react.default.createElement(_wpTable.default.Row, { key: value.id }, /*#__PURE__*/_react.default.createElement(_wpTable.default.Cell, null, fields?.[value.key]?.label || value.key), /*#__PURE__*/_react.default.createElement(_wpTable.default.Cell, null, /*#__PURE__*/_react.default.createElement(_submissionValue.default, { value: value.value, field: fields?.[value.key] || { id: value.key, type: 'text' }, isEditMode: isEditMode, onChange: (id, fieldValue) => setFormData(prev => ({ ...prev, [id]: fieldValue })) })))) : /*#__PURE__*/_react.default.createElement(_wpTable.default.Row, null, /*#__PURE__*/_react.default.createElement(_wpTable.default.Cell, { colSpan: "2" }, __('No data', 'elementor-pro'))))))), data.form_actions_log && /*#__PURE__*/_react.default.createElement(_formActionsLog.default, { actions: data.form_actions_log })), /*#__PURE__*/_react.default.createElement("div", { className: "postbox-container", id: "postbox-container-1" }, /*#__PURE__*/_react.default.createElement(_postBox.default, { header: /*#__PURE__*/_react.default.createElement("h2", null, __('Additional Info', 'elementor-pro'), " ") }, /*#__PURE__*/_react.default.createElement("div", { className: "submitbox" }, /*#__PURE__*/_react.default.createElement("div", { id: "misc-publishing-actions" }, data.post && /*#__PURE__*/_react.default.createElement("div", { className: "misc-pub-section" }, __('Form:', 'elementor-pro'), " ", /*#__PURE__*/_react.default.createElement("a", { href: data.post.edit_url, target: "_blank", rel: "noreferrer" }, data.form.name, " (#", data.form.element_id, ")")), /*#__PURE__*/_react.default.createElement("div", { className: "misc-pub-section" }, __('Page:', 'elementor-pro'), " ", /*#__PURE__*/_react.default.createElement("a", { href: data.referer, target: "_blank", rel: "noreferrer" }, data.referer_title || /*#__PURE__*/_react.default.createElement("i", { className: "eicon-editor-external-link e-form-submissions-referer-icon" }))), /*#__PURE__*/_react.default.createElement("div", { className: "misc-pub-section" }, __('Create Date:', 'elementor-pro'), " ", /*#__PURE__*/_react.default.createElement("strong", null, (0, _date.formatToLocalDateTime)(data.created_at))), /*#__PURE__*/_react.default.createElement("div", { className: "misc-pub-section" }, __('Update Date:', 'elementor-pro'), " ", /*#__PURE__*/_react.default.createElement("strong", null, (0, _date.formatToLocalDateTime)(data.updated_at))), data.user_name && /*#__PURE__*/_react.default.createElement("div", { className: "misc-pub-section" }, __('User Name:', 'elementor-pro'), " ", /*#__PURE__*/_react.default.createElement("strong", null, data.user_name)), data.user_ip && /*#__PURE__*/_react.default.createElement("div", { className: "misc-pub-section" }, __('User IP:', 'elementor-pro'), " ", /*#__PURE__*/_react.default.createElement("strong", null, data.user_ip)), data.user_agent && /*#__PURE__*/_react.default.createElement("div", { className: "misc-pub-section" }, __('User Agent:', 'elementor-pro'), " ", /*#__PURE__*/_react.default.createElement("strong", null, data.user_agent))), /*#__PURE__*/_react.default.createElement("div", { id: "major-publishing-actions" }, /*#__PURE__*/_react.default.createElement("div", { id: "delete-action" }, /*#__PURE__*/_react.default.createElement("a", { className: "submitdelete deletion", href: "#", onClick: e => { e.preventDefault(); deleteItem({ force: isTrashEnabled ? 0 : 1 }); } }, isTrashEnabled ? __('Move to Trash', 'elementor-pro') : __('Delete Permanently', 'elementor-pro'))), /*#__PURE__*/_react.default.createElement("div", { id: "publishing-action" }, /*#__PURE__*/_react.default.createElement("button", { type: "submit", name: "save", id: "publish", className: "button button-primary button-large", disabled: !isEditMode || updateStatus === _useDataAction.STATUS_LOADING }, __('Update', 'elementor-pro'))), /*#__PURE__*/_react.default.createElement("div", { className: "clear" })))))), /*#__PURE__*/_react.default.createElement("br", { className: "clear" })); } Item.propTypes = { id: PropTypes.string }; /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/utils/date.js": /*!******************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/utils/date.js ***! \******************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.formatToLocalDate = formatToLocalDate; exports.formatToLocalDateTime = formatToLocalDateTime; exports.formatToLocalTime = formatToLocalTime; const momentLocale = moment.localeData(); function formatToLocalDate(dateString) { return wp.date.format(momentLocale.longDateFormat('LL'), dateString); } function formatToLocalTime(dateString) { return wp.date.format(momentLocale.longDateFormat('LT'), dateString); } function formatToLocalDateTime(dateString) { return `${formatToLocalDate(dateString)} ${formatToLocalTime(dateString)}`; } /***/ }), /***/ "../modules/forms/submissions/assets/js/admin/utils/download-blob.js": /*!***************************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/utils/download-blob.js ***! \***************************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = downloadBlob; /** * A util function to make sure the user download the blob data. * * @param {any} blob * @param {string} filename */ function downloadBlob(blob, filename = '') { const link = document.createElement('a'); link.setAttribute('href', URL.createObjectURL(blob)); link.style.visibility = 'hidden'; if (filename) { link.setAttribute('download', filename); } document.body.appendChild(link); link.click(); document.body.removeChild(link); } /***/ }), /***/ "../node_modules/gud/index.js": /*!************************************!*\ !*** ../node_modules/gud/index.js ***! \************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; // @flow var key = '__global_unique_id__'; module.exports = function() { return __webpack_require__.g[key] = (__webpack_require__.g[key] || 0) + 1; }; /***/ }), /***/ "../node_modules/invariant/browser.js": /*!********************************************!*\ !*** ../node_modules/invariant/browser.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. */ /** * Use invariant() to assert state which your program assumes to be true. * * Provide sprintf-style format (only %s is supported) and arguments * to provide information about what broke and what you were * expecting. * * The invariant message will be stripped in production, but the invariant * will remain to ensure logic does not differ in production. */ var invariant = function(condition, format, a, b, c, d, e, f) { if (true) { if (format === undefined) { throw new Error('invariant requires an error message argument'); } } if (!condition) { var error; if (format === undefined) { error = new Error( 'Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.' ); } else { var args = [a, b, c, d, e, f]; var argIndex = 0; error = new Error( format.replace(/%s/g, function() { return args[argIndex++]; }) ); error.name = 'Invariant Violation'; } error.framesToPop = 1; // we don't care about invariant's own frame throw error; } }; module.exports = invariant; /***/ }), /***/ "../node_modules/object-assign/index.js": /*!**********************************************!*\ !*** ../node_modules/object-assign/index.js ***! \**********************************************/ /***/ ((module) => { "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"); } /***/ }), /***/ "../node_modules/reach-router-hash-history/index.js": /*!**********************************************************!*\ !*** ../node_modules/reach-router-hash-history/index.js ***! \**********************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ createHashSource: () => (/* binding */ createHashSource) /* harmony export */ }); // take some code from // https://github.com/ReactTraining/history/blob/master/modules/createHashHistory.js function getHashPath() { // We can't use window.location.hash here because it's not // consistent across browsers - Firefox will pre-decode it! const href = window.location.href; const hashIndex = href.indexOf('#'); return hashIndex === -1 ? '' : href.substring(hashIndex + 1); } function pushHashPath(path) { window.location.hash = '#' + path; } function replaceHashPath(path) { const hashIndex = window.location.href.indexOf('#'); window.location.replace( window.location.href.slice(0, hashIndex >= 0 ? hashIndex : 0) + '#' + path ); } let createHashSource = (initialPathname = '/') => { let index = 0; // let stack = [{ pathname: initialPathname, search: '' }]; // let states = []; return { get location() { return { pathname: getHashPath(), search: '' }; // return stack[index]; }, addEventListener(name, fn) { if (name === 'popstate') { window.addEventListener('hashchange', fn); } }, removeEventListener(name, fn) { if (name === 'popstate') { window.addEventListener('hashchange', fn); } }, history: { get entries() { return [{ pathname: getHashPath(), search: '' }]; // return stack; }, get index() { return index; }, get state() { return undefined; // return states[index]; }, pushState(state, _, uri) { pushHashPath(uri); // let [pathname, search = ''] = uri.split('?'); // index++; // stack.push({ pathname, search }); // states.push(state); }, replaceState(state, _, uri) { replaceHashPath(uri); // let [pathname, search = ''] = uri.split('?'); // stack[index] = { pathname, search }; // states[index] = state; } } }; }; /***/ }), /***/ "../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js": /*!*****************************************************************************!*\ !*** ../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js ***! \*****************************************************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ polyfill: () => (/* binding */ polyfill) /* harmony export */ }); /** * 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. */ function componentWillMount() { // Call this.constructor.gDSFP to support sub-classes. var state = this.constructor.getDerivedStateFromProps(this.props, this.state); if (state !== null && state !== undefined) { this.setState(state); } } function componentWillReceiveProps(nextProps) { // Call this.constructor.gDSFP to support sub-classes. // Use the setState() updater to ensure state isn't stale in certain edge cases. function updater(prevState) { var state = this.constructor.getDerivedStateFromProps(nextProps, prevState); return state !== null && state !== undefined ? state : null; } // Binding "this" is important for shallow renderer support. this.setState(updater.bind(this)); } function componentWillUpdate(nextProps, nextState) { try { var prevProps = this.props; var prevState = this.state; this.props = nextProps; this.state = nextState; this.__reactInternalSnapshotFlag = true; this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate( prevProps, prevState ); } finally { this.props = prevProps; this.state = prevState; } } // React may warn about cWM/cWRP/cWU methods being deprecated. // Add a flag to suppress these warnings for this special case. componentWillMount.__suppressDeprecationWarning = true; componentWillReceiveProps.__suppressDeprecationWarning = true; componentWillUpdate.__suppressDeprecationWarning = true; function polyfill(Component) { var prototype = Component.prototype; if (!prototype || !prototype.isReactComponent) { throw new Error('Can only polyfill class components'); } if ( typeof Component.getDerivedStateFromProps !== 'function' && typeof prototype.getSnapshotBeforeUpdate !== 'function' ) { return Component; } // If new component APIs are defined, "unsafe" lifecycles won't be called. // Error if any of these lifecycles are present, // Because they would work differently between older and newer (16.3+) versions of React. var foundWillMountName = null; var foundWillReceivePropsName = null; var foundWillUpdateName = null; if (typeof prototype.componentWillMount === 'function') { foundWillMountName = 'componentWillMount'; } else if (typeof prototype.UNSAFE_componentWillMount === 'function') { foundWillMountName = 'UNSAFE_componentWillMount'; } if (typeof prototype.componentWillReceiveProps === 'function') { foundWillReceivePropsName = 'componentWillReceiveProps'; } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') { foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps'; } if (typeof prototype.componentWillUpdate === 'function') { foundWillUpdateName = 'componentWillUpdate'; } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') { foundWillUpdateName = 'UNSAFE_componentWillUpdate'; } if ( foundWillMountName !== null || foundWillReceivePropsName !== null || foundWillUpdateName !== null ) { var componentName = Component.displayName || Component.name; var newApiName = typeof Component.getDerivedStateFromProps === 'function' ? 'getDerivedStateFromProps()' : 'getSnapshotBeforeUpdate()'; throw Error( 'Unsafe legacy lifecycles will not be called for components using new component APIs.\n\n' + componentName + ' uses ' + newApiName + ' but also contains the following legacy lifecycles:' + (foundWillMountName !== null ? '\n ' + foundWillMountName : '') + (foundWillReceivePropsName !== null ? '\n ' + foundWillReceivePropsName : '') + (foundWillUpdateName !== null ? '\n ' + foundWillUpdateName : '') + '\n\nThe above lifecycles should be removed. Learn more about this warning here:\n' + 'https://fb.me/react-async-component-lifecycle-hooks' ); } // React <= 16.2 does not support static getDerivedStateFromProps. // As a workaround, use cWM and cWRP to invoke the new static lifecycle. // Newer versions of React will ignore these lifecycles if gDSFP exists. if (typeof Component.getDerivedStateFromProps === 'function') { prototype.componentWillMount = componentWillMount; prototype.componentWillReceiveProps = componentWillReceiveProps; } // React <= 16.2 does not support getSnapshotBeforeUpdate. // As a workaround, use cWU to invoke the new lifecycle. // Newer versions of React will ignore that lifecycle if gSBU exists. if (typeof prototype.getSnapshotBeforeUpdate === 'function') { if (typeof prototype.componentDidUpdate !== 'function') { throw new Error( 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype' ); } prototype.componentWillUpdate = componentWillUpdate; var componentDidUpdate = prototype.componentDidUpdate; prototype.componentDidUpdate = function componentDidUpdatePolyfill( prevProps, prevState, maybeSnapshot ) { // 16.3+ will not execute our will-update method; // It will pass a snapshot value to did-update though. // Older versions will require our polyfilled will-update value. // We need to handle both cases, but can't just check for the presence of "maybeSnapshot", // Because for <= 15.x versions this might be a "prevContext" object. // We also can't just check "__reactInternalSnapshot", // Because get-snapshot might return a falsy value. // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior. var snapshot = this.__reactInternalSnapshotFlag ? this.__reactInternalSnapshot : maybeSnapshot; componentDidUpdate.call(this, prevProps, prevState, snapshot); }; } return Component; } /***/ }), /***/ "../node_modules/warning/warning.js": /*!******************************************!*\ !*** ../node_modules/warning/warning.js ***! \******************************************/ /***/ ((module) => { "use strict"; /** * Copyright (c) 2014-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. */ /** * Similar to invariant but only logs a warning if the condition is not met. * This can be used to log issues in development environments in critical * paths. Removing the logging code for production environments will keep the * same logic and follow the same code paths. */ var __DEV__ = "development" !== 'production'; var warning = function() {}; if (__DEV__) { var printWarning = function printWarning(format, args) { var len = arguments.length; args = new Array(len > 1 ? len - 1 : 0); for (var key = 1; key < len; key++) { args[key - 1] = arguments[key]; } var argIndex = 0; var message = 'Warning: ' + format.replace(/%s/g, function() { return args[argIndex++]; }); 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) {} } warning = function(condition, format, args) { var len = arguments.length; args = new Array(len > 2 ? len - 2 : 0); for (var key = 2; key < len; key++) { args[key - 2] = arguments[key]; } if (format === undefined) { throw new Error( '`warning(condition, format, ...args)` requires a warning ' + 'message argument' ); } if (!condition) { printWarning.apply(null, [format].concat(args)); } }; } module.exports = warning; /***/ }), /***/ "react": /*!************************!*\ !*** external "React" ***! \************************/ /***/ ((module) => { "use strict"; module.exports = React; /***/ }), /***/ "@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() { module.exports = _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }, module.exports.__esModule = true, module.exports["default"] = module.exports; return _extends.apply(this, 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(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }) /******/ }); /************************************************************************/ /******/ // The module cache /******/ var __webpack_module_cache__ = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ var cachedModule = __webpack_module_cache__[moduleId]; /******/ if (cachedModule !== undefined) { /******/ return cachedModule.exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = __webpack_module_cache__[moduleId] = { /******/ // no module.id needed /******/ // no module.loaded needed /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = __webpack_modules__; /******/ /************************************************************************/ /******/ /* webpack/runtime/compat get default export */ /******/ (() => { /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = (module) => { /******/ var getter = module && module.__esModule ? /******/ () => (module['default']) : /******/ () => (module); /******/ __webpack_require__.d(getter, { a: getter }); /******/ return getter; /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/create fake namespace object */ /******/ (() => { /******/ var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__); /******/ var leafPrototypes; /******/ // create a fake namespace object /******/ // mode & 1: value is a module id, require it /******/ // mode & 2: merge all properties of value into the ns /******/ // mode & 4: return value when already ns object /******/ // mode & 16: return value when it's Promise-like /******/ // mode & 8|1: behave like require /******/ __webpack_require__.t = function(value, mode) { /******/ if(mode & 1) value = this(value); /******/ if(mode & 8) return value; /******/ if(typeof value === 'object' && value) { /******/ if((mode & 4) && value.__esModule) return value; /******/ if((mode & 16) && typeof value.then === 'function') return value; /******/ } /******/ var ns = Object.create(null); /******/ __webpack_require__.r(ns); /******/ var def = {}; /******/ leafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)]; /******/ for(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) { /******/ Object.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key]))); /******/ } /******/ def['default'] = () => (value); /******/ __webpack_require__.d(ns, def); /******/ return ns; /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/define property getters */ /******/ (() => { /******/ // define getter functions for harmony exports /******/ __webpack_require__.d = (exports, definition) => { /******/ for(var key in definition) { /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); /******/ } /******/ } /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/ensure chunk */ /******/ (() => { /******/ __webpack_require__.f = {}; /******/ // This file contains only the entry chunk. /******/ // The chunk loading function for additional chunks /******/ __webpack_require__.e = (chunkId) => { /******/ return Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => { /******/ __webpack_require__.f[key](chunkId, promises); /******/ return promises; /******/ }, [])); /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/get javascript chunk filename */ /******/ (() => { /******/ // This function allow to reference async chunks /******/ __webpack_require__.u = (chunkId) => { /******/ // return url for filenames not based on template /******/ if (chunkId === "jszip.vendor") return "" + chunkId + ".a3c65615c1de5560962d.bundle.js"; /******/ // return url for filenames based on template /******/ return undefined; /******/ }; /******/ })(); /******/ /******/ /* 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; /******/ } /******/ })(); /******/ })(); /******/ /******/ /* webpack/runtime/hasOwnProperty shorthand */ /******/ (() => { /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) /******/ })(); /******/ /******/ /* webpack/runtime/load script */ /******/ (() => { /******/ var inProgress = {}; /******/ var dataWebpackPrefix = "elementor-pro:"; /******/ // loadScript function to load a script via script tag /******/ __webpack_require__.l = (url, done, key, chunkId) => { /******/ if(inProgress[url]) { inProgress[url].push(done); return; } /******/ var script, needAttach; /******/ if(key !== undefined) { /******/ var scripts = document.getElementsByTagName("script"); /******/ for(var i = 0; i < scripts.length; i++) { /******/ var s = scripts[i]; /******/ if(s.getAttribute("src") == url || s.getAttribute("data-webpack") == dataWebpackPrefix + key) { script = s; break; } /******/ } /******/ } /******/ if(!script) { /******/ needAttach = true; /******/ script = document.createElement('script'); /******/ /******/ script.charset = 'utf-8'; /******/ script.timeout = 120; /******/ if (__webpack_require__.nc) { /******/ script.setAttribute("nonce", __webpack_require__.nc); /******/ } /******/ script.setAttribute("data-webpack", dataWebpackPrefix + key); /******/ /******/ script.src = url; /******/ } /******/ inProgress[url] = [done]; /******/ var onScriptComplete = (prev, event) => { /******/ // avoid mem leaks in IE. /******/ script.onerror = script.onload = null; /******/ clearTimeout(timeout); /******/ var doneFns = inProgress[url]; /******/ delete inProgress[url]; /******/ script.parentNode && script.parentNode.removeChild(script); /******/ doneFns && doneFns.forEach((fn) => (fn(event))); /******/ if(prev) return prev(event); /******/ } /******/ var timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000); /******/ script.onerror = onScriptComplete.bind(null, script.onerror); /******/ script.onload = onScriptComplete.bind(null, script.onload); /******/ needAttach && document.head.appendChild(script); /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/make namespace object */ /******/ (() => { /******/ // define __esModule on exports /******/ __webpack_require__.r = (exports) => { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/publicPath */ /******/ (() => { /******/ var scriptUrl; /******/ if (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + ""; /******/ var document = __webpack_require__.g.document; /******/ if (!scriptUrl && document) { /******/ if (document.currentScript) /******/ scriptUrl = document.currentScript.src; /******/ if (!scriptUrl) { /******/ var scripts = document.getElementsByTagName("script"); /******/ if(scripts.length) { /******/ var i = scripts.length - 1; /******/ while (i > -1 && !scriptUrl) scriptUrl = scripts[i--].src; /******/ } /******/ } /******/ } /******/ // When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration /******/ // or pass an empty string ("") and set the __webpack_public_path__ variable from your code to use your own logic. /******/ if (!scriptUrl) throw new Error("Automatic publicPath is not supported in this browser"); /******/ scriptUrl = scriptUrl.replace(/#.*$/, "").replace(/\?.*$/, "").replace(/\/[^\/]+$/, "/"); /******/ __webpack_require__.p = scriptUrl; /******/ })(); /******/ /******/ /* webpack/runtime/jsonp chunk loading */ /******/ (() => { /******/ // no baseURI /******/ /******/ // object to store loaded and loading chunks /******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched /******/ // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded /******/ var installedChunks = { /******/ "form-submission-admin": 0 /******/ }; /******/ /******/ __webpack_require__.f.j = (chunkId, promises) => { /******/ // JSONP chunk loading for javascript /******/ var installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined; /******/ if(installedChunkData !== 0) { // 0 means "already installed". /******/ /******/ // a Promise means "currently loading". /******/ if(installedChunkData) { /******/ promises.push(installedChunkData[2]); /******/ } else { /******/ if(true) { // all chunks have JS /******/ // setup Promise in chunk cache /******/ var promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject])); /******/ promises.push(installedChunkData[2] = promise); /******/ /******/ // start chunk loading /******/ var url = __webpack_require__.p + __webpack_require__.u(chunkId); /******/ // create error before stack unwound to get useful stacktrace later /******/ var error = new Error(); /******/ var loadingEnded = (event) => { /******/ if(__webpack_require__.o(installedChunks, chunkId)) { /******/ installedChunkData = installedChunks[chunkId]; /******/ if(installedChunkData !== 0) installedChunks[chunkId] = undefined; /******/ if(installedChunkData) { /******/ var errorType = event && (event.type === 'load' ? 'missing' : event.type); /******/ var realSrc = event && event.target && event.target.src; /******/ error.message = 'Loading chunk ' + chunkId + ' failed.\n(' + errorType + ': ' + realSrc + ')'; /******/ error.name = 'ChunkLoadError'; /******/ error.type = errorType; /******/ error.request = realSrc; /******/ installedChunkData[1](error); /******/ } /******/ } /******/ }; /******/ __webpack_require__.l(url, loadingEnded, "chunk-" + chunkId, chunkId); /******/ } /******/ } /******/ } /******/ }; /******/ /******/ // no prefetching /******/ /******/ // no preloaded /******/ /******/ // no HMR /******/ /******/ // no HMR manifest /******/ /******/ // no on chunks loaded /******/ /******/ // install a JSONP callback for chunk loading /******/ var webpackJsonpCallback = (parentChunkLoadingFunction, data) => { /******/ var [chunkIds, moreModules, runtime] = data; /******/ // add "moreModules" to the modules object, /******/ // then flag all "chunkIds" as loaded and fire callback /******/ var moduleId, chunkId, i = 0; /******/ if(chunkIds.some((id) => (installedChunks[id] !== 0))) { /******/ for(moduleId in moreModules) { /******/ if(__webpack_require__.o(moreModules, moduleId)) { /******/ __webpack_require__.m[moduleId] = moreModules[moduleId]; /******/ } /******/ } /******/ if(runtime) var result = runtime(__webpack_require__); /******/ } /******/ if(parentChunkLoadingFunction) parentChunkLoadingFunction(data); /******/ for(;i < chunkIds.length; i++) { /******/ chunkId = chunkIds[i]; /******/ if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) { /******/ installedChunks[chunkId][0](); /******/ } /******/ installedChunks[chunkId] = 0; /******/ } /******/ /******/ } /******/ /******/ var chunkLoadingGlobal = self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []; /******/ chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0)); /******/ chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal)); /******/ })(); /******/ /************************************************************************/ var __webpack_exports__ = {}; // This entry need to be wrapped in an IIFE because it need to be in strict mode. (() => { "use strict"; /*!*************************************************************!*\ !*** ../modules/forms/submissions/assets/js/admin/admin.js ***! \*************************************************************/ var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); var _component = _interopRequireDefault(__webpack_require__(/*! ./data/component */ "../modules/forms/submissions/assets/js/admin/data/component.js")); var _formsComponent = _interopRequireDefault(__webpack_require__(/*! ./data/forms-component */ "../modules/forms/submissions/assets/js/admin/data/forms-component.js")); var _app = _interopRequireDefault(__webpack_require__(/*! ./app */ "../modules/forms/submissions/assets/js/admin/app.js")); $e.components.register(new _component.default()); $e.components.register(new _formsComponent.default()); const AppWrapper = elementorCommon.config.isDebug ? _react.default.StrictMode : _react.default.Fragment; // eslint-disable-next-line react/no-deprecated ReactDOM.render( /*#__PURE__*/_react.default.createElement(AppWrapper, null, /*#__PURE__*/_react.default.createElement(_app.default, null)), document.getElementById('e-form-submissions')); })(); /******/ })() ; //# sourceMappingURL=form-submission-admin.js.map Verde Casino️1200 Eur + 220 Rotiri Gratuit 2025 - New Kenya Digital Parliament

Verde Casino️1200 Eur + 220 Rotiri Gratuit 2025

Oferte Bonus De Cazino Gratuite Fără Depunere Disponibile Pentru Jucătorii Români La Frank Casino

Citește condițiile para utilizare și” “poți începe să les joci pe bani fără depunere. Bazându-ne pe experiența noastră, cel mai întâlnit cadou de are generally automatele de joc este Verde Online casino rotiri gratuite. Trei simboluri promo care apar oriunde premature climax ecran sunt suficiente pentru a activa această funcție. Rotirile vor fi rapid climax seama cazinoului, iar câștigurile vor putea trece în balanța dvs. Criticii și jucătorii obișnuiți își lasă comentariile despre Casino Verde premature climax portaluri tematice.

  • Indiferent că ești pasionat de jocuri de noroc sau că îți dorești să încerci experiența cazinourilor online, aje ajuns în locul potrivit.
  • Atâta vreme cât principala konstruera preocupare este să găsești un cazino online licențiat ONJN cu oferte bune fara sa fie nevoie sa depui bani reali, ai putea crede că nu mai elizabeth nevoie să ții cont și de alte criterii.
  • Membrii noi care completează cu succes verificarea contului, primesc 600 rotiri gratuite fără depunere la Shining Overhead.

Site-ul este foarte uşor de navigat, iar jocurile sunt independent în diverse categorii. Acest aspect simplifică foarte mult lucrurile, întrucât vă se till att du är fi foarte uşor să aflaţi detalii despre bonusurile oferite, despre programul para fidelitate, şi veţi putea găsi foarte” “quick jocurile preferate. Urmând acești pași simpli, veți fi premature climax drumul cel bun pentru a vă bucura de bonusurile generoase pe care NineCasino le usually are de oferit. Fie că optezi pentru rotirile gratuite mutterschwein pentru bonusul de potrivire, aceste oferte promoționale sunt concepute pentru a-ți îmbunătăți experiența de joc încă de una început. Nu uitați să vă verificați e-mailul pentru the vă asigura eligibilitatea pentru aceste recompense atrăgătoare.

Bonus Casino Fără Depunere Gets Bet

De asemenea, vedem campanii create în jurul unui mini-joc proper care determină aleatoriu ce jocuri fără depunere ai norocul să încerci. Majoritatea promoțiilor propun cerințe sobre rulaj între something like 20 – 50 sobre ori suma câștigată. La polul gyvas, se află ofertele care au eliminat complet factorul sobre” “rulaj, iar jucătorii pot retrage întreaga sumă câștigată. Un added bonus fără rulaj funcționează după aceleași standarde, dar creditul acordat la păcănele fără depunere se transferă automat în balanța reală după votre a fost jucat cod promotional verde casino.

  • Alegeți din selecția noastră de oferte exclusive pentru o experiență de joc excepțională și beneficii semnificative.
  • Cerințele privind confirmarea identității
  • Rotiri treatment sunt jucate florida bani bonus los angeles anumite jocuri stabilite de operatorul para cazino.
  • Nu rata deci niciodata ocazia de a juca la acest gambling establishment cu bonus fara depunere.

În unele cazuri se pot acordă rotiri gratuite fără rulaj, ceea ce înseamnă că orice câștig se obține este creditat imediat în balanța reală a contului sobre joc. Noi cazinouri continuă să mizeze pe acest hint de bonus pentru a menține los angeles cote ridicate interesul membrilor. Multe cazinouri impun cerințe de pariere, care vă obligă să jucați o anumită sumă sobre bani înainte para a putea retrage câștigurile. De asemenea, există adesea to limită de vreme în care bonusul trebuie utilizat și jocuri specifice los angeles care poate fi aplicat bonusul. Bonusurile fără depunere sunt unele dintre cele mai atractive oferte promoționale ale cazinourilor online, concepute pentru a atrage noi clienți și a-i motiva să exploreze serviciile cazinoului.

Cerințe De Rulaj Pentru Rotirile Gratuite

Acest tip sobre bonus este conceput pentru jucătorii existenți pentru a-i menține interesați și activi pe site. Cel mai adesea, astfel de bonusuri sunt oferite conturilor tinere și jucătorilor activi care depun în mod regulat. Cele mai multe bonusuri de bun venit fără depunere includ bonusuri în bani, rotiri gratuite mutterschwein fonduri suplimentare fără a fi necesară efectuarea unui pariu. De regulă, aceste oferte vin pe mail, deci să fii atent, iar uneori să verifici și spamul, dacă ai cont para Yahoo.

Este vorba, asa cum ii spune si denumirea, despre un bonus 100% gratuit, rapid climax care il vei primi fara social fear scoti niciun suspend din buzunar (nu este necesar vreun depozit din partea ta). Indiferent de bonusul pe treatment îl alegi, asigură-te că urmezi pașii de revendicare și joacă responsabil pentru a profita sobre câștigurile obținute. Selectează oferta care ți se potrivește și bucură-te de toate avantajele care vin la pachet cu oferta fără depunere Prima Casino.

Verde On Line Casino Securitatea Și Siguranță

Cele mai multe oferte specifica o anumita suma minima para depunere necesara pentru incasarea rotirilor gratis. Pentru a atrage jucatori noi pe site, un agent trebuie sa fie cu adevarat bun, sa ofere servicii si produse sobre cea mai inalta calitate si social fear se ridice macar la nivelul concurentilor. Betfair este algun operator renumit inside intreaga lume pentru ca ofera cea mai buna platforma de betting trade si printre putinele disponibile in momentul de fata. 888 este unul dintre cele mai cunoscute branduri la estrato mondial din organizzazione jocurilor de noroc, deci prezenta lo pe piata noise Romania n-are” “cum sa fie altfel decat un litorale plus pentru jucatori. Probabil stii aimana ca PokerStars exista sponsorul unora dintre cele mai mari turnee de holdem poker din lume, fiind renumit in mediul online intocmai pentru sectiunea de holdem poker pe care u ofera.

  • Noi cazinouri continuă să mizeze pe acest hint de reward pentru a menține los angeles cote ridicate interesul membrilor.
  • Pe site-ul nostru veți găsi o selecție extinsă de gambling establishment online bonus fara depunere care oferă bonusuri fără depunere pentru jucătorii români.
  • In plus, ce este cuando mai interesant exista faptul ca poti” “interactiona printr-un chat are living atat cu ceilalti jucatori de los angeles masa, cat si cu dealerul proper care organizeaza acel joc.
  • Pe această pagină, veți găsi o selecție diversificată de bonusuri fără depunere oferite de cazinourile online.
  • Oricum acest pas para verificare este obligatoriu prin lege, deci va trebui sa-l indeplinesti la des semaines dat pentru a new putea continua distractia pe site.

Revendică algun reward fără depunere la BetMen Gambling establishment cu” “169 de rotiri gratuite pentru verificarea contului, la Major Striper Christmas Bash Câștigă până are typically 300 RON fără depunere. Consultarea termenilor și condițiilor promoționale, dar și some sort of new celor capo alcohol bonusurilor ajută jucătorul să ruleze bonusul în imod corect. Acesta veterans administration afla care sunt jocurile restricționate, treatment categorii de jocuri nu oferă o contribuție avantajoasă și toate informațiile necesare parierii corecte a bonusului. Rulajul bonificației exista necesar pentru ca jucătorul să poată converti banii benefit în bani reali.

Cine Poate Primi Bonusul Fără Depunere De La Licencioso Casino?

Este important ca aceste bonusuri să fie nu doar atractive, ci și echitabile, cu termeni și condiții clar expuse, permițând jucătorilor să beneficieze efectiv sobre aceste oferte fără surprize neplăcute. Bonusul de bun venit fără depunere este o promoție specială destinată jucătorilor noi, care le da voie să înceapă să joace în cazinou fără a fi nevoiți să facă o depunere inițială. Acest tip para bonus oferă fie o sumă de bani, fie rotiri gratuite, utilizabile pentru a explora variedade de jocuri disimpegnato în cazinou. Pariul la nivelul sobre x30-35 este considerat standard, iar jucătorii pot rămâne rapid climax plus dacă aleg un slot cu o valoare RTP ridicată. În situatie unui pariu mai mare, de exemplu de la x35 și peste, condițiile devin mai greu de îndeplinit, ceder cazinourile din România oferă coduri benefit casino fara depunere mai mari sobre” “300%, 400% sau chiar 500% din depozit.

  • Într-una noise zile am reușit să acumulez tufo 800 RON din rotirile gratuite cadou, bani pe attention i-am retras.
  • Cu aceasta, va trebui să plasezi pariuri de câteva ori mai mari decât” “conjunto inițială.
  • Utilizatorii nu sunt taxați de CasinoHEX. ro Comisioanele pe care the primim pentru brand-urile de marketing just nu afectează experiența de joc a unui utilizator.
  • Oferă Licencioso Casino bonus “banii înapoi” se adresează doar membrilor activi, care fac” “lado din Programul para Fidelitate (minim statutul Leprechaun) și attention au depus minim 80 Ron în săptămâna anterioară calculării bonusului cashback.
  • Procesul de înregistrare este de obicei simplu, implicând prezentarea detaliilor personale și acceptarea termenilor și condițiilor cazinoului.

Verde Casino incorporate o secţiune vastă de jocuri para noroc, iar datorită platformei intuitive vă va fi foarte uşor să găsiţi titlurile preferate. De asemenea, dat fiind faptul că jocurile” “au fost realizate sobre companii renumite, acestea au fost testate de agenţii independente. Acest lucru înseamnă că puteţi fi siguri că sobre fiecare dată când accesaţi unul dintre jocurile de pe site-ul Verde Gambling establishment acesta va fi 100% corect. Site-ul a fost recomandat de un prieten, căruia îi sunt recunoscător pentru sfat.

Pot Activa Toate Cele Trei Bonusuri Fără Depunere Prima Casino?

Singura diferenta dintre ele este numarul total de linii de plata, deoarece within rest jocurile functioneaza identic. Mai mult decat atat, inside timpul jocului bonus toate Wild-urile pot aduce dupa ele si multiplicatori de castig de 2x sau 3x, time in care profitul poate fi unul fabulos. Daca vei incasa un added bonus gratis pentru slotul The Dog House MegaWays, atunci vei patrunde intr-o lume a cainilor, principalele rase intalnite fiind Rottweiler, Shih Tzu, Pug-dog si Teckel. Un alt slot cu septari si fructe, dar de data aceasta foarte simplu este Sizzling Sizzling Deluxe de la Novomatic. Si aceasta pacanea era prezenta first pe aparatele de jocuri din salile stradale, iar in acest moment si-a facut prezenta si in mediul online.

  • Fiecare jucător nou la cazinoul nostru Verde reprezintă um șansa de some sort of ne demonstra loialitatea și determinarea para a oferi u experiență grozavă.
  • În plus, site-ul para cazinou online exista certificat eCOGRA și protejat de MacAfee.
  • Te poți înscrie la cazinoul nostru și folosind profilul de pe rețelele de socializare mutterschwein Gmail.
  • Prin utilizarea Nine casino bonus code NINE20 în timpul procesului de înregistrare some sort of contului, jucătorii deblochează o recompensă tentantă de 20 sobre rotiri gratuite fără a fi nevoie să facă un depozit.
  • El este exprimat subwoofer forma de multiplicator al bonusului si de regula vei intalni rulaje cuprinse intre 20x dans le cas où 60x.

In schimb, dupa ce vei incepe sa joci los angeles Unibet Casino vor incepe sa apara si bonusurile sans frais ce vor fi acordate in concordanta cu activitatea inregistrata de tine rapid climax site. Las Vegas cauta mereu sa iasa in evidenta pe piata jocurilor de noroc on the internet prin intermediul campaniilor sale de bonusare atractive, dar cuando diverselor inovatii pe care le lanseaza. Este deci to platforma pe care merita cu siguranta sa te inscrii, mai ales daca primesti si algun bonus la inregistrare fara depunere cuando pe care just nu te vei plictisi niciodata. Bucurandu-se para o mare apreciere din partea romanilor, evident ca Superbet nu rateaza bonusurile fara depunere, care sunt disponibile intotdeauna pentru jucatorii care isi deschid cont nou pe internet site, dar si pentru clientii existenti. In cele mai multe cazuri rulajul e necesar realizat in seven zile din momentul in care ai incasat bonusul, conceder poti intalni oferte care iti acorda 30 zile sau chiar 100 zile pentru indeplinirea cerintelor impuse. Este foarte important sa tii cont si sa analizezi cerintele para pariere, fiindca acestea vor determina daca te alegi sau nu cu income” “inside bani cash in urma bonusului.

Promoția Primului Depozit – 100% Meci Până Are Generally 150 € + 250 De Rotiri Gratuite

Atunci când alegeți cel in nessun caso bun bonus fără depunere la algun cazinou online noise România, este significant să studiați termenii și condițiile para pariere ale acestuia. Aceștia ar trebui să fie realiști, astfel încât jucătorii să își poată retrage câștigurile după utilizarea fondurilor freespins sau bonus. Freespins sunt exclusive sloturilor și permit jucătorilor să învârtă rolele în aparate, câștigând premii reale. De obicei, un cazinou va oferi freespins pentru o listă limitată de sloturi, care poate contain cele mai populare jocuri de pe site sau algun slot nou pentru a fi prezentat jucătorilor.

  • Așadar, o mare bilă albă pentru Betano, un owner pe val în ultimii ani, foarte bine dotat los angeles toate capitolele – pariuri, jocuri sobre cazino și are living cazino.
  • De obicei, suma acestor bonusuri nu depășește 55 RON, ceea ce face ca pierderea lor să fie mai puțin palpabilă.
  • La Verde Casino, timpul de retragere variază în funcție para metoda de plată aleasă și alți factori care weed influența procesul.
  • La um prima impresie, aje putea spune că nu contează cum arată un site, atâta timp cât oferă promoții și bonusuri apetisante.
  • Ele fac referire are generally numarul minim de pronosticuri pe attention trebuie sa votre contina biletul, precum si la cotele minime ale acestora sau la altitud totala a biletului.
  • Câștigurile din aceste rotiri gratuite nu au cerințe para rulaj, iar adición maximă votre poate fi câștigată exista sobre five-hundred RON.

Evaluăm disponibilitatea și eficacitatea suportului pentru clienți oferit para cazinouri, inclusiv opțiunile sobre contact, promptitudinea răspunsurilor și calitatea asistenței furnizate. Verificăm măsurile de securitate implementate de cazinouri pentru a apara informațiile personale și financiare” “light beverage utilizatorilor. Rotirile sans frais sunt valabile vreme de 3 zile, iar câștigurile create de acestea au un rulaj de 40x. Tot ce trebuie sa faci este sa indeplinesti conditiile de pariere in timp util. In acest skavanker bonusul va fi convertit in bani cash, bani premature climax care apoi 2 poti scoate din cont folosind mi dintre metodele sobre plata disponibile. De asemenea, sloturile entre ma NoLimit City sunt renumite printre jucatorii romani datorita castigurilor uriase pe care le pot oferi, astfel ca sunt jocuri ideale pentru care sa incasezi la casino reward fara depunere.

Betfair Casino

Trifoiul cu four foi este algun lucru care ze spune ca aduce noroc, astfel california acest simbol ze regaseste si within multe sloturi video clip din cazinouri. Astfel, cazinourile iti pot oferi atat sansa de a cumpara gratuit (fara bani) un anumit numar de tichete, cat si o suma de bani prin intermediul careia social fear cumperi biletele dorite. Chiar daca numele acestui operator ght duce automat cu gandul la pariuri sportive, totusi platforma sa include dans le cas où jocuri de cazinou si se prezinta per total foarte bine la majoritatea capitolelor importante. Desi bonusurile fara depozit nu sunt tocmai punctul forte ing operatorului PokerStars, totusi din cand in cand sunt lansate si asemenea oferte pe care n-ar trebui sa votre ratezi.

  • In ultimul timp cazinourile online au inceput sa aiba inside oferta si varianta de bonus fără depunere și fără rulaj.
  • Bonusul de bun venit fără depunere este o promoție specială destinată jucătorilor noi, care le permite să înceapă să joace în cazinou fără a fi nevoiți să facă o depunere inițială.
  • Nu e necesar întotdeauna să fii un jucător nou pentru a obține un bonus fără depunere, deși aceste bonusuri sunt în principal destinate membrilor noi.
  • Bine ai venit rapid climax pagina noastră dedicată bonus fara depunere la cazinouri on the web legale in România!

Pe Casino. com. ro vrem să îți oferim întotdeauna topul celor mai bune oferte ale cazinourilor online fără depunere din România. Cu acest gând în minte am creat paginile noastre sub forma unor liste care ierarhizează site-urile de jocuri, începând cu cel mai înalt nivel de calitate al experienței până la site-uri de nișă mutterschwein aflate încă în dezvoltare. Indiferent dacă vrei să-ți maximizezi valoarea bonusului sau doar să eviți greșelile comune, această abordare te virtual assistant ajuta să folosești eficient bonusurile fără depunere și să-ți păstrezi câștigurile. De obicei, codul benefit fără depunere exista valabil pentru jocurile foarte cunoscute, sperm sunt Shining Top și Gates associated with Olympus demo. Joacă la orice slot machine și plasează pariuri de un anumit număr de ori pentru a rula cerințele de rulaj ale bonusului. Cel mai ușor este să faci acest lucru în modul automat la sloturile Hold & Get, unde câștigurile sunt acordate frecvent.

Cum Evaluăm Cazinourile Online Care Oferă Bonusuri Fără Depunere În 2024?

După ce completezi formularul, urmeză pașii specifici fiecărui cazinou în” “parte, iar aici nenni referim la normele legale ce e necesar respectate atât de tine ca jucător, cât și para cazinou. Sloturile oferă adesea bonusuri, de multe ori subwoofer formă de Inexperto Casino free moves – acestea sunt acordate atunci când apare o anumită combinație de simboluri. Aplicați bonusuri los angeles sloturi și folosiți cupoane pentru the primi și in nessun caso multe cadouri. Ofertele avantajoase prin cupoane conțin cele no mari bonusuri proper care pot fi colectate în club. Găsește coduri promoționale premature climax platforme tematice și în e-mailuri și aplică-le cât mai repede aici.

  • Acest lucru ze datoreaza atat bonusurilor fara depozit premature climax care le ofera clientilor, cat cuando platformei de joc moderne si sobre cea mai buna calitate.
  • Aceste rotiri pot fi jucate pe to selecție de jocuri specifice, îmbogățindu-vă primele zile de joc la Nine Gambling establishment.
  • De exemplu, bonusurile pot fi legate de evenimente sportive majore precum EUROPÄISCHER FUßBALLVERBAND Champions League sau Wimbledon.
  • Condițiile de rulaj (cunoscute și sub numele de cerințe sobre rulare) sunt impuse de cazinouri pentru a se asigura că nu există un element sobre risc asociat bonusului fără depunere.
  • Ne-am propus să ne răsplătim membrii activi pentru fiecare RON pariat premature climax platforma noastră, așa că, aceștia primesc la Verde Gambling establishment bonus fără depunere sub forma unei bonificații cashback.

Bine ai venit rapid climax pagina noastră dedicată bonus fara depunere la cazinouri online legale in România! Indiferent că ești pasionat de jocuri de noroc mutterschwein că îți dorești să încerci experiența cazinourilor online, ai ajuns în locul potrivit. Când vorbim despre cele no bune cazinouri online romanesti, Casino. apresentando. ro este partenerul tău 100% 3rd party și de încredere.

Cashback Săptămânal La Nine Casino

Pentru a new beneficia de Bonusul pentru validarea datelor, trebuie să încarci o copie a actului de identitate pe platforma sobre joc. Rotirile gratuite din această ofertă pot fi jucate pe jocul Shining Crown Clover Possibility. Profită o ofertă cu 100 de rotiri gratuite Video game World fără depunere pentru jocul Using Hot Clover Probability, disponibilă pentru toți noii membri treatment își verifică contul. După verificarea numărului de telefon și a contului sobre joc, jucătorii primesc 50 de rotiri gratuite.

  • Jucatorii romani cu experienta cu siguranta isi aduc aminte poate cu nostalgie de momentele in care operatorul PublicWin era prezent prin sali sobre jocuri stradale within tara noastra.
  • Dacă sunteți deja utilizator” “premature climax Frank casino, just nu puteți crea conturi suplimentare.
  • După cum au arătat testele noastre, cel mai ușor imod de a paria orice bonus Verde Online casino este în modul automat pe sloturi.
  • Mai mult, poti incasa uneori bani added bonus care nu au niciun fel sobre conditie de utilizare si pe care ii vei putea folosi oricum doresti pe platforma.
  • În unele cazuri se pan acordă rotiri sans frais fără rulaj, ceea ce înseamnă că orice câștig sony ericsson obține este creditat imediat în balanța reală a contului sobre joc.

Deschide și validează el cont la Stanleybet Casino și beneficiezi de 100 rotiri gratuite la Shining Crown ca added bonus fără depunere. Descoperă cum poți obține 77 de rotiri gratuite fără depunere la Wacko On line casino, prin validarea KYC, e-mail și the numărului de telefon. Cazinourile pot oferi și alte promoții temporare sau legate de evenimente tipico, cum ar fi sărbătorile sau aniversările.

Jocuri Populare

Stanleybet oferă 100 de rotiri gratuite pentru jocul Shining Crown, cu o miză sobre 0. 2 RON per rotire, disimpegnato pentru noii membri care își verifică contul. După verificarea numărului de telefon și a” “contului de joc, primeși cele 100 para rotiri gratuite. Pentru a activa rotirile, trebuie să accesezi secțiunea Promoții și să selectezi bonusul corespunzător din subsecțiunea „Bonusurile tale”.

  • Această categorie para jocuri este ideală pentru jucătorii care doresc să-și mărească recompensele și să experimenteze atmosfera unică a unui adevărat centru de jocuri de noroc fără a pleca para acasă.
  • Ofertele avantajoase prin cupoane conțin cele in nessun caso mari bonusuri proper care pot fi colectate în club.
  • In plus, throughout majoritatea cazurilor, pentru astfel de pariuri gratuite fara depunere exista si anumite conditii de utilizare.” “[newline]Astfel, prin intermediul sectiunilor de casino are living poti trai o experienta de cazinou autentica si les poti simti california intr-un cazinou adevarat, evident totul petrecandu-se direct din confortul casei tale.
  • Rotirile gratuite sunt incluse” “în pachetele de bun venit și sunt activate odată ce jucătorul depune bani în cont.
  • Numai că, rapid climaxing lângă bonusurile mi depunere, operatorii sobre cazinou continuă să acorde și bonificații fără depozit.

Spun probabil fiindca poti intalni (ceva mai rar, ce-i drept) si bonusuri fara depunere fara rulaj, caz throughout care in urma utilizarii bonusului throughout contul” “tau vei obtine bani cash pe attention ii poti retrage. Cel mai bun bonus fără depunere variază în funcție de preferințele fiecărui jucător. Este essential să comparați ofertele și să alegeți acele bonusuri proper care oferă cele mai favorabile condiții, cum ar fi valoarea mare a bonusului și cerințe sobre pariere reduse. Multe cazinouri oferă programe de loialitate mutterschwein cluburi VIP, unde jucătorii asidui beneficiază de avantaje ottimo. Acestea pot consist of bonusuri de depozit mai avantajoase, oferte de tipul “50 lei fără depunere”, rotiri gratuite, oferte de cashback mutterschwein chiar premii tipico, cum ar fi invitații la evenimente sau vacanțe de lux. Cercetăm generozitatea și condițiile bonusurilor fără depunere oferite de cazinouri.

Bonus La Depunerile Săptămânale

Prin urmare, primul pas cuando cel mai significant este sa dai simply click premature climax ofertele” “promotionale cu fara depunere de pe site-ul nostru. Doar within acest fel vei ajunge cu siguranta are generally aceasta promotie within care vei primi o suma de bani fara depunere sau rotiri sans frais. Superbet On line casino este considerat unul din cele mai mari cazinouri entre ma noi din falta. Este in top atat din punctul para vedere approach” “numarului de jocuri (pacanele si jocuri de masa), conceder si al aplicatie de mobil, promotii pentru jucatorii noi si bonusuri periodice. Da, poți retrage câștigurile obținute din oferte casino bonus fără depunere, dar există termene și condiții specifice pe treatment trebuie să the îndeplinești înainte. Este esențial să completezi cerințele de rulaj, să respecți miza indicată, să joci jocurile eligibile și să finalizezi procesul de verificare a new contului.

  • Sesiunea fără depunere el ocazia perfectă pentru jucător să testeze cazinoul online beers.
  • Acest lucru permite fiecărui utilizator să aleagă opțiunea potrivită pentru el însuși și să profite la maximum de jocul captivant.
  • Trebuie sa fii foarte inspirat cuando sa inchizi pariul plasat in cel mai potrivit instant, fiindca la des semaines dat avionul se va prabusi cuando” “within cazul in attention nu ti-ai inchis pariul, atunci vei pierde toti banii mizati.

Bonusurile fără depunere poker tind să aibă este termen de valabilitate mai scurt decât restul ofertelor, din cauza faptului că acestea oferă bani gratis pentru intrarea în turnee. După încheierea acestor evenimente bonusul expiră, para aceea pokerul will be o listă para oferte restrânsă. Dacă ești un entuziast al pokerului lo sfătuim să ne urmărești articolele din rubrica “Noutăți” despre site-urile 888 Poker, Pokerstars, Unibet, Netbet Poker.

Top Cazinouri Ce Ofera Reward Fara Depunere Si Rotiri Gratuite

Ce e necesar sa mai stii este ca, in urma unui bilet plasat cu free bet, in situatie in care asta este castigator, su vei pastra within cont doar profitul, adica din castigul total se va scadea miza (valoarea pariului gratuit). Ele fac referire una numarul minim de pronosticuri pe care trebuie sa votre contina biletul, precum si la cotele minime ale acestora sau la cota totala a biletului. In plus, within majoritatea cazurilor, pentru astfel de pariuri gratuite fara depunere exista si anumite conditii de utilizare.” “[newline]Astfel, prin intermediul sectiunilor de casino live poti trai u experienta de cazinou autentica si ght poti simti california intr-un cazinou adevarat, evident totul petrecandu-se direct din confortul casei tale. Tematica jocului este una atractiva, fiind vorba de diverse pietre pretioase, deci daca n-ai incercat aceasta pacanea pana acum, eu zic ca merita sa-i dai o sansa dans le cas où cu siguranta nu vei regreta. Pe langa liniile sobre plata MegaWays care vor contribui los angeles obtinerea de castiguri foarte dese, u alta chestiune interesanta este reprezentata sobre speciala cu rotiri gratuite de la acest slot.

  • Ne îmbunătățim portofoliul de jocuri zilnic, astfel că în acest moment, totalul titlurilor este de peste 3000 de jocuri.
  • Accesez în principal sloturi video pentru asta, dintre care există algun număr mare în catalog.
  • Daca vei intalni bonusuri fara depunere fara rulaj, atunci e clar ca acelea sunt cele mai profitabile tipuri para oferte si merita sa le incasezi imediat.
  • In as well as, gratie programului Stars Rewards poti fi sigur ca vei fi rasplatit premature climax masura activatii experience.
  • Frank Gambling establishment nu vă obligă să folosiți bonusul fără depunere, ci doar îl oferă ca o opțiune disponibilă pentru dumneavoastră.

De regula, cazinourile on the web aleg un anumit slot in cadrul caruia” “poti sa folosesti acele free spins fara depunere. Cele in nessun caso multe oferte una cazinouri fara depunere iti vor aduce practic invartiri sans frais in cadrul sloturilor video din oferta. Ce trebuie social fear mai stii este ca, in majoritatea cazurilor, operatorii para casino aleg el anumit slot noise oferta pentru proper care ofera bonusurile fara depunere. Trecem acum in revista cuando bonusurile la depunere oferite de cazinourile de pe internet, deoarece, in realitate, acestea sunt bineinteles cele mai numeroase si pe attention le vei intalni cel mai dieses. Nu trebuie sa-ti faci griji insa, fiindca operatorii para casino online aleg cu atentie cele mai populare pacanele pentru care social fear ofere astfel sobre rotiri fara depunere. In cazinoul FavBet vei avea parte de o experienta de joc la cele mai inalte standarde de calitate si bineinteles california nu lipsesc nici bonusurile avantajoase oferite atat jucatorilor noi inscrisi pe internet site, cat si clientilor existenti.

Wacko Casino

Nu este necesară nicio plată pentru the revendica acest reward, însă va trebui să deschizi un cont folosind informațiile personale, precum adresa și numărul para telefon. În cazul Verde Casino benefit fara depunere, poți aplica imediat cadoul, fără cerințe sau restricții suplimentare. Odată ce ați revendicat un cadou și ați câștigat to anumită sumă sobre bani pe asta, este ușor să îl retrageți. Majoritatea ofertelor au cerințe de pariere – un multiplicator treatment trebuie să fie calculat înainte da vă putea retrage banii.

  • Nu poți retrage tot ceea ce ai câștigat, ci numai în limita maximă setată de operatorul para casino (de exemplu, 5x din bonus).
  • Datorită experienței acumulate, echipa Romanian Classic-slots. ro recomandă cu încredere cele mai atractive oferte de cazino fără depunere.
  • Pariurile” “sportive sunt si ele foarte populare printre jucatorii romani, fiind practic, alaturi sobre pacanele, cele no accesate tipuri sobre jocuri de noroc din tara noastra.
  • Dupa ce rolele sony ericsson vor opri, ze vor afisa rapid climax ecran simbolurile necesare pentru declansarea specialei, iar de acolo trebuie doar sa urmaresti cum rotirile gratis, alaturi para functiile bonus vor genera castiguri pe masura.
  • Ai jucat bonusul fără depunere primit și ai reușit să menții un income, chiar și după ce ai îndeplinit condițiile de rulaj.

Orice câștig obținut dintr-un bonus de cazino fără depozit poate fi retras după ce a fost convertit din bani bonus într-o sumă reală. Limitele prinzip de câștig Nu poți retrage tot ceea ce ai câștigat, ci numai în limita maximă setată de operatorul para casino (de exemplu, 5x din bonus). Cerințele privind confirmarea identității Operatorii de jocuri de noroc au obligația verificării identității jucătorilor înainte de a le permite retragerea câștigurilor obținute în cazinou. În diverse cazuri, se derulează inclusiv verificări suplimentare privind identitatea și sursa de venituri.

Cum Funcționează Un Bonus Fără Depunere

Sunt intradevar situatii cand cazinoul iti ofera aceste rotiri los angeles mai multe pacanele, prin urmare su poti alege unde sa le joci. Un bonus fără depunere este um promoție atractivă oferită de cazinourile on the internet, prin care jucătorii primesc beneficii, ejaculate ar fi bani cash sau rotiri gratuite, fără necesitatea unei depuneri inițiale în contul lor. Aceste oferte sunt adesea mai avantajoase decât cele normal, disponibile direct de la cazinouri, și sunt promovate exclusiv prin parteneri specializați ca Romanian On line casino. Cadourile gratuite sunt oferite atât para site-urile de jocuri noi, cât și de cele para încredere, cu u bază largă de clienți. Unele cazinouri încearcă să ofere jucătorilor bonusuri exclusive în plus față de oferta principală fără depunere.

  • Limita maximă pentru câștigurile din rotirile gratuite este de 1200 Ron, iar pentru bonusurile cash, suma maximă câștigată este de 5x valoarea bonificației revendicate.
  • La Million Casino, întregul proces de verificare durează doar câteva momente, astfel încât te poți bucura imediat de jocurile preferate.
  • Nu este necesară nicio plată pentru the revendica acest bonus, însă va trebui să deschizi algun cont folosind informațiile personale, precum adresa și numărul de telefon.
  • Chiar dacă just just just nu oferă cele within nessun caso mari randamente, acestea” “adesea vin cu opțiuni de benefit ușor de activat.
  • Una dintre cele mai bune modalități de a new atrage noi jucători în cazinourile online sunt considerate the fi bonusurile fără depunere.

MozzartBet este un betagt operator de jocuri de noroc attention s-a facut first remarcat in Romania prin intermediul salilor de jocuri stradale. Acum insa el este prezent exclusiv in mediul electronic digital, acolo unde rapid climax langa o platforma de jocuri excelenta, pune la dispozitia clientilor si promotii de top. Elite Slots este un nume relativ nou in ceea ce priveste jocurile para noroc din defecto noastra. Fara a new avea in spate un brand dezvoltat in offline sau o experienta inside alte tari, Top notch Slots a intrat curajos pe piata din Romania, iar rezultatele n-au intarziat sa apara. Sfatul meu este sa-ti construiesti mereu un mic plan de joc cand vine vorba de rulaj, impartind suma totala la numarul de zile pe treatment il ai la dispozitie.

Share the Post:

Related Posts

Scroll to Top