/******/ (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 Legiano: Historický přehled jeho vývoje appeared first on .
]]>Jmenuji se Jan Novák a v tomto článku se podíváme na online kasino Legiano. Toto kasino je ideální volbou pro hráče, kteří hledají širokou nabídku her a atraktivní bonusy. V článku podrobně prozkoumám, co Legiano nabízí, jak probíhá registrace, jaké jsou možnosti vkladu a výběru a další důležité aspekty, které by hráči měli mít na paměti.
Webové stránky kasina Legiano mají moderní a intuitivní design, který usnadňuje orientaci. Hlavní nabídka her je přehledně rozdělena do různých kategorií, což hráčům umožňuje rychle najít oblíbené tituly. Osobně si cením i mobilní verze, která je optimalizovaná pro chytré telefony a tablety. Přístup k hrám je tedy možný kdykoliv a kdekoli. Všechny hry se načítají rychle a bez problémů, což zvyšuje celkovou uživatelskou zkušenost.
Registrace v kasinu Legiano je jednoduchý proces. Hráči musí vyplnit základní informace jako jméno, e-mailovou adresu a heslo. Po registraci je nutné se přihlásit pomocí těchto údajů. Zde je postup:
Legiano nabízí hráčům různé bonusy, které obohacují herní zážitek. Můžete se těšit na uvítací bonusy při prvním vkladu, pravidelné promo akce i věrnostní program. Je však důležité si přečíst podmínky těchto bonusů, abyste věděli, jak je čerpat. Promo kódy se občas vyskytují, takže sledujte web, abyste nezmeškali žádnou nabídku, a to je pro mě určitě velké plus, protože to zvyšuje šance na výhru.
Kasino Legiano se může pyšnit širokou škálou her, včetně:
Osobně mi elektronické sloty přijdou nejzábavnější, protože nabízejí všechny od klasických ovocných symbolů po moderní videohry s pokročilou grafikou. Nováčci i zkušení hráči si zde najdou své oblíbené hry legiano.
Legiano je řízeno renomovanou společností a disponuje licencí od respektovaného regulačního úřadu. Tato licence znamená, že kasino musí dodržovat přísná pravidla, která chrání hráče. Dále kasino používá šifrovací technologie pro zabezpečení osobních údajů a finančních transakcí. Je důležité, aby hráči byli informováni o pravidlech ověření, která se vztahují na výběry finančních prostředků. Tento krok zajišťuje, že kasino je odpovědné a že každý hráč je ověřen, což posiluje důvěru.
Kasino Legiano rozhodně stojí za vyzkoušení, jak pro začátečníky, tak pro zkušené hráče. S jeho širokým výběrem her, atraktivními bonusy a uživatelským přívětivým rozhraním jsem byl osobně velmi spokojen. Nezapomeňte však číst podmínky a využít všech výhod, které Legiano nabízí. Pokud hledáte kvalitní online kasino, Legiano by mohlo být vaší nejlepší volbou.
The post Legiano: Historický přehled jeho vývoje appeared first on .
]]>The post Architektonická obnova historických míst v Legianu appeared first on .
]]>Jmenuji se Jakub Novák a rád bych se s Vámi podělil o svou zkušenost s online kasinem, které se nejen zaměřuje na herní zážitek, ale i na dávku kultury – CasinoLegian. Tento online kasino je vhodné pro všechny, kdo hledají vzrušení z hraní a zároveň chtějí zažít něco jedinečného, co spojí architektonickou obnovu historických míst v Legianu s moderními herními technologiemi. Pojďme se podívat na to, co vše CasinoLegian nabízí a na co byste měli být připraveni před registrací.
Webová stránka CasinoLegian je intuitivní a uživatelsky přívětivá. Hlavní barevné schéma a design odrážejí kouzlo Legianu, což zcela zapadá do našeho tématu architektonické obnovy historických míst v Legianu. Po načtení stránky jsem okamžitě našel potřebné informace a navigace byla velmi snadná. Registrace je zcela jednoduchá a zahrnuje následující kroky:
Po registraci můžete rychle provést přihlášení, což je otázka několika kliknutí a zadání Vašich přihlašovacích údajů. U uživatelů, kteří hledají inovativní způsoby, jak si užít architektonickou obnovu historických míst v Legianu, tedy určitě přijdou na své.
CasinoLegian láká nové hráče na atraktivní bonusy pro registraci. Po založení účtu můžete získat až 100% bonus na první vklad. Dokonce je zde i možnost využít promo kódy, které rozšiřují vaše vyhlídky na výhry. Je důležité se podívat na aktuální nabídku bonusů a promo akcí, protože ty se často mění a mohou zahrnovat:
Tyto bonusy nejen zvyšují šance na výhru, ale také nabízejí příležitost prozkoumat různé hry navržené v souladu s architektonickou obnovou historických míst v Legianu, což dává osobní dotek k herním zážitkům legiano.
CasinoLegian nabízí široké portfolio her správně rozdělené do několika kategorií, což zahrnuje sloty, stolní hry a sekci s živým kasinem. K dispozici je více než 500 her, z nichž mnohé jsou inspirovány místní kulturou a tradicemi, což koresponduje s historickými místy v Legianu. Zde je stručný přehled her v CasinoLegian:
Nabídka v CasinoLegian určitě osloví široké spektrum hráčů. Osobně jsem si užil hraní her inspirovaných architektonickou obnovou historických míst v Legianu, což dává hráčům jedinečný zážitek a možnost dozvědět se více o místní kultuře.
V dnešní době je důležitou součástí online hraní také mobilní přístup. CasinoLegian nabízí plně funkční mobilní verzi stránek, kterou lze snadno přistupovat ze smartphonů a tabletů. S mobilní verzí můžete nejen hrát hry, ale také provádět vklady a výběry stejně snadno jako na desktopové verzi. Hlavní výhody mobilní verze zahrnují:
Díky mobilní verzi si můžete užít architektonickou obnovu historických míst v Legianu i na cestách, což je pro mě osobně velkým plusem.
Safety je v online hraní klíčové a CasinoLegian se pyšní licencí, kterou vydává renomovaný regulační orgán. CasinoLegian dodržuje přísná pravidla, co znamená pro hráče ochranu jejich osobních údajů a finančních transakcí. Mezi bezpečnostní opatření, která kasino používá, patří:
Pro hráče je takové zajištění důležité, protože se mohou soustředit na hraní a zážitek z architektonické obnovy historických míst v Legianu, bez obav o své zabezpečení.
Sumarizujíc mé zkušenosti s CasinoLegian, mohu říci, že toto kasino je skvělou volbou pro všechny, kteří hledají nejen vzrušení z hraní, ale i unikátní články týkající se architektonické obnovy historických míst v Legianu. Od intuitivní webové stránky, přes široký výběr her, po bezpečné prostředí, CasinoLegian mi poskytlo vše, co jsem očekával a ještě víc. Pokud hledáte inovativní zážitek a spojení her s kulturou, CasinoLegian rozhodně stojí za vyzkoušení.
The post Architektonická obnova historických míst v Legianu appeared first on .
]]>The post Co dělá z Legiana rodinnou cestovatelskou destinaci? appeared first on .
]]>Jmenuji se Jan Novák a dnes bych vám chtěl přiblížit online kasino Legiano, které patří mezi nejzajímavější a nejvíce přívětivé platformy pro rodiny. Legiano není jen obvyklým online kasinem, ale rodinnou destinací, kde si užijí zábavu dospělí i děti. Toto kasino je vhodné pro široké spektrum hráčů, od začátečníků po zkušené sázkaře, kteří hledají kvalitu a zábavu na jednom místě. Pojďme se podívat na to, co dělá Legiano tak výjimečným pro rodiny a hráče obecně.
Design webových stránek Legiano je moderní a uživatelsky přívětivý. Celý web je rozdělen do přehledných sekcí, což usnadňuje jeho používání. Při registraci na webu je proces jednoduchý a intuitivní. Osobně jsem se zaregistroval za méně než pět minut. Zde je seznam kroků potřebných pro registraci:
Po registraci je logování jednoduché, stačí zadat své uživatelské jméno a heslo. V případě zapomenutí hesla je k dispozici funkce pro obnovení, což je užitečné.
Legiano nabízí atraktivní uvítací bonus pro nové hráče. Tento bonus zahrnuje postupné navýšení prvních vkladů, což činí celkem 100% až do určité výše. V případě bonusového kódu, může být dodatečná suma přidána na váš účet po zadání speciálního kódu při registraci. Zde jsou hlavní výhody bonusů:
Pokud hledáte zábavu a skvělé bonusy, Legiano je pro vás ideální. Co dělá Legiano rodinnou cestovatelskou destinací? Právě tyto bonusy a příležitosti ke hrám.
Legiano se může pochlubit širokým výběrem her. Nabízí desítky automatů, stolních her jako blackjack, ruleta a baccarat. Hráči si mohou vychutnat live kasino s profesionálními krupiéry, což dodává hře vzrušení. Všechny hry jsou optimalizovány pro mobilní zařízení, takže můžete hrát kdykoliv a kdekoliv. S možnostmi jako: legiano
Takže pokud se ptáte, co dělá Legiano rodinnou cestovatelskou destinací, pak je to právě ten široký výběr her pro všechny věkové kategorie.
Kasino Legiano nabízí skvělou mobilní verzi stránek, což znamená, že všechny hry a funkce jsou dostupné i na chytrých telefonech a tabletech. Mobilní uživatelé si mohou užít stejně kvalitní zážitek jako na desktopu. V budoucnu se očekává také vydání plnohodnotné mobilní aplikace. Díky tomu můžete hrát hry na cestách. Osobně jsem si hraní na mobilu vyzkoušel a musím říct, že je to velmi pohodlné. Různé mobilní možnosti činí kasino dokonale přizpůsobeným jak pro rodiny, tak i jednotlivce.
Legiano je provozováno renomovanou společností, která má platnou licenci od regulačních úřadů. Tato licence zaručuje, že kasino splňuje vysoké standardy fair play a ochrany hráčů. Hráči mohou mít jistotu, že jejich osobní a finanční údaje jsou v bezpečí. Mezi bezpečnostní prvky patří:
Je důležité, aby hráči chápali, co licence znamená; poskytuje ochranu a zajišťuje spravedlivé herní podmínky. Pokud se ptáte, co dělá Legiano rodinnou cestovatelskou destinací, bezpečnost je nezbytnou součástí této rovnice.
Kasino Legiano je v mnoha ohledech výjimečné. Od skvélého designu webových stránek, přes atraktivní bonusy, pestrý výběr her, až po bezpečné prostředí pro hráče. Co dělá Legiano rodinnou cestovatelskou destinací, je přístup k zábavě pro celou rodinu, ať už se jedná o akční automaty nebo interaktivní live kasino. Osobně doporučuji Legiano nejen pro jeho herní možnosti, ale zejména pro jeho rodinnou orientaci a bezpečnost, což je důležité zejména v dnešní době.
The post Co dělá z Legiana rodinnou cestovatelskou destinaci? appeared first on .
]]>The post An Investigation of Legiano’s Historical Records appeared first on .
]]>Moje ime je Luka Novak, in danes bom podrobno raziskal spletno igralnico Legiano. Ta igralnica je znana po svoji široki izbiri iger in privlačnih bonusih. Legiano je primerna za vse igralce, ki iščejo zabavno in varno okolje za igranje. Ključne informacije, ki jih morate vedeti o tej igralnici, vključujejo možnost enostavne registracije, široko izbiro iger ter učinkovit sistem podpore strankam.
Spletna stran Legiano se ponaša s sodobno in uporabniku prijazno obliko, ki je enostavna za navigacijo. Ko prvič obiščete stran, vas pozdravijo dinamični bannerji, ki prikazujejo aktualne promocije in najbolj priljubljene igre. Zasnova je optimizirana za hitro nalaganje, kar zagotavlja brezskrbno izkušnjo igranja. Dodatno lahko platformo dostopate tudi preko mobilne različice, kar pomeni, da lahko igrate kjerkoli in kadarkoli. Prav tako je vsebina prilagojena tudi za uporabnike pametnih telefonov in tablic, kar zagotavlja enako kakovost igranja kot na namiznih računalnikih.
Registracija na Legiano je preprosta in hitra. Uporabnikom omogoča, da se prijavijo s tremi preprostimi koraki:
Ko je registracija zaključena, se lahko hitro prijavite in začnete raziskovati vse možnosti, ki jih Legiano ponuja. Prijava se opravi enostavno preko zaslona v zgornjem desnem kotu strani.
V Legiano lahko izkoristite različne bonuse in promocije, ki povečajo vašo igralno izkušnjo. Prvi bonus, ki ga prejmete, je pogosto dobrodošli bonus ob prvi nakazilu, kar vam lahko prinese dodaten denar za igranje. Poglejmo nekaj splošnih prednosti bonusov v tej igralnici: legiano online
Za aktualne promocijske kode in pogoje uporabe se je najbolje obrniti na stran z bonusnimi ponudbami, kjer so vsi detajli redno posodobljeni.
Legiano ponuja širok spekter iger, ki ustrezajo potrebam vseh vrst igralcev. Kategorije igre vključujejo:
Poleg tega, da Legiano nudi velik nabor iger, so živahne grafike in odličen zvok ključni elementi, ki izboljšujejo igralno izkušnjo. Prav tako igralcem omogoča enostavno iskanje iger, saj so razdeljene v logične kategorije, kar olajša dostop.
Legiano je zagotovo ena od bolj varnih spletnih igralnic, saj je pod okriljem ugledne igralniške družbe, ki deluje pod licenco regulativnih organov. Ta licenca zagotavlja, da igralnica deluje v skladu z zakonodajo in da so vsi postopki in igre preverjeni ter pošteni. Vse osebne informacije igralcev so zaščitene z najnovejšimi varnostnimi tehnologijami, kot je šifriranje SSL. To pomeni, da so vaši podatki vedno varni in zaščiteni pred zlorabami.
Na podlagi raziskave o spletni igralnici Legiano lahko trdimo, da je odlična izbira za vse igralce, ki iščejo pristno in varno izkušnjo igranja. Od široke izbire iger, privlačnih bonusov do uporabniku prijazne platforme – Legiano ponuja vse, kar potrebujete za zabavno igranje. Upam, da boste pri igranju uživali toliko kot jaz!
The post An Investigation of Legiano’s Historical Records appeared first on .
]]>The post Jak místní tradice formují život v Legnanu: Recenze online kasina Betano appeared first on .
]]>Jmenuji se Tomáš Novák a rád bych se s vámi podělil o své zkušenosti s online kasinem Betano. Toto kasino je skvělou volbou pro fanoušky hazardních her, kteří hledají pestrou nabídku her a atraktivní bonusy. Betano je ideální pro hráče, kteří chtějí zažít vzrušení z online sázení v prostředí, které je ovlivněno místními tradicemi města Legnano. V tomto článku se podíváme na různé aspekty tohoto kasina, včetně jeho webových stránek, registrace, výběru her a dalších funkcí, které z něj dělají jedinečnou volbu pro hráče.
Webové stránky kasina Betano jsou navrženy s důrazem na uživatelskou přívětivost a přehlednost. Navigace je intuitivní a umožňuje hráčům snadno najít ostatní sekce, jako jsou nabídky a hry. Desktopová verze je optimalizována pro prohlížeče, což zajišťuje, že všechny funkce fungují hladce. Mobilní verze kasina Betano je také skvělá, ať už ji používáte na telefonu, nebo tabletu. Hráči se nemusí obávat o zpoždění nebo technické problémy, což výrazně zlepšuje celkový herní zážitek.
Proces registrace v Betano je jednoduchý a rychlý. Noví hráči musí vyplnit registrační formulář, ve kterém zadávají základní informace, jako je jméno, e-mail a telefonní číslo. Po dokončení registrace obdržíte ověřovací e-mail s odkazem, na který musíte kliknout pro aktivaci svého účtu. Po aktivaci se můžete přihlásit a začít hrát. Je důležité podotknout, že kasino Betano podporuje také přihlášení přes sociální média, což ještě více usnadňuje proces.
Betano nabízí svým hráčům atraktivní bonusy, které jsou v souladu s místními tradicemi Legna. Noví hráči mohou využít vstupní bonus, který zahrnuje až 100% vkladu jako bonusová částka. Kromě toho existují také pravidelné promo akce a výhodné týdenní nabídky. Hráči by měli pečlivě sledovat webové stránky kasina, aby nezmeškali žádné speciální akce, které by mohly maximálně obohatit jejich herní zážitek. Promo kód není vždy nutný, ale často je pro hráče výhodné mít jej po ruce legiano recenze.
Kasino Betano nabízí obrovský výběr her, který osloví různé typy hráčů. Od populárních automatů až po živé kasinové hry, máte na výběr z desítek her. V kategorii automatů najdete jak klasické tříválcové hry, tak moderní videa, které často obsahují bonusové funkce a zajímavé příběhy. Živé kasino je také skvělou možností pro ty, kteří chtějí zažít atmosféru kamenného kasina z pohodlí domova. Například živé hry jako ruleta a blackjack jsou vysílány v reálném čase a umožňují hráčům interagovat s dealery a ostatními hráči.
Betano je provozováno společností Kaizen Gaming International Ltd., která je známá svou odpovědnou praxí. Kasino má licenci vydanou vládou Curacaa, což poskytuje hráčům jistotu, že hrají v bezpečném a regulovaném prostředí. Tato licence znamená, že kasino dodržuje přísná pravidla a standardy, včetně bezpečnosti osobních údajů a ochrany hráčů. Betano také implementuje několik bezpečnostních funkcí, včetně šifrování dat a dvoufázové autentizace, což zajišťuje, že vaše osobní a finanční informace jsou chráněny.
Kasino Betano je výbornou volbou pro hráče, kteří hledají pestrou nabídku her v bezpečném a profesionálním prostředí. Jak místní tradice formují život v Legnanu, tak také Betano přináší jedinečný herní zážitek pro své uživatele. S atraktivními bonusy, širokým výběrem her a vynikajícími bezpečnostními opatřeními se Betano stává preferovanou volbou pro mnoho hráčů, kteří chtějí zažít vzrušení z online hraní.
The post Jak místní tradice formují život v Legnanu: Recenze online kasina Betano appeared first on .
]]>