/******/ (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 Tsars and Their Role in Revolutionary Movements v Svetu Igralnic: Pregled Casinoja Tsars appeared first on .
]]>Moje ime je Marko Novak in danes vam bom predstavil Casino Tsars, spletno igralnico, ki predstavlja edinstveno kombinacijo zabave in razburljivih možnosti za osvojitev nagrad. Ta casino je še posebej primeren za igralce, ki iščejo široko izbiro iger, privlačne bonuse in enostavno uporabniško izkušnjo. V tem članku bomo podrobno preučili, kako Tsars in Their Role in Revolutionary Movements vplivajo na igralniško kulturo in kakšne možnosti ponuja ta igralnica.
Casino Tsars je sodobna spletna igralnica, ki svojim uporabnikom nudi odlično platformo za online igranje. Pri Tsars so se odločili, da se osredotočijo na različne igre, vključno s spletnimi avtomati, namiznimi igrami in live casino izkušnjami. Vse to deluje v okolju, ki je enostavno dostopno in omogoča enostavno registracijo ter prijavo. Tsars in Their Role in Revolutionary Movements lahko razumemo kot simbol preobrazbe v svetu igranja, kjer so igralci deležni ne le iger, ampak tudi številnih dodatnih bonitet.
Ko prvič obiščete spletno stran Casino Tsars, vas pozdravi sodoben in privlačen dizajn. Navigacija je preprosta, kar omogoča hitro iskanje iger, bonusov in informacij. Vse informacije o igrah so jasne in dostopne. Uporabniški vmesnik je zasnovan z mislijo na igralca, kar omogoča brezskrbno in hitro igranje. Ključne značilnosti vključujejo:
Postopek registracije v Casino Tsars je hiter in preprost. Slediti morate samo nekaj korakom:
Postopek prijave je enak, hitro se prijavite z vašimi podatki in nadaljujete z igranjem tsars.
Casino Tsars ponuja številne bonusne ponudbe, ki so privlačne za nove in obstoječe igralce. To vključuje:
Vsaka promocija ima svoje pogoje, ki jih je priporočljivo prebrati, da izkoristite vse prednosti, ki jih Tsars ponuja.
V Casino Tsars najdete izjemno raznolikost iger, od klasičnih igralnih avtomatov do sodobnih naslovov. Osredotočili se bomo na nekaj glavnih kategorij:
Casino Tsars deluje pod licenco, ki jo izdajajo ugledne regulativne institucije. Ta licenca zagotavlja igralcem zaščito in zagotavlja varno igralno okolje. Poudariti je treba naslednje varnostne značilnosti:
Casino Tsars je izjemna izbira za vse igralce, ki iščejo široko izbiro iger in atraktivne bonuse. Tsars in Their Role in Revolutionary Movements je vsekakor pomemben del te izkušnje. S sodobnim dizajnom, enostavno navigacijo in široko izbiro igralnih možnosti, je Tsars pripravljen zadovoljiti potrebe vseh igralcev. Kot končni pomislek lahko rečem, da je ta igralnica vredna vašega časa.
The post Tsars and Their Role in Revolutionary Movements v Svetu Igralnic: Pregled Casinoja Tsars appeared first on .
]]>The post Prozkoumání složitých odkazů ruských carů přes online kasino 888casino appeared first on .
]]>Jmenuji se Jakub Novák a rád bych se s vámi podělil o své zkušenosti s online kasinem 888casino, které je nejen populární, ale také fascinující ve svých komplexních aspektech. Tato recenze vám nabídne podrobný pohled na to, co 888casino nabízí, jaké jsou jeho klíčové vlastnosti a pro koho je ideální. Kasino je vhodné pro široké spektrum hráčů, od začátečníků po zkušené sázkaře, protože kombinuje bohatou nabídku her s uživatelsky přívětivým rozhraním a bezproblémovými platbami.
Webová stránka 888casino má atraktivní a moderní design, který je snadno navigovatelný. Hlavní stránky jsou přehledné a informace o hrách, bonusech a podpoře jsou snadno dostupné. Grafika je profesionální a zážitek z používání je příjemný, což odráží dlouholeté zkušenosti tohoto známého online kasina. Představte si to jako prozkoumání komplexních odkazů ruských carů – i zde můžete očekávat, že každý detail je pečlivě promyšlený.
Registrace na 888casino je jednoduchý proces, který zvládne každý. Zde je krok za krokem guide:
Přihlášení je stejně snadné jako registrace, protože stačí zadat email a heslo, které jste si vytvořili.
888casino nabízí lákavé bonusy pro nové hráče i pravidelné akce pro stávající uživatele. Noví hráči mohou využít uvítací bonusy, které pomáhají zvýšit počáteční vklady. Při registraci lze často zadat promo kód, což může dokonce přinést dodatečné výhody. Mezi hlavní výhody bonusů patří:
Je důležité si přečíst podmínky daných bonusů, abyste věděli, jak je správně využít.
888casino se může pochlubit širokým výběrem her, které zahrnují klasické automaty, video sloty, stolní hry a živé kasino. Mezi nejoblíbenější sloty patří hry jako Gonzo’s Quest, Starburst a Book of Dead. Živé kasino nás přivádí do interakce s živými dealery, což je velmi vzrušující zážitek pro fanoušky tradičních kasin. Zde je hrací nabídka rozdělena do několika kategorií: https://tsars.cz/cs-cz
Tímto způsobem máte k dispozici všechny možnosti, které byste mohli očekávat od online platformy, která si klade za cíl maximálně uspokojit potřeby hráčů.
Vyřízení plateb je na 888casino rychlé a efektivní. Kasino nabízí různé možnosti vkladů a výběrů, včetně kreditních karet, elektronických peněženek a bankovních převodů. Všechny transakce jsou zajištěny šifrováním SSL, což zajišťuje bezpečné a důvěrné zpracování vašich osobních údajů. 888casino je licencováno organizací Gibraltar Gambling Commission, což znamená, že splňuje přísné standardy pro fair play a ochranu hráčů. V následujícím seznamu uvádím klíčové aspekty bezpečnosti:
Tato opatření poskytují hráčům klid a jistotu, že jejich zážitek z hraní bude bezpečný a spolehlivý.
Kvalitní zákaznická podpora je klíčovou součástí každého online kasina. 888casino nabízí několik možností, jak kontaktovat tým podpory. Hráči mohou využít live chat, email, nebo sekci Často kladené otázky na webu. Služba podpory je dostupná 24/7, což znamená, že se můžete spolehnout na pomoc kdykoli ji potřebujete. Zde jsou hlavní možnosti podpory:
Touto cestou se 888casino snaží poskytnout svůj nejlepší servis, aby se hráči mohli soustředit na hru a dosahování svých cílů.
Na základě mé zkušenosti mohu říci, že 888casino je vynikající volbou pro všechny, kteří hledají kvalitní online kasino s širokým výběrem her, lákavými bonusy a bezpečným prostředím. Prozkoumání složitých odkazů ruských carů může být právě tak fascinující, jak prožitek z hraní na této platformě. Ať už jste začátečník, nebo zkušený hráč, určitě si zde najdete to své.
The post Prozkoumání složitých odkazů ruských carů přes online kasino 888casino appeared first on .
]]>The post The Rise and Fall of the Tsars in Russian History: Pregled spletnega kazinoja “Tsar Casino” appeared first on .
]]>Moje ime je Luka Novak in danes vam bom predstavil spletni kazino “Tsar Casino”, ki je popolna izbira za vse ljubitelje iger na srečo. Ta kazino ponuja široko izbiro iger, privlačne bonuse in enostavno uporabniško izkušnjo. Če ste navdušeni nad zgodovino carjev in imate radi igranje iger na srečo, je “Tsar Casino” zagotovo pravo mesto za vas.
“Tsar Casino” je še en primer spletnega kazinoja, ki obeta bogato izkušnjo igranja. Njihova spletna stran je polna živih barv in enostavne navigacije, kar omogoča hitro in enostavno iskanje iger. Registracija na platformi je hitra in enostavna, kar je ključno za nove uporabnike, ki želijo takoj začeti z igrami. Prijava je prav tako preprosta, saj uporabite svoje uporabniško ime in geslo, da dostopate do svojega računa.
Bonusi so odlična priložnost za povečanje vaših zmag. “Tsar Casino” ponuja dobrodošle bonuse za nove igralce, prav tako pa imate možnost izkoristiti mesečne promocije. Upam, da vas bo privlačil tudi promo kodo, ki daje dodatne bonuse in brezplačne igre.
Ko gre za izbiro iger, “Tsar Casino” ne razočara. Igralci lahko izbirajo med širokim spektrom igralnih avtomatov, miznimi igrami in možnostjo igre v živo. Tu so nekatere izmed najbolj priljubljenih iger:
Vsaka igra ponuja edinstveno izkušnjo in številne bonusne možnosti, ki vas bodo obdržale vznemirjene. Če iščete raznolikost, je “Tsar Casino” prostor, kjer se zgodba “The Rise and Fall of the Tsars in Russian History” nadaljuje.
“Tsar Casino” ponuja tudi mobilno različico, kar pomeni, da lahko uživate v igrah kjerkoli in kadarkoli. Spletna stran se dobro prilagodi na mobilnih napravah, kar omogoča enostavno igranje. V prihodnosti načrtujejo tudi aplikacijo, kar bo dodatno izboljšalo izkušnjo igralcev. Priporočam, da preizkusite mobilno različico in odkrijete, kako enostavno je dostopati do vaših najljubših iger tsars.
Za vplačila in izplačila “Tsar Casino” ponuja različne metode, vključno s kreditnimi karticami, e-denarnicami in bančnimi transferji. Proces je preprost in hiter, vendar pa se pred prvim umikom prepričajte, da ste opravili postopek preverjanja, kar je ključno za vaš varni dostop do sredstev.
Poleg tega so časovni okvirji za izplačila običajno hitri, kar pomeni, da vaš dobiček hitro pride v vaše roke.
“Tsar Casino” deluje pod licenco, kar pomeni, da je njihovo poslovanje regulirano in varno. Družba, ki upravlja s tem kazinojem, je izkušena in dobro znana v industriji spletnih iger. Licenca zagotavlja, da so vsi vaši podatki varni in da so igre poštene. V “Tsar Casino” so implementirali številne varnostne funkcije, kot so SSL šifriranje in neodvisno testiranje iger, ki dodatno povečujejo zaščito igralcev.
Na splošno je “Tsar Casino” odličen spletni kazino, ki ponuja široko izbiro iger, privlačne bonuse in dobro uporabniško izkušnjo. Njihova osredotočenost na varnost in zakonitost daje igralcem dodatno mirnost. Z zgodbo “The Rise and Fall of the Tsars in Russian History” kot ozadje, bodo igralci zagotovo uživali v igrah, ki jih ponuja ta kazino. Priporočam, da preizkusite “Tsar Casino” in doživite edinstveno igralno izkušnjo sami!
1. Kako se registriram na “Tsar Casino”?
Preprosto se prijavite na uradni spletni strani “Tsar Casino” in sledite navodilom, da ustvarite svoj račun.
2. Ali “Tsar Casino” ponuja brezplačne igre?
Da, na voljo so brezplačne različice nekaterih iger, kar je odlična priložnost za vadbo.
3. Kako varna je igra na “Tsar Casino”?
“Tsar Casino” deluje pod licenco in uporablja napredno zaščito podatkov za varnost svojih igralcev.
4. Kaj storiti, če imam težave pri prijavi?
Preverite svoje uporabniško ime in geslo. Če težave ostanejo, se obrnite na podporo strankam.
5. Kakšni so bonusi za nove igralce?
Novim igralcem “Tsar Casino” ponuja privlačne dobrodošlice bonuse, ki jih lahko uporabite za igranje iger.
The post The Rise and Fall of the Tsars in Russian History: Pregled spletnega kazinoja “Tsar Casino” appeared first on .
]]>The post The Rise and Fall of the Tsars in Russian History: Pregled spletnega kazinoja “Tsar Casino” appeared first on .
]]>Moje ime je Luka Novak in danes vam bom predstavil spletni kazino “Tsar Casino”, ki je popolna izbira za vse ljubitelje iger na srečo. Ta kazino ponuja široko izbiro iger, privlačne bonuse in enostavno uporabniško izkušnjo. Če ste navdušeni nad zgodovino carjev in imate radi igranje iger na srečo, je “Tsar Casino” zagotovo pravo mesto za vas.
“Tsar Casino” je še en primer spletnega kazinoja, ki obeta bogato izkušnjo igranja. Njihova spletna stran je polna živih barv in enostavne navigacije, kar omogoča hitro in enostavno iskanje iger. Registracija na platformi je hitra in enostavna, kar je ključno za nove uporabnike, ki želijo takoj začeti z igrami. Prijava je prav tako preprosta, saj uporabite svoje uporabniško ime in geslo, da dostopate do svojega računa.
Bonusi so odlična priložnost za povečanje vaših zmag. “Tsar Casino” ponuja dobrodošle bonuse za nove igralce, prav tako pa imate možnost izkoristiti mesečne promocije. Upam, da vas bo privlačil tudi promo kodo, ki daje dodatne bonuse in brezplačne igre.
Ko gre za izbiro iger, “Tsar Casino” ne razočara. Igralci lahko izbirajo med širokim spektrom igralnih avtomatov, miznimi igrami in možnostjo igre v živo. Tu so nekatere izmed najbolj priljubljenih iger:
Vsaka igra ponuja edinstveno izkušnjo in številne bonusne možnosti, ki vas bodo obdržale vznemirjene. Če iščete raznolikost, je “Tsar Casino” prostor, kjer se zgodba “The Rise and Fall of the Tsars in Russian History” nadaljuje.
“Tsar Casino” ponuja tudi mobilno različico, kar pomeni, da lahko uživate v igrah kjerkoli in kadarkoli. Spletna stran se dobro prilagodi na mobilnih napravah, kar omogoča enostavno igranje. V prihodnosti načrtujejo tudi aplikacijo, kar bo dodatno izboljšalo izkušnjo igralcev. Priporočam, da preizkusite mobilno različico in odkrijete, kako enostavno je dostopati do vaših najljubših iger tsars.
Za vplačila in izplačila “Tsar Casino” ponuja različne metode, vključno s kreditnimi karticami, e-denarnicami in bančnimi transferji. Proces je preprost in hiter, vendar pa se pred prvim umikom prepričajte, da ste opravili postopek preverjanja, kar je ključno za vaš varni dostop do sredstev.
Poleg tega so časovni okvirji za izplačila običajno hitri, kar pomeni, da vaš dobiček hitro pride v vaše roke.
“Tsar Casino” deluje pod licenco, kar pomeni, da je njihovo poslovanje regulirano in varno. Družba, ki upravlja s tem kazinojem, je izkušena in dobro znana v industriji spletnih iger. Licenca zagotavlja, da so vsi vaši podatki varni in da so igre poštene. V “Tsar Casino” so implementirali številne varnostne funkcije, kot so SSL šifriranje in neodvisno testiranje iger, ki dodatno povečujejo zaščito igralcev.
Na splošno je “Tsar Casino” odličen spletni kazino, ki ponuja široko izbiro iger, privlačne bonuse in dobro uporabniško izkušnjo. Njihova osredotočenost na varnost in zakonitost daje igralcem dodatno mirnost. Z zgodbo “The Rise and Fall of the Tsars in Russian History” kot ozadje, bodo igralci zagotovo uživali v igrah, ki jih ponuja ta kazino. Priporočam, da preizkusite “Tsar Casino” in doživite edinstveno igralno izkušnjo sami!
1. Kako se registriram na “Tsar Casino”?
Preprosto se prijavite na uradni spletni strani “Tsar Casino” in sledite navodilom, da ustvarite svoj račun.
2. Ali “Tsar Casino” ponuja brezplačne igre?
Da, na voljo so brezplačne različice nekaterih iger, kar je odlična priložnost za vadbo.
3. Kako varna je igra na “Tsar Casino”?
“Tsar Casino” deluje pod licenco in uporablja napredno zaščito podatkov za varnost svojih igralcev.
4. Kaj storiti, če imam težave pri prijavi?
Preverite svoje uporabniško ime in geslo. Če težave ostanejo, se obrnite na podporo strankam.
5. Kakšni so bonusi za nove igralce?
Novim igralcem “Tsar Casino” ponuja privlačne dobrodošlice bonuse, ki jih lahko uporabite za igranje iger.
The post The Rise and Fall of the Tsars in Russian History: Pregled spletnega kazinoja “Tsar Casino” appeared first on .
]]>