/*! 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 = '<
Cette accréditation garantit que le site respecte les standards internationaux en matière de sécurité, de transparence et d’équité des jeux. La réputation du casino est consolidée par des milliers de joueurs actifs en France et en Europe, ainsi que par un historique sans scandale ni litige majeur. Pour les utilisateurs à la recherche d’un casino en ligne sérieux, Ma Chance représente une option régulée, testée et reconnue. Les nouveaux joueurs bénéficient de tutoriels, de parties démo et d’un bonus de bienvenue gratifiant. Bienvenue sur Ma Chance Casino, une plateforme révolutionnaire dans le monde des jeux en ligne. Propulsé par Play Logia N.V., notre casino offre une expérience de jeu en ligne exceptionnelle qui allie divertissement à l’innovation.
C’est cette transparence qui permet à Ma Chance de solidifier sa réputation parmi les casinos en ligne, offrant un terreau favorable à tous ceux qui souhaitent maximiser leurs gains. Rejoignez cette plateforme en constante amélioration et découvrez une expérience de jeu où l’équité prospère. Les mini-jeux ont fait cette année une entrée fracassante dans les casinos en ligne. Jeux de mine, jeux crash, les mini jeux ont le vent en poupe et sont de plus en plus appréciés des joueurs. Leur gameplay est simple, le rythme est rapide et les possibilités de gains sont bien réelles.
Français, anglais, espagnol… Vous ne serez jamais perdu dans la traduction. Un service qui sait comment vous faire sentir comme un VIP, même si vous jouez en pyjama. En offrant une interface entièrement en français, il n’y a pas de barrière linguistique.
Proposant une variété de jeux, il intègre les derniers titres d’Evolution Gaming tels que Blackjack, Poker, Monopoly Live, Gonzo’s Treasure Hunt, et Crazy Time dans sa catégorie Live Casino. Bien que certains fournisseurs renommés soient absents, MaChance comble les attentes des joueurs français avec une équipe dédiée. Explorez les avantages alléchants et les opportunités lucratives proposés par les bonus de Casino Win Ma Chance.
Que ce soit pour les machines à sous ou pour le live casino, ce site de jeux saura vous contenter. Pour encore plus de fun sur sa plateforme, il offre des bonus et promotions très intéressantes qui vous aideront à profiter pleinement des jeux disponibles. Et c’est cet aspect que nous développons dans cette section du site Ma-chance.fr. Nous commençons par vous dire si le bonus sans dépôt est disponible sur ce casino ou pas.
Les joueurs peuvent naviguer facilement, comprendre les règles des jeux et gérer leur compte sans confusion. C’est un vrai plaisir de voir un casino qui respecte notre langue et notre culture. Le fameux machance casino 15 euros sans dépôt est une bonne accroche pour tester la plateforme sans plonger tête la première. Pas besoin de se battre pour les conditions c’est clair, lisible, et surtout encaissable. Derrière ça, les bonus de dépôt suivent bien, avec un système VIP qui récompense ceux qui restent.
Il cible les amateurs de machines à sous modernes, les utilisateurs en quête de bonus de bienvenue généreux, ainsi que les joueurs réguliers désireux de bénéficier d’un programme VIP progressif. Grâce à une interface accessible et une offre adaptée, Win Ma Chance Casino répond efficacement aux attentes de profils variés. Ils alimentent plusieurs sites y compris ceux qui disposent d’un bonus sans dépôt.
Lа lіstе еst соmрlétéе раr lеs mаіsоns mоіns сélèbrеs, mаіs іntérеssаnt à l’іnstаr dе Sріnоmеnаl, Воооngо, Rіvаl еt рlus еnсоrе. Lа раgе dеs jеux dе mасhіnеs à sоus еst bіеn struсturéе, се quі fасіlіtе lа nаvіgаtіоn dеs jоuеurs. Grâсе аux trоіs mеnus dе сеttе sесtіоn, vоus роuvеz fіltrеr lеs jеux sеlоn сеrtаіns раrаmètrеs.
Avec ces quelques avantages, notre site de jeu s’est inscrit au centre des intérêts des joueurs français. Nous garantissons un environnement sécurisé et agréable pour les fans de jeux de casino en ligne. Le taux de retour est une valeur qui désigne les chances qu’un joueur a de remporter sa mise par un casino machance casino en ligne après avoir joué sur la plateforme.
Les membres VIP accumulent des points de fidélité en fonction de leurs paris sur les jeux. Ces points de fidélité peuvent être changés en bonus argent, en tours gratuits ou autres récompenses spéciales. Saisissez l’opportunité votre chance de devenir riche en quelques clics seulement. Choisissez “Ma Chance Casino”, créez votre compte dès maintenant et commencez à jouer pour de l’argent réel avec un capital de jeu accru par nos bonus de bienvenue exclusifs. En comparant les points forts et les points faibles de ce site de jeux, il apparaît clair que le casino Win Ma Chance est un site de jeux de grande qualité. Le nom de ce site est très révélateur, car les joueurs auront beaucoup de chance d’en devenir membres.
Tout d’abord, connectez-vous à votre compte sur la plateforme en ligne. Une fois connecté, dirigez-vous vers la section « Bonus » ou « Promotions » de votre compte, où les offres disponibles seront répertoriées. Disponible via chat en direct, l’équipe est réactive et prête à aider à tout moment. Que ce soit pour un problème technique ou une question sur « mon compte », l’assistance est rapide et efficace. On se sent vraiment pris en charge, ce qui est rare dans le monde des casinos en ligne.
Nos représentants sont connus pour leur réactivité, leur professionnalisme et leur convivialité, garantissant des réponses détaillées et utiles à toutes les questions des joueurs. Pour s’inscrire sur Ma chance casino, il suffit de visiter le site officiel et de cliquer sur le bouton d’inscription. Vous devrez fournir quelques informations personnelles comme votre nom, adresse e-mail, et créer un mot de passe. Une fois inscrit, vous pourrez accéder à l’ensemble des fonctionnalités du casino et commencer à jouer à vos jeux préférés après avoir effectué un premier dépôt. L’inscription est rapide et sécurisée, garantissant la protection de vos données personnelles.
La sécurité de votre compte Ma Chance Casino nécessite un mot de passe fort. Créez-le avec soin pour protéger toutes vos informations et préserver la confidentialité de votre compte. Les dépôts sont généralement instantanés et sans frais, vous permettant de commencer à jouer sans délai. Pour devenir un joueur VIP, vous devez jouer régulièrement sur notre site de jeu Machance Casino. En fin de compte, magical casino 50 free spins mais une fois que vous avez terminé avec le jeu principal.
Le mode démo proposé par Ma Chance Casino représente une porte d’entrée idéale dans l’univers des jeux d’argent en ligne. Cette fonctionnalité permet aux utilisateurs de s’essayer aux différentes offres sans nécessiter de dépôt préalable, facilitant ainsi les explorations. Elle favorise la prise en main des jeux en atténuant les risques, permettant aux débutants et aux vétérans de peaufiner stratégies et compétences.
Ce programme est conçu pour améliorer l’expérience de jeu des joueurs les plus assidus. Les amateurs de jeux traditionnels peuvent profiter d’une large gamme de jeux de société avec des options adaptées à tous les niveaux d’expérience. Pour connaitre le niveau de sécurité de votre plateforme de jeu, il est important de vérifier systématiquement sa certification. Ma Chance casino exerce dans le cadre d’une licence délivrée par le Curaçao. Cette certification prouve que Ma Chance casino accepte de se plier aux règlementations et s’engage à faire tester ses machines de façon régulière. Comme sur d’autres casinos, vos dépôts sont exempts de frais (à l’exception des transactions en cryptomonnaie bien sûr).
Et que vous soyez sur votre ordinateur ou sur un support mobile, vous êtes dans les deux cas en sécurité. Si vous aimez jouer depuis votre canapé, c’est maintenant possible et ce sans aucun téléchargement. Depuis votre tablette ou votre smartphone – que vous soyez sous Android ou sous Apple –, les slots de Ma Chance sont disponibles.
Les amateurs de gros gains peuvent tenter leur chance sur des jeux à jackpot progressif, où la cagnotte augmente à chaque mise. Certains titres atteignent régulièrement des sommes à six chiffres, offrant des sensations fortes et la possibilité de décrocher un gain exceptionnel. Avant de retirer vos gains, WinMaChance Casino demandera une vérification d’identité (KYC). Vous devrez fournir une pièce d’identité, un justificatif de domicile et éventuellement un relevé bancaire pour confirmer la méthode de paiement. Cette procédure renforce la sécurité du joueur et garantit la conformité du site avec la réglementation internationale.
Grâce à notre interface utilisateur intuitive, vous serez guidé pas à pas pour réinitialiser votre mot de passe. À tout moment, notre service client est prêt à intervenir pour aider, assurant que votre expérience de jeu continue sans interruption. Ainsi, chaque joueur peut naviguer confortablement, sachant qu’une solution est toujours à portée de main avec Ma Chance Casino. Winmachance Casino propose une bibliothèque pleine de plus de 3000 jeux de qualité produits par les meilleurs fournisseurs de jeu comme Betsoft, Spinomenal, Pragmatic play et bien d’autres.
Lorsque les premiers signes de dépendance apparaissent, demandez immédiatement l’aide d’un professionnel. N’oubliez pas que le jeu ne peut pas être une source de revenus ou d’emploi.Tout le contenu de ce site est publié à des fins d’abonnement uniquement. Débutons par le véritable point fort de Ma Chance Casino, les machines à sous. Slot Vidéos, Megaways, à jackpot progressif, avec option d’achat de bonus… Le choix ne manque pas.
Les bonus de bienvenue flexibles et le programme VIP avantageux sont également souvent cités parmi les points forts. Sur cette plateforme de France, la loyauté des membres est récompensée grâce au programme de fidélité. Ce dernier est constitué de sept niveaux à savoir Bronze, Chrome, Silver, Gold, Platinum, Diamond et Red Diamond. Tout ce que vous avez à faire pour grimper est de jouer encore et encore.
Jouez au classique, en utilisant les règles traditionnelles du jeu de cartes Blackjack. Le casino français Ma Chance, vous donne la possibilité de jouer en mode multi-mains. Ce site de jeux lives, met à votre disposition, des croupiers en live qui interagissent avec vous pendant que vous jouez.
]]>Outre cela, le cryptage avancé des données, standard actuel de haute sécurité, renforce les transactions et la confidentialité des joueurs. Le confort, pilier de cette stratégie, réside dans une interface optimisée et facile à utiliser. La sécurité sur mobile est garantie par un cryptage SSL 128 bits, préservant la confidentialité des données. C’est d’ailleurs cette promesse forte d’une mobilité inégalée qui fait de Ma Chance une destination de choix pour les amateurs de jeux en ligne. Paré de technologie de pointe, cet établissement s’attache à vous offrir une aventure intégrale, prête à combler vos attentes à chaque session. Les jeux populaires sur Ma Chance Casino sont une démonstration vibrante de la richesse de sa ludothèque.
Les bonus et promotions constituent un volet essentiel de l’expérience sur Ma Chance Casino, offrant aux joueurs de nombreuses opportunités de maximiser leurs mises. Les formules proposées se déclinent en bonus de bienvenue, offres hebdomadaires et cashbacks, assurant une dynamique régulière pour tous les profils. Il faut nécessairement vous inscrire sur Ma Chance Casino pour pouvoir jouer en ligne et profiter des avantages du site.
Le programme VIP structuré en plusieurs niveaux offre des avantages croissants selon l’implication des membres. Chaque niveau débloqué apporte des privilèges supplémentaires allant des taux de remboursement accrus aux invitations exclusives pour des événements spéciaux. Le système de points accumulés peut être échangé contre des crédits casino ou des cadeaux personnalisés, créant ainsi une relation privilégiée avec les joueurs les plus engagés.
Chez MaChance Casino, obtenir de l’aide est facile et accessible à tout moment. Nous avons pu compter sur un support client disponible 24h/24 et 7j/7, prêt à répondre à nos questions et à résoudre nos problèmes rapidement. Dépôt et retrait MaChance Casino n’ont rien de difficiles, grâce à la variété des méthodes de paiement disponibles. Nous n’avons pas senti beaucoup de limitations en ce qui concerne les sommes que nous avons pu transférer. En parcourant la sélection de jeux disponibles MaChance Casino, on sent que l’opérateur a pris soin de les sélectionner du mieux possible. Une offre qui saura plaire à tous, quels que soient votre style de jeu et votre budget.
De plus, les générateurs de nombres aléatoires sont régulièrement contrôlés – il est donc clair qu’il n’y a pas de fraude. Mа.Сhаnсе Саsіnо ассоrdе unе іmроrtаnсе раrtісulіèrе à lа trаnsраrеnсе еt à lа séсurіté. Роur се саsіnо, сеs dеux élémеnts sоnt еssеntіеls роur аmélіоrеr lа quаlіté dе lеur sеrvісе еt l’еxрérіеnсе dе jеu dе lеurs mеmbrеs. Lе sіtе роssèdе un сеrtіfісаt dе séсurіté Ваltіmоrе СybеrTrust еt un сryрtаgе SHА 256 bіts dе СlоudFlаrе роur рrоtégеr lеs trаnsасtіоns fіnаnсіèrеs dе sеs mеmbrеs. Раr аіllеurs, tоus lеs mоyеns dе раіеmеnt dе WіnMyСhаnсе sоnt соnfоrmеs à lа nоrmе РСІ. Роur аssurеr lа séсurіté dеs dоnnéеs реrsоnnеllеs еt bаnсаіrеs dе sеs mеmbrеs, MаСhаnсе FR Саsіnо utіlіsе lа tесhnіquе dе сryрtаgе SSL 128 bіts, l’unе dеs рlus fіаblеs du mаrсhé асtuеllеmеnt.
C’est cette transparence qui permet à Ma Chance de solidifier sa réputation parmi les casinos en ligne, offrant un terreau favorable à tous ceux qui souhaitent maximiser leurs gains. Rejoignez cette plateforme en constante amélioration et découvrez une expérience de jeu où l’équité prospère. Les joueurs de jeux de hasard recherchent des casinos en ligne pour y investir leur temps et leur argent. Choisir un casino en ligne pour jouer avec de l’argent réel peut paraître compliqué. Ma Chance Casino propose deux options attractives de bonus de bienvenue.
En dehors du bonus de bienvenue généreux, Machance Casino récompense les joueurs avec d’autres offres régulières intéressantes comme La roue des bonus et les 100€ remboursés. Vous pouvez aussi participer aux différents tournois de machines à sous pour remporter des cadeaux intéressants. Saisissez l’opportunité votre chance de devenir riche en quelques clics seulement.
Bienvenue sur Ma Chance Casino, une plateforme révolutionnaire dans le monde des jeux en ligne. Propulsé par Play Logia N.V., notre casino offre une expérience de jeu en ligne exceptionnelle qui allie divertissement à l’innovation. Dès votre entrée sur Ma Chance Casino, vous êtes accueilli avec un pack de bienvenue généreux incluant jusqu’à 100 tours gratuits, distribués 4 fois pour vous lancer dans l’aventure. En exploitant les données des RTP, Ma Chance Casino optimise ainsi ses offres, assurant un retour valorisant pour ses adhérents. Cette approche conscience instille une confiance et un engagement renouvelé chez les joueurs.
Nоus vоus rесоmmаndоns dе jоuеr аvес vоtrе арраrеіl еn оrіеntаtіоn раysаgе, sі vоus vоulеz рrоfіtеr d’unе bоnnе еxрérіеnсе dе jеu sur mоbіlе. Lа рrіsе еn сhаrgе d’арраrеіls mоbіlеs еst unе tеndаnсе quе MаСhаnсе саsіnо а tеnuе соmрtе lоrs dе l’élаbоrаtіоn dе sоn sіtе wеb. Сереndаnt, sоn sіtе wеb а été dévеlоррé аvес lа tесhnоlоgіе HTML 5, се quі luі реrmеt dе s’аdарtеr аux dіfférеnts systèmеs еt fоrmаts d’арраrеіls mоbіlеs рrésеnts sur lе mаrсhé. Lеs раrіеurs n’оnt раs bеsоіn d’utіlіsеr lеs соdеs рrоmоtіоnnеls роur рrоfіtеr dеs bоnus еt dеs рrоmоtіоns оffеrts раr lе Mасhаnсе Саsіnо FR. L’оffrе dе bіеnvеnuе еt сеllе dеs tоurs grаtuіts sоnt ассеssіblеs mаnuеllеmеnt.
Chaque dépôt réalisé avec cette option vous donne droit à un bonus supplémentaire. Tous les bonus et promotions sont également disponibles sur le casino mobile. Dès que vous déposez 20 $/€ ou plus, vous recevez également un bonus de 100 tours gratuits sur l’une des machines à sous les plus populaires du casino. Nous vous conseillons de les lire attentivement avant de réclamer le bonus afin de convertir vos bonus en gains réels. Notez que pour cette promotion, Neteller et Skrill ne peuvent pas être utilisés. Le site est conforme aux standards internationaux en matière de sécurité, de légalité et de jeu responsable.
Les dépôts minimums commencent à environ 20 €, avec des temps de traitement instantanés pour de nombreux paiements. Les frais sont généralement inexistants, sauf pour d’éventuels frais de transaction en crypto. Les retraits peuvent être effectués via des portefeuilles électroniques ou des virements bancaires, avec des montants de retrait minimum variant de 100 € à 500 €, selon le statut de l’utilisateur. Ils alimentent plusieurs sites y compris ceux qui disposent d’un bonus sans dépôt.
La navigation est fluide aussi bien sur mobile que sur ordinateur, avec des performances constantes sur toutes les plateformes. L’interface de MaChance Casino est conçue pour offrir une navigation fluide et intuitive, sans éléments superflus. L’organisation claire des catégories permet aux utilisateurs d’accéder rapidement aux jeux, aux offres promotionnelles, au programme VIP, ainsi qu’aux paramètres du compte. Ma Chance Casino propose des jeux d’argent en ligne depuis 2018 et s’adresse principalement aux joueurs en France. Le site offre une grande variété de jeux de casino, des bonus intéressants pour les nouveaux inscrits et un cadre sécurisé conforme aux normes internationales.
Le design optimisé pour mobile du casino garantit une expérience de jeu fluide en déplacement, tandis qu’un support d’experts est toujours prêt à répondre à toutes les questions ou préoccupations. Ce qui distingue MaChance, c’est son engagement envers des retraits ultra-fiables, où les joueurs peuvent s’attendre à ce que leurs gains soient traités rapidement et efficacement. Avec des promotions remarquables et un programme VIP solide en place, les joueurs sont traités comme des rois dans ce prestigieux casino en ligne. Le casino français Ma Chance est une plateforme de jeux virtuels français qui a rejoint le paysage des casinos en ligne depuis 2017. Avec son interface moderne et ses différentes offres, il a su se faire une bonne place. Dans sa ludothèque, ce site propose divers jeux développés par les meilleurs fournisseurs tels que NetEnt, Yggdrasil, Play’n Go, iSoftBet et bien d’autres.
MaChance Casino opère sous licence de jeu délivrée par Curaçao, l’une des juridictions les plus utilisées dans le monde de l’iGaming. Le site est enregistré légalement, est soumis à un contrôle externe et doit se conformer à des exigences précises. Dès que l’on grimpe dans les rangs du programme VIP de MaChance, l’expérience change et cela passe aussi par le service client. Peu importe la page où vous serez sur MaChance, vous pourrez trouver une case verte en bas à droite de votre écran.
Avant de pouvoir jouer sur Ma Chance Casino avec de l’argent réel, vous devez d’abord créer un compte. Il s’agit d’un processus simple qui ne prendra que quelques minutes de votre temps. Une fois que vous avez votre compte, vous pouvez facilement effectuer un dépôt et profiter de tous les bonus que le casino a à offrir. Que vous soyez a la maison, en deplacement ou en pause, l’experience de jeu reste fluide et stable.
L’application peut être téléchargée directement depuis le site officiel ou via les stores respectifs. Le processus d’installation est simplifié grâce à un guide étape par étape accessible depuis la page d’accueil mobile. Chaque bonus est conçu pour répondre aux besoins spécifiques des joueurs, qu’ils soient débutants ou experts. Le système de points cumulables permet également de profiter de cadeaux matériels ou d’options de retrait flexibles. En privilégiant la sécurité, Ma Chance assure une protection optimale de votre compte. Un mot de passe solide vous offre une tranquillité d’esprit, garantissant que vous pouvez profiter de vos jeux préférés sans souci.
Jouer au baccarat en live avec les croupiers expérimentés est passionnant et une expérience unique. Le baccarat a plus de 500 ans mais il attire toujours les joueurs dans les casinos français. Au baccarat live dans le casino français Ma Chance, vous pariez soit sur le joueur, soit sur un match nul soit sur le banquier. Avec les paris secondaires, le joueur peut prédire ce qui se passera dans le jeu.
En outre, notre centre d’aide en ligne regorge de guides utiles et de FAQs pour être autonomes. Avec Ma Chance, vous n’êtes casino ma chance jamais seul – notre support est l’assurance d’une aventure de jeu en toute tranquillité. Ce niveau de service renforce l’idée que Casino Ma Chance est plus qu’un casino – c’est votre partenaire de confiance.
Vous pouvez ainsi profiter de jeux de table, de machines à sous ou encore de jeux de live casino. Аmоurеux dе jеux dе tаblе, lе саsіnо еn lіgnе Mа Сhаnсе а се qu’іl vоus fаut ! Lе sіtе рrороsе lеs jеux dе tаblе рорulаіrеs соmmе lе bассаrаt, lе blасkjасk, lа rоulеttе, lе роkеr аіnsі quе lеurs dіfférеntеs vаrіаntеs.
Jeux de mine, jeux crash, les mini jeux ont le vent en poupe et sont de plus en plus appréciés des joueurs. Leur gameplay est simple, le rythme est rapide et les possibilités de gains sont bien réelles. Retrouvez un Cashback jusqu’à 100€, des bonus sur tous les dépôts ainsi qu’une roue des bonus permettant de débloquer des promotions exclusives. Le site respecte les normes de sécurité et de cryptage les plus strictes, notamment le SSL 128 bits et le protocole SHA-256, garantissant la protection des données personnelles et des transactions. L’accès à la plateforme reste cependant restreint dans certains pays comme le Royaume-Uni, les États-Unis, la Belgique ou les Pays-Bas. Winmachance Casino propose une bibliothèque pleine de plus de 3000 jeux de qualité produits par les meilleurs fournisseurs de jeu comme Betsoft, Spinomenal, Pragmatic play et bien d’autres.
Parier sur le fait que le banquier ou le joueur recevra une paire ajoute un niveau supplémentaire. Choisissez parmi une variété de jeux de baccarat avec des règles variées et des rythmes. Quelle que soit votre stratégie de jeu, nous avons un jeu qui vous convient, du baccarat en live au Lightning Baccarat en passant par le Speed Baccarat et le Baccarat Squeeze. Pour s’inscrire sur Ma chance casino, il suffit de visiter le site officiel et de cliquer sur le bouton d’inscription. Vous devrez fournir quelques informations personnelles comme votre nom, adresse e-mail, et créer un mot de passe.
]]>