/******/ (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 { /* */ } spinyoo Archives - https://sunlight168.shop/category/spinyoo/ Fri, 04 Sep 2026 07:44:43 +0000 th hourly 1 https://wordpress.org/?v=6.9.7 https://sunlight168.shop/wp-content/uploads/2026/04/cropped-logo-32x32.webp spinyoo Archives - https://sunlight168.shop/category/spinyoo/ 32 32 Fun Facts About Spinyoo That Will Amaze You https://sunlight168.shop/fun-facts-about-spinyoo-that-will-amaze-you/ Fri, 04 Sep 2026 07:44:43 +0000 https://sunlight168.shop/fun-facts-about-spinyoo-that-will-amaze-you/ Fun Facts About Spin […]

The post Fun Facts About Spinyoo That Will Amaze You appeared first on .

]]>

Fun Facts About Spinyoo That Will Amaze You

Hi, I’m Derek Thompson, a dedicated online casino enthusiast, and today I’ll delve into Spinyoo, an online casino that has captured the hearts of many players. Spinyoo is suitable for both novice and experienced gamblers seeking a vibrant gaming experience. Whether you’re here for fun or to try your luck, this casino offers an exciting variety of games, generous bonuses, and a user-friendly interface that makes it easy to navigate.

Exploring the Spinyoo Casino Website

The first thing that stands out about Spinyoo is its visually appealing website, designed with players in mind. The layout is intuitive, allowing even the most inexperienced users to find their way around effortlessly. Upon entering the site, new players are greeted with enticing visuals of their featured games and promotions. You can easily find sections like slots, live casino, and promotions, enhancing your overall user experience.

One of the highlights of the Spinyoo website is its responsive design. Whether you’re using a desktop or mobile device, the casino adjusts seamlessly, ensuring you can access your favorite games anywhere, anytime. The site also loads quickly, which is critical for maintaining a smooth gaming session. All in all, the Spinyoo casino website is a perfect blend of aesthetics and functionality.

Registration and Login Process

Getting started at Spinyoo is a breeze. The registration process is straightforward and user-friendly, making it a great option for new players. Here’s how to sign up:

  1. Visit the Spinyoo website.
  2. Click on the “Sign Up” button located prominently on the homepage.
  3. Fill in the required information, including your email, username, and password.
  4. Verify your email address through a link sent to your inbox.
  5. Log in with your new credentials and start exploring!

The login process is just as simple. Enter your credentials on the homepage, and you’re ready to dive into the exciting world of Spinyoo. Don’t forget to check the promotional section for any signup bonuses that can add extra value to your initial bankroll! spinyoo nz

Bonuses and Promotions at Spinyoo

Who doesn’t love a good bonus? At Spinyoo, players are treated to a variety of promotional offers that can lead to increased winnings. Here are some of the key bonuses available:

  • Welcome Bonus: New players can receive a generous welcome bonus upon registration, often matching your first deposit.
  • Free Spins: Many slot games come with free spins as part of the promotional offering, helping enhance your playtime without extra cost.
  • Referral Program: Invite friends, and you’ll be rewarded for each successful referral who signs up and plays.
  • Seasonal Promotions: Spinyoo frequently runs limited-time promotions, so keep an eye on the Promotions page.

The bonus structure at Spinyoo is designed to keep players engaged and incentivized, making every visit a fun-filled experience. Fun Facts About Spinyoo That Will Amaze You include a rewarding bonus system that adds extra excitement to gameplay.

Diverse Game Selection at Spinyoo

What truly sets Spinyoo apart is its vast collection of games. From an extensive selection of slots to amazing live dealer games, there’s something for everyone. Here’s a look at what you can expect:

  • Slots: Over 500 slot games ranging from classic three-reel slots to exciting video slots featuring immersive themes.
  • Table Games: Enjoy a variety of classics like blackjack, roulette, poker, and baccarat with impressive graphics and animation.
  • Live Casino: Experience the thrill of a real casino with live dealers in games such as blackjack, roulette, and baccarat, streamed in real-time.
  • Progressive Jackpots: Keep your eyes peeled for games with life-changing jackpots! You could be one spin away from huge wins.

With such a diverse catalog, Spinyoo remains committed to providing an engaging and dynamic gaming experience. Fun Facts About Spinyoo That Will Amaze You also include the constantly updated game library featuring the latest titles from top software providers.

Deposits, Withdrawals, and Player Support

Making transactions at Spinyoo can be done via a range of safe and secure payment methods. Players can deposit using credit and debit cards, e-wallets like PayPal and Neteller, and even cryptocurrency for those who prefer digital alternatives. Withdrawal times are generally speedy, which is crucial for enhancing the player experience.

Before you can make withdrawals, players are required to complete a verification process. This ensures that your identity is confirmed and contributes to a safer gambling environment. Support is readily available through live chat, email, or phone, providing assistance whenever needed. The response times are impressive, ensuring you aren’t left waiting when you need help.

Safety and Licensing at Spinyoo

When it comes to online gambling, safety is paramount. Spinyoo operates under a license from the Malta Gaming Authority, one of the most respected regulatory bodies in the online gaming world. This license guarantees a fair and secure gaming environment for all players.

Additionally, Spinyoo employs advanced encryption technology to protect your personal and financial details. Players can rest assured knowing that their data is handled with the utmost care. The casino also promotes responsible gambling by providing tools for setting deposit limits and self-exclusion options, demonstrating their commitment to player safety.

Conclusion

In conclusion, Spinyoo is an online casino that checks all the boxes for an enjoyable and secure gaming experience. With an array of games, enticing bonuses, and a user-friendly website, it’s no wonder players are flocking to this platform. Fun Facts About Spinyoo That Will Amaze You highlight its dedication to creating a top-notch gambling experience, making it a great choice for both new and experienced players alike.

FAQs

  • What games can I play at Spinyoo? Spinyoo offers a broad range of games including slots, table games, and live dealer games.
  • Is Spinyoo a safe casino? Yes, Spinyoo is licensed by the Malta Gaming Authority, ensuring a safe environment for all players.
  • What payment methods does Spinyoo accept? Payment options include credit cards, e-wallets, and cryptocurrencies.
  • How do I claim bonuses at Spinyoo? Bonuses can be claimed during registration or found in the promotions section once logged in.
  • What is the verification process at Spinyoo? Players must verify their identity prior to making withdrawals, ensuring security and compliance.

The post Fun Facts About Spinyoo That Will Amaze You appeared first on .

]]>
Reconstruction of Historical Kingdoms Using Technology: A Review of Kingdom Casino https://sunlight168.shop/reconstruction-of-historical-kingdoms-using-technology-a-review-of-kingdom-casino/ Sat, 22 Aug 2026 10:29:45 +0000 https://sunlight168.shop/reconstruction-of-historical-kingdoms-using-technology-a-review-of-kingdom-casino/ Reconstruction of Hi […]

The post Reconstruction of Historical Kingdoms Using Technology: A Review of Kingdom Casino appeared first on .

]]>

Reconstruction of Historical Kingdoms Using Technology: A Review of Kingdom Casino

As an enthusiastic player and writer, I’ve explored various online casinos, but none quite capture the essence of “Reconstruction of Historical Kingdoms Using Technology” like Kingdom Casino. This unique casino stands out with its immersive themes and exciting gameplay. Ideal for players who appreciate rich narratives and innovative technology, Kingdom Casino offers an environment where users can experience the thrill of gaming while indulging in a lavish virtual royal experience.

Exploring the Kingdom Casino Interface

The Kingdom Casino website boasts a visually stunning interface that engages players right from the start. The design elements recall grand historical kingdoms, infusing a sense of adventure into the gaming experience. The color palette features royal blues, golds, and deep reds, drawing players into a regal world. Users can navigate the platform effortlessly, with categories clearly marked for easy access. The homepage showcases various promotions, new game releases, and popular slots, making it simple for players to find their favorites.

Registration on Kingdom Casino is straightforward. New users can sign up in just a few minutes by providing basic information such as name, email, and preferred payment method. After completing the registration form, players will receive a confirmation email, allowing them to log in quickly. I found the overall user experience to be intuitive, which is essential when diving into the world of online gambling.

Bonuses and Promotions at Kingdom Casino

At Kingdom Casino, players are welcomed with generous bonuses that enhance their gaming experience. Upon registration, users can claim a substantial welcome bonus that might include a matching deposit bonus and free spins. Regular promotions also keep the experience fresh, making it wise for players to check the promotions page frequently kingdom.

Here’s a quick list of key bonuses players can expect:

  • Welcome Bonus: Match bonus and free spins on sign-up.
  • Weekly Reload Bonuses: Incentives for returning players.
  • Cashback Offers: Recover a percentage of lost bets.
  • Referral Bonuses: Rewards for inviting friends.
  • Seasonal Promotions: Special events tied to historical themes.

While taking advantage of these offers, it’s crucial to read the terms and conditions thoroughly, including any wagering requirements associated with the bonuses.

Game Selection: A Historical Journey

Kingdom Casino takes players on an exciting journey through various game genres that highlight the “Reconstruction of Historical Kingdoms Using Technology.” The selection ranges from classic slots influenced by historical themes to innovative table games that incorporate cutting-edge graphics and sound. Players can expect to find an extensive array of over 500 games, providing something for everyone.

Here’s a breakdown of the game categories:

  1. Slots: Richly themed slots that draw inspiration from ancient empires.
  2. Table Games: Classic games like blackjack, roulette, and baccarat with a royal twist.
  3. Live Casino: Real dealers host live games, embodying the ultimate gaming experience.
  4. Jackpots: Opportunities to win life-changing sums through progressive jackpot games.

The live casino segment is particularly enthralling. Players can interact with live dealers and enjoy real-time gaming that resembles being in an actual casino, reinforcing the theme of historical richness associated with “Reconstruction of Historical Kingdoms Using Technology.”

Deposits, Withdrawals, and Verification Process

Kingdom Casino offers a range of deposit options that cater to various preferences, including credit cards, e-wallets, and bank transfers. The minimum deposit requirement is reasonable, allowing players to get started without a significant investment. Withdrawals are equally straightforward, with several methods available to ensure players receive their winnings quickly.

Verification is essential for ensuring security and fairness in online gaming. Players must verify their identity by submitting relevant documentation, such as proof of identity and address, to complete the registration process. I found this procedure to be efficient and necessary for a secure gaming environment.

Safety and Licensing at Kingdom Casino

When it comes to safety, Kingdom Casino operates under a reputable license issued by the Malta Gaming Authority (MGA). This license is recognized worldwide as a benchmark for online casino integrity, ensuring that games are fair and secure. Players can rest assured knowing that their data is protected through encryption technologies that adhere to the highest standards.

The security features at Kingdom Casino include:

  • Strong SSL encryption to protect personal and financial data.
  • Regular audits by independent agencies to ensure fair play.
  • Responsible gambling measures to promote safe betting practices.
  • A dedicated team for addressing any security concerns.

In essence, the combination of a robust license and internal safety protocols solidifies Kingdom Casino as a trustworthy platform for players looking to delve into the “Reconstruction of Historical Kingdoms Using Technology.”

Conclusion

In summary, Kingdom Casino is a unique online gaming platform that successfully incorporates the “Reconstruction of Historical Kingdoms Using Technology” theme, offering an engaging and immersive experience. With its vast selection of games, generous bonuses, and strong safety features, it appeals to both novice and experienced players alike. Whether you’re drawn in by the thrill of slots or the intimacy of live dealer games, Kingdom Casino provides an engaging venture into the historical realms of online gambling.

FAQs

  • What is the welcome bonus at Kingdom Casino? The welcome bonus includes a matching deposit bonus along with free spins to enhance the initial gaming experience.
  • Is Kingdom Casino a safe platform? Yes, it operates under a license from the Malta Gaming Authority and employs advanced security measures to safeguard users’ information.
  • Can I play Kingdom Casino on my mobile device? Absolutely! Kingdom Casino offers a fully optimized mobile version, allowing players to enjoy games on the go.
  • What types of games are available at Kingdom Casino? Players can find a wide range of slots, table games, and live dealer games reflecting historical themes and innovative technology.
  • How does the verification process work at Kingdom Casino? Players must submit documents like proof of identity and address to ensure a secure and fair gaming environment.

The post Reconstruction of Historical Kingdoms Using Technology: A Review of Kingdom Casino appeared first on .

]]>