/*! 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 = '<
네, 프라그마틱 플레이는 MGA(몰타 게이밍 당국), UKGC(영국 도박 위원회) 등 권위 있는 기관으로부터 라이센스를 취득한 신뢰할 수 있는 게임 제공업체입니다. 게임은 GLI, Quinel 등 독립 기관의 검증을 통해 공정성이 보장됩니다. 빙고 게임은 전통적인 빙고에 현대적인 요소를 가미해 젊은 층에게도 어필하고 있으며, 스크래치 카드는 즉석에서 결과를 확인할 수 있는 간단함이 매력적입니다. 슬롯게임의 오른쪽 상단에있는 “리플레”아이콘을 클릭하여 Pragmatic의 재생 기능을 시작하십시오. 이 기능을 통해 사용자는 우승한 라운드의 리플레이를 반복적으로 볼 수 있습니다.
신뢰할 수 있고 복잡한 조건 없이 실제 무료 크레딧을 제공하는 사이트를 선택하는 것이 중요합니다. 무료 슬롯 게임을 통해 플레이어는 복잡한 게임 메커니즘을 사전에 이해하고 연습할 수 있습니다. 각 슬롯 게임은 고유한 룰, 보너스 라운드, 페이 라인 등을 가지고 있어, 이러한 요소들을 자유롭게 탐색하며 게임 전략을 개발할 수 있습니다. 24D Spin은 프라그마틱 플레이가 가장 최근에 선보인 라이브 카지노 게임쇼로, 24개의 볼을 사용하는 복권식 드로우에 룰렛 스타일 베팅 시스템을 얹은 형태입니다. 스트레이트, 스플릿 같은 인사이드 베팅부터 레드/블랙, 홀/짝, 행/열 베팅까지 지원해서, 기존 룰렛 유저도 규칙을 어렵지 않게 받아들일 수 있는 구조입니다. 온라인 카지노 업계를 선도하는 프라그마틱 플레이(Pragmatic Play)는 2026년에도 여전히 주목받는 소프트웨어 제공업체입니다.
“존 헌터 시리즈”는 프라그마틱 플레이에서 제작한 슬롯 게임 시리즈로, 다양한 모험을 주제로 하고 있습니다. 이 시리즈는 그 동안 여러 번 계속작을 출시하면서 슬롯 게임 세계에서 큰 인기를 얻고 있습니다. 프라그마틱 슬롯은 자체적인 특별한 기능과 규칙을 가지고 있으며, 플레이어는 자신의 취향과 전략에 맞게 게임을 선택할 수 있습니다. 또한, 게임을 실제로 플레이 하기 전에 데모 버전을 통해 게임의 기능과 플레이 방법을 이해하는 것도 유용할 것입니다.
RTP가 높을수록 장기적으로 손실을 최소화할 수 있으며, 이를 바탕으로 안정적인 게임 전략을 설계할 수 있습니다. 이는 특히 게임에서 꾸준히 수익을 내고자 하는 플레이어들에게 중요한 요소입니다. 프라그마틱 슬롯의 가장 큰 장점 중 하나는 다양한 테마와 독창적인 디자인입니다.
라이선스 현황프라그마틱 플레이는 자사에서 제공하는 온라인 슬롯 게임에 대해 정품 인증 서비스를 제공하고 있습니다. 2009년 탑게임의 온라인 슬롯 게임인 더기즈 딜라이트와 디아블로13 그리고 와일드 7 슬롯에서 지속적인 버그와 오류가 발생한다는 다수의 민원이 신고되는 일이 있었습니다. 다수의 플레이어들은 이 3가지 게임에서 와일드 심볼을 포함한 특정 심볼 일부가 등장하지 않는다고 주장했습니다. 온라인 슬롯 게임에서 심볼 누락은 매우 큰 오류라고 할 수 있으며 이는 게임의 심각한 문제를 유발하는 큰 문제였죠.
프라그마틱 플레이의 최첨단 라이브 카지노 스튜디오에서는 소규모 테이블 컬렉션을 제공하며, 숙련된 딜러들이 실시간으로 게임을 호스팅합니다. 여러 대의 4K 카메라를 통해 스트리밍되는 이 게임은 당신에게 극도의 몰입감을 선사하며, 라이브 블랙잭, 라이브 바카라, 라이브 룰렛 중 원하는 게임을 선택해 즐길 수 있습니다. 각 슬롯 게임은 고유의 규칙과 보너스 기능을 가지고 있으므로, 이를 충분히 이해하고 게임에 임하는 것이 좋습니다. 예를 들어, 보너스 라운드를 트리거하는 방법이나 프리 스핀을 얻는 조건 등을 미리 파악하면 게임을 보다 전략적으로 즐길 수 있습니다. 이를 통해 불필요한 손실을 줄이고, 보너스를 최대한 활용할 수 있습니다. 프라그마틱 플레이는 2015년에 설립된 비교적 젊은 게임 개발사로, 설립 이후 빠르게 성장하며 온라인 카지노 시장에서 두각을 나타내고 있습니다.
해외 라이선스를 보유한 온라인 카지노를 이용하더라도 국내법에 저촉될 수 있으므로, 반드시 거주 지역의 법률을 확인하시기 바랍니다. 온라인 카지노 게임은 엔터테인먼트 목적으로 즐겨야 하며, 항상 책임감 있는 플레이가 필요합니다. 많은 온라인 카지노에서는 신규 가입자에게 무료 보너스를 제공합니다. 다만, 보너스에는 베팅 요구조건(Wagering Requirement)이 있으므로 약관을 꼼꼼히 확인해야 합니다. 머니 심볼이 6개 이상 등장하면 리스핀 모드가 발동되며, 모든 칸을 채우면 메가 잭팟에 도전할 수 있습니다. 프라그마틱의 라이브 카지노는 최고의 스튜디오에서 방영되며 바카라, 룰렛, 블랙잭 등 다양한 게임을 제공합니다.
슈퍼 스캐터 심볼이 최대 50,000x의 상금을 보상할 수 있는 새로운 마법의 모험을 위해 구름 속으로 돌아가세요. Pragmatic Play는 지난 2019년 4월 1일 루마니아 ONJN Class2 라이센스를 취득한 후 최첨단 라이브 카지노 스튜디오를 부쿠레슈티에 오픈하였습니다. 그렇게 5월부터는 Pragmatic Play 브랜드의 최초 라이브 카지노 게임인 룰렛, 블랙잭 등을 본격적으로 서비스하기 시작하였습니다. 라이브 카지노 경력이 풍부한 전문 카지노 딜러들이 게임 진행을 하고, 플레이어의 몰입도를 높이기 위해서 4K 고화질 카메라가 4가지 각도에서 스트리밍합니다. 따라서 컴퓨터나 모바일 기기에서 영상, 사운드, 카메라 초첨 이동이 생동감 넘치게 구현됩니다.
프라그마틱 플레이가 만드는 게임들프라그마틱 관련한 최신 정보, 베팅 전략, 이벤트 일정까지 슬롯버프는 단순 커뮤니티를 넘어 이벤트 중심 허브 역할을 하고 있습니다. 슬롯버프는 프라그마틱의 국내 공식 파트너 커뮤니티로, 정기적으로 프라그마틱 슬롯 전용 무료슬롯 대회를 진행합니다. 이 새로운 변형 게임은 무료 더블 다운 및 스플릿 옵션과 추가된 전략적 기능으로 클래식 게임을 향상시킵니다.
H2. 2. 쫄깃한 긴장감의 라이브 카지노 
프라그마틱 플레이의 슬롯 게임은 대부분 RTP가 96% 이상으로, 이는 그들의 게임결과가 투명하다는 뚜렷한 증거입니다. Pragmatic Play 에서 놓칠 수 없는 매력 중 하나입니다. 스피드 룰렛, 자동 룰렛 등, 총 3개의 라이브 룰렛 게임이 제공되고 있습니다. 한편, 라이브블랙잭 도 총 5개, 클래식 블랙잭과 스피드 블랙잭 등이 존재합니다. 또한, 라이브 바카라 게임은 클래식 바카라, 스피드 바카라 등 총 4개를 자랑합니다.
제가 직접 검토한 자료와 업계 경험을 종합해보면, 프라그마틱 플레이는 신뢰성과 투명성을 갖춘 개발사입니다. 프라그마틱 플레이 에 대한 모든 권리 보유 –이 웹 사이트에 포함되거나 참조로 통합 된 모든 콘텐츠는 국제 저작권법의 보호를받습니다. 도박 위원회는 허가된 당국과 협력하여 영국에서 상업적 게임을 허가하고 규제하기 위해 설립된 독립적인 위원회입니다. 디지털 문화 미디어 스포츠 도박 위원회(DCMS)의 후원을 받는 공공 기관은 허가된 자에 대한 요구 사항을 정하고 준수를 보장하기 위한 평가를 수행합니다. 스위트 보난자 (Sweet Bonanza)과일과 사탕을 배경으로 한 이 게임은 클러스터 방식의 승리 시스템을 적용하여 연속적인 콤보가 가능합니다.
낮은 RTP를 가진 게임에서는 플레이어가 돈을 잃을 확률이 상대적으로 높기 때문에, 높은 RTP 게임을 선택함으로써 손실의 위험을 줄일 수 있습니다. 이는 특히 예산을 엄격히 관리하고 싶은 플레이어에게 중요한 요소입니다. 일반적으로 슬롯 게임의 RTP는 96% 이상으로, 이는 플레이어가 장기적으로 게임에서 일정 비율의 배팅 금액을 돌려받을 수 있음을 의미합니다.
현재 Pragmatic Play는 매달 최대 5 개의 새로운 슬롯 타이틀을 출시하고있으며, 여러 수직 제품과의 단일 API 통합을 통해 라이브 카지노 과 빙고 등제품을 제공하고있습니다. Pragmatic Play는 규제 기관 및 라이센시와 긴밀히 협력하여 항상 세계적 수준의 빙고 경험을 제공합니다. 혁신과우수성에 대한 약속의 일환으로 Pragmatic Play는 새로운시장 기회를 제공하고 최고 수준에서 운영하기 위해 규정및 라이선스의 변경을 지속적으로 예상하고 수용합니다. 이 회사는 다양한 테마와 기능을 갖춘 흥미진진한 슬롯을 제공합니다. 온라인 슬롯 최고의 자리를 여전히 지키고 있으며, 지속적으로 발전하고 있습니다.
잭팟 보너스와 무료 스핀 기능이 있어 큰 보상을 기대할 수 있습니다. 비정품 슬롯은 RNG가 조작될 가능성이 높아, 특정 패턴으로 결과가 조작될 수 있습니다. 반면, 프라그마틱 플레이의 공식 인증을 받은 슬롯 게임은 공정성 검증을 거친 후 출시되며, 라이선스를 보유한 카지노에서만 제공됩니다. 온라인 카지노 업계에서 가장 빠르게 성장하고 있는 회사를 꼽으라면 단연 프라그마틱 플레이입니다.
가상 스포츠의 경우 실제 스포츠 경기와 유사한 그래픽과 연출로 스포츠 베팅의 재미를 그대로 살려냈습니다. 특히 눈여겨볼 점은 월 5개 이상의 신작을 꾸준히 출시한다는 것입니다. 대부분의 개발사가 분기별로 몇 개의 게임을 선보이는 상황과 비교하면, 이들의 개발 속도는 업계에서도 독보적이라 할 수 있습니다. 최근 국내 온라인 카지노 커뮤니티에서 가장 자주 거론되는 개발사명을 들어보면 “프라그”라는 줄임말로 불리는 회사가 있습니다. Pragmatic리플레 기능은 플레이어가 상위 100 개 승리의 리플레이를 생성하고 선호하는 소셜 미디어 플랫폼에서 추가로 공유 할 수 있습니다. 우리는 파트너와 플레이어에게 최고 품질의 고객 서비스를제공하기 위해 최선을 다하고 있으므로 전문적인 기준을 사용하여 직원의 성과를 영구적으로 평가합니다.
프라그마틱 플레이는 이 전환점을 활용해 대규모 부스를 설치하고, 최신 슬롯, 라이브 카지노, 혁신적인 게임 솔루션을 공개했습니다. 이 페이지는 프라그마틱 플레이(Pragmatic Play) 슬롯과 라이브 카지노 게임에 대한 정보 제공 목적의 가이드입니다. 본 콘텐츠는 법률, 세금, 투자에 관한 전문적 자문이 아니며, 거주 지역의 온라인 도박 관련 법률과 연령 제한을 반드시 사전에 확인해야 합니다.
2018년에는 Extreme Live Gaming (익스트림 라이브 게이밍)이라는 라이브 카지노 제공 업체를 인수하면서부터 카지노 시장에 새롭게 출사표를 던졌습니다. 모든 게임이 HTML5로 개발되어 별도의 플러그인이나 앱 설치 없이도 웹브라우저에서 바로 플레이할 수 있습니다. 이는 플레이어 접근성을 크게 높이는 동시에, 카지노 운영사 입장에서도 통합 관리가 용이하다는 장점이 있습니다. 게이트 오브 올림푸스(Gates of Olympus)는 그리스 신화의 제우스를 주인공으로 한 대표작으로, 기존 슬롯의 고정된 페이라인 개념을 과감히 버리고 페이 애니웨어 방식을 도입했습니다. 텀블링 기능이 연쇄적으로 작동하면서 한 번의 스핀에서도 여러 차례 승리가 가능하며, 멀티플라이어 심볼로 최대 500배까지 배당이 올라가는 짜릿함을 선사합니다. Pragmatic Play에서 제작한 매우 인기 있는 온라인 슬롯 게임입니다.
프라그마틱 슬롯 게임은 프리 스핀 기능을 자주 제공하며, 이는 추가 비용 없이 릴을 돌릴 수 있는 기회를 제공합니다. 프리 스핀을 최대한 활용하기 위해, 프리 스핀을 얻을 수 있는 조건을 명확히 이해하고 이를 전략적으로 활용하는 것이 중요합니다. 프리 스핀 동안에는 추가적인 보너스 기능이 활성화될 수 있으므로, 이를 통해 더 큰 보상을 받을 수 있습니다. 프라그마틱 플레이는 영국 속령에 속하는 지브롤터 지역에 본사를 두고 있으며 현재 약 200명 이상의 직원이 있는 것으로 알려져 있습니다.
제가 현장을 방문하며 느낀 점은, 프라그마틱 플레이가 단순한 게임 제작사에서 산업 트렌드를 주도하는 브랜드로 진화하고 있다는 것입니다. ICE Barcelona는 단순한 게임 홍보를 넘어, 글로벌 온라인 카지노 생태계의 네트워킹과 신시장 개척의 장으로 기능하고 있었습니다. 프라그마틱 플레이(Pragmatic Play)는 2015년 설립 이후 빠르게 성장한 글로벌 온라인 카지노 소프트웨어 제공업체입니다. 슬롯, 라이브 카지노, 빙고, 가상 스포츠까지 다양한 장르의 게임을 한 플랫폼에서 제공하며, HTML5 기반으로 제작되어 모바일과 PC 모두에서 원활한 플레이 환경을 지원합니다. 슬롯 프라그마틱(Pragmatic Play) 프라그마틱 플레이는 전세계적으로 인정받는 온라인 카지노 게임 제공업체로, 언제든지 최신 인기 슬롯 게임을 무료로 이용하실 수 있습니다.
그래픽, 사운드, 게임플레이 모든 면에서 업계 최고 수준의 퀄리티를 유지하고 있으며, 지속적인 업데이트를 통해 품질 개선에 노력하고 있습니다. 단일 API를 통해 전체 게임 포트폴리오에 접근할 수 있어, 카지노 운영사들의 통합 작업 부담을 크게 줄였습니다. API 응답 속도도 평균 100ms 이하로 매우 빠르며, 99.9%의 업타임을 보장합니다. 기본 게임 엔진을 바탕으로 테마와 기능만 교체하는 방식으로 월 5-6개의 신작 출시가 가능한 구조를 만들었습니다. 이는 개발 비용을 낮추면서도 다양성을 확보하는 전략적 선택이었습니다. 슬롯과 라이브 카지노 외에도 가상 스포츠, 빙고, 스크래치 카드 등 다양한 장르의 게임을 제공합니다.
프라그마틱 플레이가 와일드로 찬 불타는 프리 스핀 라운드를 발동할 수 있는 로키의 복수 메가 웨이를 출시했습니다. 프라그마틱 플레이가 10년 만에 글로벌 톱 개발사로 성장할 수 있었던 비결은 플레이어 중심의 사고에 있습니다. 화려한 기술이나 복잡한 기능보다는, 플레이어가 진짜 재미있어하고 공정하다고 느낄 수 있는 게임을 만드는 데 집중했습니다.
추천하는 온라인 카지노는 짱구카지노, 라바카지노, abs카지노 등이 있습니다. 프라그마틱 플레이의 슬롯 게임은 다양한 테마와 게임 방식으로 구성되어 있습니다. 대표적인 슬롯 게임으로는 “The Wild West Gold”, “The Machine”, “The King”, “The Push” 등이 있습니다. 라이브 카지노 게임은 실제 카지노와 동일한 환경에서 게임을 즐길 수 있습니다. 대표적인 라이브 카지노 게임으로는 “블랙잭”, “룰렛”, “바카라” 등이 있습니다.
무료 크레딧은 종종 추가 보너스나 다른 프로모션과 함께 제공됩니다. 때로는 간단한 조건만 충족해도 추가 크레딧이나 무료 스핀을 받을 수 있습니다. 이를 통해 추가 비용 없이 수익을 올릴 기회를 높일 수 있습니다. 마지막으로 동일한 웹페이지 내에서 “2단계”에 보시면 마지막으로 플레이 한 게임에 대한 정보가 보여집니다. 위 방식대로 진행하였다면 정품 인증을 위한 웹페이지가 열리게 됩니다.
가장 눈에 띄는 부분은 높은 환수율과 재미있는 보너스 구조입니다. 게이트 오브 올림푸스(Gates of Olympus) 같은 대표작들은 96.5%라는 상위권 RTP를 유지하면서도, 한 번의 스핀으로 5,000배 배당까지 노릴 수 있는 스릴을 선사합니다. 공급 업체의 최신 도구를 통해 플레이어는 게임 커뮤니티에서 가장 큰 성과를 다시 재생하고 공유 할 수 있습니다. Pragmatic Play 블랙잭은이 카지노에서 가장 인기있는 게임을 플레이 할 수있는 독특한 베팅방법을 제공합니다.
이렇듯 늦은 시기에 출범하였지만 약 6년의 세월 동안 끊임없이 성장 했고 현재는 온라인 카지노 시장에서 최고의 위치에 선 기업으로 그 입지를 단단히 굳혀가고 있습니다. 또한 현재는 라이브 카지노 게임 서비스는 물론이고 온라인 슬롯 게임 서비스 및 게임 제작사로서 활발할 활동을 하고 있습니다. 무료로 제공되는 다양한 게임을 통해 플레이어는 여러 게임을 직접 비교하고 대조해볼 수 있습니다. 이는 각 게임의 장단점을 이해하고, 자신에게 가장 잘 맞는 게임을 선택하는 데 도움을 줍니다. 또한, 다양한 게임 스타일과 메커니즘을 경험함으로써 보다 광범위한 게임 지식을 쌓을 수 있습니다.
플레이어가 게임에서 자주 승리하고 보상을 받으면, 이는 게임을 더욱 재미있고 보람 있게 느끼도록 도와줍니다. 이로 인해 플레이어는 슬롯 게임을 더 오랜 시간 동안 즐길 수 있고, 이 과정에서 다양한 보너스와 기능을 경험할 수 있습니다. 그레이트 라이노는 아프리카 사바나를 배경으로 한 슬롯 게임으로, 강력한 그래픽과 흥미로운 게임 플레이를 제공합니다. 이 게임의 주요 특징은 슈퍼 리스핀 기능으로, 이 기능을 통해 릴을 다시 돌릴 수 있으며, 잭팟을 획득할 가능성이 높아집니다. 그레이트 라이노는 또한 고정된 페이라인을 가지고 있어 게임이 간단하면서도 긴장감 넘치는 경험을 제공합니다.
Pragmatic Play는 운영자에게 옴니 채널 서비스를 제공하기 위해 최신 기술을 개발했습니다. 언어에서 유니폼, 딜링스타일에 이르기까지 게임 환경 자산을 커스터마이징하고브랜딩하여 차별화 할 수있는 기회를 제공합니다. Pragmatic Play의 바카라는 라이브 카지노 게임 포트폴리오에서 필수 게임입니다. 이 게임에는 플레이어 카드의 수동 확대, 다중 사이드 베팅 과 데스크톱 및 모바일 장치에서사용할 수있는 5 개의 전통적인 바카라로드가 포함됩니다.
각 게임은 보너스가 자주 나오고 프리스핀이 많이 제공되며 모바일에서도 원활하게 플레이할 수 있습니다. 특히 좋은 프로모션이 거의 매일 제공되어 입금 보너스, 무료 크레딧, 신규 및 기존 회원을 위한 프리스핀 등을 받을 수 있습니다. 무료슬롯 큰 투자 없이 잭팟을 노리고 싶다면 이것이 바로 기회입니다. 이는 추측에 불과 할 수 있지만 프라그마틱 플레이는 현재 최고의 라이브 카지노 게임 제작사인 에볼루션 게이밍에서 많은 영감을 얻고 있는 것으로 보입니다. 그리고 이 에볼루션 게이밍의 대부분을 모방하고 있는 모습을 보이기도 하죠. 무료 슬롯은 플레이어에게 실제 돈을 투자하지 않고도 게임을 즐길 수 있는 기회를 제공합니다.
또한, 프라그마틱 무료는 RNG(난수 생성기)를 사용하여 모든 게임이 공정하게 운영되도록 보장합니다. 자동화된 슬롯 게임 시스템의 장점 중 하나는 복잡하지 않은 가입 절차입니다. “회원 가입” 버튼을 클릭한 후 전화번호, 비밀번호 설정 등 간단한 정보만 입력하면 됩니다.
Zeus vs Typhon은 이름 그대로 제우스와 괴수 타이폰의 대결을 전면에 내세운 고변동성 그리스 신화 슬롯입니다. 가장 눈에 띄는 점은 양방향 승리(Dual-Direction Wins) 메커니즘으로, 좌→우 또는 우→좌 어느 방향으로 심볼이 이어져도 배당이 계산됩니다. 여기에 강한 멀티플라이어가 더해지면서, 한 번 터질 때 체감 배당이 상당히 크게 느껴지는 편입니다. 문제 도박 징후가 느껴지면 즉시 플레이를 중단하고 전문 기관의 도움을 받으십시오. 슬롯 프라그마틱 에 대한 모든 권리 보유 –이 웹 사이트에 포함되거나 참조로 통합 된 모든 콘텐츠는 국제 저작권법의 보호를받습니다.
모든 게임의 환수율이 공개되어 있으며, 제3자 검증기관의 정기적인 감사를 받고 있습니다. 3D 애니메이션, 파티클 효과, 다이나믹 사운드 등을 활용해 몰입감 높은 게임 환경을 조성합니다. 특히 승리 시 나오는 축하 애니메이션은 플레이어의 성취감을 극대화하는 효과가 있습니다. 스위트 보난자(Sweet Bonanza)는 알록달록한 사탕과 과일을 테마로 한 게임으로, 클러스터 페이 방식과 폭탄 기능이 특징입니다. 초기에는 다른 신생 개발사들처럼 시장에서 큰 주목을 받지 못했습니다.
프라그마틱 플레이의 정식 명칭은 “Pragmatic Play Limited“이며 국내에서는 영어 발음 등의 이유로 프래그마틱 플레이 혹은 프라그매틱 플레이 등으로 불려지기도 합니다. 하지만 영어 발음 표기 상 프라그마틱 플레이가 가장 정확한 발음이라고 할 수 있습니다. 잭팟은 수백만 달러의 가치가 있을 수 있으며, 그 금액은 항상 증가하고 있습니다. 인생을 바꾸는 돈을 벌 기회를 찾고 있다면 프라그마틱의 프로그레시브 잭팟 슬롯이 훌륭한 선택입니다. 프라그마틱 플레이(Pragmatic Play)는 매달 신작 슬롯과 라이브 게임쇼를 쉴 새 없이 내놓는 브랜드라, 한 번 뉴스를 놓치면 금방 정보가 뒤처지기 쉽습니다.
Sweet Bonanza는 달콤한 과일과 사탕을 테마로 한 슬롯 게임으로, 클러스터 승리 시스템과 텀블(Tumble) 기능을 통해 연속적인 승리를 노릴 수 있습니다. 높은 변동성과 무제한 승수(Multiplier) 기능이 추가된 Sweet Bonanza Xmas 등의 변형 게임도 제공합니다. 일부 슬롯에서는 페이라인의 수가 고정되어 있어 변경할 수 없지만, 다른 슬롯에서는 선택적으로 페이라인을 활성화/비활성화 할 수 있습니다.
또한 사회적 책임에 대한 약속의 일환으로 GambleAware 프로그램을 전적으로 지원합니다. 당사의 절차는 당사의 기술과 시스템이 업계, 고객 및 규제 관할권의 요구 사항과 표준을 충족하는지 확인하기 위해 지속적으로 검토하고있습니다. 중변동성 슬롯 게임은 중간 정도의 빈도로 보상을 제공하며, 보상의 크기도 중간 정도입니다.
프라그마틱 플레이는 250개 이상의 게임으로 구성된 멀티 어워드 수상 슬롯 포트폴리오를 보유하고 있으며, 다양한 화폐와 33개 언어 옵션으로 모든 주요 시장에 서비스를 제공합니다. 프라그마틱 플레이의 정품 슬롯은 공정한 결과를 보장하기 위해 RNG(Random Number Generator, 난수 생성기)를 기반으로 운영됩니다. 이는 모든 플레이어가 동일한 확률로 승리할 기회를 가지도록 설계된 시스템으로, 정품 슬롯에서는 외부 개입 없이 공정한 게임 진행이 가능합니다.
반대로, 낮은 변동성의 슬롯은 더 작은 상금을 제공하지만, 더 자주 이기게 됩니다. 와일드 승수, 불타오르는 보너스 게임, 그리고 최대 10,000배의 승리가 지하 세계에서 여러분을 기다립니다. 프라그마틱의 테이블 게임은 초보자들에게도 친근하면서도 숙련된 플레이어에게는 또 다른 매력을 선사하죠. 프라그마틱 슬롯들은 쉬운 플레이 방식과 최고의 RTP(Return to Player, 환수율)를 자랑하면서도 그래픽과 효과음에서 눈과 귀를 모두 사로잡죠. 현재 전 세계 500개 이상의 카지노 브랜드와 파트너십을 맺고 있으며, 이는 업계에서 상당한 영향력을 가지고 있다는 증거입니다. 특히 Bet365, 888 Casino, LeoVegas 등 글로벌 메이저 사이트들과의 협력 관계는 브랜드 신뢰성을 크게 높이고 있습니다.
잭팟은 누군가 특정 기호 조합에 도달하면 당첨되며, 잭팟 금액은 게임을 플레이한 플레이어 수에 따라 결정됩니다. 기능의 핵심은 프리스핀에서 등장하는 와일드가 해당 위치에 감전된 프레임(프레임 와일드)을 남긴다는 점이다. 이 프레임에 붙는 승수 값은 후속 프리스핀마다 1씩 증가하며, 기존 프레임 위치에 와일드가 다시 랜딩되면 승수가 추가로 1 더 증가하는 식으로 강화될 수 있다. 즉, 보너스 초반에 좋은 자리 프레임이 박히면, 뒤로 갈수록 같은 칸의 기대치가 계속 올라가는 타입이다.
아니요, 프라그마틱 플레이의 데모 모드와 실전 플레이의 RTP는 동일합니다. 데모 모드에서 게임의 구조와 변동성을 충분히 파악한 후 실전 플레이를 시작하는 것을 권장합니다. 세 게임 모두 연말 기준으로 로비 상단에 자주 노출되는 편이니, 프라그마틱 신작 위주로 즐기는 분들은 2026년 즐길 만한 신규 게임 후보로 체크해 두시면 좋습니다. 개인적으로는 세 게임 중 ‘장기 세션용’으로 가장 무난하다고 보는 슬롯입니다. 해산물 레스토랑을 배경으로 한 테마인데, 특수 기능을 억지로 많이 넣기보다는 와일드, 프리스핀, 멀티플라이어를 중심으로 흐름을 단순하게 가져갑니다.
슬롯 게임을 즐길 때 중요한 점 중 하나는 적절한 예산 관리를 하는 것입니다. 프라그마틱 슬롯 게임은 다양한 베팅 옵션을 제공하므로, 자신의 예산에 맞는 베팅 금액을 설정하고 이를 철저히 지키는 것이 중요합니다. 무리한 베팅은 큰 손실을 초래할 수 있으므로, 자신이 감당할 수 있는 범위 내에서 즐기는 것이 바람직합니다. 프라그마틱 슬롯은 다양한 베팅 옵션을 제공하여 초보자부터 고액 베팅을 즐기는 고수 플레이어까지 모두 만족시킬 수 있습니다. 대부분의 슬롯 게임은 낮은 최소 베팅 금액에서부터 높은 최대 베팅 금액까지 설정할 수 있어, 다양한 예산의 플레이어들이 게임을 즐길 수 있도록 배려하고 있습니다.
집에 있든 밖에서 휴식을 취하든 어디서나 슬롯을 돌릴 수 있어 제한 없이 즐길 수 있습니다. 무료 슬롯 게임은 언제든지 접속하여 플레이할 수 있는 유연성을 제공합니다. 이는 일정에 구애받지 않고 자유롭게 게임을 즐길 수 있게 하며, 짧은 휴식 시간이나 여가 시간을 이용하여 즐길 수 있습니다. 이러한 접근성은 게임을 더욱 매력적으로 만들며, 플레이어가 게임을 통해 스트레스 해소를 할 수 있게 합니다. 모든 프라그마틱 플레이 슬롯머신 게임은 모바일 친화적으로 출시되었습니다.
]]>