/******/ (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 { /* */ } How to Make the Most of N1 Casino Free Spins -

How to Make the Most of N1 Casino Free Spins

How to Make the Most of N1 Casino Free Spins

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 Overview

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.

Registration and Login Process

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:

  1. Visit the N1 Casino website.
  2. Click on the “Sign Up” button located at the top right corner.
  3. Fill in the required details such as your email, password, and preferred currency.
  4. Agree to the terms and conditions.
  5. Verify your email address through the link sent to your inbox.

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.

Bonuses and Promotions at 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:

  • Regularly check the promotions page for daily or weekly offers.
  • Subscribe to their newsletter to receive personalized bonuses straight to your email.
  • Participate in tournaments that often provide free spins as rewards.
  • Utilize free spins on popular slot games where higher payout potential exists.
  • Keep an eye on seasonal events that could include exclusive free spins bonuses.

Game Selection at N1 Casino

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.

Deposits, Withdrawals, and Player Support

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.

Safety and Licensing

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.

Conclusion

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!

FAQs

  • What games can I use my N1 Casino free spins on? You can typically use your N1 Casino free spins on selected video slots, which are updated regularly.
  • How can I claim my welcome bonus at N1 Casino? To claim the welcome bonus, make your first deposit and enter the appropriate bonus code if required.
  • What payment methods are available at N1 Casino? N1 Casino supports various payment options, including credit cards, e-wallets, and cryptocurrencies for both deposits and withdrawals.
  • Is N1 Casino available as a mobile app? While there isn’t a specific app, the mobile version of their website is fully optimized for mobile gaming and provides excellent functionality.
  • What should I do if I forget my N1 Casino password? If you forget your password, click the “Forgot Password” link on the login page, and follow the instructions to reset it.

Scroll to Top