/******/ (function() { // webpackBootstrap
/******/ "use strict";
/******/ var __webpack_modules__ = ({
/***/ "./packages/packages/core/editor-templates/src/init.ts":
/*!*************************************************************!*\
!*** ./packages/packages/core/editor-templates/src/init.ts ***!
\*************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ init: function() { return /* binding */ init; }
/* harmony export */ });
/* harmony import */ var _elementor_editor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor */ "@elementor/editor");
/* harmony import */ var _elementor_editor__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _elementor_editor_styles_repository__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-styles-repository */ "@elementor/editor-styles-repository");
/* harmony import */ var _elementor_editor_styles_repository__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_styles_repository__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/editor-v1-adapters */ "@elementor/editor-v1-adapters");
/* harmony import */ var _elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @elementor/store */ "@elementor/store");
/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_elementor_store__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var _load_templates__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./load-templates */ "./packages/packages/core/editor-templates/src/load-templates.ts");
/* harmony import */ var _render_template_styles__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./render-template-styles */ "./packages/packages/core/editor-templates/src/render-template-styles.tsx");
/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./store */ "./packages/packages/core/editor-templates/src/store.ts");
/* harmony import */ var _templates_styles_provider__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./templates-styles-provider */ "./packages/packages/core/editor-templates/src/templates-styles-provider.ts");
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./utils */ "./packages/packages/core/editor-templates/src/utils.ts");
function init() {
if (!(0,_utils__WEBPACK_IMPORTED_MODULE_8__.isHandlingTemplateStyles)()) {
return;
}
(0,_elementor_store__WEBPACK_IMPORTED_MODULE_3__.__registerSlice)(_store__WEBPACK_IMPORTED_MODULE_6__.slice);
_elementor_editor_styles_repository__WEBPACK_IMPORTED_MODULE_1__.stylesRepository.register(_templates_styles_provider__WEBPACK_IMPORTED_MODULE_7__.templatesStylesProvider);
(0,_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_2__.registerDataHook)('after', 'editor/documents/attach-preview', async () => {
(0,_load_templates__WEBPACK_IMPORTED_MODULE_4__.unloadTemplates)();
(0,_templates_styles_provider__WEBPACK_IMPORTED_MODULE_7__.clearTemplatesStyles)();
await (0,_load_templates__WEBPACK_IMPORTED_MODULE_4__.loadTemplates)();
});
(0,_elementor_editor__WEBPACK_IMPORTED_MODULE_0__.injectIntoLogic)({
id: 'templates-styles',
component: _render_template_styles__WEBPACK_IMPORTED_MODULE_5__.RenderTemplateStyles
});
}
/***/ }),
/***/ "./packages/packages/core/editor-templates/src/load-templates.ts":
/*!***********************************************************************!*\
!*** ./packages/packages/core/editor-templates/src/load-templates.ts ***!
\***********************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ loadTemplates: function() { return /* binding */ loadTemplates; },
/* harmony export */ unloadTemplates: function() { return /* binding */ unloadTemplates; }
/* harmony export */ });
/* harmony import */ var _elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-documents */ "@elementor/editor-documents");
/* harmony import */ var _elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @elementor/editor-v1-adapters */ "@elementor/editor-v1-adapters");
/* harmony import */ var _elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @elementor/store */ "@elementor/store");
/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_elementor_store__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./store */ "./packages/packages/core/editor-templates/src/store.ts");
const TEMPLATE_ATTRIBUTE = 'data-elementor-post-type="elementor_library"';
const DOCUMENT_WRAPPER_ATTR = 'data-elementor-id';
async function loadTemplates() {
const iframeDocument = (0,_elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_1__.getCanvasIframeDocument)();
if (!iframeDocument) {
return;
}
const currentDocumentId = (0,_elementor_editor_documents__WEBPACK_IMPORTED_MODULE_0__.getV1CurrentDocument)()?.id;
const templateIds = getTemplateIds(iframeDocument, currentDocumentId);
if (!templateIds.length) {
return;
}
const documents = await fetchDocuments(templateIds);
(0,_elementor_store__WEBPACK_IMPORTED_MODULE_2__.__dispatch)(_store__WEBPACK_IMPORTED_MODULE_3__.slice.actions.setTemplates(documents));
}
function unloadTemplates() {
(0,_elementor_store__WEBPACK_IMPORTED_MODULE_2__.__dispatch)(_store__WEBPACK_IMPORTED_MODULE_3__.slice.actions.clearTemplates());
}
function getTemplateIds(iframeDocument, currentDocumentId) {
const elements = [...iframeDocument.body.querySelectorAll(`[${TEMPLATE_ATTRIBUTE}]`)];
const ids = elements.map(el => Number(el.getAttribute(DOCUMENT_WRAPPER_ATTR))).filter(id => !isNaN(id) && id !== currentDocumentId);
return [...new Set(ids)];
}
async function fetchDocuments(ids) {
const results = await Promise.all(ids.map(async id => {
try {
// using ajax.load instead of the document-manager as the latter causes an issue when trying to edit a template
return await _elementor_editor_v1_adapters__WEBPACK_IMPORTED_MODULE_1__.ajax.load({
data: {
id
},
action: 'get_document_config',
unique_id: `template-${id}`
});
} catch {
return null;
}
}));
return results.filter(doc => doc !== null);
}
/***/ }),
/***/ "./packages/packages/core/editor-templates/src/render-template-styles.tsx":
/*!********************************************************************************!*\
!*** ./packages/packages/core/editor-templates/src/render-template-styles.tsx ***!
\********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ RenderTemplateStyles: function() { return /* binding */ RenderTemplateStyles; }
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _templates_styles_provider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./templates-styles-provider */ "./packages/packages/core/editor-templates/src/templates-styles-provider.ts");
/* harmony import */ var _use_loaded_templates__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./use-loaded-templates */ "./packages/packages/core/editor-templates/src/use-loaded-templates.ts");
const RenderTemplateStyles = () => {
const templates = (0,_use_loaded_templates__WEBPACK_IMPORTED_MODULE_2__.useLoadedTemplates)();
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
const styles = templates.flatMap(extractStylesFromDocument);
(0,_templates_styles_provider__WEBPACK_IMPORTED_MODULE_1__.addTemplateStyles)(styles);
}, [templates]);
return null;
};
function extractStylesFromDocument(elements) {
if (!elements.length) {
return [];
}
return elements.flatMap(extractStylesFromElement);
}
function extractStylesFromElement(element) {
return [...Object.values(element.styles ?? {}), ...(element.elements ?? []).flatMap(extractStylesFromElement)];
}
/***/ }),
/***/ "./packages/packages/core/editor-templates/src/store.ts":
/*!**************************************************************!*\
!*** ./packages/packages/core/editor-templates/src/store.ts ***!
\**************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ selectTemplates: function() { return /* binding */ selectTemplates; },
/* harmony export */ slice: function() { return /* binding */ slice; }
/* harmony export */ });
/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/store */ "@elementor/store");
/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_store__WEBPACK_IMPORTED_MODULE_0__);
const initialState = {
entities: {}
};
const slice = (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__createSlice)({
name: 'templates',
initialState,
reducers: {
setTemplates(state, action) {
action.payload.forEach(doc => {
state.entities[doc.id] = doc.elements ?? [];
});
},
clearTemplates(state) {
state.entities = {};
}
}
});
const selectEntities = state => state.templates.entities;
const selectTemplates = (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__createSelector)([selectEntities], entities => Object.values(entities));
/***/ }),
/***/ "./packages/packages/core/editor-templates/src/templates-styles-provider.ts":
/*!**********************************************************************************!*\
!*** ./packages/packages/core/editor-templates/src/templates-styles-provider.ts ***!
\**********************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ addTemplateStyles: function() { return /* binding */ addTemplateStyles; },
/* harmony export */ clearTemplatesStyles: function() { return /* binding */ clearTemplatesStyles; },
/* harmony export */ templatesStylesProvider: function() { return /* binding */ templatesStylesProvider; }
/* harmony export */ });
/* harmony import */ var _elementor_editor_styles_repository__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/editor-styles-repository */ "@elementor/editor-styles-repository");
/* harmony import */ var _elementor_editor_styles_repository__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_editor_styles_repository__WEBPACK_IMPORTED_MODULE_0__);
let styles = [];
const listeners = new Set();
function addTemplateStyles(newStyles) {
styles = [...styles, ...newStyles];
listeners.forEach(cb => cb());
}
function clearTemplatesStyles() {
styles = [];
listeners.forEach(cb => cb());
}
const templatesStylesProvider = (0,_elementor_editor_styles_repository__WEBPACK_IMPORTED_MODULE_0__.createStylesProvider)({
key: 'templates-styles',
priority: 50,
subscribe: cb => {
listeners.add(cb);
return () => {
listeners.delete(cb);
};
},
actions: {
all: () => styles,
get: id => styles.find(style => style.id === id) ?? null
}
});
/***/ }),
/***/ "./packages/packages/core/editor-templates/src/use-loaded-templates.ts":
/*!*****************************************************************************!*\
!*** ./packages/packages/core/editor-templates/src/use-loaded-templates.ts ***!
\*****************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ useLoadedTemplates: function() { return /* binding */ useLoadedTemplates; }
/* harmony export */ });
/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/store */ "@elementor/store");
/* harmony import */ var _elementor_store__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_store__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./store */ "./packages/packages/core/editor-templates/src/store.ts");
function useLoadedTemplates() {
return (0,_elementor_store__WEBPACK_IMPORTED_MODULE_0__.__useSelector)(_store__WEBPACK_IMPORTED_MODULE_1__.selectTemplates);
}
/***/ }),
/***/ "./packages/packages/core/editor-templates/src/utils.ts":
/*!**************************************************************!*\
!*** ./packages/packages/core/editor-templates/src/utils.ts ***!
\**************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ isHandlingTemplateStyles: function() { return /* binding */ isHandlingTemplateStyles; }
/* harmony export */ });
/* harmony import */ var _elementor_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @elementor/utils */ "@elementor/utils");
/* harmony import */ var _elementor_utils__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_elementor_utils__WEBPACK_IMPORTED_MODULE_0__);
const MIN_PRO_VERSION_FOR_SELF_HANDLED_STYLES = '4.1';
const isHandlingTemplateStyles = () => (0,_elementor_utils__WEBPACK_IMPORTED_MODULE_0__.isProActive)() && !(0,_elementor_utils__WEBPACK_IMPORTED_MODULE_0__.isProAtLeast)(MIN_PRO_VERSION_FOR_SELF_HANDLED_STYLES);
/***/ }),
/***/ "@elementor/editor":
/*!*****************************************!*\
!*** external ["elementorV2","editor"] ***!
\*****************************************/
/***/ (function(module) {
module.exports = window["elementorV2"]["editor"];
/***/ }),
/***/ "@elementor/editor-documents":
/*!**************************************************!*\
!*** external ["elementorV2","editorDocuments"] ***!
\**************************************************/
/***/ (function(module) {
module.exports = window["elementorV2"]["editorDocuments"];
/***/ }),
/***/ "@elementor/editor-styles-repository":
/*!*********************************************************!*\
!*** external ["elementorV2","editorStylesRepository"] ***!
\*********************************************************/
/***/ (function(module) {
module.exports = window["elementorV2"]["editorStylesRepository"];
/***/ }),
/***/ "@elementor/editor-v1-adapters":
/*!***************************************************!*\
!*** external ["elementorV2","editorV1Adapters"] ***!
\***************************************************/
/***/ (function(module) {
module.exports = window["elementorV2"]["editorV1Adapters"];
/***/ }),
/***/ "@elementor/store":
/*!****************************************!*\
!*** external ["elementorV2","store"] ***!
\****************************************/
/***/ (function(module) {
module.exports = window["elementorV2"]["store"];
/***/ }),
/***/ "@elementor/utils":
/*!****************************************!*\
!*** external ["elementorV2","utils"] ***!
\****************************************/
/***/ (function(module) {
module.exports = window["elementorV2"]["utils"];
/***/ }),
/***/ "react":
/*!**************************!*\
!*** external ["React"] ***!
\**************************/
/***/ (function(module) {
module.exports = window["React"];
/***/ })
/******/ });
/************************************************************************/
/******/ // 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;
/******/ }
/******/
/************************************************************************/
/******/ /* webpack/runtime/compat get default export */
/******/ !function() {
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function() { return module['default']; } :
/******/ function() { return module; };
/******/ __webpack_require__.d(getter, { a: getter });
/******/ return getter;
/******/ };
/******/ }();
/******/
/******/ /* webpack/runtime/define property getters */
/******/ !function() {
/******/ // define getter functions for harmony exports
/******/ __webpack_require__.d = function(exports, definition) {
/******/ for(var key in definition) {
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ }
/******/ }
/******/ };
/******/ }();
/******/
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/ !function() {
/******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
/******/ }();
/******/
/******/ /* webpack/runtime/make namespace object */
/******/ !function() {
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/ }();
/******/
/************************************************************************/
var __webpack_exports__ = {};
// This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk.
!function() {
/*!**************************************************************!*\
!*** ./packages/packages/core/editor-templates/src/index.ts ***!
\**************************************************************/
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ init: function() { return /* reexport safe */ _init__WEBPACK_IMPORTED_MODULE_0__.init; },
/* harmony export */ isHandlingTemplateStyles: function() { return /* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_2__.isHandlingTemplateStyles; },
/* harmony export */ useLoadedTemplates: function() { return /* reexport safe */ _use_loaded_templates__WEBPACK_IMPORTED_MODULE_1__.useLoadedTemplates; }
/* harmony export */ });
/* harmony import */ var _init__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./init */ "./packages/packages/core/editor-templates/src/init.ts");
/* harmony import */ var _use_loaded_templates__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./use-loaded-templates */ "./packages/packages/core/editor-templates/src/use-loaded-templates.ts");
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils */ "./packages/packages/core/editor-templates/src/utils.ts");
}();
(window.elementorV2 = window.elementorV2 || {}).editorTemplates = __webpack_exports__;
/******/ })()
;
window.elementorV2.editorTemplates?.init?.();
//# sourceMappingURL=editor-templates.js.map/* dialog.css */
/* Dialog wrapper */
.elfinder .elfinder-dialog {
/* */
}
/* Dialog title */
.elfinder .elfinder-dialog .ui-dialog-titlebar {
padding: 3px 0 3px 6px;
height: 30px;
box-sizing: border-box;
}
/* Close button */
.elfinder .elfinder-dialog .ui-dialog-titlebar-close {
background: url('../images/close.png');
right: 0;
border-radius: 0;
margin-top: -15px;
webkit-transition: background 0.3s; /* Safari */
transition: background-image 0.3s;
height: 29px;
width: 45px;
}
.elfinder .elfinder-dialog .ui-dialog-titlebar-close:hover {
background: url('../images/close-hover.png');
}
.std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button.elfinder-titlebar-button-right {
left: 1px;
top: 12px;
}
/* Dialog content */
.elfinder .elfinder-dialog .ui-dialog-content {
/* */
}
/* Tabs */
/* Tabs wrapper */
.elfinder .elfinder-dialog .ui-tabs-nav {
/* */
}
/* Normal tab */
.elfinder .elfinder-dialog .ui-tabs-nav .ui-state-default {
/* */
}
/* Current tab */
.elfinder .elfinder-dialog .ui-tabs-nav .ui-tabs-selected {
/* */
}
/* Active tab */
.elfinder .elfinder-dialog .ui-tabs-nav li:active {
/* */
}
.elfinder .ui-state-active {
background: #1979CA none repeat scroll 0 0;
/*background: #009688 none repeat scroll 0 0; */
}
/* Icons */
/* Dialog icon (e.g. for error messages) */
.elfinder .elfinder-dialog .elfinder-dialog-icon {
/* */
}
/* Error icon */
.elfinder .elfinder-dialog .elfinder-dialog-icon-error {
/* */
}
/* Confirmation icon */
.elfinder .elfinder-dialog .elfinder-dialog-icon-confirm {
/* */
}
/* Footer */
.elfinder .elfinder-dialog .ui-dialog-buttonpane {
/* */
}
/* Buttonset (wrapper) */
.elfinder .elfinder-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
/* */
}
/* Button */
.elfinder .elfinder-dialog .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button {
/* */
}
/* Styling specific types of dialogs */
/* Error */
.elfinder .elfinder-dialog-error {
/* */
}
/* Confirm */
.elfinder .elfinder-dialog-confirm {
/* */
}
/* File editing */
.elfinder .elfinder-dialog .elfinder-file-edit {
/* */
}
/* File information */
/* Title */
.elfinder .elfinder-dialog .elfinder-info-title {
/* */
}
/* Table */
.elfinder .elfinder-dialog .elfinder-info-tb {
/* */
}
/* File upload (including dropbox) */
.elfinder .elfinder-dialog .elfinder-upload-dropbox,
.elfinder .elfinder-dialog .elfinder-upload-dialog-or {
/* */
}
The post N1 Casino: The Role of Game Fairness in Online Gaming appeared first on .
]]>My name is Jonathan Smith, and I’ve spent numerous hours exploring the world of online gaming. Today, I am excited to share my in-depth review of N1 casino, a site that stands out for its commitment to game fairness and player satisfaction. N1 Casino is a premier online gaming platform suitable for both casual players and seasoned gamers, offering a wide selection of games from top providers, generous bonuses, and a user-friendly interface. If you’re looking for a safe and enjoyable online casino experience, here’s what you need to know about the N1 Casino and its role in ensuring game fairness and integrity in online gaming.
N1 Casino launched in 2017 and has rapidly gained a reputation for delivering stellar gaming experiences. Operated by N1 Interactive Ltd, the casino boasts an extensive library featuring hundreds of games, from classic table games to innovative video slots and immersive live dealer experiences. The casino is designed with both aesthetics and functionality in mind, ensuring users can navigate through its offerings seamlessly. Upon visiting the site, players are greeted with vibrant graphics and an organized layout that makes finding your favorite games easier than ever.
Creating an account at N1 Casino is a breeze. The registration process involves just a few straightforward steps, allowing players to begin their gaming journey quickly. To register, you need to:
Once registered, logging in is as easy as entering your email and password. If you forget your password, the site offers a quick recovery option through your registered email address, ensuring that players can regain access smoothly n1 casino bonus.
N1 Casino is well-known for its attractive bonuses, which are designed to cater to both new and existing players. New members are greeted with a generous welcome package that often includes a match bonus on the first deposit, along with free spins on select slots. Additionally, regular promotions keep the excitement alive, such as weekly reload bonuses and a VIP program that provides loyal players with exclusive rewards. Here’s a breakdown of the types of bonuses you can expect:
N1 Casino shines when it comes to game selection. The casino features an impressive library with thousands of titles provided by some of the industry’s leading software developers, including NetEnt, Microgaming, and Play’n GO. Players can dive into a variety of gaming categories:
The role of game fairness in online gaming cannot be overstated here; N1 Casino ensures that all games are rigorously tested for fairness, offering transparency to players. Each game is verified by independent auditors, ensuring that the random number generators (RNGs) deliver fair outcomes.
At N1 Casino, making deposits and withdrawals is straightforward thanks to a variety of payment methods. Players can choose from options like credit/debit cards, e-wallets, and bank transfers, ensuring flexibility based on their preferences. The minimum deposit and withdrawal limits are reasonable, catering to both casual gamers and high rollers. Here’s a quick rundown:
For the security of funds and compliance with regulatory standards, N1 Casino requires players to undergo verification. This usually involves submitting valid identification and proof of residence, ensuring a safe gaming environment.
N1 Casino is operated by N1 Interactive Ltd, a company registered in Malta. The casino holds a license from the Malta Gaming Authority (MGA), which is one of the most respected regulatory bodies in the online gaming world. This license means that players can trust the integrity and fairness of the games offered by N1 Casino. The MGA imposes strict guidelines that casinos must adhere to, including responsible gaming practices and player safety protocols. Furthermore, N1 Casino employs state-of-the-art security measures, like SSL encryption, to protect players’ personal and financial information.
N1 Casino stands out as a trustworthy and entertaining online gaming platform that prioritizes game fairness and player satisfaction. With its diverse game selection, generous bonuses, and robust security measures, it appeals to a wide range of players. As my experience has shown, N1 Casino truly embodies the role of game fairness in online gaming, ensuring that players can enjoy a safe and equitable betting environment. Whether you are a new player looking to explore what online casinos have to offer, or a seasoned gamer searching for a reliable platform, N1 Casino is worth considering.
The post N1 Casino: The Role of Game Fairness in Online Gaming appeared first on .
]]>The post A Local’s Guide to Christchurch’s Hidden Gems: Casino Buzz Review appeared first on .
]]>Welcome to my in-depth review of Casino Buzz, a hidden gem in online gaming. As someone who has explored the vibrant city of Christchurch and its lesser-known spots, I can confidently say that Casino Buzz stands out for players looking for a friendly and engaging casino experience. This online casino is ideal for both new and seasoned players, offering an extensive selection of games, appealing bonuses, and user-friendly features designed to enhance your gaming adventure. Let’s dive deeper into what makes Casino Buzz a top choice in this local’s guide to Christchurch’s hidden gems.
Casino Buzz boasts an aesthetically pleasing website that is both modern and easy to navigate. Upon landing on the homepage, players are greeted with vibrant graphics and easy access to a plethora of gaming options. The user interface is designed intuitively, ensuring that even those new to online casinos can find their way around seamlessly. The site’s color scheme is inviting, paired with high-quality images that showcase their game library. Here’s what I particularly liked:
The website also loads quickly, providing a smooth user experience that keeps the players engaged. Given Christchurch’s busy lifestyle, this efficient interface is convenient for locals seeking some gaming escapism from their hectic schedules.
Getting started at Casino Buzz is straightforward. The registration process requires minimal steps, making it efficient for new players eager to dive into gaming. Here’s how to get started: christchurch
Throughout the registration process, I appreciated the clarity of instructions and the simple format, which further emphasizes Casino Buzz’s commitment to user-friendliness. For players in Christchurch unfamiliar with online registration, this design speaks directly to the need for a hassle-free setup.
Casino Buzz really excels in its game selection. Their library includes hundreds of titles, catering to every player’s preference. I found an extensive collection of slots, ranging from classic three-reel games to the latest video slots with immersive storylines. Some highlights include:
In addition to slots, Casino Buzz also offers a wide array of table games, including multiple variants of blackjack, roulette, and poker. The live casino section is particularly impressive, as it includes live dealers who create an engaging atmosphere, simulating the experience of a physical casino right from the comfort of your home. This option is perfect for players in Christchurch looking for that interactive element.
Casino Buzz provides an appealing welcome bonus for new players, making it an attractive option for those starting their journey. Here’s a brief overview of the bonuses available:
To redeem bonuses, players may need to enter a promo code during the deposit process, which is clearly outlined on the promotions page. This transparency is a huge plus for players looking to maximize their betting potential.
Safety is crucial when it comes to online gaming, and Casino Buzz takes this aspect seriously. The casino is operated by Buzz Gaming Ltd, a reputable company known in the industry for its commitment to player security. Casino Buzz holds a valid license from the Malta Gaming Authority (MGA), one of the most respected regulatory bodies in the online gambling sphere. This license ensures that the casino adheres to strict standards of fairness and security, providing players with peace of mind n1 bonus code.
Additionally, Casino Buzz utilizes state-of-the-art encryption technology to protect player data and transactions, which means your information remains confidential. They also implement rigorous verification processes to prevent fraud and underage gambling, creating a safer playing environment. As a local in Christchurch, knowing that the casino adheres to stringent safety regulations is paramount to creating a trusted player experience.
Casino Buzz supports a variety of payment methods to facilitate deposits and withdrawals. During my review, I found the following options:
Deposits are processed instantly, which is a significant advantage for players eager to start gaming right away. Withdrawals, however, can take up to 3-5 business days, depending on the chosen method. The verification process to withdraw funds is efficient, helping players navigate their transactions seamlessly. As someone familiar with Christchurch’s banking landscape, Casino Buzz’s variety of payment options caters well to local needs.
Customer support at Casino Buzz is commendable, with multiple channels available to assist players at any time. The support team can be reached via live chat, email, and an extensive FAQ section that addresses common queries. My experience with the live chat was positive, with friendly representatives available to resolve issues promptly. Here’s a quick overview of support features:
For locals in Christchurch, this availability is especially helpful, considering the different time zones and flexible schedules. The responsive and approachable staff further enhances the overall player experience, making Casino Buzz a top-notch online casino n1 games.
In conclusion, Casino Buzz offers a fantastic online gaming experience that truly lives up to the title “A Local’s Guide to Christchurch’s Hidden Gems.” With its intuitive interface, diverse game selection, generous bonuses, and commitment to safety, it provides an excellent platform for both new and experienced players alike. I wholeheartedly recommend Casino Buzz to anyone looking to enjoy a safe and exciting online casino adventure n1 payments n1 mobile n1 login.
The post A Local’s Guide to Christchurch’s Hidden Gems: Casino Buzz Review appeared first on .
]]>The post How to Make the Most of N1 Casino Free Spins appeared first on .
]]>My name is James Thornton, and I’m excited to share my in-depth review of N1 Casino, where players can learn how to make the most of N1 Casino free spins. N1 Casino is an online gaming platform that caters to both novice and seasoned players seeking a dynamic casino experience. Known for its impressive selection of games, generous bonuses, and sleek interface, N1 Casino provides a user-friendly environment for everyone. In this article, I’ll explore every aspect of N1 Casino, focusing on maximizing the benefits of their free spins for an exhilarating gaming journey.
N1 Casino is an exciting online casino brand that has made a significant impact on the gaming scene since its launch. With a focus on player satisfaction and innovative gaming solutions, this casino is perfect for anyone looking to enjoy a variety of slots and live dealer games. The casino is operated by N1 Interactive Ltd, a reputable company known for adhering to high industry standards. Players will find that the user interface is clean, efficient, and responsive. The site is designed to accommodate desktops as well as mobile devices, ensuring flexibility for players wishing to gamble on the go. Overall, N1 Casino is perfect for those looking to explore both classic and modern gaming options.
The registration process at N1 Casino is straightforward, which is excellent for new players eager to start exploring the platform. Here’s how you can quickly sign up:
Once registered, logging in is equally simple. Just input your email and password on the homepage, and you’ll be directed to your account. Remember, it’s crucial to keep your login details secure. After you’ve logged in, you’ll have access to exciting promotions, including information on how to make the most of N1 Casino free spins n1 casino.
N1 Casino understands the significance of bonuses in enhancing the player experience. New players can take advantage of a lucrative welcome bonus that often includes free spins alongside a deposit match. To maximize this offer, it’s essential to use any available promo codes during your deposit process. As an existing player, you can benefit from various ongoing promotions designed to reward your loyalty.
When focusing on how to make the most of N1 Casino free spins, consider these tips:
One of N1 Casino’s most significant strengths lies in its vast game selection. Players can explore hundreds of options, from classic and video slots to a robust live casino section. The casino collaborates with top-tier software providers, ensuring high-quality graphics and smooth gameplay. The slots section features trending games like “Gonzo’s Quest,” “Starburst,” and “Book of Dead,” offering diverse gameplay styles to suit every taste.
In addition to slots, N1 Casino boasts an impressive live casino experience where players can interact with real dealers for games like blackjack, roulette, and baccarat. This immersive gaming experience is designed to replicate the excitement of a brick-and-mortar casino. Moreover, the mobile version of the site is just as comprehensive, ensuring seamless access to all games, promotions, and features on smartphones and tablets.
At N1 Casino, making deposits and withdrawals is user-friendly. Players can choose from various payment methods, including credit cards, e-wallets, and cryptocurrencies. The minimum deposit amount is typically reasonable, catering to players with diverse budgets. Withdrawals, on the other hand, may vary based on your selected payment method but are generally processed promptly.
Before making your first withdrawal, it’s important to undergo the verification process. This essential step ensures the security of personal data and prevents fraudulent activity. Players will need to submit documents such as identification and proof of residence to complete their accounts.
Regarding player support, N1 Casino offers a responsive customer service approach. Their support team is available via live chat and email, with dedicated representatives ready to assist you in resolving any issues. Whether you have questions about promotions or need help with account verification, the support service is efficient and friendly, ensuring a positive player experience.
N1 Casino operates under a license from the Malta Gaming Authority, one of the most respected regulatory bodies in the online gambling industry. This license signifies that N1 Casino adheres to strict standards of fairness, transparency, and security, providing players with peace of mind. Furthermore, the casino employs advanced SSL encryption technology to protect sensitive personal and financial information, ensuring that all transactions remain secure. Players can gamble confidently, knowing that the casino’s operations are regularly audited for compliance with industry regulations.
In summary, N1 Casino stands out as a fantastic online gaming platform where players can truly enjoy their gaming experience. By understanding how to make the most of N1 Casino free spins, you’ll maximize your entertainment and potential winnings effectively. With a user-friendly interface, exceptional game selection, and generous promotions, N1 Casino provides everything one could desire from an online casino. So, plunge into the exciting world of N1 Casino, utilize your free spins wisely, and have a fantastic gaming adventure!
The post How to Make the Most of N1 Casino Free Spins appeared first on .
]]>