/*! 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 = '<
Alle Links zu Glücksspielanbietern sind Partnerlinks. Der richtige Online Anbieter für dich hängt von verschiedenen Faktoren ab, die zu deinen Spielvorlieben und Bedürfnissen passen. Vergleiche dabei die Spielangebote, die Boni, die Zahlungsmethoden und auch den Kundensupport. Mit unserem Online Casino und Spielotheken Vergleich kannst du dir selber ein gutes Bild über die Vor- und Nachteile der jeweiligen Anbieter machen. Unter den vielen legalen Online Casinos und Spielotheken in Deutschland kann es schwierig sein, den richtigen Anbieter für sich zu finden. Die besten Online Casinos und Spielotheken in Deutschland zeichnen sich durch ein großes Spielangebot, gute Boni und schnelle Zahlungen aus.
Seid ihr besonders aktiv, profitiert ihr zusätzlich von VIP- und Treue-Promotionen. Prepaid-Dienste wie CashtoCode und in Paysafe Online Casinos ohne Sperrdatei stehen euch ebenfalls zur Verfügung. Hier spielt und zahlt ihr anonym und verzichtet gleichzeitig auf die strengen Sperrungen der OASIS Datei. Ausweichen könnt ihr zudem auf Dienste wie Apple Pay im Casino und Google Pay oder Banking-Services wie Trustly und Sofort Online Casinos. Wählt eure gewünschten Spiele – darunter auch das Plinko Spiel online spielen – und platziert eure Einsätze im Casino-Angebot. Neben der deutschen Lizenz gibt es auch andere angesehene Casino-Lizenzen, die ein sicheres und faires Spielerlebnis bieten.
In diesem Punkt wird den Casinos nämlich keine Auflage mit an die Hand gegeben. Und auch Gewinnlimits wird von Deutschland kein Riegel vorgeschoben. Bei Online Casinos unter deutscher Regulierung gibt es vor allem zur Begrüßung Angebote.
Auszahlungen erfolgen je nach Anbieter täglich oder an bestimmten Wochentagen. Cashback-Boni sind besonders gut für Vielspieler geeignet, da die Rückerstattung oft automatisch erfolgt und sie zur Verbesserung des RTP beitragen kann. PayPalLange vom Markt verschwunden, ist PayPal seit der Neuregulierung 2021 wieder in legalen Online-Casinos erlaubt. Das sorgt für zusätzliche Sicherheit und extrem schnelle Ein- und Auszahlungen.
In unserer Online Spielothek findest du eine breite Auswahl an Bücher Slots und Book-of-Spielen. Zu diesen gehören moderne Klassiker, aber auch viele moderne Automaten mit zusätzlichen Features. Drei Bücher auf den Walzen bringen dich in die Freispiele, in denen du dich auf ein expandierendes Bonus-Symbol freuen kannst.
Je nach Regulierungsbehörde gelten unterschiedliche Regeln, Standards und Sicherheitslevel. Hier zeigen wir Dir die bekanntesten internationalen Lizenz und worauf Du dabei achten solltest. Mit über 9.000 Spielen und einem großen Sportwettenbereich überzeugt das Casino auf ganzer Linie. Unabhängige Experten führen regelmäßig Audits durch, um die Wirksamkeit automatisierter Systeme zu prüfen. Während KI einen großen Teil der Arbeit übernimmt, sind menschliche Überprüfungen unerlässlich, um komplexe Betrugsversuche zu identifizieren und zu verhindern. Besonders in europäischen Casinos ohne deutsche Lizenz ist die Kombination aus Technik und menschlicher Kontrolle eine bewährte Praxis.
Das allseits beliebte Autoplay-Feature ist im FatPirate Casino selbstverständlich verfügbar.
Im Gegensatz zu deutschen Casinos bieten Casinos ohne deutsche Lizenz ihren Spielern in sämtlichen relevanten Bereichen noch einen hervorragenden Rundum-Service. Casinos ohne deutsche Lizenz bieten mehr Freiheiten und Abwechslung. Wenig verwunderlich also, dass sich immer mehr Spieler nach Alternativen umschauen. Voraussetzung für die Nutzung der Website CasinoFM.de ist die Vollendung des 18.
Spiele ohne OASIS-Zwang, Registrierungs-Hürden oder Zeitbeschränkungen. Durch den Einsatz regelmäßiger Betrugstests können Casinos verdächtige Aktivitäten frühzeitig erkennen und verhindern. Beispielsweise setzen asiatische Casinos auf automatisierte Tools, die innerhalb von Sekunden betrügerische Verhaltensmuster identifizieren. Studien belegen, dass kontinuierliche Überwachung die Betrugsfälle um bis zu 70 % reduzieren kann, was langfristig ihre Profitabilität schützt.
Nur dann, wenn der Anbieter mit namhaften, seriösen und geprüften Zahlungsanbietern zusammenarbeitet, ist das als seriös einzustufen. Meistens wird für die Übertragung der Zahlungsdaten eine SSL-Verschlüsselung genutzt. Casinos ohne Spielpause können deshalb eine attraktive Alternative sein, sie bieten ein schnelleres Spielerlebnis und haben dank internationaler Lizenz oft eine größere Auswahl. Allerdings besitzen sie einen geringeren Schutz vor impulsivem Spielverhalten. Wer in Deutschland legal spielt, hat bei der Einzahlung zahlreiche Möglichkeiten. Doch nicht alle Zahlungsarten sind überall verfügbar und gleich gut für Online-Slots geeignet.
KI-basierte Tools analysieren Milliarden von Transaktionen und erkennen anomalien in Echtzeit. Ein Beispiel ist die Nutzung von Machine-Learning-Algorithmen in asiatischen Online-Casinos, die Betrugsversuche mit einer Genauigkeit von bis zu 85 % erkennen. Studien zeigen, dass diese Technologien die Betrugsrate signifikant senken und die Effizienz der Sicherheitsmaßnahmen verbessern. Für weitere Informationen zu solchen Sicherheitslösungen lohnt sich ein Blick auf das casino bossy casino.
April 2022 die Lizenz der Gemeinsamen Glücksspielbehörde der Länder (GGL) erhalten. Die deutsche Regulierungsbehörde ist für die Kontrolle der Glücksspielanbieter in Deutschland zuständig. Als neuer Spieler profitierst du von einem fairen Willkommensbonus und erhältst 100 % Bonus bis zu 100 € sowie 75 Freispiele für deine erste Einzahlung ab 1 €. Online-Glücksspiel ist in Deutschland nur legal, wenn es nach den Regeln des Glücksspielstaatsvertrags 2021 betrieben wird. Wer bei nicht lizenzierten Seiten spielt, riskiert Verluste ohne Absicherung und macht sich unter Umständen auch strafbar.
In der dynamischen Welt der Online-Casinos ohne deutsche Lizenz ist die Abwehr gegen Betrugsversuche eine zentrale Herausforderung. Bonusangebote casinos ohne deutsche lizenz sind ideal, um ohne Risiko die Spiele einer Plattform auszuprobieren. Wichtig ist dafür eine möglichst große Auswahl an Spielen, die mit dem Bonusguthaben gespielt werden. Gerade bei Freispielen ohne Einzahlung gibt es hier oft große Einschränkungen, die einen echten Nachteil darstellen.
Ein zuverlässiges Betrugsschutzsystem fördert das Vertrauen der Kunden. Nordamerikanische Casinos, die automatisierte Betrugserkennungssysteme einsetzen, verzeichnen eine höhere Kundenbindung – teilweise um 20 % im Vergleich zu weniger sicheren Anbietern. Nutze die Gelegenheit, in unserer schönen Gratis Version des Klassikers, Tetris kostenlos online zu spielen und dich immer wieder selbst zu übertreffen. Bekannte Studios arbeiten nach strengen technischen Vorgaben und lassen ihre Spiele regelmäßig testen. Namen wie Microgaming, NetEnt und Playtech stehen für solche Standards.
Zu vergleichen, wie hoch das Umsatzvolumen für den jeweiligen No Deposit Bonus ist, lohnt sich, schließlich sind die Unterschiede zwischen den Casinos hier noch immer sehr groß. Leider sind die Umsatzvolumen bei No Deposit Boni meist noch strenger als bei herkömmlichen Bonusangeboten. Angesichts der Möglichkeit, ganz ohne Einzahlung mit dem Spielen beginnen zu können, lässt sich dieser Nachteil aber durchaus verschmerzen.
Doch was genau bedeuten die jeweiligen Lizenzen eigentlich in Hinblick auf die Sicherheit und welche Lizenzen eignen sich gut als Alternative zur deutschen Lizenz? Ein geniales Konzept, das einfach nur viel Spaß macht und zudem für jede Menge Nervenkitzel und Spannung sorgt. Ganz nebenbei gibt es bei Pistolo auch noch die klassischen Reload Boni zu entdecken.
Zusätzliche Angebote stellen die Casinos für Bestandskunden bereit. Diese ermöglichen euch Zugriff auf weitere Boni für Einzahlungen, Freispiele oder Cashbacks. Manche Anbieter setzen dabei auch auf den Non Sticky Casino Bonus, der zusätzliche Flexibilität bietet.
Hin und wieder gibt es einen Bonus sogar ohne Einzahlung oder es werden Freispiele gewährt. Bei einem Willkommens- oder Neukundenbonus handelt es sich oftmals um einen 100% Bonus, der Ihre erste Einzahlung bis zu einem gewissen Betrag verdoppelt. Viele Betreiber offerieren sogar Willkommenspakete, mit denen Sie Bonusgeld auch auf weitere Einzahlungen erhalten. Denn schließlich muss sichergestellt sein, dass sensible Daten wie die Kreditkartennummer und/oder Bankdaten nicht in kriminelle Hände geraten.
Ein zuverlässiger Support ist ein “Muss” – das gilt auch für Casinos ohne deutsche Lizenz. In den meisten Casinos ist der Support per Live-Chat zu erreichen, was die Bearbeitungszeiten deutlich verkürzen kann. Ein paar bekannte Hersteller sind Pragmatic Play, Nolimit City, Red Tiger, NetEnt und Merkur. Eine GGL Lizenz bedeutet, dass extrem viele Daten gesammelt werden. Deshalb bevorzuge ich Casinos ohne deutsche Lizenzierung, da hier nur das angegeben muss, was wirklich relevant ist. Um zu entscheiden, ob Casinos außerhalb Deutschlands wirklich sicher sind, bedarf es einer umfassenden Überprüfung des Anbieters.
Besonders praktisch ist die Einzahlung durch PSC in einem Casino ohne Lizenz, da das Geld sofort verfügbar ist. Alternativ könnt ihr natürlich auch E-Wallets oder Kryptowährungen nutzen. Die Casinos mit Malta Lizenz bieten euch ein sicheres und maximal geprüftes Spiel. Die MGA ist als Regulierungsbehörde streng und gilt als Vorzeige-Behörde in Europa. Sowohl der Spielerschutz als auch die Fairness und eure Sicherheit sind in diesen Casinos garantiert. Zwar gibt es auch eine Glücksspiel-Lizenz in Deutschland, diese ist jedoch mit strengen Einschränkungen verbunden.
Solche Lizenzen setzen auch hohe Standards in Bezug auf Daten- und Spielerschutz voraus. Auch das Winz Casino gehört zu den beliebtesten Online Casinos ohne 5 Sekunden Regel und bietet ebenfalls die Möglichkeit, sowohl mit Euro als auch mit Krypto einzuzahlen. Hier stehen deutschen Spielern sogar 12 Kryptowährungen zur Verfügung, für Auszahlungen mit Echtgeld können Kreditkarten und MiFinity genutzt werden. Seit der bundesweiten Regulierung und Legalisierung in Deutschland ist das Online-Glücksspiel wieder auf dem Vormarsch. Ständig werden neue Lizenzen vergeben und dir steht eine breite Auswahl an legalen, seriösen und sicheren Anbietern zur Wahl.
Das Umsatzvolumen ist in der Glücksspielwelt ein häufig diskutiertes Thema. Mit dieser Vorgabe schützen sich die Betreiber vor finanziellen Verlusten, da es das Umsatzvolumen für die Spieler schwierig macht, das Bonusguthaben in auszahlbares Echtgeld umzuwandeln. Dies ist durchaus verständlich, sorgt unter Anfängern aber häufig für Frust. Auch wenn man bei No Deposit Boni wenig Risiko eingeht, sollte man diese doch nur nutzen, wenn sie auch von einer lizenzierten und damit seriösen Plattform geboten werden.
Darüber hinaus musst du keine Anreise auf dich nehmen und kannst flexibel und anonym von Zuhause aus spielen. Ja, Online Spielhallen sind in Deutschland legal – allerdings nur unter bestimmten Bedingungen. Seit dem Glücksspielstaatsvertrag 2021 dürfen Anbieter eine deutsche Lizenz erhalten, wenn sie die strengen Vorgaben der Behörden erfüllen. Setze dir zunächst ein klares Budget und spiele verantwortungsbewusst, um Verluste zu begrenzen. Wähle Spiele mit hoher Auszahlungsrate und nutze Bonusangebote mit fairen Bedingungen, um dein Guthaben zu maximieren. Bei den meisten Online Casinos und Spielotheken gehören mobile Webseiten bereits zum Standard-Repertoire, native Apps bieten allerdings noch nicht alle an.
Ergänzt wird das Angebot durch ein VIP-Programm und regelmäßige Aktionen, bei denen Spieler in ihrem eigenen Tempo Belohnungen sammeln können. Der deutsche Online-Glücksspielmarkt ist seit 2021 reguliert, dennoch operieren weiterhin unseriöse Anbieter ohne gültige Lizenz. Diese Casinos können Auszahlungen verweigern, unfaire Spiele anbieten oder Ihre persönlichen Daten missbrauchen. In einer Online Spielothek mit deutscher Lizenz sind ausschließlich virtuelle Automatenspiele zulässig. Klassische Casino Spiele, wie etwa Roulette, Blackjack oder Poker, sind in diesen nicht gestattet. Die höchste Stufe im Treueprogramm erreichst du mit der Platin-Stufe.
]]>Alle Links zu Glücksspielanbietern sind Partnerlinks. Der richtige Online Anbieter für dich hängt von verschiedenen Faktoren ab, die zu deinen Spielvorlieben und Bedürfnissen passen. Vergleiche dabei die Spielangebote, die Boni, die Zahlungsmethoden und auch den Kundensupport. Mit unserem Online Casino und Spielotheken Vergleich kannst du dir selber ein gutes Bild über die Vor- und Nachteile der jeweiligen Anbieter machen. Unter den vielen legalen Online Casinos und Spielotheken in Deutschland kann es schwierig sein, den richtigen Anbieter für sich zu finden. Die besten Online Casinos und Spielotheken in Deutschland zeichnen sich durch ein großes Spielangebot, gute Boni und schnelle Zahlungen aus.
Seid ihr besonders aktiv, profitiert ihr zusätzlich von VIP- und Treue-Promotionen. Prepaid-Dienste wie CashtoCode und in Paysafe Online Casinos ohne Sperrdatei stehen euch ebenfalls zur Verfügung. Hier spielt und zahlt ihr anonym und verzichtet gleichzeitig auf die strengen Sperrungen der OASIS Datei. Ausweichen könnt ihr zudem auf Dienste wie Apple Pay im Casino und Google Pay oder Banking-Services wie Trustly und Sofort Online Casinos. Wählt eure gewünschten Spiele – darunter auch das Plinko Spiel online spielen – und platziert eure Einsätze im Casino-Angebot. Neben der deutschen Lizenz gibt es auch andere angesehene Casino-Lizenzen, die ein sicheres und faires Spielerlebnis bieten.
In diesem Punkt wird den Casinos nämlich keine Auflage mit an die Hand gegeben. Und auch Gewinnlimits wird von Deutschland kein Riegel vorgeschoben. Bei Online Casinos unter deutscher Regulierung gibt es vor allem zur Begrüßung Angebote.
Auszahlungen erfolgen je nach Anbieter täglich oder an bestimmten Wochentagen. Cashback-Boni sind besonders gut für Vielspieler geeignet, da die Rückerstattung oft automatisch erfolgt und sie zur Verbesserung des RTP beitragen kann. PayPalLange vom Markt verschwunden, ist PayPal seit der Neuregulierung 2021 wieder in legalen Online-Casinos erlaubt. Das sorgt für zusätzliche Sicherheit und extrem schnelle Ein- und Auszahlungen.
In unserer Online Spielothek findest du eine breite Auswahl an Bücher Slots und Book-of-Spielen. Zu diesen gehören moderne Klassiker, aber auch viele moderne Automaten mit zusätzlichen Features. Drei Bücher auf den Walzen bringen dich in die Freispiele, in denen du dich auf ein expandierendes Bonus-Symbol freuen kannst.
Je nach Regulierungsbehörde gelten unterschiedliche Regeln, Standards und Sicherheitslevel. Hier zeigen wir Dir die bekanntesten internationalen Lizenz und worauf Du dabei achten solltest. Mit über 9.000 Spielen und einem großen Sportwettenbereich überzeugt das Casino auf ganzer Linie. Unabhängige Experten führen regelmäßig Audits durch, um die Wirksamkeit automatisierter Systeme zu prüfen. Während KI einen großen Teil der Arbeit übernimmt, sind menschliche Überprüfungen unerlässlich, um komplexe Betrugsversuche zu identifizieren und zu verhindern. Besonders in europäischen Casinos ohne deutsche Lizenz ist die Kombination aus Technik und menschlicher Kontrolle eine bewährte Praxis.
Das allseits beliebte Autoplay-Feature ist im FatPirate Casino selbstverständlich verfügbar.
Im Gegensatz zu deutschen Casinos bieten Casinos ohne deutsche Lizenz ihren Spielern in sämtlichen relevanten Bereichen noch einen hervorragenden Rundum-Service. Casinos ohne deutsche Lizenz bieten mehr Freiheiten und Abwechslung. Wenig verwunderlich also, dass sich immer mehr Spieler nach Alternativen umschauen. Voraussetzung für die Nutzung der Website CasinoFM.de ist die Vollendung des 18.
Spiele ohne OASIS-Zwang, Registrierungs-Hürden oder Zeitbeschränkungen. Durch den Einsatz regelmäßiger Betrugstests können Casinos verdächtige Aktivitäten frühzeitig erkennen und verhindern. Beispielsweise setzen asiatische Casinos auf automatisierte Tools, die innerhalb von Sekunden betrügerische Verhaltensmuster identifizieren. Studien belegen, dass kontinuierliche Überwachung die Betrugsfälle um bis zu 70 % reduzieren kann, was langfristig ihre Profitabilität schützt.
Nur dann, wenn der Anbieter mit namhaften, seriösen und geprüften Zahlungsanbietern zusammenarbeitet, ist das als seriös einzustufen. Meistens wird für die Übertragung der Zahlungsdaten eine SSL-Verschlüsselung genutzt. Casinos ohne Spielpause können deshalb eine attraktive Alternative sein, sie bieten ein schnelleres Spielerlebnis und haben dank internationaler Lizenz oft eine größere Auswahl. Allerdings besitzen sie einen geringeren Schutz vor impulsivem Spielverhalten. Wer in Deutschland legal spielt, hat bei der Einzahlung zahlreiche Möglichkeiten. Doch nicht alle Zahlungsarten sind überall verfügbar und gleich gut für Online-Slots geeignet.
KI-basierte Tools analysieren Milliarden von Transaktionen und erkennen anomalien in Echtzeit. Ein Beispiel ist die Nutzung von Machine-Learning-Algorithmen in asiatischen Online-Casinos, die Betrugsversuche mit einer Genauigkeit von bis zu 85 % erkennen. Studien zeigen, dass diese Technologien die Betrugsrate signifikant senken und die Effizienz der Sicherheitsmaßnahmen verbessern. Für weitere Informationen zu solchen Sicherheitslösungen lohnt sich ein Blick auf das casino bossy casino.
April 2022 die Lizenz der Gemeinsamen Glücksspielbehörde der Länder (GGL) erhalten. Die deutsche Regulierungsbehörde ist für die Kontrolle der Glücksspielanbieter in Deutschland zuständig. Als neuer Spieler profitierst du von einem fairen Willkommensbonus und erhältst 100 % Bonus bis zu 100 € sowie 75 Freispiele für deine erste Einzahlung ab 1 €. Online-Glücksspiel ist in Deutschland nur legal, wenn es nach den Regeln des Glücksspielstaatsvertrags 2021 betrieben wird. Wer bei nicht lizenzierten Seiten spielt, riskiert Verluste ohne Absicherung und macht sich unter Umständen auch strafbar.
In der dynamischen Welt der Online-Casinos ohne deutsche Lizenz ist die Abwehr gegen Betrugsversuche eine zentrale Herausforderung. Bonusangebote casinos ohne deutsche lizenz sind ideal, um ohne Risiko die Spiele einer Plattform auszuprobieren. Wichtig ist dafür eine möglichst große Auswahl an Spielen, die mit dem Bonusguthaben gespielt werden. Gerade bei Freispielen ohne Einzahlung gibt es hier oft große Einschränkungen, die einen echten Nachteil darstellen.
Ein zuverlässiges Betrugsschutzsystem fördert das Vertrauen der Kunden. Nordamerikanische Casinos, die automatisierte Betrugserkennungssysteme einsetzen, verzeichnen eine höhere Kundenbindung – teilweise um 20 % im Vergleich zu weniger sicheren Anbietern. Nutze die Gelegenheit, in unserer schönen Gratis Version des Klassikers, Tetris kostenlos online zu spielen und dich immer wieder selbst zu übertreffen. Bekannte Studios arbeiten nach strengen technischen Vorgaben und lassen ihre Spiele regelmäßig testen. Namen wie Microgaming, NetEnt und Playtech stehen für solche Standards.
Zu vergleichen, wie hoch das Umsatzvolumen für den jeweiligen No Deposit Bonus ist, lohnt sich, schließlich sind die Unterschiede zwischen den Casinos hier noch immer sehr groß. Leider sind die Umsatzvolumen bei No Deposit Boni meist noch strenger als bei herkömmlichen Bonusangeboten. Angesichts der Möglichkeit, ganz ohne Einzahlung mit dem Spielen beginnen zu können, lässt sich dieser Nachteil aber durchaus verschmerzen.
Doch was genau bedeuten die jeweiligen Lizenzen eigentlich in Hinblick auf die Sicherheit und welche Lizenzen eignen sich gut als Alternative zur deutschen Lizenz? Ein geniales Konzept, das einfach nur viel Spaß macht und zudem für jede Menge Nervenkitzel und Spannung sorgt. Ganz nebenbei gibt es bei Pistolo auch noch die klassischen Reload Boni zu entdecken.
Zusätzliche Angebote stellen die Casinos für Bestandskunden bereit. Diese ermöglichen euch Zugriff auf weitere Boni für Einzahlungen, Freispiele oder Cashbacks. Manche Anbieter setzen dabei auch auf den Non Sticky Casino Bonus, der zusätzliche Flexibilität bietet.
Hin und wieder gibt es einen Bonus sogar ohne Einzahlung oder es werden Freispiele gewährt. Bei einem Willkommens- oder Neukundenbonus handelt es sich oftmals um einen 100% Bonus, der Ihre erste Einzahlung bis zu einem gewissen Betrag verdoppelt. Viele Betreiber offerieren sogar Willkommenspakete, mit denen Sie Bonusgeld auch auf weitere Einzahlungen erhalten. Denn schließlich muss sichergestellt sein, dass sensible Daten wie die Kreditkartennummer und/oder Bankdaten nicht in kriminelle Hände geraten.
Ein zuverlässiger Support ist ein “Muss” – das gilt auch für Casinos ohne deutsche Lizenz. In den meisten Casinos ist der Support per Live-Chat zu erreichen, was die Bearbeitungszeiten deutlich verkürzen kann. Ein paar bekannte Hersteller sind Pragmatic Play, Nolimit City, Red Tiger, NetEnt und Merkur. Eine GGL Lizenz bedeutet, dass extrem viele Daten gesammelt werden. Deshalb bevorzuge ich Casinos ohne deutsche Lizenzierung, da hier nur das angegeben muss, was wirklich relevant ist. Um zu entscheiden, ob Casinos außerhalb Deutschlands wirklich sicher sind, bedarf es einer umfassenden Überprüfung des Anbieters.
Besonders praktisch ist die Einzahlung durch PSC in einem Casino ohne Lizenz, da das Geld sofort verfügbar ist. Alternativ könnt ihr natürlich auch E-Wallets oder Kryptowährungen nutzen. Die Casinos mit Malta Lizenz bieten euch ein sicheres und maximal geprüftes Spiel. Die MGA ist als Regulierungsbehörde streng und gilt als Vorzeige-Behörde in Europa. Sowohl der Spielerschutz als auch die Fairness und eure Sicherheit sind in diesen Casinos garantiert. Zwar gibt es auch eine Glücksspiel-Lizenz in Deutschland, diese ist jedoch mit strengen Einschränkungen verbunden.
Solche Lizenzen setzen auch hohe Standards in Bezug auf Daten- und Spielerschutz voraus. Auch das Winz Casino gehört zu den beliebtesten Online Casinos ohne 5 Sekunden Regel und bietet ebenfalls die Möglichkeit, sowohl mit Euro als auch mit Krypto einzuzahlen. Hier stehen deutschen Spielern sogar 12 Kryptowährungen zur Verfügung, für Auszahlungen mit Echtgeld können Kreditkarten und MiFinity genutzt werden. Seit der bundesweiten Regulierung und Legalisierung in Deutschland ist das Online-Glücksspiel wieder auf dem Vormarsch. Ständig werden neue Lizenzen vergeben und dir steht eine breite Auswahl an legalen, seriösen und sicheren Anbietern zur Wahl.
Das Umsatzvolumen ist in der Glücksspielwelt ein häufig diskutiertes Thema. Mit dieser Vorgabe schützen sich die Betreiber vor finanziellen Verlusten, da es das Umsatzvolumen für die Spieler schwierig macht, das Bonusguthaben in auszahlbares Echtgeld umzuwandeln. Dies ist durchaus verständlich, sorgt unter Anfängern aber häufig für Frust. Auch wenn man bei No Deposit Boni wenig Risiko eingeht, sollte man diese doch nur nutzen, wenn sie auch von einer lizenzierten und damit seriösen Plattform geboten werden.
Darüber hinaus musst du keine Anreise auf dich nehmen und kannst flexibel und anonym von Zuhause aus spielen. Ja, Online Spielhallen sind in Deutschland legal – allerdings nur unter bestimmten Bedingungen. Seit dem Glücksspielstaatsvertrag 2021 dürfen Anbieter eine deutsche Lizenz erhalten, wenn sie die strengen Vorgaben der Behörden erfüllen. Setze dir zunächst ein klares Budget und spiele verantwortungsbewusst, um Verluste zu begrenzen. Wähle Spiele mit hoher Auszahlungsrate und nutze Bonusangebote mit fairen Bedingungen, um dein Guthaben zu maximieren. Bei den meisten Online Casinos und Spielotheken gehören mobile Webseiten bereits zum Standard-Repertoire, native Apps bieten allerdings noch nicht alle an.
Ergänzt wird das Angebot durch ein VIP-Programm und regelmäßige Aktionen, bei denen Spieler in ihrem eigenen Tempo Belohnungen sammeln können. Der deutsche Online-Glücksspielmarkt ist seit 2021 reguliert, dennoch operieren weiterhin unseriöse Anbieter ohne gültige Lizenz. Diese Casinos können Auszahlungen verweigern, unfaire Spiele anbieten oder Ihre persönlichen Daten missbrauchen. In einer Online Spielothek mit deutscher Lizenz sind ausschließlich virtuelle Automatenspiele zulässig. Klassische Casino Spiele, wie etwa Roulette, Blackjack oder Poker, sind in diesen nicht gestattet. Die höchste Stufe im Treueprogramm erreichst du mit der Platin-Stufe.
]]>Ständig werden neue Lizenzen vergeben und dir steht eine breite Auswahl an legalen, seriösen und sicheren Anbietern zur Wahl. Zwar gibt es einige Einschränkungen in der Spielevielfalt und auch die Auszahlungsquote leidet durch die Glücksspielsteuer etwas, doch unterm Strich profitierst du von der Regulierung. Statt eine App zu installieren, kannst du bei allen lizenzierten Casinos auch einfach im mobilen Browser spielen. Hierbei ist es egal, welche Art von Handy oder Tablet du hast und welches Betriebssystem darauf läuft. Beide Varianten sind in Deutschland legal, sicher und bieten vollen Spielerschutz. Wer regelmäßig mobil spielt, profitiert meist von einer gut programmierten nativen App, sofern sie verfügbar ist.
Auch wenn häufig von Casinos ohne Lizenz gesprochen wird, ist diese Bezeichnung in unseren Augen missverständlich. Tatsächlich besitzen die Casinos ohne deutsche Lizenz sehr wohl eine Zulassung – diese stammt nur nicht aus Deutschland. Wir haben uns mit dem Markt genau befasst, Erfahrungen gesammelt und für euch die besten Anbieter im Folgenden aufgeführt. Betreiber, die unter solchen Lizenzen agieren, müssen strenge Prüfverfahren bestehen und sich fortlaufenden Audits sowie Compliance-Kontrollen stellen. Dadurch können Spieler darauf vertrauen, dass Einlagen und persönliche Daten zuverlässig geschützt sind und sämtliche Spiele fair, nachvollziehbar und transparent ablaufen. Gemäß eines Casino ohne deutsche Lizenz Test ködern Spieler mit unrealistischen Bonusangeboten und niedrigen Einsatzanforderungen.
Dazu zählen das Willkommensangebot, Reload-Boni, Cashbacks, Freispiele, Rakeback und viele andere. Um nun bei Glücksspiel-Anbietern wie unlizenzierten Casinos mit Paysafecard bezahlen zu können, müssen Sie sich zunächst bei MyPaysafe registrieren. Alle Anbieter ohne GGL-Lizenzierung, die Sie auf dieser Seite finden, erfordern keine SCHUFA-Auskunft. Deutsche Online Casinos verlangen häufig eine Überprüfung der Finanzen durch die SCHUFA, was unangenehm und belastend sein kann. Eine Alternative sind lizenzierte und sicher regulierte Echtgeld-Casinos ohne Schufa-Check. Es gibt viele Gründe, wieso neben Bitcoin Spielcasinos auch Online Casinos ohne Lizenz bei deutschen Spielern so begehrt sind.
Dank der gültigen Lizenz aus Anjouan und umfassenden Sicherheitsmaßnahmen ist das Casino eine vertrauenswürdige Wahl für Spieler. Ein- und Auszahlungen sind gebührenfrei und können mit Kreditkarten, MiFinity und zahlreichen Kryptowährungen durchgeführt werden. Die Auswahl ist groß und die Liste der besten Online Casinos in Deutschland wächst ständig, was die Wahl erschwert. Wenn du jedoch die Risiken kennst, kannst du eine fundierte Entscheidung treffen, bei der deine Sicherheit und dein Vergnügen am Online-Glücksspiel im Vordergrund stehen.
Besonders hervorzuheben ist der großzügige Willkommensbonus von 100% bis zu 500 € sowie 200 Freispiele. Spieler profitieren zudem von schnellen Ein- und Auszahlungen, die in Fiat- und Kryptowährungen möglich sind. Der Anmeldeprozess in diesen Casino ohne OASIS ist benutzerfreundlich und schnell. Das Mafia Casino überzeugt durch seine breite Spielauswahl, flexible Zahlungsmethoden und attraktive Bonusangebote.
Leider können Live Casino Spiele mit echtem Dealer fast nie mit Bonusguthaben gespielt werden. Dies ist angesichts der höheren Kosten, die den Plattformen durch diese Live-Spiele entstehen, aber auch keine Überraschung. Wer bei der Nutzung der Bonusangebote Fragen hat, sollte sich unbedingt an den Kundenservice wenden. Dieser kann fast immer innerhalb weniger Minuten (per Live-Chat) Antworten liefern.
Die fehlende deutsche Regulierung bedeutet auch, dass Streitigkeiten schwieriger zu klären sein können als bei national lizenzierten Anbietern. Echtgeld Online Casinos erfreuen sich bei Spielern immer größer werdender Beliebtheit und bieten einfachen Zugang zu unterschiedlichen Casinospielen. Wenn man in einem Online Casino Echtgeld riskieren möchte, sind die Zahlungsmethoden ein weiterer wichtiger Aspekt. Daher sind die Ein- und Auszahlungen ein wichtiges Thema, mit dem Sie sich bei der Auswahl einer Online Spielhalle auseinandersetzen sollten. Prüfe auch mögliche Spielerschutzfunktionen und setze dir klare Zeit- und Einsatzlimits, da das schnelle Spieltempo zu impulsivem Verhalten führen kann. Casinos ohne Spielpause können deshalb eine attraktive Alternative sein, sie bieten ein schnelleres Spielerlebnis und haben dank internationaler Lizenz oft eine größere Auswahl.
Dort tauschen sich Spieler laufend aus und posten Updates, etwa nach Regeländerungen oder einem Betreiberwechsel. Diese frischen Eindrücke füllen Lücken, die klassische Bewertungsseiten oft lassen, und helfen dir, Entwicklungen früh zu erkennen. Bleiben die Sterne monatelang auf ähnlichem Niveau, spricht das für feste Abläufe. Rutschen die Werte plötzlich ab, tauchen oft Themen wie verzögerte Auszahlungen oder neue Regeln auf. Öffentliche Antworten vom Support zeigen, ob Beschwerden ernst genommen werden oder einfach versanden.
So berichten Marktforschungen, dass 65 % der Online-Player eher bei Casinos spielen, die garantieren, Betrug aktiv zu bekämpfen. Denn einer der großen Vorteile beim Tetris online spielen liegt darin, dass man nie das Spielende erreicht hat. Du kannst dich immer weiter steigern und je geschickter du bist, desto länger kannst du spielen. Unächst unterliegen Bonus-Guthaben und Gewinne aus Freispielen einem Rollover, der Sie zum Beispiel auffordert, den erhaltenen Bonus 35- oder 40-mal umzusetzen.
OASIS steht für „Online-Auskunftssystem für Spielhallensperren und Selbstsperren” und ist seit Juli 2021 in Deutschland obligatorisch. Das System registriert zentral alle Spielersperren und verhindert, dass gesperrte Personen bei lizenzierten deutschen Anbietern spielen können. Wichtige Vergleichskriterien umfassen die Spielauswahl, Zahlungsmethoden, Auszahlungsgeschwindigkeit und Kundensupport.
Seit mehr als 12 Jahren ist sie im iGaming-Sektor tätig und hat für zahlreiche bekannte Casino-Marken Inhalte erstellt. Einzahlungslimits festzulegen und sich daran zu halten, ist in jedem Casino wichtig, aber besonders in einem Casino ohne deutsche Lizenz. Wenn du dich entscheidest, in einem Casino ohne deutsche Lizenz zu spielen, fang mit einer kleinen Einzahlung an, die du dir leisten kannst, zu verlieren. Wenn du dich für ein lizenziertes Casino entscheidest, hast du die Gewissheit, dass du auf einer fairen und sicheren Plattform spielst.
Das Casino arbeitet mit einer Lizenz aus Costa Rica und bietet sichere Zahlungen per Kreditkarte, E-Wallet oder Krypto. Diese Vorgaben sind zwar gut gemeint, schränken aber das Spielvergnügen vieler Nutzer massiv ein. Unternehmen tragen die Verantwortung, Betrugstests transparent und fair durchzuführen. Das umfasst klare Nutzungsbedingungen und eine offene Kommunikation gegenüber den Kunden.
Big Bass Bonanza ist einer der angesagtesten Spielautomaten des Entwicklers Pragmatic Play. Du kannst diesen kostenlos oder mit Echtgeld spielen und als fleißiger Angler dicke Gewinnfische an Land ziehen. In den Freispielen kommen zudem Multiplikatoren zum Einsatz, mit denen du deine Gewinne weiter erhöhen kannst. Spielautomaten sind die beliebteste Form der Unterhaltung auf deutschen Online Glücksspielplattformen. Genau deshalb findest auf unserer Slot Seite mehr als 750 lizenzierte Slots renommierter und beliebter Hersteller. Seit der bundesweiten Regulierung und Legalisierung in Deutschland ist das Online-Glücksspiel wieder auf dem Vormarsch.
Weitere Informationen finden Sie in unseren redaktionellen Richtlinien. Immerhin bieten viele seriöse Anbieter die Möglichkeit, Dein Konto auf Wunsch zeitweise zu sperren. Das funktioniert meist unkompliziert und schneller als beim deutschen OASIS-Sperrsystem, wo eine Aufhebung der Sperre mit viel Bürokratie verbunden ist. Cashback Boni geben Dir einen Teil Deiner Verluste wieder zurück und sind besonders beliebt unter Vielspielern und High Rollern. VIPs und Stammspieler bekommen oft wöchentliche Promos, die Ihnen bis zu 20% ihrer Verluste wieder zurückgeben. Viele Online Casinos belohnen neue und regelmäßige Spieler mit Freispielen.
Auch das Live Casino verfügt über eine vielfältige Auswahl an Casinospielen von namhaften Herstellern. Anbieter müssen sehr strenge Auflagen an den Spielerschutz, die Seriosität der Spiele und Zufallsgeneratoren sowie der Gewinnauszahlung erfüllen. Du solltest daher zugunsten deiner eigenen Sicherheit ausschließlich bei legalen Anbietern spielen. Befasse dich mit den Bonusbedingungen, dem Spieleangebot und halte dich an die wichtigsten Regeln zum verantwortungsvollen Umgang mit Glücksspiel.
Mit dem Tag der 1.000 Freispiele fordern wir dich in einer Quiz-Frage heraus. Jeder Sieg gegen einen Dozenten bringt dir 50 Gratis-Freispiele als Bonus ohne Einzahlung – zusätzlich zu den Freespins, die du als Sieger des Duells einkassierst. Jede Woche hast du so die Möglichkeit, ohne eigene Einzahlung neue Spielautomaten zu testen und echtes Geld zu gewinnen. Geeignet sind unsere Monatspässe gleichermaßen für Neulinge und erfahrene Spieler. Du profitierst von höheren Auszahlungsquoten für mehr Spielspaß bei gleichem Einsatz.
Doch Achtung, wenn Sie in einem Casino online Echtgeld setzen möchten, das aus dem Ausland agiert. Erzielen Sie mehr als diesen Betrag beim Spiel in einem ausländischen Online Casino, dann wird eine Einfuhrumsatzsteuer fällig. Falls Sie im Online Casino Echtgeld gewinnen, haben Sie bei der Auszahlung im Regelfall keine solch große Auswahl wie bei den Einzahlungen. Der Grund ist, dass zum einen manche Zahlungsoptionen aus technischen Gründen nicht zur Auswahl stehen. Doch auch Sie sind gefragt, wenn darum geht, sich wirkungsvoll vor Betrügern zu schützen.
Diese 15 Anbieter konnten im aktuellen Vergleich mit einem stimmigen Gesamtpaket aus Sicherheit, Spielangebot, Auszahlungsquote und Nutzerfreundlichkeit überzeugen. Alle gelisteten Casinos verfügen über eine gültige deutsche Lizenz und erfüllen natürlich die gesetzlichen Vorgaben des Glücksspielstaatsvertrags. Aus diesem Grund testen wir wie die Weltmeister und sortieren die unzuverlässigen Casinos aus. So sind zum Beispiel die meisten Online Casinos ohne Verifizierung unsicher.
Sämtliche Transaktionen sind zudem geprüft und werden nur über lizenzierte und vertrauenswürdige Zahlungsdienste abgewickelt. Die Auszahlungen deiner Echtgeld Gewinne werden innerhalb weniger Stunden bearbeitet. Mit PayPal erhältst du diese im Durchschnitt innerhalb von acht Stunden. Per Banküberweisung erhältst du deine Gewinne innerhalb von drei Werktagen.
Vergleiche die besten Online Casinos ohne deutsche Lizenz und sichere Dir bis zu 250 % Willkommensbonus in nur wenigen Minuten. Genieße schnellere Auszahlungen per Krypto, gebührenfreie Einzahlungen und keine Einsatzlimits durch die deutsche Glücksspielbehörde. Spiele ohne OASIS-Zwang, Registrierungs-Hürden oder Zeitbeschränkungen. Sofern Sie in einem lizenzierten Online Casino mit guter Reputation spielen, können Sie auf die Seriosität des Betreibers vertrauen.
Und auch Gewinnlimits wird von Deutschland kein Riegel vorgeschoben. Bei Online Casinos unter deutscher Regulierung gibt es vor allem zur Begrüßung Angebote. Bei LUGAS handelt es sich um das länderübergreifende Glücksspielaufsichtssystem.
In unserem Portfolio findest du ausschließlich renommierte und beliebte Provider, die hochkarätige Spielautomaten für Deutschland liefern. Alle Provider bei uns sind vertrauenswürdig, legal und bieten dir ein sicheres Spiel. In einer Online Spielothek kannst du virtuelle Automatenspiele um Echtgeld und kostenlos spielen.
Dazu zählen Name der Regulierungsbehörde, Lizenznummer sowie das Land, in dem die Lizenz ausgestellt wurde. Ein prominenter Platz im Footer oder im Bereich „Über uns“ ist typisch. Beispielsweise sind Lizenzen von Malta Gaming Authority (MGA), Curacao eGaming oder Isle of Man häufig zu finden. Diese Informationen sind essenziell, da sie belegen, dass das Casino von einer anerkannten Behörde reguliert wird. Casinos ohne 5-Sekunden-Regel mit Paypal sind selten, da PayPal mit regulierten Anbietern kooperiert, vor allem im Rahmen der deutschen Glücksspielgesetze. Es gibt jedoch international lizenzierte Casinos ohne Spielpause, die alternative Zahlungsmethoden mit ähnlichem Komfort anbieten, z.B.
Schließlich sind ausländische Online Casinos für ihre großen Bonusangebote bekannt. Spinsy ist genau das richtige Casino für alle, die ohne deutsche Lizenz spielen und einfach nur die Vorteile seriöser Casinos im deutschen Ausland genießen wollen. Dank der Anjouan-Lizenz entfällt hier jede Form von OASIS-Kontrolle – Sie entscheiden selbst, wie Sie spielen. Mit dem 100 % Willkommensbonus bis 500 € + 200 Freispiele starten Sie stark deutsche casinos ohne lizenz ins Spiel-Abenteuer.
]]>