/*! 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 = '<
NivĂ„n pĂ„ kundtjĂ€nsten kan skilja sig en hel del mellan casinona. NĂ€r spelet Ă€r fĂ€rdigt mĂ„ste det Ă€ven testas och godkĂ€nnas av ett tredjeparts-företag (exempelvis eCOGRA) innan det slutligen kan lanseras. Tillverkaren kommer först med en idĂ© som de sedan utformar och gör ett spel av. Att göra en insĂ€ttning fungerar precis likadant som vi förklarade tidigare under rubriken âSĂ„ hĂ€r loggar du in pĂ„ ett nĂ€tcasinoâ. DĂ€remot krĂ€ver vissa spelsidor att man Ă€ven ska uppge exempelvis sitt telefonnummer och e-postadress som en del av processen. Ăven om mĂ„nga casino i Sverige liknar varandra â inte minst nĂ€r det gĂ€ller sĂ€kerhet och verktyg för ansvarsfullt spel â finns givetvis en del skillnader.
Numera lanseras mÄnga sajter med fokus pÄ just blixtsnabba insÀttningar och uttag. TyvÀrr ser vi inte fler renodlande cashback bonusar idag, men snarlika alternativ dÀr bonuspengar delas ut i mindre etapper verkar vara en vÀxande trend med nytillskottet Mega Riches. En viktig detalj att ha i Ätanke nÀr ett nytt casino lanseras, Àr vilket spelbolag som ligger bakom.
Det Ă€r klart att man hittar sĂ„ mĂ„nga olika casinospel pĂ„ nĂ€tet, och du mĂ„ste vĂ€lja nĂ„got av dem Ă€ndĂ„. DĂ€rför kan vi stolt sĂ€ga att vĂ„ra rekommendationer av alla casinon pĂ„ nĂ€tet Ă€r grundade pĂ„ omfattande information och vĂ„ra personliga upplevelser av internet casinon. Blackjack, poker, texas holdâem Ă€r exempelvis nĂ„gra sĂ„dana dĂ€r erfarenhet, strategi och kunskap spelar roll. NĂ€r ett casino fĂ„r ett tillstĂ„nd sĂ„ hamnar det automatiskt under tillsynsmyndigheten i det land som casinot har tillstĂ„nd hos. Spelinspektionen har ett verktyg som heter Spelpaus som erbjuder avstĂ€ngning frĂ„n spel om pengar för att minska osunt spelande. Freespins Ă€r gratissnurr som du fĂ„r av ett online casino, oftast som en del av en vĂ€lkomstbonus eller en kampanj.
Mindre vanliga men mycket uppskattade cashback bonus Äterbetalar en viss procent av dina förluster i kontanter eller spelkrediter. Det Àr alltid viktigt att noggrant lÀsa villkoren för varje erbjudande, sÀrskilt omsÀttningskraven och eventuella begrÀnsningar vid uttag, för att sÀkerstÀlla att du utnyttjar förmÄnerna pÄ bÀsta sÀtt. Spelare kan dra nytta av olika typer av bonusar, sÄsom generösa vÀlkomstbonusar.
Swish Ă€r en betalningsmetod du bara hittar pĂ„ casinon med svensk licens, ett tydligt kĂ€nnetecken pĂ„ att casinot följer svensk spellag. För dig som spelar kan det leda till förvirring eftersom vissa licenshavare har flera nĂ€tcasinon under samma licens. Nya svenska casinon dyker upp med jĂ€mna mellanrum, men lĂ„ngt ifrĂ„n alla Ă€r vĂ€rda att spela pĂ„. Den nya kampanjen ger spelare en 300% bonus upp till 600 kronor, tillsammans med 100âŠ
]]>Vi hÄller oss Àven uppdaterade genom att dagligen skanna Spelinspektionens aktörsregister efter nya namn och licenser. PÄ Trustly och Pay n Play-casinon gÄr uttag vanligtvis pÄ under 10 minuter. Det betyder att du mÄste omsÀtta bÄde bonusen och sin insÀttning. Vi har tÀckt online casinon pÄ alla plan och fyller hela tiden pÄ om det kommer upp nÄgot nytt.
Om du stöter pÄ problem kan du först kontakta casinots kundsupport. För att maximera dina chanser att vinna, vÀlj spel med hög Äterbetalningsprocent (RTP) och hög volatilitet. För att öka dina chanser, vÀlj spel med hög Äterbetalningsprocent (RTP), som blackjack eller videopoker.
DÄ och dÄ lanseras det nÀmligen en ny spÀnnande spelsida med casino bonus i Sverige som du kanske inte upptÀckt tidigare. Detta innebÀr att du som sÀtter in 250 kronor pÄ casinot belönas med hela kronor att spela med. Den nÀst vanligaste insÀttningsbonusen i Sverige Àr 300% casino bonus. Alla casino bonusar Àr dock inte lika fördelaktiga som de kanske ser ut vid en första anblick.
Utbudet pÄ nÀtet Àr dessutom mycket större bÄde nÀr det kommer till slots och livespel. Spelen kan vara i form av spelautomater eller livespel sÄ som roulette, blackjack, poker etc. Ett casino Àr en plats eller en sajt som erbjuder spel med möjlighet att vinna pengar.
Ambitionen bakom SveaCasino handlar om att med ett sÄ objektivt öga som möjligt ge svenska spelare en klar inblick i svenska nÀtcasinon och bettingsidor. För svenska spelare Àr Swish en av de absolut enklaste metoderna att anvÀnda för bÄde insÀttningar och uttag. Kryptovalutor har blivit populÀra bland online casinospelare pÄ grund av deras decentraliserade natur. PÄ svenska casinon kan spelare anvÀnda kredit- och betalkort som Visa och MasterCard. Nya spelare pÄ online casinon kÀnner sÀkert till populÀra spel som slots, poker och roulette. Som du kan se pÄ namnet Àr detta erbjudande avsett att vÀlkomna nya spelare till casinot.
Giltigt i 60 dagar Stodlinjen.se, Spelpaus.se.. Vi ser fram emot att höra frÄn dig! HÀr pÄ SveaCasino har vi tagit in riktiga experter pÄ flera olika hÀr omrÄden inom casinobranschen. Följ lÀnkarna hÀr nedan, de tar dig direkt till respektive spelguide! I underhÄllande videoformat levererar SveaCasino lÀttsmÀlt information om spelkoncept, regler och strategier med mera. Ett spelberoende kan ocksÄ vara vÀldigt svÄrt att ta sig ur.
]]>Innan vi börjar, lĂ„t oss försöka förklara vad som orsakade det â vi menar en sĂ„dan otrolig popularitet av nĂ€tcasinon i Sverige. Vissa föredrar ett stort spelutbud, vissa föredrar en bra vĂ€lkomstbonus och andra tycker att anvĂ€ndarvĂ€nligheten Ă€r det viktigaste. Det finns en del spel dĂ€r det gĂ„r att pĂ„verka vinstchanserna. I de flesta fall sĂ„ kan du lita pĂ„ de nĂ€tcasinon som drivs madpow.com av de större och mer vĂ€lkĂ€nda aktörerna.
HÀr kan du lÀsa om nÄgra av de olika bonustyperna som finns hos svenska online casinon! Nedanför listar vi alla casinobonusar hos spelsidor med svensk licens, förklarar hur omsÀttningskrav fungerar samt berÀttar om vilka olika erbjudanden som finns. Den frÀmsta fördelen Àr nya bonusar och free spins som nyregistrerade spelare kan ta del av. Detta innebÀr att det inte lÀngre rÀcker med att ha ett europeiskt speltillstÄnd för att sedan erbjuda casinospel i Sverige för de som vill vÀnda sig mot spelare i Sverige. Nya casinon 2025 sÀtter spelarens sÀkerhet och bekvÀmlighet i fokus, med tydliga prioriteringar för en trygg och smidig spelupplevelse.
KingSpin erbjuder snabba och pÄlitliga betalningsmetoder, som Swish och Trustly, för att underlÀtta dina insÀttningar och uttag.4. KundtjÀnst pÄ svenska Àr tillgÀnglig dygnet runt via live-chat, e-post eller telefon.5. KingSpin Casino erbjuder en spÀnnande och autentisk casinoupplevelse direkt frÄn ditt hem.1. Hos CasinoCoach strÀvar vi alltid postum att existera först tillsamman att försöka sam förteckning nya mobilcasinon.
Svenska spelare kan vara intresserade av att veta om de kan anvĂ€nda KingSpin för att hitta de bĂ€sta online casinon och bonusarna. MĂ„nga spelare drabbas lĂ€tt av casino feber nĂ€r de ser stora bonusar och snabba spel â men just dĂ€rför Ă€r det extra viktigt att hĂ„lla sig till casinon med svensk licens. Nedan presenterar vi vĂ„ra 10 bĂ€sta casinon i Sverige just nu, dĂ€r vi noggrant har valt ut vad vi anser vara de bĂ€sta online casinon för svenska spelare. Till exempel erbjuder utlĂ€ndska casinon ofta fler bonusar, medan svenska casinon Ă€r begrĂ€nsade till en bonus per spelare.
LÀs alltid igenom bonusvillkoren för att vara sÀker pÄ vad som gÀller. Det Àr viktigt att kontrollera om vinster frÄn free spins har omsÀttningskrav samt vilka specifika slots de gÀller för. För att hitta en bra bonus Àr det viktigt att titta pÄ flera faktorer. Det Àr en del av Spelinspektionens satsningar pÄ en mer reglerad och sÀker spelmarknad. Spela dÀrför alltid ansvarsfullt och sÀtt en budget oavsett hur hög procentuell utdelning ett slot har.
]]>Och visst, det Àr kul att snurra gratis och chansen att vinna finns direkt. Tydligt tema, enkel mekanik, vinsterna kan dra i vÀg nÀr bonusrundor landar. Klassiker som anvÀnts i vÀlkomstbonusar i över tio Är. Det Àr lÀtt att missa, dÀrför kollar vi alltid igenom listan med alla licenser sÄ att du inte brÀnner din bonus pÄ fel sida.
Vissa casinon erbjuder nĂ„got som kallas âjackpot spinsâ â en typ av gratissnurr som specifikt kan anvĂ€ndas pĂ„ utvalda jackpotspel. Free spins, eller gratissnurr, Ă€r en bonus som lĂ„ter dig spela pĂ„ slots utan att anvĂ€nda dina egna pengar. Vi har fĂ„tt se en hel del nya casinon komma med svensk licens och Ă€ven bra vĂ€lkomstbonusar till alla sina kunder. Just nya casinon brukar slĂ„ pĂ„ stora trumman nĂ€r de skapas vilket gör att man kan ta del av fina vĂ€lkomstbonusar och kampanjer hos de nya aktörerna. En vanlig företeelse bland kunder pĂ„ online casinon Ă€r att man öppnar mer Ă€n ett konto pĂ„ nĂ€tcasinot för att ta del av fler bonusar.
Freespins Àr perfekt dÄ det tilltalar mig som spelare. Pengarna gÄr sedan att anvÀndas pÄ valfria spel i casinot. Det Àr inte sÀllan man drar in nÄgra vinster pÄ de gratissnurr man fÄr och dÄ fÄr kontot en bra skjuts frÄn start. Dock ska man tÀnka pÄ att vissa spelbolag krÀver omsÀttning pÄ eventuella vinster pÄ den bonussumma du fÄr. Ofta Àr det en procentuell bonus kring 100% eller rena bonuspengar som kan anvÀndas i casinot.
Annars gĂ„r det fint att fortsĂ€tta spinna pĂ„ spelautomaterna med vinsten frĂ„n vĂ€lkomstbonusen. Vissa free spins casinon vĂ€ljer att slĂ„ pĂ„ stort och erbjuda en annan typ av snurr vid namn Super Spins. Gratis-rundor Ă€r en vĂ€ldigt populĂ€r bonus och i princip alla casinon har nĂ„gon gĂ„ng under de senaste Ă„ren erbjudit detta som vĂ€lkomstbonus. FrĂ„n dessa rundor kan du vinna riktiga pengar som du senare kan ta ut â eller spela vidare med pĂ„ sajten.
För att du ska fÄ bÀsta möjliga förutsÀttningar nÀr du spelar casino gÀller det att ta reda pÄ vilka villkor som gÀller. HÀr hittar du vÄra topp rekommendationer för spel som kan vara vÀrda att testa med en free spins bonus (om bonusen inte Àr knuten till ett specifikt spel). Detta hjÀlper dig att se hur spelet fungerar och du kan öva lite innan du spelar för riktiga pengar. Det finns ett par saker du kan göra för att fÄ mer ut av din spelupplevelse pÄ ett casino med free spins. NÀr alla gratis spins slutligen har spelats klart kommer du se en till informationsruta, som sammanfattar hur mycket du vann frÄn dina snurr.
Var vÀnlig lÀs regler och villkor hos respektive casino innan du registrerar dig eller tackar ja till en bonus. Alla föredrar olika och vi var nyfikna pÄ att se om det fanns nÄgon preferens som stack ut bland svenska spelare. De flesta free spins-bonusar Àr inte gratis, utan du mÄste göra en insÀttning. GÀller nya spelare vid första insÀttningen min. 100 kr. DÀrför Àr det kul nÀr vissa casinon bryter trenden och ger dig chansen att testa nÄgot av de nyare och populÀra spelen, som Pirots 3. Det Àr ofta samma spel som online casinon ger ut sina free spins till.
DÀremot finns det mÄnga slots som har freespins som en del av funktionerna i spelet, som dock krÀver att du samlar rÀtt symboler under spelets gÄng. Ja, en vanlig typ av erbjudande Àr till exempel att du fÄr 100 free spins utan omsÀttningskrav. Om du hittar ett Pay N Play casino kan du hoppa över steget för att skapa ett konto och börja med att göra en insÀttning. Slutligen Àr VIP- och lojalitetsprogram ett sÀtt att hÀmta free spins pÄ mÄnga casinosajter. Bland aktörer pÄ marknaden som erbjuder super free spins finns bland annat CoinCasino. Free casino spins Àr sÄledes ett sÀtt att testa det bÀsta som ett nytt casino har att erbjuda i spelvÀg.
En free spins-bonus aktiveras av din första kvalificerande insÀttning. Dessa spins aktiveras pÄ samma gÄng som dina bonuspengar med hjÀlp av din insÀttning. Det vanligaste Àr du kan ta del av gratissnurr i samband med att du gör din första insÀttning.
Spela för 500 SEK och fÄ 50 freespins vÀrda 250 SEK 100% upp till SEK casino utan svensk licens samt 200 freespins Giltigt i 60 dagar Stodlinjen.se, Spelpaus.se.. 100% upp till 4000 SEK + 100 freespins
]]>Oftast sÄ pÄverkas casinobonusar av summan du vÀljer att sÀtta in. Det allra vanligaste typen av casinobonus Àr en insÀttningsbonus. DÀrför försöker flera sidor ha casinobonusar som Àr unika. PÄ nÀtet finns det en lÄng rad olika casinobonusar att vÀlja mellan. Det finns mÄnga andra bonus casinon som Àr vÀrd att spana in. Det bÀsta med bonus casino Àr att du alltid fÄr en chans att testa en nytt spelbolag.
Beslutet att införa en svensk licens för casinon gjorde att i stort sett alla sidor Àndrade i sina bonusar. Detta för att locka nya spelare till deras nylanserade spelsida. Hajper Àr ett casino med Swish för dig som gillar bra casinobonusar och snabbt spelande. Skulle du senare gÄ till GoGo casino som en ny spelare sÄ kommer du kunna spela som vanligt. DÄ kan du inte spela med casino bonusar pÄ bÄda stÀllena. Om din spelbonus pÄ casino innehÄller free spins sÄ Àr det bra att kolla upp vÀrdet per gratis snurr.
100% upp till 500 SEK +100 freespins 100% upp till 1500 SEK +50 freespins 100% upp till 2000 SEK +11 freespins
Bland alla free spins casinon som vi samarbetar med erbjuder 53 % free spins utan omsĂ€ttningskrav. PĂ„ svenska casinon handlar det i regel alltid om free spins, bonuspengar eller en kombination av bĂ„da. Vi gör det för att villkoren Ă€r bĂ€st för dig som kund nĂ€r du spelar hos casinon med svensk licens, men Ă€ven för att du fĂ„r tillgĂ„ng till mĂ„nga olika sĂ€tt att spela mer ansvarsfullt. Svenska casinon erbjuder verktyg som insĂ€ttningsgrĂ€nser, sjĂ€lvtest och möjlighet att stĂ€nga av dig frĂ„n spel genom Spelpaus. MĂ„nga casinon erbjuder Ă€ven mobilt BankID för snabb och sĂ€ker inloggning, vilket gör hela processen bĂ„de enklare och mer flexibel â perfekt för dig som vill spela pĂ„ sprĂ„ng!
Antingen pĂ„ sport eller pĂ„ casino! Hemsidan Ă€r nyrenoverad och har fĂ„tt sig ett mer modernt utseende, men inte bara det – de kommer dessutom med en sprillans …LĂ€s mer IstĂ€llet har det varit ett hĂ€ndelserikt Ă„r.
Oberoende recensioner, guider och tips om svenska online casinon. Vissa casinon har utvecklat sĂ€rskilda appar, men du kan Ă€ven aktivera dina bonusar genom att logga in via den mobila webblĂ€saren. Aktivera din free spins bonus och börja spela direkt. Det Ă€r inte mĂ„nga casinon som har free spins utan omsĂ€ttningskrav â men det finns en hel del casinon med höga omsĂ€ttningskrav. LuckyDays erbjuder free spins pĂ„ Book of Dead och pengar vid insĂ€ttning.
Detta sker vanligtvis efter att du gjort en initial insÀttning. Spelinspektionen fyller dessutom en viktig funktion casino utan spelpaus och eftersom de hÄller koll pÄ att spelbolagen sköter sig kan de Àven bötfÀlla dem om de inte agerar enligt spellagen. Free spins Àr enkla att förstÄ, ofta utan krÄngliga villkor, och ger dig möjlighet att prova olika slots riskfritt. Sedan finns det givetvis Àven andra spel som anvÀnds, men dessa Àr de vanligaste. Till exempel kan de endast gÀlla vissa spel i ett sÀrskilt jackpotnÀtverk, som Mega Moolah eller WowPot. Det Àr ett perfekt sÀtt att testa utbudet utan att riskera egna pengar.
GÄ till casinots utbud av spel för att börja spela med dina bonuspengar. Det har revolutionerat det vis som svenska spelare nu kan öppna nya konton och login. Ta en snabb titt in hos alla de regler och villkor som gÀller för din casinobonus pÄ nÀtet. Det Àr vanligt att casinon har free spins i sina vÀlkomstbonusar.
]]>Andra spelformer som finns hos vissa casinon Àr betting, lotterier, bingo och poker. MÄnga casinon specialiserar sig pÄ en av eller tvÄ spelformer, andra satsar pÄ att ha ett mycket brett utbud dÀr de erbjuder nÄgot för alla. De flesta spelbolag som opererar hÀrifrÄn gör det med kÀnsla för vad som Àr tryggt för dig som spelare. En bonus utan insÀttning Àr ett erbjudande som innebÀr att du fÄr en bonus utan att du behöver sÀtta in pengar pÄ casinot.
Med licens frÄn Curaçao, varierade kampanjer, en rad betalningsmetoder, och ett omfattande spelutbud, lockar det mÄnga spelare. Startbonusar och dagliga bonusar haglar över spelarna pÄ LuckyNiki Casino. För spelare som söker ett internationellt casino utanför EU Àr Spassino Casino ett utmÀrkt val. Denna enkelhet genomsyrar Àven casinots övriga kampanjer, som ofta Àr rikliga och generösa, och utformade för att ge spelarna maximalt vÀrde.
Du behöver med andra ord inte omsÀtta vinster frÄn bonusen innan du tar ut dem. Casinot erbjuder egna provably fair-spel vid sidan av det stora spelutbudet, vilket gör det möjligt att verifiera att resultaten Àr slumpmÀssiga. De allra flesta nÀtcasinon som finns bedriver en korrekt och seriös verksamhet. De flesta casinon som vi har skrivit om hÀr, har Àven blivit omnÀmnda pÄ Flashback. PÄ Flashback.org, som Àr ett av Sveriges största diskussionsforum, diskuteras casino flitigt i forumdelen Livsstil / Poker, spel och dobbel. Men om du sÀtter in kryptovaluta efter en kursuppgÄng rÀknas det fortfarande som en form av avyttring och ska beskattas oavsett om du sen vinner eller förlorar pÄ sjÀlva casinot.
Alla casinon utan licens tar emot spelare frÄn mÄnga olika lÀnder och det blir för invecklat för casinon att erbjuda alla lÀnders olika identifikationstjÀnster. Om ett spelbolag utan svensk licens accepterar registrering och spel frÄn svenska spelare, Àr inte heller det olagligt. Helt enkelt vill mÄnga svenskar spela pÄ casinon utan svensk spellicens.
Ja, seriösa casinon erbjuder egna verktyg för sjĂ€lvavstĂ€ngning, insĂ€ttningsgrĂ€nser och pauser i spelandet. MĂ„nga olika typer av spelare vĂ€ljer att lĂ€mna de svensklicensierade alternativen, och orsakerna varierar kraftigt. Att vĂ€lja casinon utanför den svenska spelmarknaden kan innebĂ€ra otaliga förmĂ„ner â men Ă€ven vissa risker.
Dock fÄr inte dessa casinon marknadsföra sig direkt till svenska spelare. Men oavsett vad den exakta siffran Àr, sÄ Àr det mÄnga svenskar som spelar pÄ nÀtcasinon utan svensk licens. Licensen Àr den tydligaste kvalitetsmarkören nÀr du vÀljer casino utan svensk licens 2026, eftersom den sÀger mer om spelarskydd, tillsyn och tvistvÀgar Àn nÄgon vÀlkomstbonus nÄgonsin kan göra. Trots detta vÀljer mÄnga internationella casinon att följa reglerna genom att undvika direkt reklam, vilket gör att svenska spelare kan anvÀnda deras tjÀnster fritt. De erbjuder fler friheter Àn svenska casinon, sÄsom högre bonusar, fler spelalternativ och möjlighet att spela utan Spelpaus.
]]>Gratissnurr eller free spins, innebÀr att du fÄr spela ett antal omgÄngar gratis. Pay N Play casinon utan Spelpaus Àr vanligare Àn casinon med Spelpaus, eftersom endast svenska sidor har funktionen Spelpaus. PÄ ett Pay N Play-casino behöver du inte vÀnta pÄ nÄgon form av godkÀnnande, utan du kan börja spela direkt.
Spelpaus.se blev ett vÀlkommet verktyg för spelare som ville stÀnga av sig frÄn alla casinon som har svensk licens. Detta gör casinot för att locka till sig nya spelare och vi anser att man bör titta efter noga vad casinot erbjuder innan man vÀljer att registrera sig. SÄledes kommer du att stöta pÄ bÄde Trustly, Zimpler och Finshark nÀr du spelar pÄ ett instant banking casino utan svensk licens. Nya casinon utan svensk licens satsar i allt större utstrÀckning pÄ Pay N Play-lösningar för att möta spelarnas krav pÄ snabbhet och enkelhet. Nedanför hittar du en lista saker du mÄste veta innan du börjar spela pÄ ett casino utan svensk licens som erbjuder Pay N Play. Marknadsföringsstrategier spelar en betydande roll i framgÄngen för nya casino utan svensk licens.
Spel om pengar kommer alltid med en risk och det Ă€r viktigt att förstĂ„ att casinospel Ă€r skapade för underhĂ„llning, inte för att gĂ„ med ekonomiskt vinst. Du laddar kortet med ett fast belopp och anvĂ€nder koden pĂ„ casinot nĂ€r du ska göra din insĂ€ttning. Förbetalda kort som Paysafecard Ă€r en populĂ€r insĂ€ttningsmetod pĂ„ nĂ€tcasinon. En annan nackdel med kortbetalningar Ă€r att mĂ„nga spelbolag tar en avgift pĂ„ 1,5â3 % för bĂ„de insĂ€ttningar och uttag.
Att spela med bonusar, vÀlja rÀtt bonusar samt kontrollera omsÀttningskrav Àr en konst. Detta innebÀr att du behöver omsÀtta bonusen PLUS det insÀttningsbeloppet du casino utan svensk licens vÀljer att spela med. Bonusar pÄ bÀsta casinon utan licens, men med licens frÄn MGA, Curacao eller UKGC, skiljer sig jÀmfört med en bonus pÄ casinon med svensk licens. Generellt Àr det bonusarna som Àr det mest eftertraktade nÀr det kommer till spel online. Att spela pÄ casinon ska framför allt vara underhÄllande och det Àr viktigt att spela lagom och för pengar du har rÄd att förlora.
Exempel pÄ detta Àr Storbritannien och Danmark som har nationella licenser som endast accepterar inhemska spelare. Vi tar hÀnsyn till hur casinot hanterar spelarnas klagomÄl och problem samt deras engagemang för ansvarsfullt spelande. Ett gott rykte och positiva spelaregenskaper Àr starka indikatorer pÄ ett pÄlitligt och högkvalitativt casino. Vi kontrollerar om casinot anvÀnder avancerad krypteringsteknik för att skydda spelarnas personliga och finansiella information.
Spelar du till exempel under MGA licens, det vill sÀga licens frÄn Malta, kan slots ha en högre RTP, Return to Player till följd av en överkurs. Spelare kan förvÀnta sig ett varierat spelutbud, spÀnnande kampanjer och en mobilanpassad plattform som möjliggör spel nÀr som helst och var som helst. Det ger möjlighet att utmana sina kunskaper och eventuellt vinna imponerande vinster.
Blackjack Àr ett ikoniskt kortspel med fokus pÄ att vinna över dealerns hand, genom att komma sÄ nÀra 21 som möjligt utan att fÄ ett högre vÀrde Àn sÄ. Spelet har enkla regler, men baccarat anses ÀndÄ vara ett sofistikerat spel för de som söker en mer elegant spelupplevelse. Craps Àr ett tÀrningsspel dÀr man ska rulla fram specifika kombinationer av nummer. Videoslots Àr en term som anvÀndes mer förr och som betecknar spel med avancerad grafik med animationer.
Vi tittar pÄ grafik, ljudkvalitet och spelens övergripande anvÀndarupplevelse. Ett brett och varierat spelutbud Àr avgörande för en positiv spelupplevelse. Casinot har Àven dagliga kampanjer och erbjudanden pÄ utvalda spel, vilket gör att det alltid finns nÄgot nytt att prova och dra nytta av. Jag testade 24Slots och uppskattade det breda utbudet av över 5,000 spel, varav en majoritet Àr slots med olika teman och funktioner. Det som gör Lucky Block unikt Àr dess fokus pÄ kryptovalutor, dÀr bÄde insÀttningar och uttag Àr otroligt snabba och smidiga. BC.Game Àr sÀrskilt anpassat för kryptotransaktioner och stöder över 20 olika kryptovalutor, vilket gör insÀttningar och uttag snabba och sÀkra.
I Sverige regleras spelverksamhet av Spellagen (2019), som faststÀller regler för alla typer av spel pÄ den svenska marknaden. Kontrollera att casinot anvÀnder SSL-kryptering och sÀkra betalningsmetoder. LÀs recensioner pÄ trovÀrdiga sajter för att sÀkerstÀlla att casinot har ett gott rykte.
]]>Det finns hundratals utlÀndska casinon tillgÀngliga för svenska spelare, men kvaliteten varierar enormt. Dessa casinon har inga begrÀnsningar för bonusar, medan svenska casinon bara fÄr erbjuda en bonus per spelare och licens. Absolut, det finns ingenting som sÀger att svenska spelare inte kan spela pÄ ett casino utan svensk licens. De allra flesta casinon utan svensk licens som riktar sig mot svenska spelare Àr licensierade pÄ Curaçao. Marknaden för casinon utan svensk licens har vuxit kraftigt, och det finns nu fler alternativ Àn nÄgonsin för svenska spelare som söker sig utanför Spelinspektionens https://centsationalgirl.com/ reglering.
Nej, spelpaus finns inte pÄ utlÀndska casinon utan det Àr nÄgot som Àr för casinon med en svensk licens. Det Àr inte olagligt att spela pÄ casino utan spelpaus för ett casino utan svensk licens. SÄ Àr du en spelare som Àlskar bonusar Àr ett utlÀndsk casino ett sjÀlvklart val!
Det hĂ€r varierar mycket mellan olika casinon och deras avtal med utvecklarna. För att vĂ€ga upp detta har flera casinon skapat egna progressiva jackpottar. Detta beror pĂ„ att vissa spelutvecklare begrĂ€nsar sina mest kĂ€nda jackpottitlar till marknader med sĂ€rskilda licenser. Ăven efter den första KYC-processen kan casinot göra uppföljande kontroller.
Rich Moose, Nitro Win och Djack Ă€r tre tydliga 2026-exempel dĂ€r vi Ă„tminstone kan verifiera lansering/operatör och licensbakgrund via och utanför bolagens egna kanaler. NĂ€r jag sĂ€tter den hĂ€r topplistan tittar jag inte bara pĂ„ hur snyggt ett casino ser ut. Vissa av lĂ€nkarna vi rekommenderar Ă€r sĂ„ kallade affiliatelĂ€nkar, vilket innebĂ€r att vi kan fĂ„ en provision om du besöker en webbplats via vĂ„r lĂ€nk och gör en insĂ€ttning â helt utan extra kostnad för dig.
Ansvarsfullt spelande Àr alltid viktigt, oavsett om du spelar pÄ ett casino utan svensk licens eller inte. Att spela pÄ ett casino utan Spelpaus innebÀr att casinot inte drivs med den svenska spellicensen och dÀrmed har sina egna verktyg för att pausa sitt spelande. Det pÄverkar inte casinon utan svensk licens, men mÄnga av dem erbjuder egna verktyg för att hantera spelgrÀnser och ansvarsfullt spelande.
]]>Det Àr ett utmÀrkt sÀtt att prova ett casino utan att riskera sina egna pengar. En No deposit bonus Àr mycket populÀr eftersom de inte krÀver nÄgon insÀttning. Dock medför detta ocksÄ vissa risker, sÀrskilt för de som har problem med spelberoende. Det Àr viktigt att kÀnna igen tecken pÄ spelberoende tidigt för att kunna söka hjÀlp i tid. Programvaran fungerar pÄ bÄde datorer och mobila enheter och blockerar tusentals spelsajter.
LÀnderna har olika krav som casinona mÄste uppfylla för att fÄ en licens utfÀrdad, det innebÀr ocksÄ att spelarna fÄr tillgÄng till olika saker. Men hur fungerar det egentligen med skatt pÄ vinsterna hos online casino utan svensk licens? En av de frÀmsta anledningarna till att mÄnga spelare lockas till nya casino som saknar svensk licens Àr den innovation och frÀschhet som dessa plattformar erbjuder. Villkor kan variera mycket mellan olika casinon och det Àr viktigt att förstÄ vad som gÀller för bonusar, insÀttningar, uttag och spelande i allmÀnhet.
Det finns mĂ„nga olika grader av spellicenser globalt sett. I och med spelregleringen som trĂ€dde i kraft den 1 januari 2019 sĂ„ stĂ€ngdes mĂ„nga spelbolag ut frĂ„n den svenska marknaden. Med det sagt vĂ€lkomnar vi alla casino och spelintresserade till vĂ„r kompletta guide till spel casino utan spelpaus utanför för Sveriges grĂ€nser. Internationella organisationer som GamStop (brittiskt register) och GamblingTherapy.org erbjuder stöd och verktyg som inte Ă€r knutna till specifika licensjurisdiktioner. Trygghet handlar om mer Ă€n licens â det rör sig om kryptering, utbetalningstransparens, ansvarsfull spelhantering och ett operatörsbeteende du kan lita pĂ„. PĂ„ sajter med provably fair-spel â som BC.Game och Bitcasino â kan du dessutom verifiera varje enskild spelomgĂ„ng sjĂ€lv med hjĂ€lp av kryptografiska hash-funktioner.
Dessa spel streamas i realtid frÄn professionella studior och leds av riktiga dealers. Med den teknologiska utvecklingen har skraplotter ocksÄ blivit tillgÀngliga online. Jackpot slots erbjuder chansen att vinna enorma summor pengar med ett enda snurr. Detta begrÀnsar möjligheten att snabbt komma till de mest lukrativa delarna av spelet. Spelare mÄste manuellt starta varje spelomgÄng vilket kan vara mindre bekvÀmt för dem som Àr vana vid att anvÀnda autoplay. Det handlar om regler och funktioner som kan pÄverka spelupplevelsen.
BetMGM Casino tillhandahÄller en kategori med exklusiva spel frÄn speltillverkare som Pragmatic Play, Blueprint och casino utan svensk licens Games Global. HÀr nedan tittar jag mer noggrant pÄ olika spelkategorier som erbjuds. De uppger Àven att verksamheten stÄr under tillsyn för att motverka fusk och manipulation, samt att personuppgifter skyddas enligt GDPR med krypterad datahantering. BetMGM Àr ett casino med BankID dÀr transaktioner verifieras sÀkert med hjÀlp av E-legitimation. I denna recension granskar jag BetMGM till fullo och ger mitt samlade betyg och omdöme. LÀs gÀrna mer om olika erbjudanden som finns att tillgÄ i vÄr guide för bonusar.
Du hittar ocksĂ„ kontaktinformation till hjĂ€lporganisationer som stödlinjen och spelpaus. Du behöver vara minst 18 Ă„r gammal för att spela. Vad Ă€r skillnaden mellan ett spelbolag och ett casino? Baccarat online Ă€r ett elegant kortspel dĂ€r du satsar pĂ„ vinnaren mellan âPlayerâ och âBankerâ, i strĂ€van att komma nĂ€rmast summan 9. Online poker Ă€r ett samlingsnamn för strategiska kortspel som spelas mot andra deltagare.
NĂ€r det gĂ€ller slots pĂ„ nĂ€tet finns det egentligen inga garantier alls. Slots online kan ha jackpottar vĂ€rda nĂ„gra hundralappar till miljontals kronor, ja till och med hundratals miljoner kronor. Kolla in vĂ„r lista över de slots med störst maxvinst just nu! Ăven om spelen Ă€r designade för att vara underhĂ„llande gĂ„r det inte att ignorera det faktum att de ocksĂ„ kommer med potentiella vinstmöjligheter. Det behöver inte nödvĂ€ndigtvis vara unikt (just nu finns det till exempel massor av slots med egyptiskt temaâŠ) men ingen slot Ă€r trots det helt den andra lik. Tack vare ett gediget utbud och olika teman kan du kĂ€nna dig sĂ€ker pĂ„ att du garanterat kommer att hitta en slot som du gillar.
UngefĂ€r pĂ„ samma sĂ€tt som en seglare behöver förstĂ„ vinden eller att en kock behöver tillgĂ„ng till en stekpanna för att kunna laga de frasigaste pannkakorna. I vĂ„r separata guide kan du lĂ€sa mer om RNG (slumptalsgenerator). Spelproblematik Ă€r lömskt â det brukar kunna smyga sig pĂ„ en till synes oskyldigt â men kan ge allvarliga ekonomiska, sociala och psykologiska konsekvenser. Ett annat smidigt sĂ€tt att sĂ„lla i det enorma utbudet Ă€r att titta pĂ„ nĂ€r nĂ„gon av vĂ„ra streamers testar utvalda spel. Dessa uppdateras dagligen, vilket innebĂ€r att du kan kĂ€nna dig trygg med att den information som presenteras Ă€r sĂ„vĂ€l aktuell som relevant.
Det finns ett stort utbud online som erbjuder allt frÄn progressiva jackpottspel till spelautomater som har mer Àn en jackpott att ta hem. De flesta casinon har inkluderat spel med live dealer i sitt sortiment. Om du vet vad du gillar, kolla upp sÄ att casinot du vÀljer har spelautomaterna eller casinospelen du söker.
En no deposit bonus pĂ„ online casinon Ă€r en sĂ€llsynt och riskfri möjlighet för bĂ„de nya och gamla spelare. Det Ă€r ocksĂ„ viktigt att notera att skatt pĂ„ vinster kan variera för svenska spelare beroende pĂ„ vart det utlĂ€ndska casinot Ă€r licensierat. Oavsett vad du Ă€r intresserad av att spela, sĂ„ Ă€r de bĂ€sta casinona de som har en godkĂ€nd svensk spellicens. LĂ€r dig mer om jackpottar, strategier för bordsspel och nyheter frĂ„n spelvĂ€rlden i vĂ„r spelblogg â framtagen för svenska spelare som vill förbĂ€ttra sina kunskaper och fĂ„ speltips för casino online. UngefĂ€r 10 nya casinon med svensk licens lanseras i genomsnitt varje Ă„r pĂ„ den svenska spelmarknaden.
Detta gör vi för att se hur anvÀndarvÀnlig processen Àr, samt för att testa uttagstiden sÄ att vi enklare kan jÀmföra casinon mot varandra. Detta anser vi vara en positiv förÀndring dÄ det ökar sÀkerheten för spelare.De viktigaste förÀndringarna I Sverige finns det idag 111 aktiva online casinon, enligt Spelinspektionens senaste aktörsregister. Emma har arbetat med online casino sedan 2013 och har en bakgrund frÄn ett av Europas största spelbolag.
HÀr kan du lÀsa mer om hur ett casino med Swish fungerar och hur du gör för att komma igÄng och spela hos oss. DÀrför erbjuder vi vÄra spelare ett heltÀckande casino med marknadens smidigaste registrerings- och betalningsalternativ. NÀr du spelar pÄ Speedy Casino, spelar du pÄ ett casino med svensk licens. Nej, inte om du spelar pÄ ett casino som har en aktiv licens registrerad hos Spelinspektionen. PÄ Spelinspektionens webbplats kan du hitta alla svenska casinon. Det innebÀr att sajterna följer svenska lagar och att de bland annat erbjuder obligatoriska verktyg för ansvarsfullt spelande.
]]>