/*! 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 = '<
El dinero que usas en los juegos gratis es ficticio por lo que las ganancias también lo serán. Si quieres jugar con dinero real es necesario que juegues desde un casino, checa la lista de los casinos en línea que te recomendamos. Con tu primer registro algunos casinos mexicanos te regalan saldo gratis para probar su sitio y catálogo de juegos.
Otra es no cumplir correctamente con el requisito de apuesta o la vigencia del bono. Es el periodo de tiempo que tienes para cumplir las condiciones de los bonos sin depósito. Regularmente el tiempo para completar las condiciones es de 1 a 7 días. Hay muchos tipos de casinos online en España, y cada jugador tiene su favorito. Estos son los mejores casinos en línea de España que te recomendamos en enero.
México es un país que goza de una oferta amplia de casinos online. Con una historia tan rica en los juegos de apuestas, los casinos en México se pueden clasificar por categorías. Por lo general los bonos con depósito tienen un límite de ganancia que establece cada casino.
En casino.mx puedes jugar gratis cuantas veces quieras sin interrupciones, por lo que no tienes ningún límite de tiempo. Una de ellas es que puedes probar distintos juegos y encontrar el que más te interese. Es imposible definir un sólo casino, ya que las opciones van desde los de mayor tradición en México como Caliente Casino, hasta los más nuevos como Stake Casino. Puedes conocer los mejores casinos online y las evaluaciones de nuestros expertos para elegir el que mejor se adecúe a tus necesidades.
En el caso de México, el responsable de regular a los casinos es la Secretaría de Gobernación a través de la Dirección General de Juegos y Sorteos. Esta entidad emite las licencias y los permisos a los casinos que operan legalmente en el país. En la sección del banca realiza tu primer depósito en el casino y prepárate para jugar.
En México los casinos son regulados por la SEGOB, a través de la Dirección General de Juegos y Sorteos (DGJyS). En Casino.mx puedes leer reseñas actualizadas de los mejores casinos con permiso SEGOB y elegir el más conveniente para ti. Hay muchos casinos online en México que cuentan con apps para sistemas operativos Android o iOS. Algunos ejemplos de casinos evaluados por nuestros expertos son Leon Casino, Sportium y Codere.
Las funciones destacadas son los símbolos multiplicadores que pueden alcanzar hasta 500x y las Free Spins, donde se acumulan todos los multiplicadores obtenidos para premios masivos. Hay una gran variedad de juegos en los casinos en línea mexicanos. No solo puedes jugar en las famosas tragamonedas, sino juegos de cartas, ruletas, dados, bingo y más. A continuación te explicamos cómo funcionan los juegos más populares. Rosa López tiene un profundo conocimiento del mundo de los casinos en línea tanto en España como en Latinoamérica. Ha pasado más de seis años explorando y reseñando una amplia variedad de casinos y juegos.
Juntos podemos garantizar un entorno de juego seguro y confiable para todos. Analizamos cada casino online de forma imparcial y minuciosa para que cuentes con información fiable, clara y actualizada a la hora de decidir dónde jugar. Cada semana nuestro equipo de editores te recomienda un casino online diferente según las novedades en juegos, bonos y promociones. Aprovecha los juegos de casino gratis para descargar al celular ingresando a la página web de tu casino preferido y descargando su app.
Elige entre la variedad de métodos de pago de casino en España y disfruta de depósitos y retiros rápidos en casinos en línea seguros. “Llevamos más de 30 años trabajando para ofrecerte el mejor casino online de España. Nuestros expertos actualizan a diario la lista de casinos online legales autorizados por la Dirección General de Ordenación del Juego (DGOJ)”. Utiliza nuestra herramienta y compara varios juegos de casino online. Encuentra tu favorito y juega en nuestro sitio de Casino.mx totalmente gratis.
El equipo de Casino.mx se dedica a evaluar los casinos online más destacados para poner a tu disposición la información más actualizada y veraz. Nuestra misión número 1 es ayudarte a elegir un casino online que se adapte a tus gustos y preferencias. Para elegir los mejores casinos con dinero real, llevamos a cabo una investigación a conciencia de cada uno. Creamos una cuenta, realizamos un depósito, pedimos el bono de bienvenida y comenzamos a jugar como cualquier persona lo haría. Los mejores casinos con bonos sin depósito en México son Lucky Days, Winpot, Caliente, Strendus, Boo Casino y bcasino. Mantente al día con nuestras reseñas de casino para conocer más ofertas.
Por lo general en el pie de página puedes encontrar el oficio del permiso SEGOB, lo que indica que el casino es legal. Con nuestra herramienta de comparación puedes contrastar los mejores bonos de casino disponibles para los jugadores mexicanos. Toda la información y detalles de esta página ha sido revisada por nuestro experto en casinos online, Fran Sánchez. Abrió sus puertas en el 2008 y además de ofrecer diversos juegos de mesa y máquinas tragamonedas, cuenta con el primer Poker Room oficial de la WSOP en México.
Su finalidad es guiar a los jugadores a los mejores casinos en línea para que su experiencia sea la mejor posible. Sí, es seguro proporcionar tus datos bancarios en casinos online regulados que emplean tecnología de cifrado SSL para proteger tu información. Asegúrate de que el casino tenga buena reputación y tenga licencia vigente. En casino.org, combinamos décadas de experiencia con aportaciones valiosas de usuarios como tú para asegurar la más alta calidad y seguridad en nuestras recomendaciones. Si detectas un casino que podría ser ilegal, comparte tu información con nosotros.
Aunque la mayor desventaja será que no ganarás dinero real o bonos. Además, podrás iniciarte y conocer un juego antes de arriesgar tus fondos. Probablemente, la slot más conocida de Pragmatic Play que puedes jugar gratis es Gates of Olympus
. Este juego destaca con un RTP promedio de 95.51% y una volatilidad elevada, ofreciendo un premio máximo de 5,000x. Fue uno de los primeros juegos en ofrecer multiplicadores, beneficiando a ganadores de México y otros países. En cuanto a la temática, se inspira en la mitología griega, con símbolos que incluyen los regalos de Zeus y otros elementos antiguos.
Los bonos sin depósito de los casinos son promociones que no requieren hacer un depósito de efectivo para obtener recompensas como saldo o crédito extra y giros gratis. Cuando se trata de las mejores tragamonedas gratis de México, dejar por fuera a Calavera Crush sería un pecado. Este juego de Yggdrasil, con un RTP de 94.00%, alta volatilidad y una ganancia máxima de 5,000x, incorpora innovadoras características como efectos de cascada o avalancha. Además, el espíritu de las festividades sigue vivo en las Tiradas Gratis, donde la cantidad de Scatters determina el número de tiradas gratuitas, alcanzando hasta 16. Nuestros expertos han evaluado más de 20 casinos en línea y seleccionado lo mejor de lo mejor para los jugadores mexicanos. Desde nuestra experiencia los siguientes sitios son excelentes opciones para apostar de manera segura y conveniente.
En su defecto, también puedes optar por los juegos de casino gratis sin descargar ni registrarse desde tu computadora o teléfono móvil. Cuando los premios son pequeños y frecuentes, se dice que visitar página tienen una baja volatilidad; en cambio, si los premios son grandes, pero menos frecuentes, se dice que tienen una volatilidad alta. Al jugar gratis y comparar varias tragamonedas podrás elegir el tipo de volatilidad que prefieres.
Cualquier casino online que recomendamos es totalmente seguro, fiable y con licencia de la DGOJ vigente. Un operador en el que encontrarás todas las herramientas de juego más seguro y autoexclusión a un solo clic es Casino Gran Madrid. Al jugar gratis puedes conocer las reglas y perfeccionar tu estrategia antes de usar dinero real.
Goldfish (WMS), Buffalo (Aristocrat) y Cleopatra (IGT) son las más populares en Casino.org. Sin embargo, esto varía dependiendo de cada jugador y sus gustos. El primer paso es ponerte en contacto con el servicio de atención al cliente del casino para trasladar tu queja o reclamación.
Los casinos online bono sin depósito no requieren que hagas un depósito para activar la promoción para nuevos jugadores. Sin embargo, se debe invertir cierta cantidad de dinero para cumplir determinadas condiciones y así obtener las ganancias de la bonificación. Antes de apostar dinero real en un casino puedes probar casi cualquier juego sin costo en nuestra colección de juegos de casinos online gratis. Esto te permitirá conocer las reglas y el ambiente de juego de los casinos sin necesidad de registrarte. La única forma de obtener ganancias reales es apostando dinero o usando bonos, en Casino.mx puedes comenzar a ganar dinero real en los casinos que nuestros expertos recomiendan.
Está tan bien evaluado que entra en nuestro top 3 de casinos con bono sin depósito. El casino tiene más de 6 mil juegos para disfrutar y su bono sin depósito es uno de los más grandes en el mercado. Hay una gran cantidad de bonos de giros gratis para poder jugar slots gratis. Para jugar tragaperras en línea gratis basta con entrar en el sitio del casino, elegir una de las miles de opciones disponibles y, en cuanto se haya cargado, ya puedes empezar a jugar. Nuestra enorme galería de tragamonedas gratis cuenta con algunas de las mejores gráficas y animaciones que encontrarás en los juegos online para tragamonedas de 3 y 5 carretes en México.
En la mayoría de los casinos online encontrarás un botón de registro en la esquina superior derecha de su sitio oficial. Al dar clic deberás de rellenar un formulario y en algunos casos verificar tu teléfono o correo electrónico. Nuestra experiencia jugando en casinos con licencia siempre ha sido buena. Para que te des una idea, aquí enlistamos los pros y contras que hemos identificado al jugar en casinos licenciados. Si tienes una queja sobre algún casino puedes enviarla por correo a la Dirección General de Juegos y Sorteos a con la siguiente información.
Los bonos que no requieren depósitos son excelentes promociones para los nuevos jugadores. Sin embargo, debes saber que retirar tus ganancias con este tipo de bono puede ser un poco más difícil. Aquí te damos algunos tips para saber lo esencial y elegir los mejores bonos sin depósito.
Permite a los jugadores avanzar a través de varios mundos y recuerda al popular Candy Crush Saga. En Casino.mx hemos evaluado más de 15 proveedores de software presentes en los top casinos online de México. Desde nuestro sitio puedes conocer sus títulos más populares y aprender a jugar gratis. Entre los juegos de casino con bono sin depósito se encuentran las tragamonedas online. Aquí enlistamos cinco excelentes opciones para jugar con este tipo de bono.
Winpot es un casino seguro en México con permiso SEGOB y que ha operado en el país desde el año 2006. Este casino tiene más de 2,700 juegos y está valorado dentro de nuestros mejores 3 casinos que dan bono sin depósito. Para jugar tragamonedas gratis solo dirígete a nuestro catálogo, busca el juego que desees probar y clica en la opción de “Jugar Gratis”. Si prefieres hacerlo en un casino, solo selecciona esta opción. Sí, las ganancias obtenidas en los juegos de azar hay que tributarlas a Hacienda. A partir de 1.000 euros de beneficio en un casino online, apuestas deportivas o póker, estás obligado a incluirlas en tu declaración fiscal, puesto que están sujetas al IRPF.
No olvides verificar en los términos de la oferta cuáles son los juegos elegibles. Verificar tu cuenta te facilitará la vida cuando quieras retirar tus ganancias. Es probable que el casino te pida un documento oficial con fotografía, estados de cuenta y comprobante de domicilio. Rellena el formulario de registro para crear tu cuenta en tu plataforma preferida. Después de registrarte, algunos casinos te pedirán aceptar el bono de bienvenida. La siguiente guía te ayudará a empezar con el pie derecho en el mundo de los casinos mexicanos online.
Además de su rol como redactor especializado en las apuestas online desde hace 2 años, es un apasionado jugador de casino. La mayoría de los casinos de dinero real en México ofrecen los siguientes métodos de pago para realizar tus depósitos y retiros. En los casinos en línea podrás encontrar una variedad de juegos para toda clase de jugadores. Desde los juegos clásicos de mesa hasta las populares tragamonedas.
Si los créditos de juego se agotan, solo da click en el botón de recargar y obtendrás más créditos pagar jugar. En la parte superior de tu navegador, junto a la barra de direcciones, encontrarás un pequeño botón o candado. Si le das clic, tu navegador te ayudará a saber si el casino cuenta con un certificado de seguridad apropiado.
Sin embargo, esto no quiere decir que no te ofrezcan grandes beneficios. A continuación, encontrarás las mayores diferencias que hay entre estos demos y las versiones con dinero real para que puedas decidir cuál te conviene. Juega los mejores torneos de casino con freerolls o comprando entradas (buy-in). Compite con otros jugadores por ser el mejor en la clasificación.
]]>Tiene registro rápido, app móvil e interfaz intuitiva para jugar sin obstáculos. Royal Yak una de las salas de juegos más grandes del país con máquinas tragamonedas, bingo electrónico, ruleta, sic bo y otros. Una de las razones más comunes que te impiden cobrar tus ganancias en un casino es que no esté verificada tu cuenta.
Un 100% hasta 500€ en CashPlay que puedes ir retirando conforme juegas, sin esperar a completar todo el rollover. Si los créditos de juego se agotan, solo da click en el botón de recargar y obtendrás más créditos pagar jugar. En la parte superior de tu navegador, junto a la barra de direcciones, encontrarás un pequeño botón o candado. Si le das clic, tu navegador te ayudará a saber si el casino cuenta con un certificado de seguridad apropiado. Los casinos también pueden operar con un permiso de la Autoridad del Juego de Malta o la Junta del Control del Juego de Curazao.
Analizamos cada casino online de forma imparcial y minuciosa para que cuentes con información fiable, clara y actualizada a la hora de decidir dónde jugar. Cada semana nuestro equipo de editores te recomienda un casino online diferente según las novedades en juegos, bonos y promociones. Aprovecha los juegos de casino gratis para descargar al celular ingresando a la página web de tu casino preferido y descargando su app.
En su defecto, también puedes optar por los juegos de casino gratis sin descargar ni registrarse desde tu computadora o teléfono móvil. Cuando los premios son pequeños y frecuentes, se dice que tienen una baja volatilidad; en cambio, si los premios son grandes, pero menos frecuentes, se dice que tienen una volatilidad alta. Al jugar gratis y comparar varias tragamonedas podrás elegir el tipo de volatilidad que prefieres. Con más de siete años de experiencia en la redacción de contenidos, Ana Paula se especializa en reseñas de nuevas tecnologías, sitios de casino online y otras plataformas y aplicaciones.
Más de 1,100 máquinas tragamonedas, apuestas deportivas, apuestas de carreras fuera de pista y juegos de mesa. Por lo regular este tipo de bonos tiene una ganancia máxima muy inferior a otros bonos. Está tan bien evaluado que entra en nuestro top 3 de casinos con bono sin depósito. El casino tiene más de 6 mil juegos para disfrutar y su bono sin depósito es uno de los más grandes en el mercado.
Aquí te damos algunos tips para saber lo esencial y elegir los mejores bonos sin depósito. El dinero que usas en los juegos gratis es ficticio por lo que las ganancias también lo serán. Si quieres jugar con dinero real es necesario que juegues desde un casino, checa la lista de los casinos en línea que te recomendamos. Con tu primer registro algunos casinos mexicanos te regalan saldo gratis para probar su sitio y catálogo de juegos. Puedes ganar dinero real con este tipo de promoción siempre y cuando cumplas con los requisitos de apuesta.
Juega los mejores torneos de casino con freerolls o comprando entradas (buy-in). Compite con otros jugadores por ser el mejor en la clasificación. En casino.mx puedes jugar gratis cuantas veces quieras sin interrupciones, por lo que no tienes ningún límite de tiempo.
Si prefieres hacerlo en un casino, solo selecciona esta opción. Sí, las ganancias obtenidas en los juegos de azar hay que tributarlas a Hacienda. A partir de 1.000 euros de beneficio en un casino online, apuestas deportivas o póker, estás obligado a incluirlas en tu declaración fiscal, puesto que están sujetas al IRPF.
Tu lealtad es premiada con puntos que puedes canjear y utlizar en conjunto con dinero real, así como con con beneficios extra que mejoran tu experiencia de juego. Es común que los casinos con bonos bienvenida gratis sin depósito en México establezcan un límite máximo a las ganancias, por lo que incluso si superas esa cantidad no podrás retirarlo todo. La principal ventaja de jugar gratis a las tragamonedas online es que no perderás dinero jugando. Aunque la mayor desventaja será que no ganarás dinero real o bonos. Además, podrás iniciarte y conocer un juego antes de arriesgar tus fondos. Probablemente, la slot más conocida de Pragmatic Play que puedes jugar gratis es Gates of Olympus
.
No siempre necesitas de un código promocional para activar un bono gratis. Aunque algunos casinos lo solicitan, la mayoría solo requiere que te registres en su casino por primera vez. Debes saber que estas generosas ofertas no son fáciles de encontrar y además cuentan con rollovers más altos que los de otros bonos de casino. Si no sabes por dónde empezar, apóyate en nuestra herramienta de comparación de bonos. Conoce las características más importantes de distintos tipos de bonos y elige el que mejor se adapta a ti.

México es hogar para más de 200 casinos tradicionales o land based, muchos de los cuales están en Monterrey y Nuevo León. Populares tanto entre los jugadores locales como entre los turistas extranjeros, estos casinos presentan una selección de juegos de mesa, tragamonedas y salas VIP de lo más exclusiva. Estos sitios tienen malas prácticas, problemas de pago o no cuentan con licencia vigente en México.
Por lo general en el pie de página puedes encontrar el oficio del permiso SEGOB, lo que indica que el casino es legal. Con nuestra herramienta de comparación puedes contrastar los mejores bonos de casino disponibles para los jugadores mexicanos. Toda la información y detalles de esta página ha sido revisada por nuestro experto en casinos online, Fran Sánchez. Abrió sus puertas en el 2008 y además de ofrecer diversos juegos de mesa y máquinas tragamonedas, cuenta con el primer Poker Room oficial de la WSOP en México.
Nuestro equipo de expertos ha explorado exhaustivamente para seleccionar los mejores casinos en línea en México, que ofrecen una amplia variedad de tragamonedas gratuitas. Así, podrás perfeccionar tus habilidades y probar estrategias sin riesgo antes de apostar dinero real. Después de todo, jugar tragamonedas de forma gratuita es la manera ideal de mejorar tu juego. Casino.org es la autoridad de juegos online independiente más importante del mundo.
Puedes jugar con tranquilidad en casinos con licencia de la SEGOB o con otras licencias internacionales válidas, como la de MGA y UKGC. Los casinos online que cuenten con la licencia mexicana, deben someterse a las normas de la SEGOB con respecto al juego seguro y la transparencia fiscal. La gran ventaja para los usuarios es que esta licencia les asegura que pueden realizar reclamos ante una autoridad nacional. Gran Madrid pone a tu disposición un catálogo gigante con más de 4.200 slots y promociones especiales en sus juegos. Los torneos de slots de Pragmatic reparten premios a los 100 primeros clasificados con apuestas desde solo 0,10€.
Entre los juegos de casino con bono sin depósito se encuentran las tragamonedas online. Aquí enlistamos cinco excelentes opciones para jugar con este tipo de bono. Después de haber activado tu bono sin depósito algunos casinos te recompensan por jugar con frecuencia.
Además, puedes probar gratis diferentes títulos de bingo, blackjack, póker, video póker y ruleta. José tiene un fuerte compromiso por crear guías didácticas y reseñas objetivas para que sus lectores tomen mejores decisiones y disfruten de los casinos online. Además de su rol como redactor especializado en las apuestas online desde hace 2 años, es un apasionado jugador de casino. La mayoría de los casinos de dinero real en México ofrecen los siguientes métodos de pago para realizar tus depósitos y retiros. En los casinos en línea podrás encontrar una variedad de juegos para toda clase de jugadores. Desde los juegos clásicos de mesa hasta las populares tragamonedas.
Rellena el formulario de registro para crear tu cuenta en tu plataforma preferida. Después de registrarte, algunos casinos te pedirán aceptar el bono de bienvenida. La siguiente guía te ayudará a empezar con el pie derecho en el mundo de los casinos mexicanos online.
Desde nuestra experiencia los siguientes sitios son excelentes opciones para apostar de manera segura y conveniente. Juega en los casinos online de México recomendados por nuestros expertos con total confianza. El RTP es la cantidad de dinero que recibirás de un juego de casino online. Por ejemplo, la mayoría de las máquinas tragamonedas cuentan con un RTP entre 95% y 97%.
Son juegos de casino atendidos por un crupier profesional real y transmitidos en vivo. Estos juegos cuentan con una excelente producción y puedes interactuar con otros jugadores mientras juegas. En esta modalidad están disponibles juegos de cartas, ruletas, dados y también modernos juegos tipo concursos, shows de televisión o ruedas de la fortuna.
Al dar clic deberás de rellenar un formulario y en algunos casos verificar tu teléfono o correo electrónico. Nuestra experiencia jugando en casinos con licencia siempre ha sido buena. Para que te des una idea, aquí enlistamos los pros y contras que hemos identificado al jugar en casinos licenciados. Si tienes una queja sobre algún casino puedes enviarla por correo a la Dirección General de Juegos y Sorteos a con la siguiente información. Jugar en Melbet es una excelente experiencia ya que es un casino seguro con licencia de la Comisión de Juegos de Curaçao y avanzados protocolos de seguridad con captcha.
Cada participante inicia con 2 cartas y debe decidir pedir más cartas o quedarse como está. Quien se acerque más a los 21 puntos sin pasarse, gana la ronda. Para obtener ayuda con problemas de juego, visita nuestra Página de Juego Responsable.
Inspirada en mitos antiguos, esta slot de 5 rodillos y 20 líneas de pago incluye símbolos de dioses y elementos mitológicos. Cuenta con cuatro funciones de tiradas gratuitas, cada una vinculada a un dios antiguo con modificadores especiales, además de la chance de ganar premios de bote progresivo. Luis López es experto en la creación de contenidos honestos, transparentes y enfocados en los datos para el mercado en España y también para Latinoamérica. Su finalidad es guiar a los jugadores a los mejores casinos en línea para que su experiencia sea la mejor posible. Sí, clic para más detalles es seguro proporcionar tus datos bancarios en casinos online regulados que emplean tecnología de cifrado SSL para proteger tu información. Asegúrate de que el casino tenga buena reputación y tenga licencia vigente.
Esto te permitirá conocer las reglas y el ambiente de juego de los casinos sin necesidad de registrarte. La única forma de obtener ganancias reales es apostando dinero o usando bonos, en Casino.mx puedes comenzar a ganar dinero real en los casinos que nuestros expertos recomiendan. Los bonos que no requieren depósitos son excelentes promociones para los nuevos jugadores. Sin embargo, debes saber que retirar tus ganancias con este tipo de bono puede ser un poco más difícil.
La contribución de juegos se refiere a cuánto de lo jugado se acumula para cumplir con el rollover de la promoción. Si juegas en una tragamonedas con un bono sin depósito, estas contribuyen a un 100%. Es la cantidad máxima que puedes retirar por las ganancias obtenidas de tu bono casino sin depósito. Por ejemplo, si el límite es de $10,000.00 MXN, solo puedes retirar esa cantidad a tu cuenta. Los bonos sin depósito tienen una serie de requisitos que se deben cumplir para que puedas retirar tus ganancias.
No olvides verificar en los términos de la oferta cuáles son los juegos elegibles. Verificar tu cuenta te facilitará la vida cuando quieras retirar tus ganancias. Es probable que el casino te pida un documento oficial con fotografía, estados de cuenta y comprobante de domicilio.
Ofrece noticias, guías, reseñas e información fiable sobre casinos en línea desde 1995. En los términos de cada bono sin depósito se establece qué juegos puedes jugar al activarlo. Por lo regular, los bonos de casino sin deposito te permiten jugar tragamonedas y juegos de mesa. Toma en cuenta que en la mayoría de los casos no aplica en las mesas en vivo. Usa nuestra herramienta de comparación para conocer características importantes de los juegos más populares. Desde Casino.mx puedes probar gratis más de 20,000 opciones antes de jugar con dinero real.
]]>En la mayoría de los juegos crash, en cada ronda hay una nave o un avión que vuela por un tiempo aleatorio. El desafío es retirar tu dinero antes que el avión choque, en cuyo caso pierdes tu apuesta. Consta de una ruleta giratoria que tiene marcadas casillas con números y colores negro y rojo.
Con una historia tan rica en los juegos de apuestas, los casinos en México se pueden clasificar por categorías. Apostar en línea es legal en México siempre que lo hagas en una plataforma autorizada por la SEGOB. Winner.mx opera con licencia oficial (DGG/SP/404/97), lo que garantiza que estás apostando en un sitio regulado, transparente y seguro. Si el casino cuenta con un número de licencia SEGOB o con la licencia de alguna autoridad internacional, es un buen indicador de que es seguro. También puedes escoger un casino online de nuestra lista, donde te aseguramos que cada casino ha sido revisado minuciosamente. También utilizan tecnología RNG (Generación de Números Aleatorios) que garantiza que los resultados de los juegos son aleatorios y justos.
Los montos máximos y mínimos de los medios de pago en los casinos mexicanos varían de sitio en sitio. El jugador recibe 5 cartas y por rondas puede descartar las cartas que quiera para recibir cartas nuevas y formar manos o jugadas. Al final de la ronda el jugador recibe un pago de acuerdo con una tabla de jugadas.
Desde Casino.mx puedes probar gratis más de 20,000 opciones antes de jugar con dinero real. Así podrás conocer las reglas y elegir los juegos y casinos que pagan más en México. Los casinos online confiables son seguros para jugar y apostar en una gran cantidad de juegos.
Hay otro requisito no escrito que te recomendamos considerar. Para retirar tu dinero de la mayoría de los casinos online México, necesitarás una cuenta bancaria. Aunque hay muchos métodos de pago distintos, para reiterar el método más común es la transferencia SPEI. Para ello necesitarás una cuenta bancaria y que esté a tu nombre. Nuestro equipo se encarga de buscar los mejores casinos móviles y apps basándose en nuestros criterios de calidad y seguridad. Además, creamos reseñas detalladas sobre las características de cada casino.
En el caso de México, el responsable de regular a los casinos es la Secretaría de Gobernación a través de la Dirección General de Juegos y Sorteos. Esta entidad emite las licencias y los permisos a los casinos que operan legalmente en el país. Con nuestra herramienta de comparación puedes contrastar los mejores bonos de casino disponibles para los jugadores mexicanos. La versión que más te guste de la ruleta online disponible en nuestro catálogo de juegos. Winner.mx opera con licencia oficial SEGOB (DGG/SP/404/97) y está respaldado por Tecnología en Entretenimiento Caliplay S.
Todo el sitio cuenta con conexión segura SSL, para que cada depósito, retiro y jugada estén protegidos. Empieza con un bono sin depósito desde $700 MXN para explorar lo que quieras, sin riesgo. Con tu primer depósito, puedes obtener hasta $3,600 MXN adicionales.
La gran ventaja para los usuarios es que esta licencia les asegura que pueden realizar reclamos ante una autoridad nacional. Abrió sus puertas en el 2008 y además de ofrecer diversos juegos de mesa y máquinas tragamonedas, cuenta con el primer Poker Room oficial de la WSOP en México. México es hogar para más de 200 casinos tradicionales o land based, muchos de los cuales están en Monterrey y Nuevo León. México es un país que goza de una oferta amplia de casinos online.
Antes de apostar dinero real en un casino puedes probar casi cualquier juego sin costo en nuestra colección de juegos de casinos online gratis. Esto te permitirá conocer las link reglas y el ambiente de juego de los casinos sin necesidad de registrarte. Los casinos online México son sitios web donde puedes encontrar tragamonedas, ruletas y juegos de cartas para jugar y apostar como en un casino físico. Son populares porque ofrecen algunas ventajas sobre los casinos físicos. Usa nuestra herramienta de comparación para conocer características importantes de los juegos más populares.
Los juegos en modo demo funcionan exactamente igual que cuando juegas con dinero real, pero utilizan créditos ficticios en lugar del dinero de tu balance. Si tienes una queja sobre algún casino puedes enviarla por correo a la Dirección General de Juegos y Sorteos a con la siguiente información. En la sección del banca realiza tu primer depósito en el casino y prepárate para jugar. No olvides verificar en los términos de la oferta cuáles son los juegos elegibles.
Nuestra experiencia jugando en casinos con licencia siempre ha sido buena. Pero como en todo, hay pequeñas desventajas que debes conocer. Para que te des una idea, aquí enlistamos los pros y contras que hemos identificado al jugar en casinos licenciados. En la parte superior de tu navegador, junto a la barra de direcciones, encontrarás un pequeño botón o candado. Si le das clic, tu navegador te ayudará a saber si el casino cuenta con un certificado de seguridad apropiado.
El dinero es real y es tuyo si cumples con las reglas del casino. Te recomendamos visitar nuestra lista de casinos en México, son casinos que hemos probado y comprobamos que son seguros y ofrecen entretenimiento de la mejor calidad. La regulación de apuestas en línea en México está establecida en la Ley Federal de Juegos y Sorteos.
Los métodos de pago son importantes para depositar en los casinos y jugar con dinero real. Estos deben ser convenientes para el jugador, seguros y fáciles de usar. En los casinos en línea podrás encontrar una variedad de juegos para toda clase de jugadores.
Es probable que el casino te pida un documento oficial con fotografía, estados de cuenta y comprobante de domicilio. Todo respaldado por los mejores proveedores como Playtech y Big Time Gaming. Las apuestas son una actividad recreativa que puede disfrutarse sanamente cuando se lleva con responsabilidad.
Son sitios legales, regulados y auditados donde puedes jugar con seguridad. Rosa López tiene un profundo conocimiento del mundo de los casinos en línea tanto en España como en Latinoamérica. Ha pasado más de seis años explorando y reseñando una amplia variedad de casinos y juegos. Su experiencia incluye la cobertura de numerosos eventos de apuestas deportivas en países como México, España, Chile, Perú y Argentina.
Nuestro sistema de live bet te permite estar al tanto de múltiples apuestas incluso mientras pruebas suerte en nuestros juegos de casino en línea. En los sitios web de los casinos encontrarás un botón de registro, normalmente en la sección superior derecha. Da clic en ese botón y completa el formulario para registrarte en cualquier casino. Hay muy buenas razones para jugar en online casinos en México, como la gran variedad de juegos y la disponibilidad para jugar en cualquier momento. A continuación te mostramos ambas partes para que puedas comparar y tomar la mejor decisión.
La secretaría de gobernación (SEGOB) es la encargada de regular los casinos en México. Esta entidad otorga licencias de operación y asegura que los casinos cumplen con las reglas establecidas por el gobierno. Las páginas también suelen referir a los jugadores a otros sitios con más información y recursos adicionales para el juego responsable. Los casinos online que cuenten con la licencia mexicana, deben someterse a las normas de la SEGOB con respecto al juego seguro y la transparencia fiscal.
Online CasinoCada vez son más los jugadores que juegan desde sus celulares y otros dispositivos móviles. Por esa razón, los online casinos están desarrollando aplicaciones para estos dispositivos que se han vuelto muy populares en los últimos años. Los juegos en modo demo son una excelente forma de conocer juegos nuevos y familiarizarse con sus reglas. Puedes usar el modo demo para practicar en un título en específico y después pasarte a jugar con dinero real cuando tengas más confianza en el juego. Los juegos en modo demo son exactamente iguales y tienen las mismas características que tiene un juego cuando apuestas con dinero real. La única diferencia es que juegas con un crédito ficticio y no puedes ni ganar ni perder dinero mientras juegas.
Al jugar gratis y comparar varias tragamonedas podrás elegir el tipo de volatilidad que prefieres. Winner.mx está respaldado por Tecnología en Entretenimiento Caliplay S. De C.V., opera con licencia SEGOB y cuenta con seguridad SSL, verificación de juego justo (GLI) y proveedores reconocidos como Playtech. Sí, si tienes una serie de rondas ganadoras y ganas dinero en un casino, puedes retirar ese dinero y pasarlo a una cuenta bancaria o de otro tipo.
]]>