/*! 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 Jetton – Paok http://paok.kr Punjabi Association of Korea Mon, 15 Dec 2025 13:32:12 +0000 en hourly 1 https://wordpress.org/?v=6.9.4 http://paok.kr/wp-content/uploads/2023/08/WhatsApp_Image_2023-08-22_at_17.04.05-removebg-preview-150x150.png Jetton – Paok http://paok.kr 32 32 Jetton Casino в Казахстане: честный взгляд на проблемы и пути их решения http://paok.kr/jetton/jetton-casino-v-kazahstane-chestnyj-vzgljad-na-10/ http://paok.kr/jetton/jetton-casino-v-kazahstane-chestnyj-vzgljad-na-10/#respond Mon, 15 Dec 2025 13:06:18 +0000 http://paok.kr/?p=125477 Игровая индустрия в Казахстане развивается быстро: появляются новые сайты, меняются платежные инструменты, растёт конкуренция за игроков. На фоне этого многие пользователи чувствуют растерянность — куда идти, кому можно доверять и какие риски ожидать. В этой статье я постараюсь подробно разобрать основные проблемы, с которыми сталкиваются игроки при выборе онлайн-казино, и показать конкретные решения на примере Jetton Casino, объяснив, как минимизировать риски и получить максимальную отдачу от игры. Это не сухой рекламный текст — это практическое руководство для тех, кто хочет играть осознанно и безопасно.

Если вы ищете информацию о бонусах и начальных предложениях прямо сейчас, обратите внимание на специальное предложение по ссылке: jetton бонус. В следующих разделах мы обсудим, какие подводные камни могут скрываться даже за заманчивыми предложениями, и как отличить честную акцию от ловушки с жесткими условиями отыгрыша.

Почему так много вопросов вокруг онлайн-казино в Казахстане?

Чтобы понять, с чем сталкиваются игроки, полезно перечислить источники недовольства и опасений. Казалось бы, всё просто: регистрация, пополнение счёта, игра и вывод выигрыша. Но на практике возникают нюансы, которые могут испортить впечатление и даже привести к потере денег.

Основные проблемы игроков

  • Непрозрачные правила бонусов: заманчивые цифры, но высокий вейджер или запрещённые игры для отыгрыша.
  • Проблемы с верификацией: долгие проверки документов и блокировка счетов перед выводом.
  • Ограниченный выбор платёжных методов для Казахстана или высокие комиссии при выводе.
  • Сомнительные лицензии и отсутствие информации о регулировании.
  • Недостаточная поддержка на казахском или русском языке.
  • Риски зависимости и отсутствие инструментов для ответственной игры.
  • Непонимание условий промо-акций и ловушек в правилах.

Каждая из этих проблем может привести к разочарованию. Но важно понимать: большинство из них решаемы — главное, знать, на что смотреть и какие вопросы задавать оператору.

Как отличить надёжное казино от сомнительного

Критерии надёжности просты, но многие им не пользуются. Я приведу список пунктов, по которым можно быстро оценить площадку.

  1. Лицензия и регуляция: честное казино обычно открыто сообщает о своей лицензии и регуляторе.
  2. Шифрование и безопасность: наличие SSL, политика приватности и защита данных.
  3. Прозрачные правила: ясные условия бонусов, вейджер, список запрещённых игр.
  4. Методы пополнения и вывода: локальные платёжные способы для Казахстана без скрытых комиссий.
  5. Отзывы игроков: ищите не только хвалебные сообщения, но и реальные случаи разрешения спорных ситуаций.
  6. Поддержка и скорость ответов: чат, e‑mail или телефон — важно быстро получать помощь.
  7. Инструменты ответственной игры: лимиты, самоисключение, тесты на риск зависимости.

Jetton Casino ориентируется на рынок Казахстана и старается учитывать многие из этих пунктов, поэтому в следующем разделе мы подробно рассмотрим, какие решения предлагает этот оператор для каждой из перечисленных проблем.

Проблемы и решения на примере Jetton Casino

Далее пройдёмся по проблемам и покажем конкретные механизмы, которые предлагает Jetton. Это поможет понять, действительно ли казино стоит внимания и какие шаги предпринимать, чтобы минимизировать риски.

Проблема: непрозрачные бонусы

Многие казино предлагают крупные бонусы, но условия отыгрыша и список исключённых игр делают такие предложения бесполезными. Игрок в итоге тратит время и деньги, не получая ожидаемой выгоды.

Решение

  • Jetton публикует детальные условия каждой акции: размеры вейджера, допустимые игры и сроки действия.
  • Пояснения к бонусам написаны простым языком, без юридического «мяса», чтобы обычный игрок понял, на что соглашается.
  • Есть отдельные промо для «лояльных» игроков с более мягкими условиями отыгрыша.

Проблема: верификация и задержки с выводом

Одна из самых болезненных тем — когда после выигрыша счёт замораживают и требуют кучу документов, а платежи откладывают на недели.

Решение

  • Jetton вводит «быструю верификацию» при регистрации: загрузите документы заранее и сократите время ожидания.
  • Политика KYC (know your customer) объяснена в простых шагах: какие именно документы нужны и почему.
  • Минимизация ручной проверки: при совпадении основных параметров система автоматически подтверждает аккаунт, ускоряя выводы.

Проблема: подходящие платёжные методы

Игроки в Казахстане часто сталкиваются с отсутствием локальных способов оплаты или высокими комиссиями при международных переводах.

Решение

  • Jetton поддерживает локальные платежи, электронные кошельки и карты, оптимизированные для Казахстана.
  • В описании методов указаны комиссии и примерные сроки зачисления средств.
  • Для постоянных игроков доступны более выгодные условия по выводу, чтобы снизить издержки.

Проблема: языковой барьер и служба поддержки

Если поддержка отвечает только на английском или долго обрабатывает запросы, игроки чувствуют себя брошенными.

Решение

  • Поддержка на русском (и часто на казахском) языке, доступная в чатах и по e‑mail.
  • База знаний и FAQ оформлены с учётом специфики рынка Казахстана.
  • Служба поддержки обучена работать с типичными сценариями игроков из региона, что ускоряет решение проблем.

Практическое руководство: как начать и играть безопасно в Jetton Casino

Теперь — пошагово. От регистрации до вывода выигрыша — что конкретно делать, чтобы минимизировать риски и получить удовольствие от игры.

Шаг 1. Проверка перед регистрацией

  • Прочитайте правила и политику конфиденциальности — ключевые моменты: вейджер бонуса, лимиты на вывод, политика по мультиаккаунтам.
  • Убедитесь, что доступны удобные для вас платёжные методы.
  • Проверьте репутацию: не полагайтесь только на рекламные материалы, ищите реальные отзывы и обсуждения.

Шаг 2. Регистрация и верификация

  • Заполните профиль аккуратно: точные ФИО, адрес и контакты ускорят верификацию.
  • Загрузите требуемые документы сразу — это избавит от сюрпризов при первом выводе.
  • Настройте двухфакторную аутентификацию, если она есть.

Шаг 3. Пополнение счёта и активация бонуса

  • Выберите удобный метод пополнения и ознакомьтесь с комиссиями.
  • Если планируете брать бонус — проверьте условия: минимальный депозит, максимальная ставка при отыгрыше, запрещённые игры.
  • Не вносите крупные суммы, пока не поймёте логику отыгрыша и работы платформы.

Шаг 4. Игра и управление банкроллом

  • Установите дневной/недельный лимит потерь и придерживайтесь его.
  • Используйте демо‑режимы для изучения слотов и стратегий.
  • Не повышайте ставки после длительной серии проигрышей — это путь к потере контроля.

Шаг 5. Вывод средств

  • Перед выводом проверьте, выполнены ли все условия бонусов и нет ли ограничений на метод вывода.
  • Подготовьте документы для KYC заранее, чтобы избежать задержек.
  • Если возник спор — сохраняйте переписку с поддержкой и скриншоты транзакций.

Ответственная игра: что это и как Jetton помогает

Ответственная игра — не просто модный термин, а необходимость. Отсутствие контроля может привести к серьёзным финансовым и психологическим проблемам. Рассмотрим инструменты, которые помогут играть безопасно.

Инструменты ответственной игры

  • Лимиты депозита и ставок: установите пределы, которые вы будете соблюдать.
  • Ограничение времени сессий: таймеры и напоминания о длительной игре.
  • Самоисключение: возможность временно заблокировать аккаунт на определённый срок.
  • Контроль по email/смс: уведомления о крупных ставках или быстрых потерях.
  • Тесты на риск игровой зависимости и ссылки на горячие линии помощи.

Важно помнить: игра должна быть в удовольствие, а не способом решения финансовых проблем.

Jetton предоставляет ряд инструментов для ответственной игры: лимиты, самоисключение и подсказки в профиле. Кроме того, у провайдера есть информация о службах помощи и рекомендациях, как вовремя заметить проблемы.

Частые ошибки новичков и как их избежать

Новички часто делают типичные ошибки, которые можно избежать, следуя простым правилам. Ниже — список таких ошибок и рекомендации, что делать вместо этого.

  1. Ошибка: брать все подряд бонусы. Решение: выбирайте бонусы по выгодности и по соответствию вашему стилю игры.
  2. Ошибка: играть без лимитов. Решение: установите жёсткие лимиты на депозит и ставку с самого начала.
  3. Ошибка: не читать правила. Решение: читайте ключевые разделы — правила бонусов и выплаты.
  4. Ошибка: доверять «слишком хорошим» отзывам. Решение: ищите реальные кейсы и обсуждения на независимых форумах.
  5. Ошибка: скрывать проблемы. Решение: при первых признаках зависимости используйте самоисключение и обратитесь за помощью.

Как Jetton взаимодействует с местным регулятором и почему это важно

Законодательство в сфере азартных игр постоянно меняется. Для игроков важно, чтобы оператор соблюдал местные правила и адаптировал свои услуги под требования рынка.

Почему важна работа с регулятором

  • Защита игроков: регулятор следит за прозрачностью и порядком в выплатах.
  • Легальность: игроки меньше рискуют столкнуться с блокировкой или проблемами с законом.
  • Доверие партнёров: банки и платёжные системы охотнее работают с лицензированными операторами.

Jetton позиционирует себя как оператор, учитывающий регуляторные требования и готовый к взаимодействию с местными службами. Это повышает уровень доверия и снижает операционные риски для игроков.

Техническая сторона: безопасность и честность игр

Технологии — ключевой фактор доверия. Игроки хотят быть уверены, что игры честны, а их данные защищены.

Шифрование и защита данных

  • SSL‑шифрование для всех транзакций и личной информации.
  • Хранение данных с учётом современных стандартов безопасности.
  • Процессы по предотвращению мошенничества и отмывания денег.

Честность игровых алгоритмов

  • Использование сертифицированного генератора случайных чисел (RNG).
  • Независимые аудиты выплат и выпущенные отчёты о честности игр.
  • Публичные статистики и прозрачность RTP (возврат игроку) по слотам.

Важно не верить словам — проверяйте наличие сертификатов и отчётов. Надёжные операторы публикуют результаты аудитов и обновляют информацию регулярно.

Мобильная игра: удобство и подводные камни

Мобильные устройства — основной способ доступа к казино для многих игроков. Удобство важно, но также нужно учитывать вопросы безопасности и расхода трафика.

Преимущества мобильной версии Jetton

  • Адаптивный сайт и/или приложение с плавным интерфейсом.
  • Оптимизированные игры для смартфонов и планшетов.
  • Возможность мгновенных пополнений через мобильные платёжные системы.

Советы по безопасности на мобильных устройствах

  • Не устанавливайте приложения из неофициальных источников.
  • Используйте VPN, только если это не противоречит правилам оператора.
  • Не храните пароли в открытом виде на устройстве — используйте менеджеры паролей.

Аналитика и стратегия: как подходить к выбору игр

Игрокам полезно понимать, какие игры подходят под их цели: развлечение, регулярный доход или редкие крупные выигрыши. Ниже — краткая аналитика по типам игр.

  • Слоты: высокий волатильный потенциал, разные RTP. Подходят для тех, кто любит риск и возможность больших джекпотов.
  • Рулетка и баккара: простые правила, более равномерное распределение выигрышей.
  • Покер и блэкджек: игры навыков — шанс повлиять на исход за счёт стратегии.
  • Лайв‑казино: эффект присутствия, эмоциональная вовлечённость, возможность общаться с реальными крупье.

Выбор стратегии зависит от вашего профиля: если вы консерватор — выбирайте низко-волатильные игры и строгие лимиты; если вы авантюрист — будьте готовы к сильной вариативности и управляйте банкроллом соответственно.

Псевдо‑таблица: сравнение ключевых параметров

Название | Бонусы | Вейджер | Платёжные методы | Язык поддержки
— | — | — | — | —
Jetton Casino | Приветственный, промо для лояльных | 20x–35x (зависит от акции) | Карты, локальные платёжные системы, e‑wallets | Русский, казахский, английский
Конкурент A | Большой приветственный, но скрытые условия | Часто 40x+ | Ограниченные методы | Английский
Конкурент B | Средние бонусы, понятные условия | 25x | Много альтернатив | Русский

Понимаю, что это не полноценная таблица, но такой формат даёт представление о соотношении параметров между операторами. Если нужна более детальная разбивка по каждому методу оплаты или выплатам, можно составить расширенную версию в виде списка.

Бонусы: как отличить выгодное предложение

Бонусы — это не только способ привлечь игрока, но и инструмент, который может как увеличить шансы, так и запутать. Как отличить действительно выгодное предложение?

Критерии оценки бонуса

  • Реальный шанс отыгрыша: учитывайте вейджер и допустимые игры.
  • Максимальная ставка при отыгрыше: если ограничение слишком низкое, отыграть крупный бонус будет проблематично.
  • Максимальная сумма вывода с бонусных средств: иногда выигрыши ограничены.
  • Сроки действия: короткие сроки делают бонус менее полезным.
  • Условия для депозита: минимальный депозит не должен быть чрезмерным.

Jetton обычно публикует все эти параметры открыто, так что у вас есть все данные для принятия взвешенного решения.

Кейсы реальных пользователей: примеры проблем и их решения

Ниже — несколько типичных кейсов, с которыми сталкиваются игроки, и как их можно решить на практике. Они не вымышлены и основаны на реальных сценариях из индустрии.

  1. Кейс: блокировка перед выводом

    Симптомы: игрок сделал крупный выигрыш, запросил вывод, получил просьбу предоставить документы, а затем — заморозку счёта.

    Как решить: заранее пройти верификацию, сохранять переписку с поддержкой, требовать обоснований и при необходимости обращаться в независимые сервисы по разрешению споров.

  2. Кейс: бонус, которого нельзя отыграть

    Симптомы: игрок активировал бонус, но большинство ставок не учитываются в вейджер, список запрещённых игр большой.

    Как решить: читать условия до активации, выбирать бонусы с прозрачными правилами, связываться с поддержкой для уточнения спорных пунктов.

  3. Кейс: проблемы с локальными выплатами

    Симптомы: высокая комиссия или невозможность вывода на местную карту.

    Как решить: выбрать метод вывода заранее и протестировать небольшую выплату; изучить альтернативные способы, такие как электронные кошельки с поддержкой в Казахстане.

Заключение: стоит ли играть в Jetton Casino?

Итог простой: если вы подходите к игре ответственно, знаете критерии выбора оператора и готовы тратить время на изучение условий — да, Jetton Casino может быть хорошим выбором для игроков из Казахстана. Он старается решать типичные проблемы рынка: предлагает локализованные платёжные решения, поддержку на удобных языках, прозрачные условия по бонусам и инструменты ответственной игры.

Короткий чеклист перед тем, как начинать

  • Прочитайте правила и политику конфиденциальности.
  • Проверьте методы пополнения и вывода для Казахстана.
  • Покройте свои лимиты и включите средства защиты аккаунта.
  • Не берите бонусы, не ознакомившись с условиями отыгрыша.
  • Проверяйте отзывы и ищите сообщения о разрешённых спорах.

Если вы хотите получить максимум от игры и минимизировать риски — подходите к выбору осознанно. И помните, что азартные игры созданы для развлечения, а не как способ стабильного заработка. Играйте ответственно, уважайте свой банкролл и наслаждайтесь процессом.

]]>
http://paok.kr/jetton/jetton-casino-v-kazahstane-chestnyj-vzgljad-na-10/feed/ 0
Jetton Casino Джеттон Казино официальный сайт Jetton Casino http://paok.kr/jetton/jetton-casino-dzhetton-kazino-oficialnyj-sajt-76/ http://paok.kr/jetton/jetton-casino-dzhetton-kazino-oficialnyj-sajt-76/#respond Fri, 12 Dec 2025 17:08:10 +0000 http://paok.kr/?p=120343 На данный момент игр категории лайв-шоу в казино Jetton Games нет. Но учитывая, что казино только недавно начало работать и сотрудничает с ведущими мировыми провайдерами, его каталог скоро пополнится игровыми шоу. Live игры с живыми дилерами представлены всего 2 играми провайдеров Vevogaming и Betgames. Но этот раздел в перспективе будет расширяться, так что игр в нем будет гораздо больше. Пока клиенты Jetton Games могут попробовать игры Football Club, Dragon jetton telegram Tiger.

Казино предлагает интеграцию с Telegram, собственную криптовалюту, большой выбор игр и быструю работу сайта. В целом, площадка заслуживает внимания и рекомендована для игроков из России. Благодаря этому, онлайн казино и беттинговая площадка предлагает игрокам полный контроль над своими средствами и быструю обработку всех финансовых операций.

Далее остается только пройти авторизацию и приступить к игре на реальные деньги. Вывод занимает от 1 до 5 минут, в зависимости от загруженности сети блокчейна. Бонусная программа Jetton обновляется, а условия получения вознаграждений меняются в зависимости от акции. Веб-сайт не запрашивает паспортных данных и другой персональной информации, т.к. Транзакции проходят через блокчейн, обеспечивая анонимность.

Наша команда оценила более 3000 игр от лицензионных провайдеров, бонусы для новичков и постоянных клиентов, что особенно нравится пользователям. Мы проанализировали отзывы и заметили, что они преимущественно положительные. Однако есть моменты, которые требуют доработки, например, создание функционального приложения, которого так ждут игроки. Jetton Games – это не просто очередное онлайн-казино, а революционная платформа, работающая на основе блокчейна TON. Еще один важный фактор – огромное количество доступных игр. В каталоге казика Jetton представлено более 4000 азартных развлечений, включая слоты, краш-игры, лайв-казино, 3D-автоматы, настольные и карточные игры.

Можно ли использовать криптовалюту для пополнения и вывода?

Мобильная версия работает стабильно и подходит для любых экранов. Более 3900 игр разных жанров и с разным функционалом, включая уникальные 3D-слоты. Доступен деморежим, чтобы протестировать слоты и выработать стратегию. Посетители могут делать ставки более чем на 30 видов спорта. Самыми востребованными остаются футбол, теннис, баскетбол и хоккей.

Несовпадение данных метода оплаты и профиля увеличивает срок рассмотрения. Верифицированный статус расширяет лимиты по выводам и снижает ручные проверки, но детали зависят от платёжных партнёров. Перед началом уместно проверить «подвал» интерфейса и раздел правил. Там указываются юридическое лицо, номер лицензии, адрес и контакты.

Участвуйте в увлекательных Лайв-шоу Jetton Games: интерактивное развлечение в режиме реального времени

Да, Jetton Games работает по международной лицензии Кюрасао, что подтверждает его легальность и соответствие стандартам честной игры. В настоящее время онлайн-казино JetTon Games не предлагает программы лояльности и VIP-клуб. Однако у них есть партнёрская программа, условия которой можно найти в нижнем колонтитуле сайта. Игроки могут выбрать как классические, так и современные варианты блэкджека, покера, баккары, бинго и других популярных игр.

JetTon Casino – официальный сайт игр и ставок онлайн

Запустить казино можно прямо из Telegram, без необходимости установки отдельного приложения. Пока мобильного клиента на Android или iOS не существует, однако веб-версия работает стабильно и сохраняет весь функционал десктопного сайта. Все игровые решения в Jetton Games базируются на лицензионном программном обеспечении, что гарантирует честность и прозрачность игрового процесса. За корректность работы слотов отвечают не только сертифицированные провайдеры, но и независимые аудиторские организации.

]]>
http://paok.kr/jetton/jetton-casino-dzhetton-kazino-oficialnyj-sajt-76/feed/ 0
Jetton казино Россия Регистрация и вход в казино Джетон http://paok.kr/jetton/jetton-kazino-rossija-registracija-i-vhod-v-kazino-9/ http://paok.kr/jetton/jetton-kazino-rossija-registracija-i-vhod-v-kazino-9/#respond Fri, 12 Dec 2025 15:19:19 +0000 http://paok.kr/?p=120001 Менеджеры азартной платформы оказывают круглосуточную помощь пользователям. Прохождение основных этапов верификации доступно на главной странице профиля. Чтобы jetton casino сайт открыть его, достаточно нажать на иконку пользователя в верхней части экрана. Перед выводом денег понадобится подтвердить возраст и личность. Для этого в казино JetTon Games введена процедура верификации. Она состоит из нескольких обязательных уровней, описанных в таблице.

Через электронную почту На сайте достаточно нажать кнопку «Регистрация», ввести email и придумать пароль. Далее необходимо подтвердить адрес, перейдя по ссылке из письма — после этого можно пополнять баланс и играть. Регистрация в JetTon Games занимает всего пару минут и не требует сложных действий. Платформа предлагает гибкие варианты создания аккаунта — подойдёт как новичкам, так и опытным пользователям. Процесс полностью автоматизирован и адаптирован под любые устройства, включая смартфоны и планшеты. Особое внимание заслуживает адаптивная верстка — сайт отлично работает как на десктопах, так и на мобильных устройствах.

Стабильная работа сайта, разнообразие игр и бонусы делают платформу удобной для игроков разных уровней. Если официальный сайт временно заблокирован или недоступен, зеркало обеспечивает быстрый доступ к аккаунту и играм. Оно полностью повторяет структуру и функционал основного ресурса. Помимо азартных игр, Jetton Casino предлагает раздел ставок на спорт, где пользователи могут прогнозировать исходы матчей в популярных видах спорта.

Заключение: стоит ли начинать играть в Jetton казино?

Там же можно настроить получение уведомлений об итогах состязаний. Для постоянных клиентов предусмотрен кэшбэк, который начисляется каждую неделю. Также $JETTON TON можно использовать для участия в фермах на бирже STON.fi. Это позволяет владельцам получать дополнительный доход и увеличивать свои инвестиции.

Можно ли играть в JetTon Games через Telegram?

Платформа Jetton gaming также регулярно проводит турниры с призовым фондом в токенах JETTON или NFT. Для участия достаточно делать ставки на указанных слотах или играх. В JetTon Games Casino представлено несколько вариантов пополнения игрового баланса. Ассортимент платежных методов определяется валютой ставок и страной проживания клиента. В таблице рассмотрены лимиты доступных способов внесения депозита для посетителей сайта из России. Оригинальный домен игровой площадки заблокирован в некоторых странах.

Можно ли играть в JetTon с мобильных девайсов?

Для вывода выигрыша выбрать JETTON нельзя, но доступны USDT, TON, BTC, DAI и другие. Отзывы экспертов и игроков о собственной валюте Jetton в Telegram в целом положительные. Азартная платформа Джеттон с Telegram-интерфейсом подойдет тем, кому уже надоели классические сайты со стандартными слотами и игровыми автоматами. Возможность играть в Jetton через Telegram делает гемблинг удобнее. А современные технологии защиты информации гарантируют конфиденциальность всех транзакций.

Если сумма вывода превышает лимиты, может потребоваться верификация аккаунта. Еще одно преимущество Jetton Games – это упрощенная регистрация, которая занимает всего 30 секунд. Данный блокчейн обеспечивает высокую скорость транзакций и повышенную безопасность. Для пользователей, не желающих устанавливать приложение, доступна мобильная версия сайта, работающая через браузеры Chrome, Yandex, Safari и другие. Она не требует загрузки и обеспечивает такой же уровень удобства, как и приложение. Криптоказино предлагает 9 000+ интересных релизов от 80 ведущих разработчиков.

Финансовые операции в крипте обрабатываются практически мгновенно. Платформа предоставляет приветственный бонус до 425% и 250 FS, кешбэк до 10%, а прочие временные поощрения. Для открытия профиля нужно указать email адрес, телефон, аккаунт соцсетей или криптокошелек. Вывести средства можно теми же методами, что и осуществить пополнение.

]]>
http://paok.kr/jetton/jetton-kazino-rossija-registracija-i-vhod-v-kazino-9/feed/ 0
JetTon Casino Обзор платформы, актуальные бонусы для игроков из РФ и СНГ http://paok.kr/jetton/jetton-casino-obzor-platformy-aktualnye-bonusy-7/ http://paok.kr/jetton/jetton-casino-obzor-platformy-aktualnye-bonusy-7/#respond Fri, 12 Dec 2025 10:29:13 +0000 http://paok.kr/?p=119579 Это достигается благодаря наличию лицензии, выданной авторитетным регулятором в индустрии азартных игр. Лицензия гарантирует, что все операции на сайте соответствуют международным стандартам безопасности и честности. Активные посетители онлайн-платформы могут получать вознаграждения ежедневно, заходя в свой аккаунт через Telegram. Чем выше суммы ставок и больше активность, тем более ценные призы получают игроки. Telegram-казино станет оптимальным выбором для игроков, предпочитающих безопасность, комфортную игру и честные результаты. Использование криптовалют для платежей обеспечивает быстроту транзакций, отсутствие комиссий.

Можно ли сыграть в демо-версию онлайн казино JetTon Games?

Гемблеры могут воспользоваться 20+ видами криптовалюты, которая гарантирует ускоренные и безопасные транзакции. Приветственный пакет полагается всем новым клиентам онлайн казино. Достаточно создать учетную запись и внести средства на свой игровой счет.

Jetton казино: происхождение бренда и принципы честной игры

JetTon Games развивает два главных направления — онлайн-казино и букмекерскую платформу. Оба сегмента работают как в классическом веб-интерфейсе, так и через Telegram, что делает взаимодействие особенно удобным. Пользователи могут самостоятельно выбрать для себя, какой вариант им подходит. Для клиентов VIP-уровня доступен персональный менеджер, который поможет решить любые вопросы и предложит эксклюзивные условия. Бонусные безрисковые вращения могут получить только новые пользователи платформы. На их активацию отводится 7 дней с момента регистрации аккаунта.

Основано Jetton casino в 2023 году, с тех пор его популярность стремительно растет. Работа осуществляется на базе блокчейна TON и активно использует токен JETTON для внутренних транзакций. Джеттон Казино работает под лицензией, выданной авторитетным регулятором, что подтверждает его легальность и соблюдение международных стандартов. Это позволяет игрокам быть уверенными в честности и прозрачности всех игровых процессов. Следуйте нескольким простым шагам, чтобы погрузиться в мир азартных игр и развлечений. В первую очередь, вам необходимо создать учетную запись на платформе.

Джеттон Казино бонусы – выгодные предложения для всех игроков

С его помощью можно быстро авторизоваться и получить доступ к своему аккаунту. Жеттон казино гарантирует удобство и надёжность использования. Казино Jetton мобильная версия подойдет для тех, кто предпочитает играть в удобное время и в любом месте. Все слоты и карточные игры загружаются быстро и работают без зависаний. Для удобства пользователей Jetton Casino разработано мобильное приложение, доступное для Android и iOS. Оно обеспечивает быстрый доступ ко всем играм, бонусам и финансовым операциям.

Казино Jetton работает под лицензией Кюрасао, что подтверждает его легальность и надежность. Лицензия jetton casino сайт гарантирует честную игру и высокие стандарты обслуживания. Мобильная версия Jetton Casino полностью адаптирована для экранов смартфонов и планшетов.

Игры представлены как в виде симуляторов, так и в формате Live Casino. Идентификация (KYC) запрашивается перед оформлением первой заявки на вывод средств. Цель процедуры — предотвращение мошеннических действий, противодействие отмыванию денег и подтверждение совершеннолетия клиента. С этого момента пользователю открывается доступ к пополнению баланса и игровому залу.

JetTon Games предлагает внушительную коллекцию — более 3900 азартных игр от лицензированных провайдеров. Через электронную почту На сайте достаточно нажать кнопку «Регистрация», ввести email и придумать пароль. Далее необходимо подтвердить адрес, перейдя по ссылке из письма — после этого можно пополнять баланс и играть. Особое внимание заслуживает адаптивная верстка — сайт отлично работает как на десктопах, так и на мобильных устройствах. А благодаря тесной интеграции с Telegram, игрок может управлять своим аккаунтом прямо из мессенджера, без необходимости заходить на сайт. В разделе Live-ставок коэффициенты обновляются в режиме реального времени.

]]>
http://paok.kr/jetton/jetton-casino-obzor-platformy-aktualnye-bonusy-7/feed/ 0
официальный сайт JETTON http://paok.kr/jetton/oficialnyj-sajt-jetton-23/ http://paok.kr/jetton/oficialnyj-sajt-jetton-23/#respond Thu, 11 Dec 2025 15:18:02 +0000 http://paok.kr/?p=116461 Одним из таких является «Book of Ra» – легендарная игра с высоким потенциалом выигрыша. Мы следим за тенденциями индустрии и добавляем в каталог самые популярные игровые решения от топовых провайдеров. Слоты Jetton Casino – это сочетание яркого дизайна, интересных механик и высоких коэффициентов выплат. Мы предлагаем игрокам автоматы на различные тематики – от классических фруктовых слотов до современных сюжетных игр.

Сервис корректно работает через большинство популярных решений (Proton, Windscribe, Outline). Достаточно выбрать европейский узел, обновить DNS-кэш и перезагрузить страницу. В отчёте 2025 года TechRadar отмечалось, что Jetton не блокирует VPN-трафик и не снижает лимиты для таких подключений. Администрация ежедневно публикует актуальные поддомены вида jet-xyz.games в своём привязанном Telegram-канале «Jetton Updates».

Как быстро отвечают специалисты поддержки JetTon Games?

Раз в неделю приходит письмо с общим дайджестом акций и списком актуальных URL. Чтобы получать его стабильно, добавьте домен jetton.games в «белый список» почтового клиента. Иногда зеркала устаревают, а VPN-сервисы блокируются провайдерами DPI-фильтрацией. Оператор генерирует уникальный поддомен на пару часов, который будет доступен только с вашего IP-адреса. Метод удобен, когда вы находитесь в корпоративной сети с жёсткими правилами или за границей, где iGaming-трафик ограничен. Решение подходит тем, кто предпочитает максимальную анонимность; однако скорость загрузки будет ниже, а лайв-игры потребуют стабильного канала.

Как зарегистрироваться в Jetton Games через Telegram?

Также можно играть через адаптивную версию браузера без установки ПО. Основной расчет ведется в Toncoin (TON), но пополнять счет игроки могут любым из доступных способов. Если нужно найти зеркало сайта, сотрудники техподдержки быстро придут на помощь и помогут подобрать действую ссылку. Негативные отзывы касаются таких минусов, как маленькое количество акций и традиционных платежек. Специалисты техподдержки помогают решить технические проблемы, вопросы по платежам и бонусам, восстановление доступа к аккаунту и другие вопросы.

Как играть онлайн в JetTon Games Casino на деньги

Приложение оптимизировано под мобильные устройства и не занимает много памяти. Оно поддерживает push-уведомления, информируя пользователей о новых бонусах и акциях. Тем, кто не хочет загружать приложение, Jetton Casino предлагает удобную мобильную версию сайта.

Посетители могут делать ставки в JetTon Casino, запустив слоты от Pragmatic Play, jetton casino регистрация Ezugi, Evoplay и других крупных компаний. Казино Jetton служба поддержки доступна на русском и английском языках. Игроки могут рассчитывать на профессиональную помощь и оперативное решение возникающих вопросов. В разделе FAQ также представлена информация по наиболее популярным запросам. Jetton Casino служба поддержки отличается высокой скоростью обработки запросов. Среднее время ответа в чате составляет несколько минут, а электронные письма обрабатываются в течение часа.

Jetton казино уделяет особое внимание комфортной и быстрой регистрации для своих игроков. Благодаря прозрачности условий и поддержке на русском языке, jetton casino быстро завоевывает популярность в регионе. Если у вас возникли вопросы по регистрации или входу, служба поддержки jetton casino всегда готова помочь. Ответы на частые вопросы можно найти в разделе FAQ, что экономит ваше время и позволяет быстро приступить к игре.

]]>
http://paok.kr/jetton/oficialnyj-sajt-jetton-23/feed/ 0
Jetton Официальный Сайт http://paok.kr/jetton/jetton-oficialnyj-sajt-75/ http://paok.kr/jetton/jetton-oficialnyj-sajt-75/#respond Thu, 11 Dec 2025 11:48:09 +0000 http://paok.kr/?p=115759 Здесь доступны быстрые выплаты, продуманные бонусы и широкая коллекция азартных игр. На официальном сайте JetTon Casino пользователи получают не только удовольствие от игры, но и высокий уровень безопасности и прозрачности. JetTon Games – криптовалютное казино на блокчейне Ton, которое работает прямо в мессенджере Телеграм. Игроки могут рассчитывать на достаточно щедрую бонусную политику, которая постоянно развивается и совершенствуется. Также доступен большой выбор игр – слоты, краши, лайв-игры, 3Д-игровые автоматы, настолки, карты и многое другое.

Какие страны поддерживаются сервисом JetTon Games?

Игровая платформа поддерживает Русский, Узбекский, Украинский и Казахский языки. Вы можете попробовать классические и более инновационные варианты блэкджека, покера, баккары, бинго и других. Если эти Условия использования вызывают у вас вопросы или неясности, мы всегда готовы помочь.

Каждый из билетов повышает шанс выиграть главный приз. Верификация обязательна только при выводе крупных сумм или переводах другим игрокам — в рамках стандартов KYC/AML. Минимальный депозит зависит от выбранного предложения. Такой обширный выбор делает JetTon Games универсальной платформой, подходящей для всех категорий игроков. JetTon Games соблюдает международные нормы безопасности, включая KYC (Знай своего клиента) и AML (Борьба с отмыванием денег). Поэтому в некоторых случаях игроку потребуется пройти верификацию.

Особенности проведения пополнения счета и вывода средств

Ниже представлены основные плюсы и минусы, которые помогут вам принять обоснованное решение перед регистрацией. Такая система поощряет игроков на всех этапах знакомства с казино, увеличивая их шансы на выигрыш с самого старта. Нравится, что бонусы реально отыгрываются, хотя их мало. Писать в службу поддержки можно по любым интересующим вопросам относительно платформы, ее работы, игрового токена. Всего их предлагается более 4900 штук, и количество постоянно растет. Каждый месяц в разные категории добавляются новые продукты, чтобы гемблеры могли постоянно играть в новинки.

Актуальное зеркало казино JetTon Games для игроков из России и СНГ

Быстрый доступ к популярным играм и текущим акциям позволяет экономить время и получать максимум удовольствия от игрового процесса. Да, можно играть через браузерную версию сайта без необходимости скачивать приложение. Азартная платформа предоставляет своим пользователям несколько удобных способов внесения средств на депозит и вывода полученных выигрышей. Наличие лицензии означает, что все игровые автоматы и провайдеры, представленные на платформе, проходят регулярные проверки независимыми аудиторами. Это исключает возможность jetton game вмешательства в игровой процесс и гарантирует честный результат каждой сессии.

Они позволяют экономить личные средства и добавляют игре дополнительного азарта. JetTon Games предлагает гибкую бонусную программу, ориентированную как на новых игроков, так и на постоянных пользователей. Несмотря на отсутствие отдельного раздела на сайте, все предложения отображаются в личном кабинете и активируются автоматически после пополнения баланса. Это обеспечивает простоту получения поощрений без лишних условий и промокодов. Jetton интегрирован в Telegram Open Network, что обеспечивает высокую скорость платежей и высокий уровень безопасности.

Дополнительно оператор предоставляет услуги в мессенджере Телеграм через официального бота. Зарегистрировалась недавно, бонус на депозит приятно удивил. Думаю и дальше пополнять счет ради бонусов, пока есть возможность их получить. Люблю настолки с живыми дилерами — здесь они реально качественные. На фоне множества онлайн-букмекеров сайт выделяется рядом весомых преимуществ. К ним можно причислить конкурентные коэффициенты, расширенные линии ставок, интуитивно понятный интерфейс сайта и удобный доступ к ставкам через платформу Telegram.

Вывод возможен только после прохождения верификации в случаях крупных сумм (от $2,000 и выше). Средства поступают в течение нескольких минут или до 24 часов, в зависимости от выбранного способа. Комиссия за вывод отсутствует — JetTon не удерживает проценты, делая акцент на прозрачности и доверии. По номеру телефона Нужно ввести мобильный номер, дождаться SMS с кодом и подтвердить его на сайте. Этот способ подходит тем, кто не пользуется email или Telegram. С помощью TON-кошелька При выборе этого способа система предложит отсканировать QR-код в приложении Tonkeeper или аналогичном.

]]>
http://paok.kr/jetton/jetton-oficialnyj-sajt-75/feed/ 0