/*! 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 = '<>'; // Important! // Keep this list in sync with production version in `./factoryWithThrowingShims.js`. var ReactPropTypes = { array: createPrimitiveTypeChecker('array'), bigint: createPrimitiveTypeChecker('bigint'), bool: createPrimitiveTypeChecker('boolean'), func: createPrimitiveTypeChecker('function'), number: createPrimitiveTypeChecker('number'), object: createPrimitiveTypeChecker('object'), string: createPrimitiveTypeChecker('string'), symbol: createPrimitiveTypeChecker('symbol'), any: createAnyTypeChecker(), arrayOf: createArrayOfTypeChecker, element: createElementTypeChecker(), elementType: createElementTypeTypeChecker(), instanceOf: createInstanceTypeChecker, node: createNodeChecker(), objectOf: createObjectOfTypeChecker, oneOf: createEnumTypeChecker, oneOfType: createUnionTypeChecker, shape: createShapeTypeChecker, exact: createStrictShapeTypeChecker, }; /** * inlined Object.is polyfill to avoid requiring consumers ship their own * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is */ /*eslint-disable no-self-compare*/ function is(x, y) { // SameValue algorithm if (x === y) { // Steps 1-5, 7-10 // Steps 6.b-6.e: +0 != -0 return x !== 0 || 1 / x === 1 / y; } else { // Step 6.a: NaN == NaN return x !== x && y !== y; } } /*eslint-enable no-self-compare*/ /** * We use an Error-like object for backward compatibility as people may call * PropTypes directly and inspect their output. However, we don't use real * Errors anymore. We don't inspect their stack anyway, and creating them * is prohibitively expensive if they are created too often, such as what * happens in oneOfType() for any type before the one that matched. */ function PropTypeError(message, data) { this.message = message; this.data = data && typeof data === 'object' ? data: {}; this.stack = ''; } // Make `instanceof Error` still work for returned errors. PropTypeError.prototype = Error.prototype; function createChainableTypeChecker(validate) { if (true) { var manualPropTypeCallCache = {}; var manualPropTypeWarningCount = 0; } function checkType(isRequired, props, propName, componentName, location, propFullName, secret) { componentName = componentName || ANONYMOUS; propFullName = propFullName || propName; if (secret !== ReactPropTypesSecret) { if (throwOnDirectAccess) { // New behavior only for users of `prop-types` package var err = new Error( 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use `PropTypes.checkPropTypes()` to call them. ' + 'Read more at http://fb.me/use-check-prop-types' ); err.name = 'Invariant Violation'; throw err; } else if ( true && typeof console !== 'undefined') { // Old behavior for people using React.PropTypes var cacheKey = componentName + ':' + propName; if ( !manualPropTypeCallCache[cacheKey] && // Avoid spamming the console because they are often not actionable except for lib authors manualPropTypeWarningCount < 3 ) { printWarning( 'You are manually calling a React.PropTypes validation ' + 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' + 'and will throw in the standalone `prop-types` package. ' + 'You may be seeing this warning due to a third-party PropTypes ' + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.' ); manualPropTypeCallCache[cacheKey] = true; manualPropTypeWarningCount++; } } } if (props[propName] == null) { if (isRequired) { if (props[propName] === null) { return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.')); } return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.')); } return null; } else { return validate(props, propName, componentName, location, propFullName); } } var chainedCheckType = checkType.bind(null, false); chainedCheckType.isRequired = checkType.bind(null, true); return chainedCheckType; } function createPrimitiveTypeChecker(expectedType) { function validate(props, propName, componentName, location, propFullName, secret) { var propValue = props[propName]; var propType = getPropType(propValue); if (propType !== expectedType) { // `propValue` being instance of, say, date/regexp, pass the 'object' // check, but we can offer a more precise error message here rather than // 'of type `object`'. var preciseType = getPreciseType(propValue); return new PropTypeError( 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'), {expectedType: expectedType} ); } return null; } return createChainableTypeChecker(validate); } function createAnyTypeChecker() { return createChainableTypeChecker(emptyFunctionThatReturnsNull); } function createArrayOfTypeChecker(typeChecker) { function validate(props, propName, componentName, location, propFullName) { if (typeof typeChecker !== 'function') { return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.'); } var propValue = props[propName]; if (!Array.isArray(propValue)) { var propType = getPropType(propValue); return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.')); } for (var i = 0; i < propValue.length; i++) { var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret); if (error instanceof Error) { return error; } } return null; } return createChainableTypeChecker(validate); } function createElementTypeChecker() { function validate(props, propName, componentName, location, propFullName) { var propValue = props[propName]; if (!isValidElement(propValue)) { var propType = getPropType(propValue); return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.')); } return null; } return createChainableTypeChecker(validate); } function createElementTypeTypeChecker() { function validate(props, propName, componentName, location, propFullName) { var propValue = props[propName]; if (!ReactIs.isValidElementType(propValue)) { var propType = getPropType(propValue); return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.')); } return null; } return createChainableTypeChecker(validate); } function createInstanceTypeChecker(expectedClass) { function validate(props, propName, componentName, location, propFullName) { if (!(props[propName] instanceof expectedClass)) { var expectedClassName = expectedClass.name || ANONYMOUS; var actualClassName = getClassName(props[propName]); return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.')); } return null; } return createChainableTypeChecker(validate); } function createEnumTypeChecker(expectedValues) { if (!Array.isArray(expectedValues)) { if (true) { if (arguments.length > 1) { printWarning( 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' + 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).' ); } else { printWarning('Invalid argument supplied to oneOf, expected an array.'); } } return emptyFunctionThatReturnsNull; } function validate(props, propName, componentName, location, propFullName) { var propValue = props[propName]; for (var i = 0; i < expectedValues.length; i++) { if (is(propValue, expectedValues[i])) { return null; } } var valuesString = JSON.stringify(expectedValues, function replacer(key, value) { var type = getPreciseType(value); if (type === 'symbol') { return String(value); } return value; }); return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.')); } return createChainableTypeChecker(validate); } function createObjectOfTypeChecker(typeChecker) { function validate(props, propName, componentName, location, propFullName) { if (typeof typeChecker !== 'function') { return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.'); } var propValue = props[propName]; var propType = getPropType(propValue); if (propType !== 'object') { return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.')); } for (var key in propValue) { if (has(propValue, key)) { var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); if (error instanceof Error) { return error; } } } return null; } return createChainableTypeChecker(validate); } function createUnionTypeChecker(arrayOfTypeCheckers) { if (!Array.isArray(arrayOfTypeCheckers)) { true ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : 0; return emptyFunctionThatReturnsNull; } for (var i = 0; i < arrayOfTypeCheckers.length; i++) { var checker = arrayOfTypeCheckers[i]; if (typeof checker !== 'function') { printWarning( 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' + 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.' ); return emptyFunctionThatReturnsNull; } } function validate(props, propName, componentName, location, propFullName) { var expectedTypes = []; for (var i = 0; i < arrayOfTypeCheckers.length; i++) { var checker = arrayOfTypeCheckers[i]; var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret); if (checkerResult == null) { return null; } if (checkerResult.data && has(checkerResult.data, 'expectedType')) { expectedTypes.push(checkerResult.data.expectedType); } } var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': ''; return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.')); } return createChainableTypeChecker(validate); } function createNodeChecker() { function validate(props, propName, componentName, location, propFullName) { if (!isNode(props[propName])) { return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.')); } return null; } return createChainableTypeChecker(validate); } function invalidValidatorError(componentName, location, propFullName, key, type) { return new PropTypeError( (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.' ); } function createShapeTypeChecker(shapeTypes) { function validate(props, propName, componentName, location, propFullName) { var propValue = props[propName]; var propType = getPropType(propValue); if (propType !== 'object') { return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); } for (var key in shapeTypes) { var checker = shapeTypes[key]; if (typeof checker !== 'function') { return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker)); } var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); if (error) { return error; } } return null; } return createChainableTypeChecker(validate); } function createStrictShapeTypeChecker(shapeTypes) { function validate(props, propName, componentName, location, propFullName) { var propValue = props[propName]; var propType = getPropType(propValue); if (propType !== 'object') { return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); } // We need to check all keys in case some are required but missing from props. var allKeys = assign({}, props[propName], shapeTypes); for (var key in allKeys) { var checker = shapeTypes[key]; if (has(shapeTypes, key) && typeof checker !== 'function') { return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker)); } if (!checker) { return new PropTypeError( 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' + '\nBad object: ' + JSON.stringify(props[propName], null, ' ') + '\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ') ); } var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); if (error) { return error; } } return null; } return createChainableTypeChecker(validate); } function isNode(propValue) { switch (typeof propValue) { case 'number': case 'string': case 'undefined': return true; case 'boolean': return !propValue; case 'object': if (Array.isArray(propValue)) { return propValue.every(isNode); } if (propValue === null || isValidElement(propValue)) { return true; } var iteratorFn = getIteratorFn(propValue); if (iteratorFn) { var iterator = iteratorFn.call(propValue); var step; if (iteratorFn !== propValue.entries) { while (!(step = iterator.next()).done) { if (!isNode(step.value)) { return false; } } } else { // Iterator will provide entry [k,v] tuples rather than values. while (!(step = iterator.next()).done) { var entry = step.value; if (entry) { if (!isNode(entry[1])) { return false; } } } } } else { return false; } return true; default: return false; } } function isSymbol(propType, propValue) { // Native Symbol. if (propType === 'symbol') { return true; } // falsy value can't be a Symbol if (!propValue) { return false; } // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol' if (propValue['@@toStringTag'] === 'Symbol') { return true; } // Fallback for non-spec compliant Symbols which are polyfilled. if (typeof Symbol === 'function' && propValue instanceof Symbol) { return true; } return false; } // Equivalent of `typeof` but with special handling for array and regexp. function getPropType(propValue) { var propType = typeof propValue; if (Array.isArray(propValue)) { return 'array'; } if (propValue instanceof RegExp) { // Old webkits (at least until Android 4.0) return 'function' rather than // 'object' for typeof a RegExp. We'll normalize this here so that /bla/ // passes PropTypes.object. return 'object'; } if (isSymbol(propType, propValue)) { return 'symbol'; } return propType; } // This handles more types than `getPropType`. Only used for error messages. // See `createPrimitiveTypeChecker`. function getPreciseType(propValue) { if (typeof propValue === 'undefined' || propValue === null) { return '' + propValue; } var propType = getPropType(propValue); if (propType === 'object') { if (propValue instanceof Date) { return 'date'; } else if (propValue instanceof RegExp) { return 'regexp'; } } return propType; } // Returns a string that is postfixed to a warning about an invalid type. // For example, "undefined" or "of type array" function getPostfixForTypeWarning(value) { var type = getPreciseType(value); switch (type) { case 'array': case 'object': return 'an ' + type; case 'boolean': case 'date': case 'regexp': return 'a ' + type; default: return type; } } // Returns class name of the object, if any. function getClassName(propValue) { if (!propValue.constructor || !propValue.constructor.name) { return ANONYMOUS; } return propValue.constructor.name; } ReactPropTypes.checkPropTypes = checkPropTypes; ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache; ReactPropTypes.PropTypes = ReactPropTypes; return ReactPropTypes; }; /***/ }), /***/ "../node_modules/prop-types/index.js": /*!*******************************************!*\ !*** ../node_modules/prop-types/index.js ***! \*******************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { /** * 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. */ if (true) { var ReactIs = __webpack_require__(/*! react-is */ "../node_modules/prop-types/node_modules/react-is/index.js"); // By explicitly using `prop-types` you are opting into new development behavior. // http://fb.me/prop-types-in-prod var throwOnDirectAccess = true; module.exports = __webpack_require__(/*! ./factoryWithTypeCheckers */ "../node_modules/prop-types/factoryWithTypeCheckers.js")(ReactIs.isElement, throwOnDirectAccess); } else {} /***/ }), /***/ "../node_modules/prop-types/lib/ReactPropTypesSecret.js": /*!**************************************************************!*\ !*** ../node_modules/prop-types/lib/ReactPropTypesSecret.js ***! \**************************************************************/ /***/ ((module) => { "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 ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; module.exports = ReactPropTypesSecret; /***/ }), /***/ "../node_modules/prop-types/lib/has.js": /*!*********************************************!*\ !*** ../node_modules/prop-types/lib/has.js ***! \*********************************************/ /***/ ((module) => { module.exports = Function.call.bind(Object.prototype.hasOwnProperty); /***/ }), /***/ "../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js": /*!************************************************************************************!*\ !*** ../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js ***! \************************************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; /** @license React v16.13.1 * react-is.development.js * * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ if (true) { (function() { 'use strict'; // The Symbol used to tag the ReactElement-like types. If there is no native Symbol // nor polyfill, then a plain number is used for performance. var hasSymbol = typeof Symbol === 'function' && Symbol.for; var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7; var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca; var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb; var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc; var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2; var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd; var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary // (unstable) APIs that have been removed. Can we remove the symbols? var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf; var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf; var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0; var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1; var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8; var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3; var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4; var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9; var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5; var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6; var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7; function isValidElementType(type) { return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill. type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE); } function typeOf(object) { if (typeof object === 'object' && object !== null) { var $$typeof = object.$$typeof; switch ($$typeof) { case REACT_ELEMENT_TYPE: var type = object.type; switch (type) { case REACT_ASYNC_MODE_TYPE: case REACT_CONCURRENT_MODE_TYPE: case REACT_FRAGMENT_TYPE: case REACT_PROFILER_TYPE: case REACT_STRICT_MODE_TYPE: case REACT_SUSPENSE_TYPE: return type; default: var $$typeofType = type && type.$$typeof; switch ($$typeofType) { case REACT_CONTEXT_TYPE: case REACT_FORWARD_REF_TYPE: case REACT_LAZY_TYPE: case REACT_MEMO_TYPE: case REACT_PROVIDER_TYPE: return $$typeofType; default: return $$typeof; } } case REACT_PORTAL_TYPE: return $$typeof; } } return undefined; } // AsyncMode is deprecated along with isAsyncMode var AsyncMode = REACT_ASYNC_MODE_TYPE; var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE; var ContextConsumer = REACT_CONTEXT_TYPE; var ContextProvider = REACT_PROVIDER_TYPE; var Element = REACT_ELEMENT_TYPE; var ForwardRef = REACT_FORWARD_REF_TYPE; var Fragment = REACT_FRAGMENT_TYPE; var Lazy = REACT_LAZY_TYPE; var Memo = REACT_MEMO_TYPE; var Portal = REACT_PORTAL_TYPE; var Profiler = REACT_PROFILER_TYPE; var StrictMode = REACT_STRICT_MODE_TYPE; var Suspense = REACT_SUSPENSE_TYPE; var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated function isAsyncMode(object) { { if (!hasWarnedAboutDeprecatedIsAsyncMode) { hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.'); } } return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE; } function isConcurrentMode(object) { return typeOf(object) === REACT_CONCURRENT_MODE_TYPE; } function isContextConsumer(object) { return typeOf(object) === REACT_CONTEXT_TYPE; } function isContextProvider(object) { return typeOf(object) === REACT_PROVIDER_TYPE; } function isElement(object) { return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; } function isForwardRef(object) { return typeOf(object) === REACT_FORWARD_REF_TYPE; } function isFragment(object) { return typeOf(object) === REACT_FRAGMENT_TYPE; } function isLazy(object) { return typeOf(object) === REACT_LAZY_TYPE; } function isMemo(object) { return typeOf(object) === REACT_MEMO_TYPE; } function isPortal(object) { return typeOf(object) === REACT_PORTAL_TYPE; } function isProfiler(object) { return typeOf(object) === REACT_PROFILER_TYPE; } function isStrictMode(object) { return typeOf(object) === REACT_STRICT_MODE_TYPE; } function isSuspense(object) { return typeOf(object) === REACT_SUSPENSE_TYPE; } exports.AsyncMode = AsyncMode; exports.ConcurrentMode = ConcurrentMode; exports.ContextConsumer = ContextConsumer; exports.ContextProvider = ContextProvider; exports.Element = Element; exports.ForwardRef = ForwardRef; exports.Fragment = Fragment; exports.Lazy = Lazy; exports.Memo = Memo; exports.Portal = Portal; exports.Profiler = Profiler; exports.StrictMode = StrictMode; exports.Suspense = Suspense; exports.isAsyncMode = isAsyncMode; exports.isConcurrentMode = isConcurrentMode; exports.isContextConsumer = isContextConsumer; exports.isContextProvider = isContextProvider; exports.isElement = isElement; exports.isForwardRef = isForwardRef; exports.isFragment = isFragment; exports.isLazy = isLazy; exports.isMemo = isMemo; exports.isPortal = isPortal; exports.isProfiler = isProfiler; exports.isStrictMode = isStrictMode; exports.isSuspense = isSuspense; exports.isValidElementType = isValidElementType; exports.typeOf = typeOf; })(); } /***/ }), /***/ "../node_modules/prop-types/node_modules/react-is/index.js": /*!*****************************************************************!*\ !*** ../node_modules/prop-types/node_modules/react-is/index.js ***! \*****************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; if (false) {} else { module.exports = __webpack_require__(/*! ./cjs/react-is.development.js */ "../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js"); } /***/ }), /***/ "../node_modules/react-dom/client.js": /*!*******************************************!*\ !*** ../node_modules/react-dom/client.js ***! \*******************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; var m = __webpack_require__(/*! react-dom */ "react-dom"); if (false) {} else { var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; exports.createRoot = function(c, o) { i.usingClientEntryPoint = true; try { return m.createRoot(c, o); } finally { i.usingClientEntryPoint = false; } }; exports.hydrateRoot = function(c, h, o) { i.usingClientEntryPoint = true; try { return m.hydrateRoot(c, h, o); } finally { i.usingClientEntryPoint = false; } }; } /***/ }), /***/ "react": /*!************************!*\ !*** external "React" ***! \************************/ /***/ ((module) => { "use strict"; module.exports = React; /***/ }), /***/ "react-dom": /*!***************************!*\ !*** external "ReactDOM" ***! \***************************/ /***/ ((module) => { "use strict"; module.exports = ReactDOM; /***/ }), /***/ "@elementor/ui": /*!*********************************!*\ !*** external "elementorV2.ui" ***! \*********************************/ /***/ ((module) => { "use strict"; module.exports = elementorV2.ui; /***/ }), /***/ "@elementor/ui/Box": /*!****************************************!*\ !*** external "elementorV2.ui['Box']" ***! \****************************************/ /***/ ((module) => { "use strict"; module.exports = elementorV2.ui['Box']; /***/ }), /***/ "@elementor/ui/Button": /*!*******************************************!*\ !*** external "elementorV2.ui['Button']" ***! \*******************************************/ /***/ ((module) => { "use strict"; module.exports = elementorV2.ui['Button']; /***/ }), /***/ "@elementor/ui/Card": /*!*****************************************!*\ !*** external "elementorV2.ui['Card']" ***! \*****************************************/ /***/ ((module) => { "use strict"; module.exports = elementorV2.ui['Card']; /***/ }), /***/ "@elementor/ui/CardActions": /*!************************************************!*\ !*** external "elementorV2.ui['CardActions']" ***! \************************************************/ /***/ ((module) => { "use strict"; module.exports = elementorV2.ui['CardActions']; /***/ }), /***/ "@elementor/ui/CardContent": /*!************************************************!*\ !*** external "elementorV2.ui['CardContent']" ***! \************************************************/ /***/ ((module) => { "use strict"; module.exports = elementorV2.ui['CardContent']; /***/ }), /***/ "@elementor/ui/CardMedia": /*!**********************************************!*\ !*** external "elementorV2.ui['CardMedia']" ***! \**********************************************/ /***/ ((module) => { "use strict"; module.exports = elementorV2.ui['CardMedia']; /***/ }), /***/ "@elementor/ui/Dialog": /*!*******************************************!*\ !*** external "elementorV2.ui['Dialog']" ***! \*******************************************/ /***/ ((module) => { "use strict"; module.exports = elementorV2.ui['Dialog']; /***/ }), /***/ "@elementor/ui/DialogActions": /*!**************************************************!*\ !*** external "elementorV2.ui['DialogActions']" ***! \**************************************************/ /***/ ((module) => { "use strict"; module.exports = elementorV2.ui['DialogActions']; /***/ }), /***/ "@elementor/ui/DialogContent": /*!**************************************************!*\ !*** external "elementorV2.ui['DialogContent']" ***! \**************************************************/ /***/ ((module) => { "use strict"; module.exports = elementorV2.ui['DialogContent']; /***/ }), /***/ "@elementor/ui/DialogContentText": /*!******************************************************!*\ !*** external "elementorV2.ui['DialogContentText']" ***! \******************************************************/ /***/ ((module) => { "use strict"; module.exports = elementorV2.ui['DialogContentText']; /***/ }), /***/ "@elementor/ui/DialogHeader": /*!*************************************************!*\ !*** external "elementorV2.ui['DialogHeader']" ***! \*************************************************/ /***/ ((module) => { "use strict"; module.exports = elementorV2.ui['DialogHeader']; /***/ }), /***/ "@elementor/ui/DialogHeaderGroup": /*!******************************************************!*\ !*** external "elementorV2.ui['DialogHeaderGroup']" ***! \******************************************************/ /***/ ((module) => { "use strict"; module.exports = elementorV2.ui['DialogHeaderGroup']; /***/ }), /***/ "@elementor/ui/DialogTitle": /*!************************************************!*\ !*** external "elementorV2.ui['DialogTitle']" ***! \************************************************/ /***/ ((module) => { "use strict"; module.exports = elementorV2.ui['DialogTitle']; /***/ }), /***/ "@elementor/ui/Divider": /*!********************************************!*\ !*** external "elementorV2.ui['Divider']" ***! \********************************************/ /***/ ((module) => { "use strict"; module.exports = elementorV2.ui['Divider']; /***/ }), /***/ "@elementor/ui/Link": /*!*****************************************!*\ !*** external "elementorV2.ui['Link']" ***! \*****************************************/ /***/ ((module) => { "use strict"; module.exports = elementorV2.ui['Link']; /***/ }), /***/ "@elementor/ui/List": /*!*****************************************!*\ !*** external "elementorV2.ui['List']" ***! \*****************************************/ /***/ ((module) => { "use strict"; module.exports = elementorV2.ui['List']; /***/ }), /***/ "@elementor/ui/ListItem": /*!*********************************************!*\ !*** external "elementorV2.ui['ListItem']" ***! \*********************************************/ /***/ ((module) => { "use strict"; module.exports = elementorV2.ui['ListItem']; /***/ }), /***/ "@elementor/ui/ListItemButton": /*!***************************************************!*\ !*** external "elementorV2.ui['ListItemButton']" ***! \***************************************************/ /***/ ((module) => { "use strict"; module.exports = elementorV2.ui['ListItemButton']; /***/ }), /***/ "@elementor/ui/ListItemText": /*!*************************************************!*\ !*** external "elementorV2.ui['ListItemText']" ***! \*************************************************/ /***/ ((module) => { "use strict"; module.exports = elementorV2.ui['ListItemText']; /***/ }), /***/ "@elementor/ui/TextField": /*!**********************************************!*\ !*** external "elementorV2.ui['TextField']" ***! \**********************************************/ /***/ ((module) => { "use strict"; module.exports = elementorV2.ui['TextField']; /***/ }), /***/ "@elementor/ui/Typography": /*!***********************************************!*\ !*** external "elementorV2.ui['Typography']" ***! \***********************************************/ /***/ ((module) => { "use strict"; module.exports = elementorV2.ui['Typography']; /***/ }), /***/ "@wordpress/i18n": /*!**************************!*\ !*** external "wp.i18n" ***! \**************************/ /***/ ((module) => { "use strict"; module.exports = wp.i18n; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/arrayLikeToArray.js": /*!******************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/arrayLikeToArray.js ***! \******************************************************************/ /***/ ((module) => { function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } module.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/arrayWithHoles.js": /*!****************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/arrayWithHoles.js ***! \****************************************************************/ /***/ ((module) => { function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } module.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/extends.js": /*!*********************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/extends.js ***! \*********************************************************/ /***/ ((module) => { function _extends() { return module.exports = _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, module.exports.__esModule = true, module.exports["default"] = module.exports, _extends.apply(null, arguments); } module.exports = _extends, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js": /*!***********************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/interopRequireDefault.js ***! \***********************************************************************/ /***/ ((module) => { function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js": /*!**********************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js ***! \**********************************************************************/ /***/ ((module) => { function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } module.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/nonIterableRest.js": /*!*****************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/nonIterableRest.js ***! \*****************************************************************/ /***/ ((module) => { function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } module.exports = _nonIterableRest, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/objectDestructuringEmpty.js": /*!**************************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/objectDestructuringEmpty.js ***! \**************************************************************************/ /***/ ((module) => { function _objectDestructuringEmpty(t) { if (null == t) throw new TypeError("Cannot destructure " + t); } module.exports = _objectDestructuringEmpty, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/slicedToArray.js": /*!***************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/slicedToArray.js ***! \***************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var arrayWithHoles = __webpack_require__(/*! ./arrayWithHoles.js */ "../node_modules/@babel/runtime/helpers/arrayWithHoles.js"); var iterableToArrayLimit = __webpack_require__(/*! ./iterableToArrayLimit.js */ "../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js"); var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ "../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js"); var nonIterableRest = __webpack_require__(/*! ./nonIterableRest.js */ "../node_modules/@babel/runtime/helpers/nonIterableRest.js"); function _slicedToArray(r, e) { return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest(); } module.exports = _slicedToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/typeof.js": /*!********************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/typeof.js ***! \********************************************************/ /***/ ((module) => { function _typeof(o) { "@babel/helpers - typeof"; return module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, module.exports.__esModule = true, module.exports["default"] = module.exports, _typeof(o); } module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js": /*!****************************************************************************!*\ !*** ../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js ***! \****************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ "../node_modules/@babel/runtime/helpers/arrayLikeToArray.js"); function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0; } } module.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }) /******/ }); /************************************************************************/ /******/ // The module cache /******/ var __webpack_module_cache__ = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ var cachedModule = __webpack_module_cache__[moduleId]; /******/ if (cachedModule !== undefined) { /******/ return cachedModule.exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = __webpack_module_cache__[moduleId] = { /******/ // no module.id needed /******/ // no module.loaded needed /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /************************************************************************/ var __webpack_exports__ = {}; // This entry needs to be wrapped in an IIFE because it needs to be in strict mode. (() => { "use strict"; /*!****************************************!*\ !*** ../modules/home/assets/js/app.js ***! \****************************************/ /* 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 _react = _interopRequireDefault(__webpack_require__(/*! react */ "react")); var _react2 = _interopRequireDefault(__webpack_require__(/*! elementor-utils/react */ "../assets/dev/js/utils/react.js")); var _ui = __webpack_require__(/*! @elementor/ui */ "@elementor/ui"); var _homeScreen = _interopRequireDefault(__webpack_require__(/*! ./components/home-screen */ "../modules/home/assets/js/components/home-screen.js")); var App = function App(props) { return /*#__PURE__*/_react.default.createElement(_ui.DirectionProvider, { rtl: props.isRTL }, /*#__PURE__*/_react.default.createElement(_ui.LocalizationProvider, null, /*#__PURE__*/_react.default.createElement(_ui.ThemeProvider, { colorScheme: 'light' }, /*#__PURE__*/_react.default.createElement(_homeScreen.default, { homeScreenData: props.homeScreenData, adminUrl: props.adminUrl })))); }; var isRTL = elementorCommon.config.isRTL, adminUrl = elementorAppConfig.admin_url, rootElement = document.querySelector('#e-home-screen'); App.propTypes = { isRTL: PropTypes.bool, adminUrl: PropTypes.string, homeScreenData: PropTypes.object }; _react2.default.render(/*#__PURE__*/_react.default.createElement(App, { isRTL: isRTL, homeScreenData: elementorHomeScreenData, adminUrl: adminUrl }), rootElement); })(); /******/ })() ; //# sourceMappingURL=e-home-screen.js.map Vavada online casino Hrvatska – Paok

Vavada online casino Hrvatska

kazino

Ako želite iskoristiti bonus dobrodošlice, preporuka je pročitati uvjete prije aktivacije. Casino NV jasno navodi sve korake potrebne za preuzimanje bonusa, što dodatno olakšava prve korake. Baš kao i kod izbora igara, preferirani načini plaćanja ovise o osobnim preferencijama, ali također mogu ukazati na kvalitetu casina. Ako casino nudi širok spektar poznatih i pouzdanih načina plaćanja, to može biti pokazatelj visoke razine usluge i pouzdanosti.

Uvjeti iskorištavanja ovog bonusa su minimalni ili uopće ne postoje. Osim toga, bonus bez depozita možete dobiti u obliku novčanog iznosa, igračima se mogu dodijeliti i besplatne vrtnje. Njihov je broj veći od iznosa koji biste dobili, a pružaju priliku za lijepe dobitke. Osim bonusa kojeg možete dobiti na početku vaše casino online avanture, tu su i oni koje vam priređivači igara na sreću daju kasnije, kad već postanete redoviti korisnik njihovih usluga. Besplatne vrtnje najpopularnija su promocija i koriste ih sva online casina, uključujući i naše PSK, Germaniju i Favbet koji na njima baziraju svoje oglašavanje.

  • Pragmatic Play je vodeći pružatelj poznati po svojoj širokoj paleti inovativnih, reguliranih i mobilno-fokusiranih casino igara.
  • Igrači mogu na razne načine pokušavati pogoditi ishod svake vrtnje kuglice u toj igri, a postoji i nekoliko verzija ruleta.
  • Posebno u slučaju potpuno novih operatera casina, preferiramo ih ne dodavati odmah nakon otvaranja.
  • Kompatibilnost s mobilnim uređajima je također važna kao i brzina isplate i vrijeme odobrenja registracije.
  • Dodajmo tome Craps i Sic Bo, zabavne igre za stolom koje se igraju s dvije ili tri kockice.
  • Ako još nemate 18 godina ili vam zakoni vaše zemlje ne dopuštaju igranje u kasinu, ne možete početi kockati, ali sve informacije možete dobiti na našoj web stranici.
  • To su igre koje se zaista igraju za stolom u fizičkim kockarnicama, no na Internetu ih većinom pokreće generator slučajnih brojeva.
  • Bez aplikacije, stranica se brzo učitava i potpuno je prilagođena mobilnim uređajima, omogućujući nesmetano igranje.
  • Casino ima puno mogućnosti plaćanja, zbog čega je vrlo pristupačan svim igračima.
  • Igranje besplatnih slot igara pružit će svima sjajno iskustvo koje donosi niz prednosti.
  • U ponudi su brojni slotovi, video poker, RNG stolne igre te nezaobilazne jackpot igre.

Slotoro

Kada znate kako odabrati najbolje casino online stranice u Hrvatskoj, potrebno je sagledati i sve pozitivne strane koje vas očekuju, ali imati u vidu i izazove sa kojima se možete susresti. Sigurnost i povjerenje ključni su kada je u pitanju online kasino hrvatska scena. Licencirani online kasina moraju prolaziti stroge provjere kako bi se osigurala poštena igra i zaštita igrača. Jedna od najvećih prednosti igranja u online kasinu jest ta što je sve otvoreno 24/7. Nije važno je li rano ujutro ili kasno navečer – ne morate planirati odlazak niti se prilagođavati radnom vremenu. Jednostavno se prijavite kad god vam odgovara i uživajte u igri vlastitim tempom.

Reputacija Među Igračima

Neke se dijele i nasumičnim izborom, ne samo najuspješnijim igračima. Rulet je klasična igra koja nikada ne izlazi iz mode, s prepoznatljivim rotirajućim kotačem i pravom casino atmosferom. Glavni cilj igre je pogoditi gdje će kuglica stati – bilo da se radi o određenom broju ili boji poput crvene ili crne.

Osvrnut ćemo se na bonuse, metode plaćanja i sve one male detalje koje morate uzeti u obzir prije odluke gdje se registrirati. A za početak izdvajamo pet internetskih kockarnica koje su ostavile posebno dobar dojam na naše eksperte. Prije registracije uvijek provjerite posjeduje li online kasino hrvatska platforma valjanu licencu – podatak o njoj najčešće se nalazi u podnožju stranice. Tražite licence priznatih regulatornih tijela poput MGA, UKGC, Curaçao eGaming ili hrvatske koncesije izdane prema Zakonu o igrama na sreću. Kliknite na logo licence kako biste provjerili je li aktivna i ažurna na službenoj stranici regulatora. Kao korisnik Rizk Casina, možeš birati između brojnih sigurnih i brzih načina plaćanja koje je većina nas navikla koristiti online.

Stolne igre poznate su po kombiniranju strategije, vještina i različitih vrsta zabave. Možete birati između europskog, američkog i francuskog ruleta, raznih opcija blackjacka, bakarata i varijanti pokera poput „Texas Hold’em” i „Caribbean Stud”. Uz toliko opcija na tržištu, odabrati najbolji kasino može djelovati zbunjujuće.

samo. Igrajte odgovorno.

Igranje besplatnih slot igara pružit će svima sjajno iskustvo koje donosi niz prednosti. Ono što čini ovu opciju posebno privlačnom jest zabava bez ikakvog rizika. Igrači mogu uživati u jednom impresivnom broju najdražih casino igara te istraživati različite teme i značajke.. Ova mogućnost je izuzetno korisna za početnike koji prvi put igraju neke casino igre online, omogućujući im da se upuste u sjajan svijet igara ovog tipa. Provideri (brendovi) casino igara s kojim online casino odluči surađivati jedan je od ključnih aspekata identiteta casina. Osim što utječe na funkcionalnost stranice, dostupnost igara u određenom casinu također je određena kvalitetom prisutnih providera casino igre.

Igre s većom volatilnošću

Iako se za svaku casino igru može reći da je zapravo igra koja ovisi o sreći, one koje ubrajamo u ovu kategoriju u potpunosti su ovisne o njoj, bez ikakvih drugih elemenata. Loto i bingo su igre gdje igrači biraju brojeve ili označavaju brojeve na listićima, nadajući se da će odabrani brojevi biti izvučeni. U crapsu, igrači pogađaju ishod bacanja dvije kockice, dok je u bakari cilj predvidjeti koja će ruka, igračeva ili bankareva, biti dobitna. Uz svaki ozbiljan online casino hrvatska zajednica strastvenih igrača može računati na izuzetno bogatu kolekciju igara. Naravno, ponuda se razlikuje od kockarnice do kockarnice, no neki tipovi igara pojavljuju se kod svakog operatera.

  • Oni se mogu razlikovati po pravilima i brojem potencijalnih ishoda, a igrači će sami moći izabrati koju verziju preferiraju te uživati u njoj potpuno besplatno.
  • Kod odabira online casina svi bi igrači trebali obratiti pozornost na određene karakteristike kako bi bili sigurni da je njihov izbor siguran i pouzdan.
  • Prije registracije uvijek provjerite posjeduje li online kasino hrvatska platforma valjanu licencu – podatak o njoj najčešće se nalazi u podnožju stranice.
  • Dakle, putem mobitela imate mogućnost uplatiti stvarni novac, preuzeti bonus, igrati igre i isplatiti dobitak.
  • Osim slotova korisnici internetskih kockarnica mogu se zabavljati i na igrama za stolom.
  • Odabrali smo kasina u Hrvatskoj koja se ističu kvalitetom, sigurnošću i izvrsnim iskustvom za igrače.
  • Dodajmo tome Craps i Sic Bo, zabavne igre za stolom koje se igraju s dvije ili tri kockice.
  • Razmatranje ovih ključnih faktora pomoći će vam u donošenju informirane odluke pri odabiru novog online casina.
  • Rulet je klasična igra koja nikada ne izlazi iz mode, s prepoznatljivim rotirajućim kotačem i pravom casino atmosferom.

Mobilni casino – igranje casino igara na mobitelu

Lutrijska igra Keno također se igra u casinu, a pojavile su se i TV igre. Najbolji primjer je Deal or No Deal, pri kojem otvarate kovčege i konstantno dobivate ponude za isplatu koje možete prihvatiti ili odbiti. Nije nevažno niti dodati da među razvojnim tvrtkama za casino softver, Microgaming, NetEnt, NextGen Gaming, Playtech i IGT dobivaju najviše pohvala po pitanju prilagođenosti igara mobilnim uređajima. Na njima igrate omiljene igre i pokušavate nadmašiti druge igrače. Može se bodovati najbolja pojedinačna vrtnja, što ide na ruku umjerenim igračima. Može se bodovati i ukupni ostvareni dobitak ili ukupni odigrani ulog, što favorizira one koji igraju s visokim ulozima.

Postoje li bonusi i promocije u hrvatskim online casinima?

Blackjack, rulet, baccarat – to su kultne casino igre koje bi svaki igrač trebao znati. Zahvaljujući online casinima poput Rizka, svatko može naučiti ovladati ovim nevjerojatnim igrama online. Teško da postoji uzbudljivija igra od ruleta, a igre poput blackjacka zahtijevaju od igrača poznavanje pravila i neku strategiju. Igrajte samo na licenciranim platformama – podatke o licenci (MGA, UKGC, Curaçao ili hrvatska koncesija) možete pronaći u podnožju stranice.

Legiano je inspiriran rimskim legionarima i namijenjen je ljubiteljima online casino igara i sportskog klađenja. Platforma kombinira moderni dizajn s povijesnim elementima i nudi jednostavnu navigaciju. Stranica je u potpunosti prevedena na hrvatski jezik, uključujući uvjete i odredbe, što nije slučaj kod mnogih drugih casina. Igre su organizirane pregledno, a stranica se brzo učitava na svim uređajima. Poseban užitak igranja ove u Aziji izuzetno popularne igre donosi u vaš dom online casino uživo, s djeliteljicama koje znaju kako vas uvijek držati budnima i koncentriranima.

Hrvatski brendovi imaju nešto manje zbirke igara od onih svjetskih, što je potpuno razumljivo. S druge strane, sve je dostupno na hrvatskom jeziku, uključujući i korisničku podršku, pa nema jezičnih barijera zbog kojih bi moglo doći do nesporazuma. Njemački Bet at Home nudi preglednu ponudu casino igara koju ćete naći u izborniku pod nazivom “Vegas”.

Tu su i jackpot nagrade koje su na nekima isplaćene u vrijednostima većima od milijun eura. Istraživanje nagrada u hrvatskim online casinima izvrstan je način da otkrijete što vam te platforme nude. Ovi bonusi osmišljeni su kako bi vam pružili dodatne pogodnosti i olakšali upoznavanje dostupnih igara. Svaka zemlja ima svoje omiljene online casino igre, a Hrvatska nije iznimka. Ako vas zanima o čemu se radi, vrijedi pogledati što Hrvati najradije igraju. Ovaj uvjet određuje koje igre se mogu igrati s bonus sredstvima koja je igrač osvojio.

3 Prednosti i mane hrvatskih online casino stranica

Što se igara tiče, mobilni igrači imaju priliku igrati gotovo sve igre kao i oni koji koriste računalo. Među popularnim mobilnim slotovima su Book of Dead, Sweet Bonanza, Gates of Olympus i Big Bass Bonanza. Posjetom web stranici Sloterman prihvaćate Uvjete i Pravila privatnosti. Ako još nemate 18 godina ili vam zakoni vaše zemlje ne dopuštaju igranje u kasinu, ne možete početi kockati, ali sve informacije možete dobiti na našoj web stranici. Za razliku od ostalih domaćih priređivača igara na sreću, ova kockarnica djeluje isključivo na Internetu, bez fizičkih poslovnica u kojima možete vršiti uplate i isplate sredstava. Ponekad nova casina privlače igrače velikim bonusima, ali uvjeti klađenja i drugi uvjeti mogu biti nepovoljni, čineći bonus manje atraktivnim nego što se može činiti na prvi pogled.

Novi igrači mogu zatražiti bonus dobrodošlice raspoređen na više uplata. Kasino također nudi povrat novca i posebne pogodnosti za igrače koji preferiraju veće uloge. Casino operateri su, kao i svi drugi, prigrlili napredne tehnologije i dobro razumiju važnost mobilnog casino igranja u doba kada ljudi diljem svijeta žele obavljati sve što je moguće na mobitelima. Ne zaboravimo ni program vjernosti koji vam daje dodatne pogodnosti što više igrate. Kao što smo već spomenuli, najbolje strategije za igranje slotova uključuju biranje igara visokog RTP-a i visoke volatilnosti, dok nemate na raspolaganju bonus. Ako vas pak neka promocija gura u prednost ispred kuće, tada je bolje odabrati stabilne igre niske volatilnosti.

  • Iako se za svaku casino igru može reći da je zapravo igra koja ovisi o sreći, one koje ubrajamo u ovu kategoriju u potpunosti su ovisne o njoj, bez ikakvih drugih elemenata.
  • Poker se pak javlja u Three Card Poker i Casino Holdem varijantama.
  • Istraživanje nagrada u hrvatskim online casinima izvrstan je način da otkrijete što vam te platforme nude.
  • Većina brendova svoje je igre i web stranice prilagodila mobilnim uređajima.
  • No, nije stvar samo u najboljim automat klubovima i najnovijim casino stranicama.
  • No deposit bonus casino ponude također su nešto što često koriste web stranice za kockanje.
  • Igre vode pravi djelitelji, a možete ih gledati uživo putem HD video streaminga i komunicirati s njima u stvarnom vremenu putem chata.
  • Naš tim ističe četiri najpopularnije kategorije koje možete pronaći u ponudi svakog online kasina.
  • Ovo je također niže od standardnih ponuda u bonusima dobrodošlice drugih casino stranica.
  • Ako želite iskoristiti bonus dobrodošlice, preporuka je pročitati uvjete prije aktivacije.
  • Otkrit ćete i tko ima najbolju ponudu igara, uključujući one koje se igraju u realnom vremenu.

Proces registracije u internet casinos

Iako postoji gornja granica iznosa isplate koju odobrava vaš casino, u toj situaciji napravit će iznimku. Naš tim stručnjaka detaljno analizira svaki segment ponude hrvatskih online casina. Pritom uzimamo u obzir isključivo sigurne, vjerodostojne i potpuno licencirane web stranice s casino igrama.

Kako prepoznati legalni online casino u Hrvatskoj?

Obično postoje četiri razine jackpota i on će na kraju pripasti onom igraču kojeg slučajnim izborom odabere algoritam. Osvajanje jackpota moguće je realizirati na dva različita načina, ovisno o proizvođaču igara. Kod nekih pak igara postoji i specijalni jackpot scenarij, pri kojem okrećete kolo sreće ili otkrivate karte. Ako se dogodi onaj scenarij koji osigurava glavni zgoditak pripast će baš vama velika isplata. Besplatne verzije igara omogućavaju vam isprobavanje različitih opcija koliko god želite jer ne postoji nikakvo ograničenje koliko igara možete igrati ili koliko dugo možete isprobavati. Da, hrvatski casini nude raznovrsne bonuse, uključujući bonuse dobrodošlice, bonuse bez depozita, reload bonuse, besplatne vrtnje i cashback nagrade.

Pružatelji igara

U ponudi su brojni slotovi, video poker, RNG stolne igre te nezaobilazne jackpot igre. NetEnt je kreirao grafički najatraktivnije igre u ponudi, a casino je licenciran od krovnih europskih organizacija za integritet igara na sreću. Većina igrača odabere icasino stranicu na temelju izbora casino igara ili ponuđenih opcija alternativnog kockanja. No, nije stvar samo u najboljim automat klubovima i najnovijim casino stranicama. Za internet casino igrače koji traže jedinstven način kockanja, moguće je uživati u svemu od online pokera, preko binga do lota.

Ako si pronašao igru ​​koja ti se posebno svidjela, možeš ju dodati u vlastiti popis “Favoriti” kako bi ju lakše pronašao prilikom sljedećeg igranja. Provjerite recenzije te informacije na web stranici odabranog operatera kako biste znali opcije kontaktiranja i radno vrijeme službe za korisnike. Tako ćete, odlučite li se za neki hrvatski online casino, morati obratiti pažnju na radno vrijeme podrške. E-novčanici poput Skrilla i Netellera biraju se kada je brzina isplate prioritet, dok su kartice i bankovni prijenosi češći izbor zbog dostupnosti i poznatog načina korištenja.

Upoznavanje s Top Pružateljima Igara

Najbolji online kasino nudi nevjerojatan raspon igara na sreću koje odgovaraju svakom ukusu i stilu igranja. Naš tim ističe četiri najpopularnije kategorije koje možete pronaći u ponudi svakog online kasina. Također je važno znati da je igranje igara na sreću online u Hrvatskoj regulirano Zakonom o igrama na sreću i da biste uvijek trebali igrati samo na licenciranim platformama.

kazino

Odabrali smo kasina u Hrvatskoj koja se ističu kvalitetom, sigurnošću i izvrsnim iskustvom za igrače. Svaka platforma donosi nešto jedinstveno – od ogromnog izbora kasino igara do ekskluzivnih bonusa i lokalizirane korisničke podrške. Kako bi odabrali online casino po svojoj mjeri bitno je da se prije registracija računa dobro informirate. Casino hrvatska portal donosi vam detaljne recenzije svih online casina u Hrvatskoj. Zadnjih godina došle su u Hrvatsku i igre s kockicama Craps, Sic Bo i Banca Francesa. Tu su i različite brze igre, od kojih izdvajamo Aviator na kojem pokušavate uloviti što veći multiplikator prije nego avion odleti.

  • S preko 4000 dostupnih igara, uključujući slotove, jackpotove, igre s djeliteljima uživo i stolne igre, ovaj casino pruža raznoliko i uzbudljivo iskustvo klađenja.
  • Za one koji žele izbjeći problem s ovisnošću, neke stranice nude i samonametnuta ograničenja i obrazce za samoisključenja.
  • Pronalaženje najprikladnije casino igre za sebe zahtijeva prije svega istraživanje osobnih preferencija, vještina i igračkog stila.
  • Najčešća casino promocija koju Rizkorganizira je dupla brzina na određene igre.
  • Ovaj uvjet govori igračima koliko imaju vremena za iskoristiti bonus.
  • Kada birate sigurno casino, obratite pažnju na nekoliko ključnih faktora.
  • Hrvati godišnje na casino igre potroše oko 300 milijuna kuna, a čak ⅓ te potrošnje odnosi se na slot aparate.

Kako mogu kontaktirati korisničku podršku u hrvatskim online casinima?

Ako tražite novo mjesto za online zabavu i želite pouzdano, transparentno i bogato casino iskustvo, Casino NV je jedan od najboljih izbora na hrvatskom tržištu danas. Posebno u slučaju potpuno novih operatera casina, preferiramo ih ne dodavati odmah nakon otvaranja. Ako nam je operater casina poznat, sestrinska casina se dodaju brže. Ovo nam omogućava da osiguramo da naša baza podataka ostane relevantna i pouzdana za naše korisnike. Casina isplaćuju dobitke u različitim vremenskim razmacima, od jedne minute do 5 dana. Osim vremena obrade casina, različiti načini plaćanja funkcioniraju s različitom brzinom.

Ako tražimo najbolji online casino dostupan u Hrvatskoj, onda definitivno bet365 mora ući u užu konkurenciju. Riječ je o jednoj od najvećih i najpopularnijih platformi za igranje casino igara koja vas neće razočarati, a na njezinim progresivnim jackpot igrama u više su navrata podijeljeni milijunski iznosi. Naravno, kada već spominjemo zašto igrati besplatne casino igre, vrijedi spomenuti i da im je jako jednostavno prsitupiti. Sve što je potrebno kako biste igrali svoje najdraže online casino igre jest pronaći ih na popisu i krenuti s igrom. Uz to, možete i istražiti sve casino slot igre, ali i razne druge koje postoje na našoj stranici, a njih je zaista mnogo. Iako su slot aparati najčešće prvo što padne na pamet ljubiteljima casino igara, ovdje se mogu pronaći i razni drugi tipovi kao poker, blackjack rulet itd.

Rekord je pao na igri Absolootly Mad Mega Moolah, na kojoj je sretni igrač osvojio više od 7 milijuna eura. Mega Moolah je isplatio 6,7 milijuna eura, Money Train Origins Dream Drop 2,9 milijuna eura, kao i Cowabunga Dream Drop 2,9 milijuna eura. Na raspolaganju su vam tisuće u svakom online casinu, a mi vam nudimo besplatne verzije više od 25 tisuća takvih igara. Svakako ih iskušajte i dobro se upoznajte s njima, prije nego krenete s konkretnim ulaganjima.

Saznajte koji su najbolji automat klubovi u Zagrebu, automat klubovi u Splitu, automat klubovi u Rijeci, automat klubovi u Osijeku i ostalim hrvatskim gradovima dostupni. Casino bonusi bez uplate i bonus dobrodošlice bez uplate često su privlačni za nove igrače jer omogućuju isprobavanje igara bez ulaganja vlastitog novca. Neki casino bonus dobrodošlice može izgledati primamljivo, ali dolazi s visokim zahtjevima za “rollover”. Sloterman pruža informacije o raznim kasinima i vrstama kockarske zabave, proizvođačima softvera za igre i strategijama za uspješno kockanje. Ovdje možete pročitati recenzije o online casino automatima, promocijama, natjecanjima i bonusima.

Sigurnost Web Stranice

Postoje različite verzije blackjacka, poput “European Blackjacka” i “Multihand” formata, koji vam omogućuje igranje više ruku istovremeno. Online blackjack igre možete pronaći kod pružatelja kao što su Evolution i Playtech. To može znati samo netko tko je sva dostupna online casina u Hrvatskoj iskušao u praksi. Provjerili smo gotovo stotinu različitih web lokacija i otkrili gdje ima smisla registrirati profil i provoditi svoju strategiju. Pritom smo pročešljali ponudu sve do najsitnijih detalja, uključujući i ono što većini igrača promakne.

  • Provjerite recenzije te informacije na web stranici odabranog operatera kako biste znali opcije kontaktiranja i radno vrijeme službe za korisnike.
  • Kliknite na logo licence kako biste provjerili je li aktivna i ažurna na službenoj stranici regulatora.
  • Kasino također nudi povrat novca i posebne pogodnosti za igrače koji preferiraju veće uloge.
  • Naš tim ističe četiri najpopularnije kategorije koje možete pronaći u ponudi svakog online kasina.
  • Ove igre ne zahtijevaju posebne vještine ili strategije, već se oslanjaju isključivo na slučajnost i sreću igrača.
  • Poker se pak javlja u Three Card Poker i Casino Holdem varijantama.
  • No, nije stvar samo u najboljim automat klubovima i najnovijim casino stranicama.
  • Online blackjack igre možete pronaći kod pružatelja kao što su Evolution i Playtech.
  • Luckia Casino nalazi se u sklopu hotela Antunović na samom ulasku u grad.
  • Ovo je također niže od standardnih ponuda u bonusima dobrodošlice drugih casino stranica.

Ovaj uvjet govori igračima koliko imaju vremena za iskoristiti bonus. Točnije, govori im koliko imaju vremena za zadovoljiti sve prethodno postavljene uvjete kako bi mogli u potpunosti iskoristiti bonus koji su osvojili. Ove igre ne zahtijevaju posebne vještine ili strategije, već se oslanjaju isključivo na slučajnost i sreću igrača.

Za njih vam treba mnogo sreće i još više strpljenja, kako biste dočekali trenutak kada će algoritam izbaciti savršen scenarij vrtnje baš na vašem ekranu. Sa svojim atraktivnim programom vjernosti, kao i milijunskim jackpot nagradama, Rizk casino postao je posljednjih godina izuzetno popularan u Hrvatskoj. Naći ćete u njemu širok izbor igara, kao i metode plaćanja koje uključuju i Revolut, a cijelo sučelje uspješno je optimizirano za igru na mobilnom telefonu. Zato Rizk online casino definitivno zaslužuje ovu našu detaljnu recenziju, u kojoj ćemo se fokusirati na njegove prednosti i nedostatke. Da, novoregistrirani igrači mogu očekivati bonus dobrodošlice u vrijednosti od 100% na prvu uplatu do maksimalnih 200 EUR, uz 50 besplatnih vrtnji u određenim casino igrama.

kazino

Licencirana online casina koja posluju u Hrvatskoj morala su proći ne samo stroge zakonske uvjete, veći osigurati da igrači dobiju zajamčeno sigurno okruženje. U Rizku možeš uroniti u fantastičan svijet uzbudljivih casino igara. Ogromna ponuda casino Plinko igara sadrži preko 500 novih i klasičnih slotova te popularnih igara za stolom, što jamči da svatko može pronaći nešto za uživanje. Na Casino Hrvatska portalu možete pronaći listu i casino recenzije legalnih hrvatskih online casina koji posjeduju hrvatsku licencu. Rizk Casino Hrvatska svim igračima nudi bogat i širok izbor casino igara, sigurne metode plaćanja i izvrsnu korisničku službu. Većina brendova svoje je igre i web stranice prilagodila mobilnim uređajima.

  • Kada je riječ o novim casinima, na casino-hrvatska svaki casino otvoren unutar protekle godine smatramo novim.
  • Osvrnut ćemo se na bonuse, metode plaćanja i sve one male detalje koje morate uzeti u obzir prije odluke gdje se registrirati.
  • Upravo zato mobilni novčanici postaju sve popularniji među Hrvatima.
  • Isplate su brze, a gotovinu možete jednostavno podići na kioscima ili bankomatima diljem zemlje.
  • Pored slot igara, pronađite i razne varijante pokera, uključujući popularne vrste poput Texas Hold’em pokera i pokera na aparatima koji imaju razna zanimljiva pravila i značajke.
  • Jedna od najboljih stvari kod igranja u online kasinima je ta što mnoga online kasina nude razne bonuse i posebne ponude.
  • Kada se otvori novi hrvatski casino, dodajemo ga na stranicu i pregledavamo.
  • Obično se radi o paketu koji se sastoji od gratis novca i besplatnih vrtnji.
  • Zato svakako kod nas iskušajte slot ili igru za stolom koja je izazivala vaše zanimanje, prije nego krenete s ozbiljnim provođenjem vlastite strategije.
  • To znači da ćete za 300 uplaćenih eura dobiti još 300 eura bonusa.
  • Suradnja sa prominentim programerima doprinela je i da se okupe kvalitetne financijske institucije.
  • Cilj je imati jaču ruku od djelitelja, ali bez prekoračenja vrijednosti 21.
  • Što se tiče izjednačenja uplate sa 150% iznosa, ovaj bonus vrijedi za iznose do 300 EUR.
  • Rulet se javlja u svojoj europskoj verziji, s jednom zelenom nulom na stolu.
  • Hrvati godišnje na casino igre potroše oko 300 milijuna kuna, a čak ⅓ te potrošnje odnosi se na slot aparate.
  • Bonusi kod nekih operatera mogu biti izdašni, ali uvijek pročitajte njihova pravila.
  • Dodajte tome datum isteka kartice i sigurnosni broj, nakon čega će novac u sekundi sjesti na vaš korisnički saldo.
  • Najčešća casino promocija koju Rizkorganizira je dupla brzina na određene igre.
  • Tijekom našeg iskustva, naš tim stručnjaka zabilježio je neke od najčešćih bonusa i načine kako iskoristiti bonus koje je važno zapamtiti.
  • Pronalaženje najprikladnije casino igre za sebe zahtijeva prije svega istraživanje osobnih preferencija, vještina i igračkog stila.
  • Ako nam je operater casina poznat, sestrinska casina se dodaju brže.

U nedostatku nativnog appa, najbolje rješenje je napraviti prečac na naslovnicu ove kockarnice, kako biste u dva klika došli do omiljenih igara na svom mobitelu. Nakon registracije postat će vam dostupni bonusi i besplatne vrtnje, no važno je naglasiti kako se od vas traži još i verifikacija, kao uvjet za isplatu dobitka. Nju ćete proći slanjem kopije osobne iskaznice nadležnim službama, nakon čega će vaš profil napokon postati potpuno funkcionalan.

Njihova platforma radi besprijekorno na Android i iOS uređajima, bez potrebe za dodatnim preuzimanjem aplikacije. Kada je riječ o novim casinima, na casino-hrvatska svaki casino otvoren unutar protekle godine smatramo novim. Rijetko dodajemo nova casina na našu stranicu odmah po otvaranju, preferiramo provjeriti njihovu pouzdanost, osobito kada je riječ o operaterima koji su također novi na tržištu.

  • Pragmatic Play je vodeći pružatelj poznati po svojoj širokoj paleti inovativnih, reguliranih i mobilno-fokusiranih casino igara.
  • Iako većina registracija biva odobrena relativno brzo, neka casina mogu zahtijevati dodatnu provjeru ili dokumentaciju, što može produljiti vrijeme odobrenja.
  • Casino ima puno mogućnosti plaćanja, zbog čega je vrlo pristupačan svim igračima.
  • Igranje besplatnih slot igara pružit će svima sjajno iskustvo koje donosi niz prednosti.
  • Obično postoje četiri razine jackpota i on će na kraju pripasti onom igraču kojeg slučajnim izborom odabere algoritam.
  • To su igre koje se zaista igraju za stolom u fizičkim kockarnicama, no na Internetu ih većinom pokreće generator slučajnih brojeva.
  • U nastavku su navedeni najpoznatiji pružatelji slot igara i studiji za live casino, s naglaskom na RTP, stabilnost softvera i mobilnu optimizaciju.
  • U ponudi su brojni slotovi, video poker, RNG stolne igre te nezaobilazne jackpot igre.
  • Oni se mogu razlikovati po pravilima i brojem potencijalnih ishoda, a igrači će sami moći izabrati koju verziju preferiraju te uživati u njoj potpuno besplatno.
  • Bez aplikacije, stranica se brzo učitava i potpuno je prilagođena mobilnim uređajima, omogućujući nesmetano igranje.

Danas imamo u Hrvatskoj krupjee koji pokreću rulet, a i vode blackjack. Vaša sigurnost naš je prioritet broj jedan kada se pridružite online casinu. Najpouzdanije platforme za kockanje koriste naprednu tehnologiju kako bi zaštitile vaše osobne podatke i sredstva te osigurale da sve ostane privatno i sigurno. Ovaj uvjet daje igračima do znanja koliko je minimalni, a koliko maksimalni iznos sredstava koje mogu osvojiti, a zatim i isplatiti koristeći bonuse i promocije. Posebna pozornost posvećena je brzim isplatama, koje se obrađuju u roku od 24 sata za većinu metoda.

Online casina u Hrvatskoj nude veliki izbor slot igara, uključujući popularne naslove kao što su Book of Ra, Gates of Olymp i 7 Wild Hot 40. Kod igara je važno provjeriti recenzije drugih igrača i imati na umu stopu povrata igraču, tzv. Registracija u domaćim casinima nešto je duža nego u internacionalnim, no i dalje može postati registrirani igrač u samo nekoliko minuta. Od slot aparata, videopokera, baccarata, blackjacka, ruleta, pa čak i live casino igara.

Kako se prijaviti u Rizk casino?

Simsino nudi razne bonuse za svoje igrače, uključujući bonus dobrodošlice od 100% do 500€ plus 250 besplatnih okretaja. Osim toga, casino nudi i program vjernosti s čak 25 razina, što dodatno nagrađuje lojalne igrače. Osim bonusa dobrodošlice i programa Wheel of Rizk, Rizk.hr casino redovito organizira dodatne promocije, koje možete pregledati u odjeljku Rizk Insider. Najčešća casino promocija koju Rizkorganizira je dupla brzina na određene igre.

  • U Hrvatskoj najveći jackpot dobici padaju na igrama koje su kreirali Play ‘n GO i EGT.
  • Od slot aparata, videopokera, baccarata, blackjacka, ruleta, pa čak i live casino igara.
  • Ako casino nudi širok spektar poznatih i pouzdanih načina plaćanja, to može biti pokazatelj visoke razine usluge i pouzdanosti.
  • Igrači mogu uživati u jednom impresivnom broju najdražih casino igara te istraživati različite teme i značajke..
  • Ministarstvo financija Republike Hrvatske osmislilo je i primjenjuje Zakon o igrama na sreću, kojime regulira hrvatsku industriju igara na sreću s posebnim fokusom na online kockanje.
  • Igrači mogu poboljšati svoje vještine i strategije u ovoj popularnoj kartaškoj igri, a zatim iznenaditi sve svoje prijatelje i druge ljubitelje pokera svojim novostečenim znanjem.
  • Osim spomenutih verzija pojavile su se i one s uvećanim isplatama na pojedinim brojevima, do 500 puta većima od uloga.
  • Apsolutni je preokret kada aktivnosti kao što su putovanje na posao, čekanje na pregled ili red u trgovini postanu prilika za casino igru i dobitak u pokretu.
  • Pružatelji casino igara koji su dostupni hrvatskim igračima razlikuju se po kvaliteti i ponudi igara.
  • Može se bodovati i ukupni ostvareni dobitak ili ukupni odigrani ulog, što favorizira one koji igraju s visokim ulozima.
  • Casino Zagreb – Zagreb kao glavni grad Republike Hrvatske nudi mnogo lokacija ljubiteljima casino igre da iskušaju svoju sreću.
  • Uvjeti iskorištavanja ovog bonusa su minimalni ili uopće ne postoje.
  • Izdvajamo blackjack, jer javlja se u više različitih verzija, uključujući i onu u kojoj imate pravo igrati s više kombinacija karata protiv djelitelja.

Budući da ovise samo o sreći, ove igre znaju nuditi nešto veće dobitke od ostalih jer istovremeno igračima nude manje šanse za dobitkom. Izdvajamo blackjack, jer javlja se u više različitih verzija, uključujući i onu u kojoj imate pravo igrati s više kombinacija karata protiv djelitelja. Bakara je također dostupna, sa svojim jednostavnim pravilima klađenja na Bankara ili Igrača.

Cilj je imati jaču ruku od djelitelja, ali bez prekoračenja vrijednosti 21. To je ono što se očekuje od casina koji želi biti najbolji u Hrvatskoj. Besprijekorna prilagođenost ekranu mobitela, kao i raznolike metode plaćanja te ljubazna korisnička podrška dodatni su plus. Uplata sredstava u online casinu je uvijek moguća bankovnim karticama. Dodajte tome datum isteka kartice i sigurnosni broj, nakon čega će novac u sekundi sjesti na vaš korisnički saldo.

Stoljeću u Francuskoj se počeo igrati rulet i ubrzo se proširio na cijelu Europu. Stoljeće kasnije zaživjeli su poker i blackjack, a prije nešto više od stotinu godina kreirani su prvi slot automati. Blackjack je još jedna od igara koje se ne smije zanemariti, stoga postoji velik broj verzija te kartaške igre. Pored slot igara, pronađite i razne varijante pokera, uključujući popularne vrste poput Texas Hold’em pokera i pokera na aparatima koji imaju razna zanimljiva pravila i značajke. Igrači mogu poboljšati svoje vještine i strategije u ovoj popularnoj kartaškoj igri, a zatim iznenaditi sve svoje prijatelje i druge ljubitelje pokera svojim novostečenim znanjem. Jedan od ključnih zahtjeva modernih igrača jest dostupnost igara na mobilnim uređajima.

  • Ogromna ponuda casino igara sadrži preko 500 novih i klasičnih slotova te popularnih igara za stolom, što jamči da svatko može pronaći nešto za uživanje.
  • Cashback bonus obično u kasinima postoji u određenom vremenskom periodu, odnosno vraća sredstva koja su igrači izgubili igrajući samo u tom periodu.
  • Osim toga, važan je i izbor igara te korisnička podrška, koja bi uvijek trebala biti na raspolaganju igračima.
  • U Rizk casinu sretni igrači već su nekoliko puta osvojili jackpot nagrade, s rekordnih 1,6 milijuna eura isplaćenih na igri Mystery Joker.
  • Međutim, ovo nije stopostotno pouzdana metoda, jer su nova casina često osnovana od strane postojećih operatera casina koji već imaju licence od otvaranja svojih prvih casina.
  • S druge strane, sve je dostupno na hrvatskom jeziku, uključujući i korisničku podršku, pa nema jezičnih barijera zbog kojih bi moglo doći do nesporazuma.
  • Osim slotova u online casinu imate priliku i igrati takozvane igre za stolom.
  • Naći ćete u njemu širok izbor igara, kao i metode plaćanja koje uključuju i Revolut, a cijelo sučelje uspješno je optimizirano za igru na mobilnom telefonu.
  • Ovi bonusi osmišljeni su kako bi vam pružili dodatne pogodnosti i olakšali upoznavanje dostupnih igara.
  • Kada znate kako odabrati najbolje casino online stranice u Hrvatskoj, potrebno je sagledati i sve pozitivne strane koje vas očekuju, ali imati u vidu i izazove sa kojima se možete susresti.
  • Ovaj uvjet daje igračima do znanja koliko je minimalni, a koliko maksimalni iznos sredstava koje mogu osvojiti, a zatim i isplatiti koristeći bonuse i promocije.
  • Licencirani online kasina moraju prolaziti stroge provjere kako bi se osigurala poštena igra i zaštita igrača.

Nudi li Rizk mobilnu aplikaciju koju mogu preuzeti?

Neka kasina ograničavaju korištenje bonusa na određene igre, stoga je bitno istražiti koje se kasino igre kvalificiraju za bonus. Svaki hrvatski online casino moraju imati korisničku podršku vama dostupnu kad naiđete na nedoumice. To je ono što testiramo, postavljajući operaterima konkretna pitanja putem chata uživo i emaila. Nakon što provjerimo registraciju i verifikaciju okrećemo se kolekciji igara.

Novi casino operateri žele dobiti što je više moguće novih igrača, pa puno ulažu u mobilnu tehnologiju kako bi privukli ovu vjernu publiku. Moderni mobilni casino operateri predstavljaju revoluciju u igrama na sreću i daju puno prednosti i benefita igračima. Online casina na mobitelima lakše drže korak s najnovijim trendovima od tradicionalnih casino platformi. Naprimjer, neke moderne tehnologije plaćanja razvijene su specifično za mobilne uređaje. Apsolutni je preokret kada aktivnosti kao što su putovanje na posao, čekanje na pregled ili red u trgovini postanu prilika za casino igru i dobitak u pokretu.

Na Rizk igrama uvijek ćeš imati priliku birati između široke kolekcije raznih igara za stolom. Kako biste lako pronašao ove igre, možeš otići na pregled svih Rizk igara te unutar kategorija odabrati Igre za stolom. Uplate kreću već od 10–15 €, a tjedno ograničenje isplata iznosi 5.000 €.

Izdvajamo najvažnije casino igre na kojima imate priliku kockati ulažući konkretan novac. Vrijedi spomenuti Rizk bonus dobrodošlice kojem je vrijednost nedavno uvećana na maksimalnih 200 eura. Dobit ćete ga nakon što izvršite vaš prvi depozit, u stopostotnoj vrijednosti uplate. Uvjeti korištenja bonusa kažu da ga morate reinvestirati 30 puta u roku od 30 dana. Osim slotova u promociju su uključene i igre za stolom, što igračima olakšava put do profita, čak i ako su početnici.

kazino

Zašto je online kasino u Hrvatskoj toliko popularan?

Također, na stranicama za podršku možete pronaći odgovore na neka od najčešće postavljanih pitanja. Kao što i sam naziv kaže, ovo su casino bonusi koji ne zahtijevaju da uplatite sredstva i dostupni su na online i mobilnim casino stranicama. Ne nude se toliko često, ali možete ih pronaći ako vam se posreći, posebice kod novih casino operatera koji pokušavaju ući na tržište i izgraditi dobru reputaciju. Blackjack je popularna casino igra u kojoj igrači pokušavaju pobijediti djelitelja dobivši ukupnu vrijednost karata bližu 21.

kazino

Moraju imati papire za rad od Ministarstva financija Republike Hrvatske, kao i pristojnu reputaciju kod domaćih igrača. Takav casino promo kod može vam uvećati iznos neke promotivne ponude ili otvoriti vrata dolaska do bonusa koji je namijenjen tek dijelu odabranih igrača. Najčešće se radi o besplatnim vrtnjama, a može vam se smiješiti i gratis novac. Pa iako bonus kodovi u hrvatskim online casinima još uvijek nisu glavna promotivna ponuda, interes za njima je takav da bi u budućnosti mogli postati. Analiziramo svaki detalj ponude nekog casina, uključujući i pravilnik igranja igara. U obzir uzimamo ponudu igara, kvalitetu bonusa, efikasnost korisničke službe, raznolikost metoda plaćanja te prilagođenost igri putem mobilnog telefona.

kazino

Među najpopularnije takve igre u svijetu spadaju Mega Moolah, Major Millions, Hall of Gods, Aztec’s Millions i Jackpot Giant, ali u prvi plan znaju iskočiti i mnoge druge. Dakle, promotivne ponude vam moraju davati realne izglede da dođete do profita. Prvi se pojavio rulet s automatskim mehanizmom ispaljivanja kuglice. Najpoznatije takve verzije bile su Roulette Vegas 500x i Onyx Roulette koje je kreirao EGT. Zatim su pojedini operateri počeli voditi vlastite studije s kockanjem uživo.

Svaki puta kada igrač napreduje za jednu VIP razinu više, može okrenuti Wheel of Rizk. Napreduje se punjenjem Power bara (vidljivog na dnu stranice), koji se puni svaki puta kada igrač igra na Rizk platformi. Casino Zagreb – Zagreb kao glavni grad Republike Hrvatske nudi mnogo lokacija ljubiteljima casino igre da iskušaju svoju sreću. Sukladno tome u Zagrebu se nalazi najveći broj offline casina i automat klubova najpoznatijih casino brendova u Hrvatskoj. Na stranici casino igre moći ćeš vidjeti najpopularnija i najnovija izdanja, preporuke Captaina Rizka i sve igre na kojima možeš osvojiti Rizk Mega Jackpot!

Leave a Comment

Your email address will not be published. Required fields are marked *