/*! elementor - v3.27.0 - 03-02-2025 */
/******/ (() => { // webpackBootstrap
/******/ var __webpack_modules__ = ({
/***/ "../assets/dev/js/utils/react.js":
/*!***************************************!*\
!*** ../assets/dev/js/utils/react.js ***!
\***************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var React = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var ReactDOM = _interopRequireWildcard(__webpack_require__(/*! react-dom */ "react-dom"));
var _client = __webpack_require__(/*! react-dom/client */ "../node_modules/react-dom/client.js");
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
/**
* Support conditional rendering of a React App to the DOM, based on the React version.
* We use `createRoot` when available, but fallback to `ReactDOM.render` for older versions.
*
* @param { React.ReactElement } app The app to render.
* @param { HTMLElement } domElement The DOM element to render the app into.
*
* @return {{ unmount: () => void }} The unmount function.
*/
function render(app, domElement) {
var unmountFunction;
try {
var root = (0, _client.createRoot)(domElement);
root.render(app);
unmountFunction = function unmountFunction() {
root.unmount();
};
} catch (e) {
// eslint-disable-next-line react/no-deprecated
ReactDOM.render(app, domElement);
unmountFunction = function unmountFunction() {
// eslint-disable-next-line react/no-deprecated
ReactDOM.unmountComponentAtNode(domElement);
};
}
return {
unmount: unmountFunction
};
}
var _default = exports["default"] = {
render: render
};
/***/ }),
/***/ "../modules/home/assets/js/components/addons-section.js":
/*!**************************************************************!*\
!*** ../modules/home/assets/js/components/addons-section.js ***!
\**************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
var _objectDestructuringEmpty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectDestructuringEmpty */ "../node_modules/@babel/runtime/helpers/objectDestructuringEmpty.js"));
var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
var _List = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/List */ "@elementor/ui/List"));
var _Link = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/Link */ "@elementor/ui/Link"));
var _Button = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/Button */ "@elementor/ui/Button"));
var _Card = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/Card */ "@elementor/ui/Card"));
var _CardActions = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/CardActions */ "@elementor/ui/CardActions"));
var _CardContent = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/CardContent */ "@elementor/ui/CardContent"));
var _CardMedia = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/CardMedia */ "@elementor/ui/CardMedia"));
var Addons = function Addons(_ref) {
var props = (0, _extends2.default)({}, ((0, _objectDestructuringEmpty2.default)(_ref), _ref));
var domain = props.adminUrl.replace('wp-admin/', '');
var addonsArray = props.addonsData.repeater;
var cardsPerRow = 3 === addonsArray.length ? 3 : 2;
return /*#__PURE__*/_react.default.createElement(_ui.Paper, {
elevation: 0,
sx: {
p: 3,
display: 'flex',
flexDirection: 'column',
gap: 2
}
}, /*#__PURE__*/_react.default.createElement(_ui.Box, null, /*#__PURE__*/_react.default.createElement(_ui.Typography, {
variant: "h6"
}, props.addonsData.header.title), /*#__PURE__*/_react.default.createElement(_ui.Typography, {
variant: "body2",
color: "text.secondary"
}, props.addonsData.header.description)), /*#__PURE__*/_react.default.createElement(_List.default, {
sx: {
display: 'grid',
gridTemplateColumns: {
md: "repeat(".concat(cardsPerRow, ", 1fr)"),
xs: 'repeat(1, 1fr)'
},
gap: 2
}
}, addonsArray.map(function (item) {
var linkTarget = item.hasOwnProperty('target') ? item.target : '_blank';
return /*#__PURE__*/_react.default.createElement(_Card.default, {
key: item.title,
elevation: 0,
sx: {
display: 'flex',
border: 1,
borderRadius: 1,
borderColor: 'action.focus'
}
}, /*#__PURE__*/_react.default.createElement(_CardContent.default, {
sx: {
display: 'flex',
flexDirection: 'column',
justifyContent: 'space-between',
gap: 3,
p: 3
}
}, /*#__PURE__*/_react.default.createElement(_ui.Box, null, /*#__PURE__*/_react.default.createElement(_CardMedia.default, {
image: item.image,
sx: {
height: '58px',
width: '58px',
mb: 2
}
}), /*#__PURE__*/_react.default.createElement(_ui.Box, null, /*#__PURE__*/_react.default.createElement(_ui.Typography, {
variant: "subtitle2"
}, item.title), /*#__PURE__*/_react.default.createElement(_ui.Typography, {
variant: "body2",
color: "text.secondary"
}, item.description))), /*#__PURE__*/_react.default.createElement(_CardActions.default, {
sx: {
p: 0
}
}, /*#__PURE__*/_react.default.createElement(_Button.default, {
variant: "outlined",
size: "small",
color: "promotion",
href: item.url,
target: linkTarget
}, item.button_label))));
})), /*#__PURE__*/_react.default.createElement(_Link.default, {
variant: "body2",
color: "info.main",
underline: "none",
href: "".concat(domain).concat(props.addonsData.footer.file_path)
}, props.addonsData.footer.label));
};
var _default = exports["default"] = Addons;
Addons.propTypes = {
addonsData: PropTypes.object.isRequired,
adminUrl: PropTypes.string.isRequired
};
/***/ }),
/***/ "../modules/home/assets/js/components/create-new-page-dialog.js":
/*!**********************************************************************!*\
!*** ../modules/home/assets/js/components/create-new-page-dialog.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");
var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _react = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
var _DialogHeader = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/DialogHeader */ "@elementor/ui/DialogHeader"));
var _DialogHeaderGroup = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/DialogHeaderGroup */ "@elementor/ui/DialogHeaderGroup"));
var _DialogTitle = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/DialogTitle */ "@elementor/ui/DialogTitle"));
var _DialogContent = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/DialogContent */ "@elementor/ui/DialogContent"));
var _DialogContentText = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/DialogContentText */ "@elementor/ui/DialogContentText"));
var _TextField = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/TextField */ "@elementor/ui/TextField"));
var _DialogActions = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/DialogActions */ "@elementor/ui/DialogActions"));
var _Button = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/Button */ "@elementor/ui/Button"));
var _Dialog = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/Dialog */ "@elementor/ui/Dialog"));
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
var CreateNewPageDialog = function CreateNewPageDialog(_ref) {
var url = _ref.url,
isOpen = _ref.isOpen,
closedDialogCallback = _ref.closedDialogCallback;
var _React$useState = _react.default.useState(false),
_React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
open = _React$useState2[0],
setOpen = _React$useState2[1];
var _React$useState3 = _react.default.useState(''),
_React$useState4 = (0, _slicedToArray2.default)(_React$useState3, 2),
pageName = _React$useState4[0],
setPageName = _React$useState4[1];
(0, _react.useEffect)(function () {
setOpen(isOpen);
}, [isOpen]);
var handleDialogClose = function handleDialogClose() {
setOpen(false);
closedDialogCallback();
};
var handleChange = function handleChange(event) {
var urlParams = new URLSearchParams();
urlParams.append('post_data[post_title]', event.target.value);
setPageName(urlParams.toString());
};
return /*#__PURE__*/_react.default.createElement(_Dialog.default, {
open: open,
onClose: handleDialogClose,
maxWidth: "xs",
width: "xs",
fullWidth: true
}, /*#__PURE__*/_react.default.createElement(_DialogHeader.default, null, /*#__PURE__*/_react.default.createElement(_DialogHeaderGroup.default, null, /*#__PURE__*/_react.default.createElement(_DialogTitle.default, null, __('Name your page', 'elementor')))), /*#__PURE__*/_react.default.createElement(_DialogContent.default, {
dividers: true
}, /*#__PURE__*/_react.default.createElement(_DialogContentText.default, {
sx: {
mb: 2
}
}, __('To proceed, please name your first page,', 'elementor'), /*#__PURE__*/_react.default.createElement("br", null), __('or rename it later.', 'elementor')), /*#__PURE__*/_react.default.createElement(_TextField.default, {
onChange: handleChange,
fullWidth: true,
placeholder: __('New Page', 'elementor')
})), /*#__PURE__*/_react.default.createElement(_DialogActions.default, null, /*#__PURE__*/_react.default.createElement(_Button.default, {
onClick: handleDialogClose,
color: "secondary"
}, __('Cancel', 'elementor')), /*#__PURE__*/_react.default.createElement(_Button.default, {
variant: "contained",
href: pageName ? url + '&' + pageName : url,
target: "_blank"
}, __('Save', 'elementor'))));
};
var _default = exports["default"] = CreateNewPageDialog;
CreateNewPageDialog.propTypes = {
url: PropTypes.string.isRequired,
isOpen: PropTypes.bool.isRequired,
closedDialogCallback: PropTypes.func.isRequired
};
/***/ }),
/***/ "../modules/home/assets/js/components/external-links-section.js":
/*!**********************************************************************!*\
!*** ../modules/home/assets/js/components/external-links-section.js ***!
\**********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
var _objectDestructuringEmpty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectDestructuringEmpty */ "../node_modules/@babel/runtime/helpers/objectDestructuringEmpty.js"));
var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
var _List = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/List */ "@elementor/ui/List"));
var _ListItemButton = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/ListItemButton */ "@elementor/ui/ListItemButton"));
var _ListItemText = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/ListItemText */ "@elementor/ui/ListItemText"));
var _Divider = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/Divider */ "@elementor/ui/Divider"));
var ExternalLinksSection = function ExternalLinksSection(_ref) {
var props = (0, _extends2.default)({}, ((0, _objectDestructuringEmpty2.default)(_ref), _ref));
return /*#__PURE__*/_react.default.createElement(_ui.Paper, {
elevation: 0,
sx: {
px: 3
}
}, /*#__PURE__*/_react.default.createElement(_List.default, null, props.externalLinksData.map(function (item, index) {
return /*#__PURE__*/_react.default.createElement(_ui.Box, {
key: item.label
}, /*#__PURE__*/_react.default.createElement(_ListItemButton.default, {
href: item.url,
target: "_blank",
sx: {
'&:hover': {
backgroundColor: 'initial'
},
gap: 2,
px: 0,
py: 2
}
}, /*#__PURE__*/_react.default.createElement(_ui.Box, {
component: "img",
src: item.image,
sx: {
width: '38px'
}
}), /*#__PURE__*/_react.default.createElement(_ListItemText.default, {
sx: {
color: 'text.secondary'
},
primary: item.label
})), index < props.externalLinksData.length - 1 && /*#__PURE__*/_react.default.createElement(_Divider.default, null));
})));
};
var _default = exports["default"] = ExternalLinksSection;
ExternalLinksSection.propTypes = {
externalLinksData: PropTypes.array.isRequired
};
/***/ }),
/***/ "../modules/home/assets/js/components/get-started-list-item.js":
/*!*********************************************************************!*\
!*** ../modules/home/assets/js/components/get-started-list-item.js ***!
\*********************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ "../node_modules/@babel/runtime/helpers/slicedToArray.js"));
var _ListItem = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/ListItem */ "@elementor/ui/ListItem"));
var _ListItemText = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/ListItemText */ "@elementor/ui/ListItemText"));
var _Link = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/Link */ "@elementor/ui/Link"));
var _Box = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/Box */ "@elementor/ui/Box"));
var _createNewPageDialog = _interopRequireDefault(__webpack_require__(/*! ./create-new-page-dialog */ "../modules/home/assets/js/components/create-new-page-dialog.js"));
var GetStartedListItem = function GetStartedListItem(_ref) {
var item = _ref.item,
image = _ref.image,
adminUrl = _ref.adminUrl;
var url = item.is_relative_url ? adminUrl + item.url : item.url;
var _React$useState = _react.default.useState(false),
_React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
isOpen = _React$useState2[0],
openDialog = _React$useState2[1];
var handleLinkClick = function handleLinkClick(event) {
if (!item.new_page) {
return;
}
event.preventDefault();
openDialog(true);
};
return /*#__PURE__*/_react.default.createElement(_ListItem.default, {
alignItems: "flex-start",
sx: {
gap: 1,
p: 0,
maxWidth: '150px'
}
}, /*#__PURE__*/_react.default.createElement(_Box.default, {
component: "img",
src: image
}), /*#__PURE__*/_react.default.createElement(_Box.default, null, /*#__PURE__*/_react.default.createElement(_ListItemText.default, {
primary: item.title,
primaryTypographyProps: {
variant: 'subtitle1'
},
sx: {
my: 0
}
}), /*#__PURE__*/_react.default.createElement(_Link.default, {
variant: "body2",
color: item.title_small_color ? item.title_small_color : 'text.tertiary',
underline: "hover",
href: url,
target: "_blank",
onClick: handleLinkClick
}, item.title_small)), item.new_page && /*#__PURE__*/_react.default.createElement(_createNewPageDialog.default, {
url: url,
isOpen: isOpen,
closedDialogCallback: function closedDialogCallback() {
return openDialog(false);
}
}));
};
var _default = exports["default"] = GetStartedListItem;
GetStartedListItem.propTypes = {
item: PropTypes.shape({
title: PropTypes.string.isRequired,
title_small: PropTypes.string.isRequired,
url: PropTypes.string.isRequired,
new_page: PropTypes.bool,
is_relative_url: PropTypes.bool,
title_small_color: PropTypes.string
}).isRequired,
adminUrl: PropTypes.string.isRequired,
image: PropTypes.string
};
/***/ }),
/***/ "../modules/home/assets/js/components/get-started-section.js":
/*!*******************************************************************!*\
!*** ../modules/home/assets/js/components/get-started-section.js ***!
\*******************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
var _objectDestructuringEmpty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectDestructuringEmpty */ "../node_modules/@babel/runtime/helpers/objectDestructuringEmpty.js"));
var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
var _List = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/List */ "@elementor/ui/List"));
var _getStartedListItem = _interopRequireDefault(__webpack_require__(/*! ./get-started-list-item */ "../modules/home/assets/js/components/get-started-list-item.js"));
var GetStarted = function GetStarted(_ref) {
var props = (0, _extends2.default)({}, ((0, _objectDestructuringEmpty2.default)(_ref), _ref));
return /*#__PURE__*/_react.default.createElement(_ui.Paper, {
elevation: 0,
sx: {
p: 3,
display: 'flex',
flexDirection: 'column',
gap: 2
}
}, /*#__PURE__*/_react.default.createElement(_ui.Box, null, /*#__PURE__*/_react.default.createElement(_ui.Typography, {
variant: "h6"
}, props.getStartedData.header.title), /*#__PURE__*/_react.default.createElement(_ui.Typography, {
variant: "body2",
color: "text.secondary"
}, props.getStartedData.header.description)), /*#__PURE__*/_react.default.createElement(_List.default, {
sx: {
display: 'grid',
gridTemplateColumns: {
md: 'repeat(4, 1fr)',
xs: 'repeat(2, 1fr)'
},
columnGap: {
md: 9,
xs: 7
},
rowGap: 3
}
}, props.getStartedData.repeater.map(function (item) {
return /*#__PURE__*/_react.default.createElement(_getStartedListItem.default, {
key: item.title,
item: item,
image: item.image,
adminUrl: props.adminUrl
});
})));
};
var _default = exports["default"] = GetStarted;
GetStarted.propTypes = {
getStartedData: PropTypes.object.isRequired,
adminUrl: PropTypes.string.isRequired
};
/***/ }),
/***/ "../modules/home/assets/js/components/home-screen.js":
/*!***********************************************************!*\
!*** ../modules/home/assets/js/components/home-screen.js ***!
\***********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
var _topSection = _interopRequireDefault(__webpack_require__(/*! ./top-section */ "../modules/home/assets/js/components/top-section.js"));
var _sidebarPromotion = _interopRequireDefault(__webpack_require__(/*! ./sidebar-promotion */ "../modules/home/assets/js/components/sidebar-promotion.js"));
var _addonsSection = _interopRequireDefault(__webpack_require__(/*! ./addons-section */ "../modules/home/assets/js/components/addons-section.js"));
var _externalLinksSection = _interopRequireDefault(__webpack_require__(/*! ./external-links-section */ "../modules/home/assets/js/components/external-links-section.js"));
var _getStartedSection = _interopRequireDefault(__webpack_require__(/*! ./get-started-section */ "../modules/home/assets/js/components/get-started-section.js"));
var HomeScreen = function HomeScreen(props) {
var hasSidebarUpgrade = props.homeScreenData.hasOwnProperty('sidebar_upgrade');
return /*#__PURE__*/ /* Box wrapper around the Container is needed to neutralize wp-content area left-padding */_react.default.createElement(_ui.Box, {
sx: {
pr: 1
}
}, /*#__PURE__*/_react.default.createElement(_ui.Container, {
disableGutters: true,
maxWidth: "lg",
sx: {
display: 'flex',
flexDirection: 'column',
gap: {
xs: 1,
md: 3
},
pt: {
xs: 2,
md: 6
},
pb: 2
}
}, /*#__PURE__*/_react.default.createElement(_topSection.default, {
topData: props.homeScreenData.top_with_licences,
createNewPageUrl: props.homeScreenData.create_new_page_url
}), /*#__PURE__*/_react.default.createElement(_ui.Box, {
sx: {
display: 'flex',
flexDirection: {
xs: 'column',
sm: 'row'
},
justifyContent: 'space-between',
gap: 3
}
}, /*#__PURE__*/_react.default.createElement(_ui.Stack, {
sx: {
flex: 1,
gap: 3
}
}, /*#__PURE__*/_react.default.createElement(_getStartedSection.default, {
getStartedData: props.homeScreenData.get_started,
adminUrl: props.adminUrl
}), /*#__PURE__*/_react.default.createElement(_addonsSection.default, {
addonsData: props.homeScreenData.add_ons,
adminUrl: props.adminUrl
})), /*#__PURE__*/_react.default.createElement(_ui.Container, {
maxWidth: "xs",
disableGutters: true,
sx: {
width: {
sm: '305px'
},
display: 'flex',
flexDirection: 'column',
gap: 3
}
}, hasSidebarUpgrade && /*#__PURE__*/_react.default.createElement(_sidebarPromotion.default, {
sideData: props.homeScreenData.sidebar_upgrade
}), /*#__PURE__*/_react.default.createElement(_externalLinksSection.default, {
externalLinksData: props.homeScreenData.external_links
})))));
};
HomeScreen.propTypes = {
homeScreenData: PropTypes.object,
adminUrl: PropTypes.string
};
var _default = exports["default"] = HomeScreen;
/***/ }),
/***/ "../modules/home/assets/js/components/sidebar-promotion.js":
/*!*****************************************************************!*\
!*** ../modules/home/assets/js/components/sidebar-promotion.js ***!
\*****************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
var _objectDestructuringEmpty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectDestructuringEmpty */ "../node_modules/@babel/runtime/helpers/objectDestructuringEmpty.js"));
var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
var _Button = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/Button */ "@elementor/ui/Button"));
var _List = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/List */ "@elementor/ui/List"));
var _ListItem = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/ListItem */ "@elementor/ui/ListItem"));
var _ListItemText = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/ListItemText */ "@elementor/ui/ListItemText"));
var _sideBarCheckIcon = _interopRequireDefault(__webpack_require__(/*! ../icons/side-bar-check-icon */ "../modules/home/assets/js/icons/side-bar-check-icon.js"));
var SideBarPromotion = function SideBarPromotion(_ref) {
var props = (0, _extends2.default)({}, ((0, _objectDestructuringEmpty2.default)(_ref), _ref));
return /*#__PURE__*/_react.default.createElement(_ui.Paper, {
elevation: 0,
sx: {
p: 3
}
}, /*#__PURE__*/_react.default.createElement(_ui.Stack, {
gap: 1.5,
sx: {
alignItems: 'center',
textAlign: 'center',
pb: 4
}
}, /*#__PURE__*/_react.default.createElement(_ui.Box, {
component: "img",
src: props.sideData.header.image
}), /*#__PURE__*/_react.default.createElement(_ui.Box, null, /*#__PURE__*/_react.default.createElement(_ui.Typography, {
variant: "h6"
}, props.sideData.header.title), /*#__PURE__*/_react.default.createElement(_ui.Typography, {
variant: "body2",
color: "text.secondary"
}, props.sideData.header.description)), /*#__PURE__*/_react.default.createElement(_Button.default, {
variant: "contained",
size: "medium",
color: "promotion",
href: props.sideData.cta.url,
startIcon: /*#__PURE__*/_react.default.createElement(_ui.Box, {
component: "img",
src: props.sideData.cta.image,
sx: {
width: '16px'
}
}),
target: "_blank",
sx: {
maxWidth: 'fit-content'
}
}, props.sideData.cta.label)), /*#__PURE__*/_react.default.createElement(_List.default, {
sx: {
p: 0
}
}, props.sideData.repeater.map(function (item, index) {
return /*#__PURE__*/_react.default.createElement(_ListItem.default, {
key: index,
sx: {
p: 0,
gap: 1
}
}, /*#__PURE__*/_react.default.createElement(_sideBarCheckIcon.default, null), /*#__PURE__*/_react.default.createElement(_ListItemText.default, {
primaryTypographyProps: {
variant: 'body2'
},
primary: item.title
}));
})));
};
var _default = exports["default"] = SideBarPromotion;
SideBarPromotion.propTypes = {
sideData: PropTypes.object.isRequired
};
/***/ }),
/***/ "../modules/home/assets/js/components/top-section.js":
/*!***********************************************************!*\
!*** ../modules/home/assets/js/components/top-section.js ***!
\***********************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
/* provided dependency */ var PropTypes = __webpack_require__(/*! prop-types */ "../node_modules/prop-types/index.js");
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _react = _interopRequireDefault(__webpack_require__(/*! react */ "react"));
var _objectDestructuringEmpty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectDestructuringEmpty */ "../node_modules/@babel/runtime/helpers/objectDestructuringEmpty.js"));
var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
var _Typography = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/Typography */ "@elementor/ui/Typography"));
var _Button = _interopRequireDefault(__webpack_require__(/*! @elementor/ui/Button */ "@elementor/ui/Button"));
var _youtubeIcon = _interopRequireDefault(__webpack_require__(/*! ../icons/youtube-icon */ "../modules/home/assets/js/icons/youtube-icon.js"));
var TopSection = function TopSection(_ref) {
var props = (0, _extends2.default)({}, ((0, _objectDestructuringEmpty2.default)(_ref), _ref));
return /*#__PURE__*/_react.default.createElement(_ui.Paper, {
elevation: 0,
sx: {
display: 'flex',
flexDirection: {
xs: 'column',
sm: 'row'
},
justifyContent: 'space-between',
py: {
xs: 3,
md: 3
},
px: {
xs: 3,
md: 4
},
gap: {
xs: 2,
sm: 3,
lg: 22
}
}
}, /*#__PURE__*/_react.default.createElement(_ui.Stack, {
gap: 3,
justifyContent: "center"
}, /*#__PURE__*/_react.default.createElement(_ui.Box, null, /*#__PURE__*/_react.default.createElement(_Typography.default, {
variant: "h6"
}, props.topData.title), /*#__PURE__*/_react.default.createElement(_Typography.default, {
variant: "body2",
color: "secondary"
}, props.topData.description)), /*#__PURE__*/_react.default.createElement(_ui.Box, {
sx: {
display: 'flex',
gap: 1
}
}, /*#__PURE__*/_react.default.createElement(_Button.default, {
variant: "contained",
size: "small",
href: props.createNewPageUrl,
target: "_blank"
}, props.topData.button_create_page_title), /*#__PURE__*/_react.default.createElement(_Button.default, {
variant: "outlined",
color: "secondary",
size: "small",
startIcon: /*#__PURE__*/_react.default.createElement(_youtubeIcon.default, null),
href: props.topData.button_watch_url,
target: "_blank"
}, props.topData.button_watch_title))), /*#__PURE__*/_react.default.createElement(_ui.Box, {
component: "iframe",
src: "https://www.youtube.com/embed/".concat(props.topData.youtube_embed_id),
title: "YouTube video player",
frameBorder: "0",
allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",
allowFullScreen: true,
sx: {
aspectRatio: '16/9',
borderRadius: 1,
display: 'flex',
width: '100%',
maxWidth: '365px'
}
}));
};
TopSection.propTypes = {
topData: PropTypes.object.isRequired,
createNewPageUrl: PropTypes.string.isRequired
};
var _default = exports["default"] = TopSection;
/***/ }),
/***/ "../modules/home/assets/js/icons/side-bar-check-icon.js":
/*!**************************************************************!*\
!*** ../modules/home/assets/js/icons/side-bar-check-icon.js ***!
\**************************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
var React = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
var SideBarCheckIcon = function SideBarCheckIcon(props) {
return /*#__PURE__*/React.createElement(_ui.SvgIcon, (0, _extends2.default)({
viewBox: "0 0 24 24"
}, props), /*#__PURE__*/React.createElement("path", {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M9.09013 3.69078C10.273 3.2008 11.5409 2.94861 12.8213 2.94861C14.1017 2.94861 15.3695 3.2008 16.5525 3.69078C17.7354 4.18077 18.8102 4.89895 19.7156 5.80432C20.621 6.70969 21.3391 7.78452 21.8291 8.96744C22.3191 10.1504 22.5713 11.4182 22.5713 12.6986C22.5713 13.979 22.3191 15.2468 21.8291 16.4298C21.3391 17.6127 20.621 18.6875 19.7156 19.5929C18.8102 20.4983 17.7354 21.2165 16.5525 21.7064C15.3695 22.1964 14.1017 22.4486 12.8213 22.4486C11.5409 22.4486 10.2731 22.1964 9.09013 21.7064C7.9072 21.2165 6.83237 20.4983 5.927 19.5929C5.02163 18.6875 4.30345 17.6127 3.81346 16.4298C3.32348 15.2468 3.07129 13.979 3.07129 12.6986C3.07129 11.4182 3.32348 10.1504 3.81346 8.96744C4.30345 7.78452 5.02163 6.70969 5.927 5.80432C6.83237 4.89895 7.9072 4.18077 9.09013 3.69078ZM12.8213 4.44861C11.7379 4.44861 10.6651 4.662 9.66415 5.0766C8.66321 5.4912 7.75374 6.09889 6.98766 6.86498C6.22157 7.63106 5.61388 8.54053 5.19928 9.54147C4.78468 10.5424 4.57129 11.6152 4.57129 12.6986C4.57129 13.782 4.78468 14.8548 5.19928 15.8557C5.61388 16.8567 6.22157 17.7662 6.98766 18.5322C7.75374 19.2983 8.66322 19.906 9.66415 20.3206C10.6651 20.7352 11.7379 20.9486 12.8213 20.9486C13.9047 20.9486 14.9775 20.7352 15.9784 20.3206C16.9794 19.906 17.8888 19.2983 18.6549 18.5322C19.421 17.7662 20.0287 16.8567 20.4433 15.8557C20.8579 14.8548 21.0713 13.782 21.0713 12.6986C21.0713 11.6152 20.8579 10.5424 20.4433 9.54147C20.0287 8.54053 19.421 7.63106 18.6549 6.86498C17.8888 6.09889 16.9794 5.4912 15.9784 5.0766C14.9775 4.662 13.9047 4.44861 12.8213 4.44861Z",
fill: "#93003F"
}), /*#__PURE__*/React.createElement("path", {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M17.3213 9.69424C17.6142 9.98713 17.6142 10.462 17.3213 10.7549L12.3732 15.703C12.0803 15.9959 11.6054 15.9959 11.3125 15.703L8.83851 13.2289C8.54562 12.936 8.54562 12.4612 8.83851 12.1683C9.1314 11.8754 9.60628 11.8754 9.89917 12.1683L11.8429 14.112L16.2606 9.69424C16.5535 9.40135 17.0284 9.40135 17.3213 9.69424Z",
fill: "#93003F"
}));
};
var _default = exports["default"] = SideBarCheckIcon;
/***/ }),
/***/ "../modules/home/assets/js/icons/youtube-icon.js":
/*!*******************************************************!*\
!*** ../modules/home/assets/js/icons/youtube-icon.js ***!
\*******************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ "../node_modules/@babel/runtime/helpers/typeof.js");
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports["default"] = void 0;
var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "../node_modules/@babel/runtime/helpers/extends.js"));
var React = _interopRequireWildcard(__webpack_require__(/*! react */ "react"));
var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui");
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
var YoutubeIcon = function YoutubeIcon(props) {
return /*#__PURE__*/React.createElement(_ui.SvgIcon, (0, _extends2.default)({
viewBox: "0 0 24 24"
}, props), /*#__PURE__*/React.createElement("path", {
fillRule: "evenodd",
clipRule: "evenodd",
d: "M7 5.75C5.20507 5.75 3.75 7.20507 3.75 9V15C3.75 16.7949 5.20507 18.25 7 18.25H17C18.7949 18.25 20.25 16.7949 20.25 15V9C20.25 7.20507 18.7949 5.75 17 5.75H7ZM2.25 9C2.25 6.37665 4.37665 4.25 7 4.25H17C19.6234 4.25 21.75 6.37665 21.75 9V15C21.75 17.6234 19.6234 19.75 17 19.75H7C4.37665 19.75 2.25 17.6234 2.25 15V9ZM9.63048 8.34735C9.86561 8.21422 10.1542 8.21786 10.3859 8.35688L15.3859 11.3569C15.6118 11.4924 15.75 11.7366 15.75 12C15.75 12.2634 15.6118 12.5076 15.3859 12.6431L10.3859 15.6431C10.1542 15.7821 9.86561 15.7858 9.63048 15.6526C9.39534 15.5195 9.25 15.2702 9.25 15V9C9.25 8.7298 9.39534 8.48048 9.63048 8.34735ZM10.75 10.3246V13.6754L13.5423 12L10.75 10.3246Z"
}));
};
var _default = exports["default"] = YoutubeIcon;
/***/ }),
/***/ "../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 = '< Online Casino Fantasino offers an unparalleled gaming experience, combining a stunning interface with an impressive selection of games. For players craving excitement, Online Casino Fantasino fantasino-spins.net presents a captivating platform tailored for both new and seasoned gamblers. Fantasino is known for its unique approach to online gaming, distinguishing itself from other casinos in the industry. The platform has been designed with the user in mind, featuring a seamless interface that makes navigation effortless. Players can enjoy a variety of games including slots, table games, and live dealer options, all powered by top-tier software providers. One of the standout features of Fantasino is its diverse selection of games. From vibrant video slots to classic table games like blackjack and roulette, there is something for everyone. The casino regularly updates its game library to include the latest releases, ensuring that players always have access to fresh content. Special themed slots also add an extra layer of excitement, allowing players to immerse themselves in different worlds.
Welcome to Online Casino Fantasino
Overview of Fantasino
Game Selection

In today’s fast-paced world, mobile compatibility is crucial for online casinos. Fantasino’s mobile platform is fully optimized, allowing players to enjoy their favorite games on the go. The responsive design ensures that all games function smoothly across various devices, including smartphones and tablets. Whether waiting in line or relaxing at home, players can easily access their accounts and indulge in a quick gaming session.
Fantasino understands the importance of offering generous bonuses and promotions to attract new players and keep existing ones engaged. As a new player, you are greeted with a sizeable welcome bonus, which often includes free spins and deposit matches. Regular players can also benefit from loyalty programs, reload bonuses, and seasonal promotions that provide extra chances to win big. It’s essential to keep an eye on the promotions page to maximize your gaming experience.

When it comes to online gaming, security is a top priority. Fantasino employs the latest SSL encryption technology to protect players’ personal and financial information. The casino is licensed and regulated, which means it adheres to strict standards of fairness and transparency. Players can be confident that they are engaging in a safe gaming environment where all outcomes are determined by random number generators (RNGs).
Fantasino prides itself on offering excellent customer support to its players. The support team is available 24/7 through multiple channels including live chat, email, and a comprehensive FAQ section. Whether you have questions about account verification, game rules, or withdrawal processes, the knowledgeable support staff is always ready to assist you.
Online Casino Fantasino is a fantastic choice for anyone looking to dive into the world of online gambling. With its extensive game selection, mobile-friendly platform, and generous bonuses, it caters to both novice and experienced players alike. The commitment to security and customer satisfaction further enhances its reputation as a top-notch online casino. Explore Fantasino today and discover a world of thrilling gaming opportunities and chances to win amazing prizes!
Don’t miss out on the exciting action waiting for you at Fantasino. Sign up today and take advantage of the amazing bonuses available to new players, dive into a vast selection of games, and join a community of passionate gamers!
]]>
Are you looking for the ultimate gaming experience? Look no further than FanoBet Casino & Sportsbook FanoBet casino. This online platform offers a perfect blend of casino games and sports betting, catering to all types of players from around the globe. In this article, we will delve into the features, benefits, games, and promotions offered by FanoBet, and why it should be your go-to destination for online entertainment.
FanoBet is a well-established name in the world of online gambling and sports betting. With a user-friendly interface, competitive odds, and a wide variety of gaming options, FanoBet has garnered a loyal customer base. The platform is designed to provide players with a seamless gaming experience, featuring advanced technology, secure payment methods, and outstanding customer support.
FanoBet Casino boasts an impressive selection of casino games, ensuring that there is something for everyone. Here are some of the popular categories available:

FanoBet is not just about casino games. The sportsbook section offers a comprehensive platform for betting on various sports, ranging from football and basketball to tennis and esports. Here’s what makes FanoBet’s sportsbook stand out:
One of the most enticing aspects of FanoBet is its generous bonuses and promotions. New players and loyal customers alike can take advantage of various offers designed to enhance their gaming experience:

Player security is of utmost importance at FanoBet. The platform uses advanced encryption technology to ensure that all transactions and personal information are kept safe. Additionally, the casino operates under a license from a reputable authority, guaranteeing that the games are fair and the outcomes are random.
In today’s fast-paced world, mobile gaming has become increasingly popular. FanoBet understands this trend and offers a mobile-friendly interface that allows players to enjoy their favorite games on the go. Whether using a smartphone or tablet, players can access the full range of casino games and sports betting options without sacrificing quality.
FanoBet prides itself on providing excellent customer service. The support team is available through various channels, including live chat, email, and phone support. Players can rest assured knowing that any issues or inquiries will be resolved promptly and efficiently.
In conclusion, FanoBet Casino & Sportsbook offers an unbeatable combination of excitement, variety, and security. With its vast selection of games, competitive sports betting options, generous promotions, and commitment to player safety, FanoBet truly stands out in the online gaming landscape. Whether you’re a seasoned gambler or a newcomer, FanoBet is the perfect destination for your online gaming needs. Sign up today and experience the thrill for yourself!
]]>
Welcome to FanoBet Casino, your premier destination for online gaming that promises both excitement and a wealth of opportunities. As a member of this vibrant gaming community, you can explore a diverse array of casino games, take advantage of generous promotions, and immerse yourself in an unparalleled gaming experience. To find out more about what FanoBet has to offer, visit FanoBet Casino https://www.fanobet-online.com/.
In a saturated market, FanoBet Casino has carved its niche by providing a unique blend of quality, variety, and top-notch customer service. Whether you’re a seasoned player or a newcomer to the world of online casinos, FanoBet caters to everyone. Here are some of the key features that set FanoBet apart from its competitors:
At FanoBet, players can choose from a wide spectrum of games designed to cater to all tastes and preferences. Here’s a closer look at some of the popular categories:

Slot enthusiasts will find themselves in paradise at FanoBet. With hundreds of slot games available, there’s something for everyone, from classic three-reel slots to the latest video slots featuring exciting themes and bonus features. Progressive jackpots also attract players looking for big wins.
FanoBet Casino’s collection of table games includes all the classics you would expect in a reputable casino. Players can indulge in various versions of blackjack, roulette, baccarat, and poker. Live dealer options bring an extra touch of realism, allowing players to interact with real dealers in real-time.
For those seeking a more immersive experience, FanoBet’s live casino section offers a thrilling environment where players can experience the casino vibe from the comfort of their homes. The live games are streamed in high definition and provide interaction with professional dealers.
FanoBet Casino understands how important bonuses are to players. That’s why they offer a range of promotions to keep the excitement alive:

FanoBet Casino provides a wide range of secure and convenient banking options for deposits and withdrawals. Players can choose from popular methods such as credit and debit cards, e-wallets, and bank transfers. The casino processes transactions promptly, ensuring that players can access their winnings without unnecessary delays.
At FanoBet Casino, exceptional customer service is a priority. The support team is available 24/7 to assist players with any inquiries or concerns they may have. Whether you prefer to reach out via live chat, email, or phone, the friendly and knowledgeable support staff are ready to help.
FanoBet Casino is more than just a place to play games; it’s a thriving community that welcomes players from all backgrounds. With its impressive game selection, generous promotions, and commitment to player safety, FanoBet stands out as a top choice for online gaming. Whether you’re spinning the reels on your favorite slot or trying your luck at the blackjack table, FanoBet promises an exhilarating experience that keeps players coming back for more. Join the fun today and experience the thrill of FanoBet Casino!
]]>
Welcome to the vibrant universe of Online Fancy Reels Casino, where the excitement of playing your favorite games meets the thrill of winning big! At Online Fancy Reels Casino fancyreelscasino.co.uk, players are treated to a luxurious betting experience, unmatched customer service, and an assortment of games that can satisfy every player’s taste. Let us take you on a journey through the captivating features and offerings of this exceptional online casino.
The evolution of online casinos has transformed the way we engage with classic casino games. Gone are the days when players had to travel long distances to enjoy their favorite games. Today, players can immerse themselves in the enchanting atmosphere of a casino from the comfort of their own home. Online Fancy Reels Casino takes this experience to a whole new level. With its striking graphics, immersive sound effects, and interactive gameplay, you’ll feel as if you’re in a physical casino, without the inconvenience of traveling.
At Online Fancy Reels Casino, variety is key. The casino offers an extensive range of games tailored to suit every player’s preference. Whether you’re a fan of classic slot machines, video slots, table games, or live dealer games, there’s something for everyone. The slots collection, adorned with beautiful graphics and enticing storylines, includes both popular titles and new releases to keep you captivated.
Table game enthusiasts will revel in the wide selection available, including multiple variants of blackjack, roulette, and poker. Live dealer games provide the perfect blend of online convenience and social interaction, allowing players to engage with professional dealers in real-time. This immersive experience brings the thrill of a land-based casino to your screen, complete with the chance to interact with other players.
One of the most enticing aspects of Online Fancy Reels Casino is the array of promotions and bonuses that players can enjoy. From welcome bonuses for new players to loyalty programs that reward regular customers, the casino ensures that players have plenty of opportunities to boost their bankroll. These bonuses can include free spins, deposit matches, and cashback offers, giving players more chances to win without extra investment.
Familiarizing yourself with the terms and conditions of each promotion is essential. This ensures that you not only benefit from the bonuses but also understand the wagering requirements and expiration dates. Engaging with the promotional offerings is a great way to enhance your gaming experience at Online Fancy Reels Casino.
Safety and security are of utmost importance when it comes to online gambling. Online Fancy Reels Casino employs the latest encryption technology to protect player information and financial transactions. This ensures a secure environment for your gaming experience, allowing you to focus on playing and winning. Moreover, the casino is licensed and regulated by reputable authorities, which adds another layer of assurance regarding fair play and responsible gaming.
Online Fancy Reels Casino is not just a gaming platform; it’s a community. With active forums and social media presence, players can connect with one another, share experiences, and celebrate wins. Engaging with fellow players can provide valuable tips and strategies, making your gameplay more enjoyable and rewarding.
Additionally, the casino often organizes tournaments and competitions that encourage friendly rivalry among players. Participating in these events can enhance your gaming experience and offer a chance to win attractive prizes. Embrace the community spirit as you immerse yourself in the world of online gaming.
As technology advances, so does the way we play games. Online Fancy Reels Casino offers a fully optimized mobile gaming experience, allowing players to enjoy their favorite games on the go. Whether you prefer playing on your smartphone or tablet, the mobile platform delivers quality graphics and smooth gameplay, ensuring you can indulge in your favorite games wherever you are.
The mobile version is user-friendly and retains the full range of games available on the desktop site. This flexibility means that you never have to miss out on the action, whether you’re traveling, waiting for an appointment, or simply relaxing at home.
A key aspect of any online casino is the quality of customer support, and Online Fancy Reels Casino excels in this regard. With a dedicated support team available 24/7, players can seek assistance whenever needed. Whether you have questions about promotions, game rules, or technical issues, the support team is ready to help via live chat, email, or phone.
Additionally, the casino provides a comprehensive FAQ section that addresses common queries, allowing players to find answers quickly and efficiently. This commitment to customer service ensures that players can enjoy their gaming experience with peace of mind.
Online Fancy Reels Casino is committed to promoting responsible gaming. The platform provides resources and tools for players to manage their gambling habits, including deposit limits, self-exclusion options, and access to support organizations. The importance of playing responsibly cannot be understated, and the casino encourages players to engage in gaming for fun rather than as a means of making money.
By fostering a culture of responsible gaming, Online Fancy Reels Casino ensures that players can enjoy their time without facing negative consequences. It’s essential to know your limits and to seek help if you feel your gaming is becoming problematic.
Online Fancy Reels Casino offers an exceptional gaming experience that combines luxury, excitement, and community. With a diverse game selection, enticing promotions, and a commitment to player safety, it’s no wonder that players keep returning for more. Whether you’re a seasoned player or new to the online gaming landscape, this casino promises endless thrills and opportunities for big wins.
So why wait? Dive into the world of Online Fancy Reels Casino today and embark on an exciting adventure filled with chances to win big and enjoy unforgettable gaming experiences!
]]>
Welcome to the vibrant universe of Casino Fancy Reels New, where the thrill of chance meets the art of entertainment. This innovative online platform is capturing the hearts of gambling enthusiasts around the world. Dive in and discover all that Casino Fancy Reels New Fancy Reels Casino com has to offer, from engaging gameplay to unique features that keep you on the edge of your seat.
Casino Fancy Reels New is a fresh player in the online casino market, boasting a wide array of slot games, table games, and live dealer experiences. It was designed with both new and seasoned players in mind, featuring an interface that is not only visually appealing but also user-friendly. The platform is tailored to provide a seamless gaming experience, whether you are playing on a desktop or a mobile device.
Casino Fancy Reels New differentiates itself with several innovative features:

Casino Fancy Reels New attracts players not just because of its game selection but also due to its compelling bonuses and promotions. New players can expect enticing welcome packages, including deposit matches and free spins to kickstart their gaming journey. Regular players can benefit from ongoing promotions, loyalty programs, and exclusive offers that reward their dedication to the casino.
Another area where Casino Fancy Reels New shines is in its range of secure payment options. The casino accepts various methods for deposits and withdrawals, including credit cards, e-wallets, and bank transfers. This ensures that players can easily manage their funds while enjoying a safe and secure gambling experience.
Safety is a top priority at Casino Fancy Reels New. The platform is licensed and regulated by reputable gaming authorities, ensuring fair play and protecting players’ data. Advanced encryption technologies are in place to safeguard your personal and financial information.

In the online gaming world, reliable customer support is crucial. Casino Fancy Reels New offers dedicated customer service representatives available via live chat, email, and telephone, providing players with assistance whenever they need it. The support team is trained to handle various inquiries, ensuring player satisfaction and a smooth gaming experience.
Understanding the trend of mobile gambling, Casino Fancy Reels New is optimized for mobile devices. Whether you’re on the go or simply prefer playing on your smartphone or tablet, the mobile version of the casino allows you to enjoy all the games and features without a hitch. The interface is designed to provide easy navigation and quick access to your favorite games.
In summary, Casino Fancy Reels New is an exciting destination for online gaming enthusiasts. With its diverse selection of games, generous promotions, secure payment methods, and robust customer support, it’s a worthwhile choice for both newcomers and veteran players. Don’t miss out on the chance to experience the thrill of Fancy Reels Casino—join today and start spinning your way to potential winnings!
Remember that gambling should always be approached responsibly. Set limits, play for fun, and enjoy the incredible gaming experience that Casino Fancy Reels New has to offer.
]]>
Are you ready to dive into the thrilling world of online gaming? F7 Casino Casino Registration Process F7 Casino online casino is an exciting platform where you can indulge in a variety of games, from slots to table games, and everything in between. Before you can start enjoying these offerings, however, you’ll need to go through a simple registration process. In this article, we will guide you through every step of creating your account at F7 Casino, ensuring that you can get started without any hurdles.
F7 Casino stands out among the myriad of online casinos due to its user-friendly interface, a variety of games, generous bonuses, and a commitment to player safety. The platform is designed to cater to both newcomers and seasoned players, providing a seamless gaming experience. But before you can enjoy all these benefits, you need to register an account. Let’s break down the registration process step by step.
The first step in the registration process is to visit the F7 Casino website. You can do this by typing the URL into your browser’s address bar or by conducting a quick search. Once on the homepage, look for the “Sign Up” or “Register” button, typically located at the top right corner of the screen.
After clicking on the “Sign Up” button, you will be directed to the registration form. This form generally requires you to provide the following information:
Ensure that you provide accurate information, as this will be used to verify your identity and facilitate deposits and withdrawals.
Before you can complete your registration, you will likely be asked to agree to F7 Casino’s terms and conditions. It’s essential to read these terms thoroughly to understand your rights and obligations as a player. This step may also include confirming that you are of legal age to gamble in your jurisdiction.
Once you submit your registration form, F7 Casino will typically send a verification email to the address you provided. Click on the link in the email to confirm your email address. This step is crucial as it helps to secure your account and ensures that you have access to all features on the site.
Some players may also need to provide additional documentation to complete the verification process. This could include a copy of your ID, proof of address, or other identification to comply with gambling regulations. Providing these documents promptly will help speed up the verification process.
After verifying your account, you will need to make your first deposit to start playing. F7 Casino offers a variety of payment methods, including credit and debit cards, e-wallets, and bank transfers. Navigate to the cashier section of the website, select your preferred payment method, enter the required details, and follow the instructions to complete your deposit.
Remember to check for any welcome bonuses that may be available to new players upon their first deposit. Taking advantage of these offers can enhance your gaming experience and provide you with additional funds to explore the casino’s offerings.
With your account successfully created and your deposit made, it’s time to explore F7 Casino! Log into your account and take a moment to familiarize yourself with the layout of the site. The casino offers a diverse selection of games, including:
Utilize the search bar and filters to find specific games you’re interested in, or check out the “Popular” and “New” sections for recommendations.
As you embark on your gaming journey, it’s vital to practice responsible gambling. Set a budget for your gaming activities and stick to it. F7 Casino provides various tools to help you manage your gaming, such as deposit limits, time-outs, and self-exclusion options. Familiarize yourself with these tools to ensure a safe and enjoyable experience.
The registration process at F7 Casino is straightforward and designed to get you playing quickly. By following the steps outlined in this guide, you’ll have your account up and running in no time, ready to explore a fantastic array of games. Remember to take advantage of any bonuses and promotions during your journey, and always gamble responsibly.
Happy gaming!
]]>
Welcome to the exhilarating universe of Online Casino Evospin evospincasino.co.uk, where the excitement of gaming meets the allure of a luxurious casino experience. Online Casino Evospin is swiftly becoming a popular choice among players who are seeking an engaging platform packed with a diverse range of gaming options, generous bonuses, and a user-friendly environment.
Evospin Casino stands out in the crowded online gaming market for several reasons. First and foremost, it offers a vast library of games, catering to all types of players—from enthusiastic slot gamers to lovers of table games and live dealer experiences. The platform is designed to provide a seamless gaming experience, with quick loading times and intuitive navigation, ensuring that players can easily find their favorite games or discover new ones.
One of the main attractions of Online Casino Evospin is its extensive selection of games. With hundreds of slots, classic table games like blackjack and roulette, as well as a comprehensive live casino section featuring real dealers, players can enjoy a varied gaming environment. Slots enthusiasts will find an impressive array of themes, mechanics, and potential jackpots, while table game aficionados can test their skills against both AI and live opponents.

Evospin Casino takes pride in offering numerous bonuses and promotions to both new and existing players. Upon signing up, players are often greeted with attractive welcome packages that can include deposit matches, free spins, and other enticing offers. Regular promotions such as cashback bonuses, loyalty rewards, and seasonal campaigns ensure that players consistently have new opportunities to boost their bankrolls and extend their gameplay.
When it comes to online gaming, safety and security are paramount. Evospin Casino is licensed and regulated by reputable authorities, which means players can engage with confidence, knowing that their personal information and financial transactions are protected. The casino utilizes advanced encryption technology to safeguard sensitive data, ensuring that players can focus solely on enjoying their gaming experience.
Evospin Casino has prioritized user experience in its design and functionality. The website is visually appealing, with a sleek design that enhances navigation. Players can easily access their favorite games, check out ongoing promotions, and manage their accounts with few clicks. Additionally, the platform is mobile-friendly, allowing players to enjoy gaming on the go via their smartphones and tablets, without sacrificing quality or performance.
To accommodate a global audience, Evospin Casino offers a wide range of payment methods, including credit and debit cards, e-wallets, and bank transfers. Deposits are typically processed instantly, enabling players to jump into the action right away. Withdrawals are handled efficiently, with various methods available to ensure players can access their winnings quickly and conveniently.

Quality customer support is a cornerstone of a great online casino experience. Evospin Casino provides a dedicated support team that is available around the clock to assist players with any questions or issues they may encounter. Whether you require assistance with account setup, game rules, or payment processing, you can reach out via live chat or email to get prompt and knowledgeable help.
Evospin Casino is committed to promoting responsible gaming. The platform provides players with the resources and tools needed to maintain control over their gambling habits. Features such as deposit limits, self-exclusion options, and access to professional support organizations underline the casino’s dedication to ensuring a safe and enjoyable gaming environment.
In conclusion, Online Casino Evospin is a robust and thrilling platform that meets the needs of a diverse audience. With its impressive game selection, generous promotions, strong commitment to player safety, and responsive customer service, it offers a comprehensive online gaming experience. Whether you are a new player or a seasoned veteran, Evospin Casino is worth checking out for anyone looking for excitement and entertainment in the online gaming world.
Join the fun today, and experience the captivating offerings of Online Casino Evospin!
]]>
If you are searching for thrilling online gaming experiences, look no further than Wager Tales Casino Online Games Wager Tales casino UK. This online casino platform offers a plethora of games that cater to all types of players, ensuring that everyone finds something to enjoy.
Wager Tales Casino has made a name for itself in the online gaming industry with a commitment to providing an immersive gaming environment and an extensive selection of games. This platform recreates the excitement of a traditional casino while allowing players to enjoy their favorite games from the comfort of their homes.
The casino features a user-friendly interface designed to enhance the player experience. Whether you’re a novice or a seasoned gambler, navigating through the website is smooth and engaging, making it easy to find and play your favourite games.
One of the standout features of Wager Tales Casino is the variety of games it offers. Below are some of the main categories:

Slot games are a cornerstone of any online casino, and Wager Tales is no exception. With hundreds of vibrant and entertaining slot games, players can choose from classic fruit machines to the latest video slots, each featuring unique themes and gameplay mechanics. Progressive slots also enable players to chase large jackpots, providing a thrilling gaming experience.
If you prefer traditional games, the casino offers a fantastic selection of classic table games. Enjoy multiple variations of blackjack, roulette, and baccarat, each with its set of rules and strategies. The realistic graphics and gameplay mechanics create an engaging atmosphere that brings the casino experience directly to your screen.
For players who crave a more interactive experience, the live dealer section won’t disappoint. Wager Tales Casino provides live streaming of professional dealers who guide you through the game in real-time. This option fills the gap between virtual and traditional gambling by allowing players to interact with dealers and other participants, making it more social and enjoyable.
One of the highlights of playing at Wager Tales Casino is the array of bonuses and promotions available to players. New players are often greeted with generous welcome bonuses that may include free spins or deposit matches.
Furthermore, the casino frequently updates its promotions to retain existing players, offering loyalty points, cashback deals, and seasonal offers that enhance the overall gaming experience. It’s essential to keep an eye on the promotions page to maximize your potential winnings.

Wager Tales Casino understands the importance of secure and efficient transactions. The platform supports a variety of payment methods, ranging from traditional credit and debit cards to modern e-wallet solutions. Players can make deposits and withdrawals with confidence, knowing that their financial information is safeguarded by robust encryption protocols.
In today’s fast-paced world, mobile compatibility is an essential factor for any online casino. Wager Tales Casino excels in this area, offering a seamless mobile gaming experience. Whether you play on your smartphone or tablet, you can access your favorite games on the go without compromising on quality. The mobile site is optimized for touch screens and provides the same exciting features found on the desktop site.
Wager Tales Casino prides itself on its customer service. Should you encounter any issues or have questions, the dedicated support team is available to assist you. Players can reach out via live chat, email, or phone, receiving prompt responses to ensure a smooth gaming experience.
Wager Tales Casino is committed to promoting responsible gaming. The platform provides various tools to help players manage their gambling habits. This includes setting deposit limits, self-exclusion options, and links to organizations that can help those struggling with gambling addiction. The casino prioritizes player safety, encouraging players to gamble responsibly and seek help if necessary.
With its impressive collection of games, generous bonuses, and user-friendly interface, Wager Tales Casino positions itself as a top choice for online gaming enthusiasts. Whether you prefer the thrill of slots or the strategic play of table games, this casino has something for everyone. So why not take a chance and dive into the world of Wager Tales Casino online games today? Your next big win could be just a spin or a dealt card away!
]]>
Welcome to the thrilling universe of Online Casino Dracula, where every spin of the wheel and every deal of the cards is enhanced by a captivating theme that merges the world of casino gaming with the legendary tale of Dracula. If you’re looking for a gaming experience that is both spooky and exhilarating, you’ve come to the right place. Join us at Online Casino Dracula draculacasinos.co.uk for an adventure like no other!
The legend of Dracula has long fascinated audiences around the world, from Bram Stoker’s classic novel to countless film adaptations. This vampire’s tale is not just about horror; it is steeped in rich folklore, romance, and suspense. Online Casino Dracula taps into this narrative, inviting players to dive into a world filled with dark castles, mysterious characters, and the thrill of fortune.
There are countless online casinos available today, but Online Casino Dracula stands out due to its unique theme and engaging gameplay. Here are a few compelling reasons why you might want to experience this captivating casino:
At Online Casino Dracula, the game collection is nothing short of impressive. Here is a look at the variety of games you can enjoy:
Online slot machines are a staple of any online casino. At Online Casino Dracula, themed slots bring Dracula’s tale to life, featuring iconic imagery, cinematic soundtracks, and engaging gameplay mechanics that could lead to massive jackpots.
For those who prefer classic casino experiences, Online Casino Dracula offers a variety of table games including blackjack, roulette, and poker. These games not only provide fun but also strategic depth that keeps players coming back.

If you want an authentic casino experience from the comfort of your home, live dealer games are a must-try. With real dealers and interactive environments, Online Casino Dracula ensures that the excitement of a physical casino is just a click away.
Online Casino Dracula makes it easy for players to deposit and withdraw funds safely. With various banking options, including credit cards, e-wallets, and even cryptocurrencies, ensuring your transactions are secure is a priority. Always make sure to check for any minimum or maximum deposit and withdrawal limits before you begin playing.
Customer service is crucial in the online gaming world, and Online Casino Dracula does not disappoint. Their support team is available 24/7 through live chat, email, or phone, ensuring you receive assistance whenever you need it. Whether you have questions about your account, bonuses, or game rules, help is readily available.
When playing at an online casino, you want to know that your personal and financial information is secure. Online Casino Dracula utilizes state-of-the-art encryption technologies to ensure that all transactions and data are protected. Furthermore, they are licensed and regulated, providing players with peace of mind.
In today’s fast-paced world, having the ability to play on the go is a major advantage. Online Casino Dracula is fully optimized for mobile play, allowing you to enjoy your favorite games on smartphones and tablets without compromising on quality.
Online Casino Dracula recognizes the importance of responsible gaming. They provide resources and tools for players to maintain control over their gaming activities, including self-exclusion options, deposit limits, and links to gambling support organizations. It’s crucial to enjoy gaming as a form of entertainment rather than a route to financial gains.
In summary, Online Casino Dracula offers a unique blend of entertainment, thematically rich gaming experiences, and a multitude of options that cater to all kinds of players. Whether you’re a casual gamer or a serious player, this online casino provides an atmospheric setting and exciting gameplay. Make sure to visit draculacasinos.co.uk to learn more and start your adventure today!
Don’t miss out on the fun—sign up for an account at Online Casino Dracula and immerse yourself in a world where the thrill of gaming meets the mystical allure of the Dracula legend. With plenty of games to choose from and exciting bonuses waiting for you, your adventure starts now!
]]>