{ "version": 3, "sources": ["../../node_modules/@story/story_assets/app/assets/javascripts/utils.js", "../../node_modules/@story/story_assets/app/assets/javascripts/dom_extend.js", "../../node_modules/@story/story_assets/app/assets/javascripts/animations.js", "../../node_modules/@story/story_assets/app/assets/javascripts/slide.js", "../../node_modules/@story/story_assets/app/assets/javascripts/modal/modal.js", "../../node_modules/@story/story_assets/app/assets/javascripts/carousel.js", "../../node_modules/@story/story_assets/app/assets/javascripts/modal/modal_gallery.js"], "sourcesContent": ["/**\n * Equivalent of the jQuery.ready() function.\n * Executes the callback when the document is fully loaded.\n *\n * @param {Function} callback - The function to be executed when the document is ready.\n */\nexport function onDocumentReady(callback) {\n\tif (document.readyState === \"complete\" || (document.readyState !== \"loading\" && !document.documentElement.doScroll)) {\n\t\t// Dokument u\u017E je na\u010Dten\u00FD, tak\u017Ee mus\u00EDme zavolat callback my (ud\u00E1lost DOMContentLoaded\n\t\t// u\u017E nebude prohl\u00ED\u017Ee\u010Dem emitov\u00E1na).\n\t\tcallback();\n\t}\n\telse {\n\t\t// Dokument je\u0161t\u011B nen\u00ED na\u010Dten\u00FD, po\u010Dk\u00E1me na n\u011Bj p\u0159es ud\u00E1lost.\n\t\tdocument.addEventListener(\"DOMContentLoaded\", callback);\n\t}\n}\n\n\n/**\n * Handler for code that is added to the page via snippets.\n * Executes the callback when the document is ready or when a snippet is ready.\n *\n * @param {Function} callback - The function to be executed when the content is ready.\n */\nexport function onContentReady(callback) {\n\tonDocumentReady(function() {\n\t\tcallback(document)\n\t});\n\n\tdocument.addEventListener(\"snippetready\", function(event) {\n\t\tcallback(event.detail.parent);\n\t});\n}\n\n\n/**\n * Simplified way of creating custom events. Events can have their own parameters\n * (available in the handler via event.detail.*), can \"bubble\" upwards, or be \"cancelable\"\n * (both set to false by default).\n *\n * This function is crucial as we use custom events extensively on the web.\n *\n * The function needs to be called using \"apply\" or \"bind\" in the form of\n * triggerEvent.apply(element, eventName, params, bubbles, cancellable).\n * It expects to receive the element on which to trigger the event in \"this\".\n *\n * @param {string} eventName - The name of the event to be triggered.\n * @param {Object} params - The parameters to be passed with the event.\n * @param {boolean} [bubbles=true] - Whether the event should bubble up.\n * @param {boolean} [cancellable=true] - Whether the event should be cancelable.\n */\nexport function triggerEvent(eventName, params, bubbles, cancellable) {\n\t// V\u00FDchoz\u00ED hodnoty pro probubl\u00E1v\u00E1n\u00ED a zru\u0161itelnost.\n\tbubbles = bubbles || true;\n\tcancellable = cancellable || true;\n\n\t// Vytvo\u0159en\u00ED vlastn\u00ED ud\u00E1losti se zvolen\u00FDm n\u00E1zvem.\n\tvar customEvent = new window.CustomEvent(eventName, { bubbles: bubbles, cancellable: cancellable, detail: params })\n\n\t// Vyvol\u00E1n\u00ED ud\u00E1losti na DOM elementu, kter\u00FD n\u00E1m byl p\u0159ed\u00E1n ve form\u011B \"this\" prom\u011Bnn\u00E9.\n\tthis.dispatchEvent(customEvent);\n}\n\n\n/**\n * Is the DOM element visible?\n * The DOM element is passed via \"apply\" as the \"this\" pointer.\n * Function taken from the jQuery library.\n */\nexport function isVisible() {\n\treturn !!(this.offsetWidth || this.offsetHeight || this.getClientRects().length) && this.style.visibility != \"hidden\";\n}\n\n\n/**\n * Return direct descendants of the given element that match the given selector.\n * Unfortunately, IE does not implement the querySelectorAll(\":scope > ...\") option,\n * so we need to find another way.\n * The DOM element is passed via \"apply\" as the \"this\" pointer.\n *\n * @param {string} selector - The CSS selector to match the descendants against.\n * @returns {Array} - An array of matching direct descendant elements.\n */\nexport function querySelectorChildren(selector) {\n\treturn Array.prototype.filter.call(this.children, function(child) {\n\t\treturn child.matches(selector);\n\t});\n};\n\n\n/**\n * Simplifies event capturing that is bound to a specific element (selector).\n *\n * @param {Element} element - The DOM element to bind the event to.\n * @param {string} event - The event type to listen for.\n * @param {string} selector - The CSS selector to match the descendants against.\n * @param {Function} handler - The event handler function.\n */\nexport function addEventSelectorListener(eventNames, selector, callback) {\n\tvar eventNames = eventNames.split(\" \");\n\tfor (var i = 0; i < eventNames.length; ++i) {\n\t\tthis.addEventListener(eventNames[i], function(event) {\n\t\t\t// Dostaneme-li jako event.target objekt document, ten nem\u00E1 metodu closest, a proto mus\u00EDme jej\u00ED p\u0159\u00EDtomnost testovat.\n\t\t\tvar target = event.target.closest ? event.target.closest(selector) : null;\n\t\t\tif (!target) { return; }\n\t\t\tcallback(event, target);\n\t\t});\n\t}\n}\n\n\n/**\n * A relaxed version of addEventSelectorListener, where \"closest\" is not used,\n * but the selector must match directly on the element that triggered the event.\n * This is particularly useful for events like \"change\", where the event source\n * is directly an input element and checking \"closest\" would be unnecessary\n * (it wouldn't be fundamentally wrong, but it would reduce script performance).\n *\n * @param {Element} element - The DOM element to bind the event to.\n * @param {string} event - The event type to listen for.\n * @param {string} selector - The CSS selector to match the event target against.\n * @param {Function} handler - The event handler function.\n */\nexport function addEventMatchesListener(eventName, selector, callback) {\n\tthis.addEventListener(eventName, function(event) {\n\t\tif (event.target.matches(selector)) {\n\t\t\tcallback(event, event.target);\n\t\t}\n\t});\n}\n\n\n/**\n * If it is a link that does not point anywhere or a button that is not \"submit\",\n * it suppresses the action. Useful for suppressing events on links that lead nowhere\n * (href is #), while preserving functionality for elements like radio buttons.\n */\nexport function preventLinkDefault(event, target) {\n\tif (target.getAttribute(\"href\") == \"#\"\n\t\t|| (target.matches(\"button\") && !target.matches(\"button[type='submit'], button[type='reset']\"))\n\t\t|| (target.matches(\"input\") && !target.matches(\"input[type='checkbox'], input[type='radio']\"))) {\n\t\tevent.preventDefault();\n\t}\n}", "import { triggerEvent, isVisible, querySelectorChildren, addEventSelectorListener, addEventMatchesListener } from \"./utils\";\n\n//\n// Tato t\u0159\u00EDda obsahuje k\u00F3d, kter\u00FD je trochu \"kontroverzn\u00ED\" (nen\u00ED to \u00FApln\u011B dobr\u00FD n\u00E1pad).\n// Smyslem je zjednodu\u0161it z\u00E1pis vol\u00E1n\u00ED funkc\u00ED, kter\u00E9 o\u010Dek\u00E1vaj\u00ED element jako sv\u016Fj argument,\n// tj. jde o operace s/nad elementy a tak se roz\u0161\u00ED\u0159en\u00ED jejich prototypu (by\u0165\n// jde o siln\u011B nedoporu\u010Dovan\u00E9 \u0159e\u0161en\u00ED) nab\u00EDz\u00ED. Zde si tuto \"kontroverzi\" m\u016F\u017Eeme dovolit,\n// proto\u017Ee k\u00F3d nen\u00ED rozsh\u00E1hl\u00FD.\n//\n// Pokud by se v budoucnu uk\u00E1zalo, \u017Ee tento p\u0159\u00EDstup opravdu nebyl dobr\u00FD n\u00E1pad,\n// v\u0161echny funkce jsou ps\u00E1ny tak, aby je \u0161lo kdykoliv nahradit vol\u00E1n\u00EDm p\u0159es \"apply\" nebo \"bind\",\n// kde jako prvn\u00ED argument bude v\u017Edy dan\u00FD element.\n//\n\nif (!Element.prototype.trigger && !Document.prototype.trigger && !Element.prototype.isVisible && !Element.prototype.querySelectorChildren && !Document.prototype.addEventSelectorListener && !Element.prototype.addEventSelectorListener && !Document.prototype.addEventMatchesListener && !Element.prototype.addEventMatchesListener) {\n\tElement.prototype.trigger = Document.prototype.trigger = triggerEvent;\n\tElement.prototype.isVisible = isVisible;\n\tElement.prototype.querySelectorChildren = querySelectorChildren;\n\tElement.prototype.addEventSelectorListener = Document.prototype.addEventSelectorListener = addEventSelectorListener;\n\tElement.prototype.addEventMatchesListener = Document.prototype.addEventMatchesListener = addEventMatchesListener;\n}\nelse {\n\tconsole.error(\"N\u011Bkter\u00E9 z metod v t\u0159\u00EDd\u011B \\\"Element\\\" ji\u017E existuj\u00ED. Zkontrolujte \\\"dom_extend.js\\\".\");\n}\n", "import \"./dom_extend\";\n\nexport const Animation = {};\n\n// V\u00FDchoz\u00ED hodnoty\nAnimation.default = {};\nAnimation.default.duration = 500; // [ms]\nAnimation.default.display = \"block\"; // block, inline, inline-block, flex, ... atd.\n\n\n//\n// Pomocn\u00E1 funkce, kter\u00E1 zaji\u0161\u0165uje animaci. Pro animaci vyu\u017E\u00EDv\u00E1me CSS3 transitions. \u00DAkolem\n// javascriptu je nastavit stav p\u0159ed, d\u00E1t prohl\u00ED\u017Ee\u010Di informaci o zm\u011Bn\u011B stavu, nastavit transitions\n// a nastavit stav po. Prohl\u00ED\u017Ee\u010D vykon\u00E1 animaci a na konci po sob\u011B uklid\u00EDme.\n//\n// V\u0161echny animace jdou rozd\u011Blit na kind = \"in\" (prvek chceme zobrazit) a kind = \"out\" (prvek chceme skr\u00FDt),\n// animace pak maj\u00ED f\u00E1ze \"initialize\", \"setUp\", \"run\" a \u00FAklidovou \"tearDown\". Vhodnou volbou t\u00E9to \u010Dtve\u0159ice\n// funkc\u00ED lze vytvo\u0159it r\u016Fzn\u00E9 animace, jako nyn\u00ED implementovan\u00E9 fadeIn/fadeOut a slideDown/slideUp.\n//\n// Funkce vrac\u00ED Promise, tj. nav\u00E1zat na dokon\u010Denou animaci lze standardn\u011B p\u0159es \"then()\".\n//\nfunction animate(elements, kind, initialize, setUp, run, tearDown) {\n\treturn new Promise(function(resolve, reject) {\n\n\t\t// Animujme cel\u00E9 pole prvk\u016F (p\u0159eve\u010Fme proto samostatn\u00FD prvek na jednoprvkov\u00E9 pole).\n\t\t// Pole testujeme p\u0159es existenci metody length, proto\u017Ee querySelectorAll funkce vrac\u00ED svoji kolekci\n\t\t// nikoliv pole jako takov\u00E9 a toto je nejjednodu\u0161\u0161\u00ED zp\u016Fsob, jak otestovat, jestli v ruce dr\u017E\u00EDme\n\t\t// obecn\u011B n\u011Bjakou kolekci nebo ne.\n\t\tif (!(elements instanceof NodeList || elements instanceof Array)) {\n\t\t\telements = [elements];\n\t\t}\n\n\t\t// V p\u0159\u00EDpad\u011B, \u017Ee animace je typu \"in\", tj. budeme element zobrazovat, provedeme preprocessing\n\t\t// na test viditelnosti a nastav\u00EDme CSS vlastnost display.\n\t\tif (kind == \"in\") {\n\t\t\t// Odstra\u0148me z pole ty prvky, kter\u00E9 u\u017E jsou viditeln\u00E9 (abychom je neanimovali znovu).\n\t\t\telements = Array.from(elements).filter(function(element) {\n\t\t\t\treturn !element.isVisible()\n\t\t\t});\n\n\t\t\tfor (var i = 0; i < elements.length; ++i) {\n\t\t\t\tvar element = elements[i];\n\n\t\t\t\t// Odstra\u0148me Bootstrap t\u0159\u00EDdy, kter\u00E9 znemo\u017E\u0148uj\u00ED zobrazen\u00ED prvku.\n\t\t\t\telement.classList.remove(\"d-none\", \"d-sm-none\", \"d-md-none\", \"d-lg-none\", \"d-xl-none\");\n\n\t\t\t\t// Zjist\u011Bme, jak\u00FD display (block, flex, inline-block, ...) m\u00E1 prvek m\u00EDt. Nen\u00ED-li k dispozici, nastavme v\u00FDchoz\u00ED hodnotu.\n\t\t\t\telement.style.removeProperty(\"display\");\n\t\t\t\tvar elementDisplay = getComputedStyle(element).display;\n\t\t\t\tif (elementDisplay == \"none\") {\n\t\t\t\t\telementDisplay = Animation.default.display;\n\t\t\t\t}\n\t\t\t\telement.style.display = elementDisplay;\n\t\t\t\telement.style.visibility = \"visible\";\n\t\t\t}\n\t\t}\n\n\t\t// Samotn\u00E1 animace, kdy nejprve nastav\u00EDme po\u010D\u00E1te\u010Dn\u00ED vlastnosti elementu, vynut\u00EDme v prohl\u00ED\u017Ee\u010Di p\u0159epo\u010Det,\n\t\t// nastav\u00EDme transitions a kone\u010Dn\u00E9 vlatnosti elementu. Prohl\u00ED\u017Ee\u010D pak za n\u00E1s s\u00E1m element animuje.\n\t\tfor (var i = 0; i < elements.length; ++i) {\n\t\t\tvar element = elements[i];\n\n\t\t\t// Dopl\u0148uj\u00EDc\u00ED data, kter\u00E1 mohou f\u00E1ze setUp a run vyu\u017E\u00EDt pro p\u0159enos n\u011Bjak\u00E9 u\u017Eite\u010Dn\u00E9 informace (nap\u0159. v\u00FD\u0161ky prvku p\u0159ed a po animaci).\n\t\t\tvar data = {};\n\n\t\t\t// Prove\u010Fme z\u00E1kladn\u00ED inicializaci animace.\n\t\t\tinitialize(element, data);\n\n\t\t\t// Vyresetujme hodnoty.\n\t\t\tsetUp(element, data);\n\n\t\t\t// P\u0159ipravme prohl\u00ED\u017Ee\u010D na animov\u00E1n\u00ED.\n\t\t\telement.offsetHeight; // Bez tohoto \u0159\u00E1dku animace nefunguje, toto \"donut\u00ED\" prohl\u00ED\u017Ee\u010D p\u0159epo\u010D\u00EDtat vlastnostnosti prvku a spustit pozd\u011Bj\u0161\u00ED animaci.\n\n\t\t\t// Prove\u010Fme animaci\n\t\t\telement.style.transitionDuration = Animation.default.duration + \"ms\";\n\t\t\trun(element, data);\n\t\t}\n\n\t\t// Ukli\u010Fme po sob\u011B.\n\t\tsetTimeout(function() {\n\t\t\tfor (var i = 0; i < elements.length; ++i) {\n\t\t\t\tvar element = elements[i];\n\n\t\t\t\t// Odstra\u0148me CSS vlastnosti, p\u0159es kter\u00E9 jsme animovali.\n\t\t\t\telement.style.removeProperty(\"transition-duration\");\n\t\t\t\telement.style.removeProperty(\"transition-property\");\n\n\t\t\t\t// V p\u0159\u00EDpad\u011B skr\u00FDvac\u00ED animace nastavme CSS display vlastnost.\n\t\t\t\tif (kind == \"out\") {\n\t\t\t\t\telement.style.display = \"none\";\n\t\t\t\t}\n\t\t\t\telse if (kind == \"hide\") {\n\t\t\t\t\telement.style.visibility = \"hidden\";\n\t\t\t\t}\n\n\t\t\t\t// \u00DAklid.\n\t\t\t\ttearDown(element);\n\t\t\t}\n\n\t\t\t// Pokra\u010Dujme d\u00E1l (promise).\n\t\t\tresolve(elements);\n\n\t\t}, Animation.default.duration + 10); // Dejme n\u011Bjakou \u010Dasovou rezervu (10ms), a\u0165 pohodln\u011B dob\u011Bhne CSS animace a nedojde k n\u011Bjak\u00E9mu posko\u010Den\u00ED.\n\t});\n};\n\n\n// *************************************************************************\n// Zobrazen\u00ED/skryt\u00ED prvk\u016F pomoc\u00ED fade animace\n// *************************************************************************\n\nfunction fadeInitialize() {\n\t// Pr\u00E1zdn\u00E1 funkce, u fade animace nepot\u0159ebujeme zn\u00E1t \u017E\u00E1dn\u00E9 informace o prvku.\n}\n\nfunction fadeHidden(element, data) {\n\telement.style.opacity = 0;\n}\n\nfunction fadeVisible(element, data) {\n\telement.style.transitionProperty = \"opacity\";\n\telement.style.opacity = 1;\n}\n\nfunction fadeCleanAnimation(element) {\n\telement.style.removeProperty(\"opacity\");\n}\n\nAnimation.fadeIn = function(elements) {\n\treturn animate(\n\t\telements, \"in\",\n\t\tfadeInitialize,\n\t\tfadeHidden,\n\t\tfadeVisible,\n\t\tfadeCleanAnimation\n\t);\n};\n\nAnimation.fadeOut = function(elements, onlyHide) {\n\treturn animate(\n\t\telements, onlyHide ? \"hide\" : \"out\",\n\t\tfadeInitialize,\n\t\tfadeVisible,\n\t\tfadeHidden,\n\t\tfadeCleanAnimation\n\t);\n};\n\n\n// *************************************************************************\n// Zobrazen\u00ED/skryt\u00ED prvk\u016F pomoc\u00ED slide animace\n// *************************************************************************\n\nfunction slideInitialize(element, data) {\n\t// Zjist\u011Bme, jak\u00E1 je v\u00FD\u0161ka elementu (skrze ni budeme animovat)\n\tdata.height = element.offsetHeight;\n}\n\nfunction slideHidden(element, data) {\n\telement.style.overflow = \"hidden\";\n\telement.style.height = 0;\n\telement.style.paddingTop = 0;\n\telement.style.paddingBottom = 0;\n\telement.style.marginTop = 0;\n\telement.style.marginBottom = 0;\n}\n\nfunction slideVisible(element, data) {\n\telement.style.transitionProperty = \"height, margin, padding\";\n\telement.style.boxSizing = \"border-box\";\n\telement.style.height = data.height + \"px\";\n}\n\nfunction slideCleanAnimation(element) {\n\telement.style.removeProperty(\"height\");\n\telement.style.removeProperty(\"overflow\");\n\telement.style.removeProperty(\"box-sizing\");\n}\n\nfunction slideCleanState(element) {\n\telement.style.removeProperty(\"padding-top\");\n\telement.style.removeProperty(\"padding-bottom\");\n\telement.style.removeProperty(\"margin-top\");\n\telement.style.removeProperty(\"margin-bottom\");\n}\n\nAnimation.slideDown = function(elements) {\n\treturn animate(\n\t\telements, \"in\",\n\t\tslideInitialize,\n\t\tslideHidden,\n\t\tfunction(element, data) {\n\t\t\tslideCleanState(element);\n\t\t\tslideVisible(element, data);\n\t\t},\n\t\tslideCleanAnimation\n\t);\n};\n\nAnimation.slideUp = function(elements, onlyHide) {\n\treturn animate(\n\t\telements, onlyHide ? \"hide\" : \"out\",\n\t\tslideInitialize,\n\t\tslideVisible,\n\t\tslideHidden,\n\t\tfunction(element) {\n\t\t\tslideCleanState(element);\n\t\t\tslideCleanAnimation(element);\n\t\t}\n\t);\n};\n", "import { preventLinkDefault } from \"./utils\";\nimport { Animation } from \"./animations\";\n\n\n// *************************************************************************\n// Otev\u00EDr\u00E1n\u00ED/zav\u00EDr\u00E1n\u00ED nab\u00EDdek se slide efektem a s mo\u017Enost\u00ED exklusivity\n// (tj. v\u017Edy pouze jedna nab\u00EDdka z vybran\u00E9 skupiny je otev\u0159en\u00E1 - akordeon)\n// *************************************************************************\n\nfunction isTargetExpanded(target) {\n\t// Zji\u0161\u0165ov\u00E1n\u00ED p\u0159es t\u0159\u00EDdy nesta\u010D\u00ED. Aby to fungovalo, mus\u00EDme p\u0159idat je\u0161t\u011B kontrolu na breakpointy.\n\treturn target.classList.contains(\"expanded\") ||\n\t\t(target.classList.contains(\"expanded-sm\") && MediaBreakpoint.up(\"sm\")) ||\n\t\t(target.classList.contains(\"expanded-md\") && MediaBreakpoint.up(\"md\")) ||\n\t\t(target.classList.contains(\"expanded-lg\") && MediaBreakpoint.up(\"lg\")) ||\n\t\t(target.classList.contains(\"expanded-xl\") && MediaBreakpoint.up(\"xl\"));\n}\n\nfunction removeExpandedClass(target) {\n\ttarget.classList.remove(\"expanded\", \"expanded-sm\", \"expanded-md\", \"expanded-lg\", \"expanded-xl\");\n}\n\n//\n// Pomocn\u00E1 funkce pro nastaven\u00ED t\u0159\u00EDdy \"spou\u0161t\u011B\u010D\u016Fm\" (toggles)\n//\nfunction toggleToggleClasses(toggle, animationKind, classNames, addOrRemove) {\n\t// Nastavme/odstra\u0148me t\u0159\u00EDdy p\u0159\u00EDmo na toggle.\n\tfor (let i = 0; i < classNames.length; ++i) {\n\t\ttoggle.classList[addOrRemove](classNames[i]);\n\t}\n\n\t// Ka\u017Ed\u00FD \"toggle\" m\u016F\u017Ee m\u00EDt je\u0161t\u011B sv\u00E9 \"feedback\" prvky.\n\tlet feedbacksSelector = toggle.getAttribute(\"data-\" + animationKind + \"-feedback\");\n\tif (feedbacksSelector) {\n\t\tlet feedbacks = document.querySelectorAll(feedbacksSelector);\n\t\tfor (let j = 0; j < feedbacks.length; ++j) {\n\t\t\tfor (let i = 0; i < classNames.length; ++i) {\n\t\t\t\tfeedbacks[j].classList[addOrRemove](classNames[i]);\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n//\n// Sbalit nab\u00EDdku\n//\nfunction hideElements(toggles, targets, animationOut, animationKind) {\n\tfor (let i = 0; i < toggles.length; ++i) {\n\t\ttoggleToggleClasses(toggles[i], animationKind, [\"collapsing\"], \"add\");\n\t\ttoggleToggleClasses(toggles[i], animationKind, [\"expanded\", \"expanded-sm\", \"expanded-md\", \"expanded-lg\", \"expanded-xl\"], \"remove\");\n\t\ttoggles[i].trigger(\"slidetogglecollapsing\");\n\t}\n\tfor (let i = 0; i < targets.length; ++i) {\n\t\ttargets[i].classList.add(\"collapsing\");\n\t\ttargets[i].trigger(\"slidetargetcollapsing\");\n\t}\n\n\treturn animationOut(targets).then(function() {\n\t\tfor (let i = 0; i < toggles.length; ++i) {\n\t\t\ttoggleToggleClasses(toggles[i], animationKind, [\"collapsing\"], \"remove\");\n\t\t\ttoggles[i].trigger(\"slidetogglecollapsed\");\n\t\t}\n\t\tfor (let i = 0; i < targets.length; ++i) {\n\t\t\ttargets[i].classList.remove(\"collapsing\");\n\t\t\tremoveExpandedClass(targets[i]);\n\t\t\ttargets[i].trigger(\"slidetargetcollapsed\");\n\t\t}\n\t});\n}\n\n\n//\n// Rozbalit nab\u00EDdku\n//\nfunction showElements(toggles, targets, animationIn, animationKind) {\n\tfor (let i = 0; i < toggles.length; ++i) {\n\t\ttoggleToggleClasses(toggles[i], animationKind, [\"expanding\"], \"add\");\n\t\ttoggles[i].trigger(\"slidetoggleexpanding\");\n\t}\n\tfor (let i = 0; i < targets.length; ++i) {\n\t\ttargets[i].classList.add(\"expanding\");\n\t\ttargets[i].trigger(\"slidetargetexpanding\");\n\t}\n\n\tlet promises = [];\n\n\tfor (let i = 0; i < targets.length; ++i) {\n\t\t// TODO display\n\t\t// let display = targets[i].getAttribute(\"data-\" + animationKind + \"-display\") || Animation.default.display;\n\n\t\tpromises.push(\n\t\t\tanimationIn(targets[i]).then(function() {\n\t\t\t\tfor (let j = 0; j < toggles.length; ++j) {\n\t\t\t\t\ttoggleToggleClasses(toggles[j], animationKind, [\"expanding\"], \"remove\");\n\t\t\t\t\ttoggleToggleClasses(toggles[j], animationKind, [\"expanded\"], \"add\");\n\t\t\t\t\ttoggles[j].trigger(\"slidetoggleexpanded\");\n\t\t\t\t}\n\t\t\t\tfor (let j = 0; j < targets.length; ++j) {\n\t\t\t\t\ttargets[j].classList.remove(\"expanding\");\n\t\t\t\t\ttargets[j].classList.add(\"expanded\");\n\t\t\t\t\ttargets[j].trigger(\"slidetargetexpanded\");\n\t\t\t\t}\n\t\t\t})\n\t\t);\n\t}\n\n\treturn Promise.all(promises);\n}\n\n\n//\n// Pro combobox a v\u00FDb\u011Br variant vznikla tato specialita, kdy je mo\u017En\u00E9 zobrazen\u00FD obsah p\u0159i kliknut\u00ED\n// kamkoliv jinam do prostoru obsah zav\u0159\u00EDt (n\u011Bco jako jsou bubliny s n\u00E1pov\u011Bdou).\n//\n// P\u0159es data atribut \"data-sticky='ignore'\" je mo\u017En\u00E9 p\u0159i kliknut\u00ED v dan\u00E9m kontejneru skr\u00FDv\u00E1n\u00ED vypnout.\n//\nfunction hideNonStickyElements(eventTarget, omitElement) {\n\tif (eventTarget.closest(\"[data-sticky='ignore']\")) {\n\t\treturn;\n\t}\n\n\tlet targets = document.querySelectorAll(\"[data-slide][data-sticky='false'], [data-fade][data-sticky='false']\");\n\tif (!targets.length) {\n\t\treturn;\n\t}\n\n\tfor (let i = 0; i < targets.length; ++i) {\n\t\tlet target = targets[i];\n\n\t\tif (target == omitElement) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet elementSelector = target.getAttribute(\"data-slide\") || target.getAttribute(\"data-fade\");\n\t\tlet animationKind = target.getAttribute(\"data-slide\") ? \"slide\" : \"fade\";\n\t\tlet animationOut = animationKind == \"slide\" ? Animation.slideUp : Animation.fadeOut;\n\n\t\tlet toggles = document.querySelectorAll(\"[data-\" + animationKind + \"='\" + elementSelector + \"']\");\n\t\tlet elements = document.querySelectorAll(elementSelector);\n\n\t\thideElements(toggles, elements, animationOut, animationKind);\n\t}\n}\n\n\n//\n// Core animation\n//\nfunction animate(target, blockAnimationIfRunning) {\n\tblockAnimationIfRunning = blockAnimationIfRunning || false;\n\n\t// Pokud pr\u00E1v\u011B prob\u00EDh\u00E1 n\u011Bjak\u00FD druh animace, tak nic ned\u011Blejme.\n\tif (blockAnimationIfRunning) {\n\t\tlet isAnimating = target.classList.contains(\"expanding\") || target.classList.contains(\"collapsing\");\n\t\tif (isAnimating) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\tlet animationKind = target.getAttribute(\"data-slide\") ? \"slide\" : \"fade\";\n\tlet exclusiveGroup = target.getAttribute(\"data-exclusive\");\n\tlet otherGroups = exclusiveGroup ? document.querySelectorAll(\"[data-\" + animationKind + \"][data-exclusive='\" + exclusiveGroup + \"']\") : [];\n\n\t// Pokud pr\u00E1v\u011B prob\u00EDh\u00E1 n\u011Bjak\u00FD druh animace na exklusivn\u00ED skupin\u011B, tak nic ned\u011Blejme.\n\tif (blockAnimationIfRunning) {\n\t\tfor (let i = 0; i < otherGroups.length; ++i) {\n\t\t\tlet otherGroup = otherGroups[i];\n\t\t\tlet isAnimating = otherGroup.classList.contains(\"expanding\") || otherGroup.classList.contains(\"collapsing\");\n\t\t\tif (isAnimating) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\tlet isExpanded = isTargetExpanded(target);\n\tlet animationIn = animationKind == \"slide\" ? Animation.slideDown : Animation.fadeIn;\n\tlet animationOut = animationKind == \"slide\" ? Animation.slideUp : Animation.fadeOut;\n\tlet elementSelector = target.getAttribute(\"data-\" + animationKind);\n\tlet direction = target.getAttribute(\"data-direction\");\n\tlet waitForFinish = target.getAttribute(\"data-wait-for-finish\") == \"true\";\n\n\t// N\u011Bkter\u00E1 tla\u010D\u00EDtka mohou m\u00EDt pouze jednosm\u011Brnou funkci (pouze otev\u0159\u00EDt/pouze zav\u0159\u00EDt).\n\t// Zablokujme proto opa\u010Dnou funkci.\n\tif ((isExpanded && (direction == \"down\" || direction == \"in\")) || (!isExpanded && (direction == \"up\" || direction == \"out\"))) {\n\t\treturn;\n\t}\n\n\t// V\u0161echna tla\u010D\u00EDtka, kter\u00E1 vedou na stejn\u00FD c\u00EDl (abychom m\u011Bli mo\u017Enost jednu a tut\u00E9\u017E nab\u00EDdku rozbalovat/sbalovat z v\u00EDce m\u00EDst)\n\tlet toggles = document.querySelectorAll(\"[data-\" + animationKind + \"='\" + elementSelector + \"']\");\n\n\t// C\u00EDl rozbalen\u00ED/sbalen\u00ED\n\tlet elements = document.querySelectorAll(elementSelector);\n\n\t// Akce\n\tif (isExpanded) {\n\t\t// Skryj polo\u017Eky\n\t\treturn hideElements(toggles, elements, animationOut, animationKind);\n\t}\n\telse {\n\t\t// Pokud je \u017E\u00E1d\u00E1no, skryj v\u0161echny ostatn\u00ED polo\u017Eky, kter\u00E9 pat\u0159\u00ED do stejn\u00E9 skupiny.\n\t\tlet promises = [];\n\t\tfor (let i = 0; i < otherGroups.length; ++i) {\n\t\t\tlet otherGroup = otherGroups[i];\n\n\t\t\tif (target == otherGroup || !isTargetExpanded(otherGroup)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet otherElementSelector = otherGroup.getAttribute(\"data-\" + animationKind);\n\t\t\t// let otherToggles = document.querySelectorAll(\"[data-\" + animationKind + \"='\" + otherElementSelector + \"']\");\n\t\t\tlet otherElements = document.querySelectorAll(otherElementSelector);\n\n\t\t\tpromises.push(hideElements([otherGroup], otherElements, animationOut, animationKind));\n\t\t}\n\n\t\tif (waitForFinish) {\n\t\t\t// Po\u010Dkej, ne\u017E se dokon\u010D\u00ED skr\u00FDv\u00E1n\u00ED.\n\t\t\treturn Promise.all(promises).then(function() {\n\t\t\t\treturn showElements(toggles, elements, animationIn, animationKind);\n\t\t\t});\n\t\t}\n\t\telse {\n\t\t\t// Zobraz polo\u017Eky rovnou\n\t\t\treturn showElements(toggles, elements, animationIn, animationKind);\n\t\t}\n\t}\n}\n\n\n// *************************************************************************\n// Animation queue\n// *************************************************************************\n\n// Kdy\u017E u\u017Eivatel\u00E9 zb\u011Bsile klikali, tak se animace za\u010Daly r\u016Fzn\u011B rozb\u00EDjet. Prvn\u00ED ochrana\n// proti tomuto chov\u00E1n\u00ED bylo ignorov\u00E1n\u00ED kliknut\u00ED, dokud se p\u0159edchoz\u00ED animace nedokon\u010Dila.\n// V\u00FDsledek ale nebyl \u00FApln\u011B p\u0159\u00EDjemn\u00FD, vypadalo to, jako kdy\u017E se telefon rozbil a nechce\n// reagovat na u\u017Eivatelovy povely. Proto jsou nyn\u00ED animace za sebe skl\u00E1d\u00E1ny do fronty\n// a vykonaj\u00ED se postupn\u011B jedna po druh\u00E9. Tak\u00E9 to nen\u00ED \u00FApln\u011B ide\u00E1ln\u00ED, ale v\u00FDsledek se\n// zd\u00E1 b\u00FDt pocitov\u011B lep\u0161\u00ED. St\u00E1lo by za \u00FAvahu p\u0159idat trochu robustnosti v p\u0159\u00EDpad\u011B,\n// \u017Ee nap\u0159. dynamick\u00FD element v pr\u016Fb\u011Bhu vykon\u00E1v\u00E1n\u00ED fronty ze str\u00E1nky zmiz\u00ED. Toto by\n// sou\u010Dasnou implementaci fronty nejsp\u00ED\u0161e rozbilo. Fronta je spole\u010Dn\u00E1 pro v\u0161echny animace,\n// dal\u0161\u00ED vylep\u0161en\u00ED by p\u0159idalo na robustnosti a u\u017Eivatelsk\u00E9 p\u0159\u00EDv\u011Btivosti, kdyby na sob\u011B nez\u00E1visl\u00E9\n// animace se mohly animovat sou\u010Dasn\u011B (rozbalit/sbalit jedno tla\u010D\u00EDtko a p\u0159itom rozbalit/sbalit\n// jin\u00E9 tla\u010D\u00EDtko, kter\u00E9 nen\u00ED v t\u00E9 sam\u00E9 exklusivn\u00ED skupin\u011B).\n\nfunction PromiseQueue() {\n\tthis.queue = [];\n\tthis.workingOnPromise = false;\n}\nPromiseQueue.prototype = {\n\tconstructor: PromiseQueue,\n\n\tpush: function(promise) {\n\t\tthis.queue.push(promise);\n\t\tthis._dequeue();\n\t},\n\n\t_dequeue: function() {\n\t\tlet self = this;\n\n\t\tif (this.workingOnPromise) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet promise = this.queue.shift();\n\t\tif (!promise) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.workingOnPromise = true;\n\n\t\t// Pozor, funkce nemus\u00ED nutn\u011B vr\u00E1tit promise.\n\t\tlet returnValue = promise();\n\t\tif (returnValue) {\n\t\t\treturnValue.then(function() {\n\t\t\t\tself.workingOnPromise = false;\n\t\t\t\tself._dequeue();\n\t\t\t})\n\t\t\t\t.catch(function() {\n\t\t\t\t\tself.workingOnPromise = false;\n\t\t\t\t\tself._dequeue();\n\t\t\t\t});\n\t\t}\n\t\telse {\n\t\t\t// Pokud nevr\u00E1tila promise, nen\u00ED na co \u010Dekat a pokra\u010Dujme dal\u0161\u00EDm prvkem ve front\u011B.\n\t\t\tthis.workingOnPromise = false;\n\t\t\tthis._dequeue();\n\t\t}\n\t}\n};\n\nlet animationQueue = new PromiseQueue();\n\n\n// *************************************************************************\n// Event\n// *************************************************************************\n\ndocument.addEventListener(\"click\", function(event) {\n\tlet target = event.target.closest(\"[data-slide], [data-fade]\");\n\tif (!target) {\n\t\thideNonStickyElements(event.target, null);\n\t\treturn;\n\t}\n\n\tlet breakpointDown = target.getAttribute(\"data-slide-down\") || target.getAttribute(\"data-fade-down\");\n\tlet breakpointUp = target.getAttribute(\"data-slide-up\") || target.getAttribute(\"data-fade-up\");\n\n\tif ((breakpointDown && !MediaBreakpoint.down(breakpointDown)) || (breakpointUp && !MediaBreakpoint.up(breakpointUp))) {\n\t\treturn\n\t}\n\n\tlet preventDefault = (target.getAttribute(\"data-slide-prevent\") || target.getAttribute(\"data-fade-prevent\")) == \"true\"\n\tif (preventDefault) {\n\t\t// Explicitn\u00ED po\u017Eadavek na zablokov\u00E1n\u00ED v\u00FDchoz\u00ED ud\u00E1losti.\n\t\tevent.preventDefault();\n\t}\n\telse {\n\t\t// Potla\u010Dovat v\u00FDchoz\u00ED funkcionalitu budeme pouze u odkaz\u016F s pr\u00E1zdn\u00FDm \"href\" a tla\u010D\u00EDtek, kter\u00E9 nebudou m\u00EDt typ \"submit\".\n\t\t// U ostatn\u00EDch nech\u00E1me akci prob\u011Bhnout, proto\u017Ee to m\u016F\u017Ee m\u00EDt n\u011Bjak\u00FD dal\u0161\u00ED v\u00FDznam (jako nap\u0159. sbalov\u00E1n\u00ED combobox\u016F\n\t\t// p\u0159i v\u00FDb\u011Bru n\u011Bjak\u00E9 z polo\u017Eek).\n\t\tpreventLinkDefault(event, target);\n\t}\n\n\thideNonStickyElements(event.target, target);\n\n\tconst promise = animate.bind(null, target);\n\tanimationQueue.push(promise);\n});\n", "import \"../dom_extend\";\n\n// \u00DAlo\u017Ei\u0161t\u011B pro objekty reprezentuj\u00EDc\u00ED mod\u00E1ln\u00ED okna.\nconst modals = new WeakMap();\n\n// *************************************************************************\n// T\u0159\u00EDda.\n// *************************************************************************\n\n//\n// T\u0159\u00EDda mod\u00E1ln\u00EDho okna. Prom\u011Bnn\u00E1 \"element\" ukazuje na t\u0159\u00EDdu s mod\u00E1ln\u00EDm oknem \".modal\".\n// Pokud bychom pot\u0159ebovali mod\u00E1ln\u00ED okno i vytvo\u0159it, je zapot\u0159eb\u00ED\n// bu\u010F ru\u010Dn\u011B vystav\u011Bt vhodn\u00FD HTML markup a nebo si pomoci programov\u011B\n// zavol\u00E1n\u00EDm funkce Modal.create(...).\n//\nexport function Modal(element) {\n\tthis.element = element;\n}\nModal.prototype = {\n\tcontructor: Modal,\n\n\t//\n\t// Zobrazen\u00ED mod\u00E1ln\u00EDho okna.\n\t//\n\topen: function() {\n\t\tdocument.body.classList.add(\"modal-opened\");\n\t\tthis.element.classList.add(\"opened\");\n\t},\n\n\n\t//\n\t// Ukon\u010Den\u00ED mod\u00E1ln\u00EDho okna.\n\t// Mod\u00E1ln\u00ED okno po jeho zav\u0159en\u00ED odstran\u00EDme.\n\t// Budeme podporovat zobrazen\u00ED v\u00EDcen\u00E1sobn\u00FDch mod\u00E1ln\u00EDch oken, i kdy\u017E zat\u00EDm jen takov\u00FDm\n\t// jednoduch\u00FDm zp\u016Fsobem.\n\t//\n\tclose: function() {\n\t\t// Zav\u0159eme mod\u00E1ln\u00ED okno.\n\t\tthis.element.classList.remove(\"opened\");\n\n\t\t// Zjist\u011Bme, kolik m\u00E1me otev\u0159en\u00FDch mod\u00E1ln\u00EDch oken.\n\t\tvar openedModalsCount = document.querySelectorAll(\".modal.opened\").length;\n\t\tif (!openedModalsCount) {\n\t\t\t// Budeme zav\u00EDrat posledn\u00ED okno, proto m\u016F\u017Eeme zru\u0161it speci\u00E1ln\u00ED t\u0159\u00EDdu na body elementu.\n\t\t\tdocument.body.classList.remove(\"modal-opened\");\n\t\t}\n\n\t\t// Aby se n\u00E1m nemno\u017Eily mod\u00E1ln\u00ED okna, tak (krom\u011B t\u011Bch, co jsou ozna\u010Deny jako \"inPlace\")\n\t\t// je z k\u00F3du zcela odstra\u0148me. V\u011Bt\u0161inu oken nem\u00E1 smysl otev\u00EDrat v\u00EDcekr\u00E1t, tj. jejich\n\t\t// \u017Eivotn\u00ED cyklus typicky jejich skryt\u00EDm skon\u010D\u00ED.\n\t\tif (!this.isInPlace) {\n\t\t\tmodals.delete(this.element);\n\t\t\tthis.element.remove();\n\t\t}\n\t},\n\n\n\t//\n\t// Je dan\u00E9 mod\u00E1ln\u00ED okno ozna\u010Den\u00E9 jako \"inPlace\"? In place mod\u00E1ln\u00ED okna z\u016Fst\u00E1vaj\u00ED v k\u00F3du\n\t// a p\u0159i jejich zav\u0159en\u00ED se z k\u00F3du neodstra\u0148uj\u00ED.\n\t//\n\tget isInPlace() {\n\t\treturn (this.element.getAttribute(\"data-modal\") || \"\").includes(\"inPlace\");\n\t},\n\n\tget isNoClose() {\n\t\treturn (this.element.getAttribute(\"data-modal\") || \"\").includes(\"noClose\");\n\t}\n\n};\n\n//\n// Vytvo\u0159\u00ED z\u00E1klad mod\u00E1ln\u00EDho okna a p\u0159id\u00E1 do DOM stromu. Vrac\u00ED ko\u0159enov\u00FD element mod\u00E1ln\u00EDho okna.\n// Okno po vytvo\u0159en\u00ED z\u016Fst\u00E1v\u00E1 nezobrazen\u00E9.\n//\nModal.create = function() {\n\tvar modal = document.createElement(\"div\");\n\tmodal.classList.add(\"modal\");\n\n\tdocument.body.appendChild(modal);\n\treturn modal;\n}\n\n//\n// Instance mod\u00E1ln\u00EDho okna m\u00E1me ulo\u017Een\u00E9 ve WeakMap. Z\u00EDskejme instanci mod\u00E1ln\u00EDho okna pro dan\u00FD element.\n// Nen\u00ED-li element zad\u00E1n, mod\u00E1ln\u00ED okno se samo vytvo\u0159\u00ED (tj. nen\u00ED nutn\u00E9 volat metodu \"create\").\n//\nModal.get = function(element, childObject, factoryMethod) {\n\tif (!childObject) {\n\t\tchildObject = Modal;\n\t}\n\tif (!factoryMethod) {\n\t\tfactoryMethod = childObject.create;\n\t}\n\tif (!element) {\n\t\telement = factoryMethod();\n\t}\n\telement = element.closest(\".modal\");\n\n\tif (!modals.has(element)) {\n\t\tmodals.set(element, new childObject(element));\n\t}\n\n\treturn modals.get(element);\n}\n\n\n//\n// Je otev\u0159en\u00E9 n\u011Bjak\u00E9 mod\u00E1ln\u00ED okno?\n//\nModal.isAnyOpened = function() {\n\treturn 0 < document.querySelectorAll(\".modal.opened\").length;\n}\n\n//\n// Zav\u0159en\u00ED v\u0161ech mod\u00E1ln\u00EDch oken najednou.\n//\nModal.closeAll = function() {\n\tvar modals = document.querySelectorAll(\".modal.opened\");\n\tfor (var i = 0; i < modals.length; ++i) {\n\t\tModal.get(modals[i]).close();\n\t}\n}\n\n//\n// Zav\u0159en\u00ED posledn\u00EDho mod\u00E1ln\u00EDho okna.\n//\nModal.closeLast = function() {\n\tvar modals = document.querySelectorAll(\".modal.opened\");\n\tif (0 < modals.length) {\n\t\tModal.get(modals[modals.length - 1]).close();\n\t}\n}\n\n\n\n// *************************************************************************\n// Ud\u00E1losti.\n// *************************************************************************\n\n//\n// Otev\u0159en\u00ED mod\u00E1ln\u00EDho okna, kter\u00E9 je \"in-place\", tj. rovnou vlo\u017Een\u00E9ho v k\u00F3du a nep\u0159ijde nap\u0159.\n// formou flash message. Narozd\u00EDl od ostatn\u00EDch oken se po jeho uzav\u0159en\u00ED z k\u00F3du neodstra\u0148uje.\n//\ndocument.addEventSelectorListener(\"click\", \"[href][data-modal='open']\", function(event, target) {\n\tevent.preventDefault();\n\tvar selector = target.getAttribute(\"href\");\n\tvar modal = document.querySelector(selector);\n\tModal.get(modal).open();\n});\n\n\n//\n// Uzav\u0159en\u00ED mod\u00E1ln\u00EDho okna kliknut\u00EDm na zav\u00EDrac\u00ED k\u0159\u00ED\u017Eek\n// (k\u0159\u00ED\u017Eek mus\u00ED b\u00FDt kdekoliv v podstrom\u011B dan\u00E9ho mod\u00E1ln\u00EDho okna, kter\u00E9 budeme zav\u00EDrat).\n//\ndocument.addEventSelectorListener(\"click\", \"[data-modal='close']\", function(event, target) {\n\tevent.preventDefault();\n\tModal.get(target).close();\n});\n\n\n//\n// Uzav\u0159en\u00ED mod\u00E1ln\u00EDch oken stisknut\u00EDm kl\u00E1vesy \"escape\".\n// Uzav\u0159e posledn\u00ED otev\u0159en\u00E9 mod\u00E1ln\u00ED okno.\n//\ndocument.addEventListener(\"keyup\", function(event) {\n\tif (event.key == \"Escape\" && Modal.isAnyOpened()) {\n\t\tevent.preventDefault();\n\t\tModal.closeLast();\n\t}\n});\n\n\n//\n// Uzav\u0159en\u00ED mod\u00E1ln\u00EDho okna kliknut\u00EDm na \u010Dern\u00E9 pozad\u00ED.\n//\ndocument.addEventMatchesListener(\"click\", \".modal.opened\", function(event, target) {\n\tlet modal = ModalDialog.get(target);\n\tif (!modal.isNoClose) {\n\t\tevent.preventDefault();\n\t\tmodal.close();\n\t}\n});\n\n\n\n// *************************************************************************\n// Publikujeme do ve\u0159ejn\u00E9ho namespace.\n// *************************************************************************\n", "import \"./dom_extend\";\n\n\n//\n// Jedna polo\u017Eka v carouselu.\n// Polo\u017Eka v carouselu se skl\u00E1d\u00E1 ze \"slide\" (tj. to co, zobrazujeme) a \"dot\" (tj. navigace na tento sn\u00EDmek).\n// \"Dot\" je voliteln\u00FD (navigace nen\u00ED povinn\u00E1) a fyzicky m\u016F\u017Ee m\u00EDt libovolnou podobu (tj. nejen te\u010Dky, ale t\u0159eba\n// i obr\u00E1zkov\u00FD n\u00E1hled atd.).\n//\nfunction CarouselItem(slideElement, dotElement) {\n\tthis.slide = slideElement;\n\tthis.dot = dotElement;\n}\nCarouselItem.prototype = {\n\tconstructor: CarouselItem,\n\n\t//\n\t// P\u0159id\u00E1 k slide i dot t\u0159\u00EDdu nebo t\u0159\u00EDdy (jsou jako voliteln\u00E9 argumenty).\n\t//\n\taddClass: function() {\n\t\tthis.slide.classList.add.apply(this.slide.classList, arguments);\n\t\tif (this.dot) {\n\t\t\tthis.dot.classList.add.apply(this.dot.classList, arguments);\n\t\t}\n\t},\n\n\t//\n\t// Odebere od slide a dot t\u0159\u00EDdu nebo t\u0159\u00EDdy (jsou jako voliteln\u00E9 argumenty).\n\t//\n\tremoveClass: function() {\n\t\tthis.slide.classList.remove.apply(this.slide.classList, arguments);\n\t\tif (this.dot) {\n\t\t\tthis.dot.classList.remove.apply(this.dot.classList, arguments);\n\t\t}\n\t},\n\n\t//\n\t// M\u00E1 slide danou t\u0159\u00EDdu?\n\t// Sta\u010D\u00ED kontrolovat na slide, proto\u017Ee ten je (na rozd\u00EDl od dot) povinn\u00FD a t\u0159\u00EDdy\n\t// jsou u slide i dot v\u017Edy stejn\u00E9.\n\t//\n\tcontainsClass: function(klass) {\n\t\treturn this.slide.classList.contains(klass);\n\t},\n\n\tclearAnimation: function() {\n\t\tthis.slide.style.animation = \"none\";\n\t\tthis.slide.offsetHeight; // Reset\n\t},\n\n\tresumeAnimation: function() {\n\t\tthis.slide.style.animation = null;\n\t}\n};\n\n\n//\n// Carousel\n//\nexport function Carousel(wrapper) {\n\t// Id intervalu pro autoplay (pro mo\u017Enost zru\u0161it interval).\n\tthis.intervalId = null;\n\n\t// Autoplay bu\u010F m\u016F\u017Ee b\u00FDt do\u010Dasn\u011B pozastaven (nap\u0159. p\u0159i najet\u00ED my\u0161i) a nebo \u00FApln\u011B zastaven (nap\u0159. p\u0159i kliknut\u00ED na navigaci).\n\tthis.isAutoplayPaused = false;\n\n\t// [px] Kolik pixel\u016F u\u017Eivatel mus\u00ED ujet prstem, aby byl pohyb rozpozn\u00E1n jako tah.\n\tthis.touchBound = 30;\n\n\t// X-ov\u00E1 pozice kliknut\u00ED (pro detekci gesta pohybu do stran - n\u00E1sleduj\u00EDc\u00ED nebo p\u0159edchoz\u00ED slide).\n\tthis.touchX = null;\n\n\t// [ms] Interval v\u00FDm\u011Bny slid\u016F, m\u00E1-li b\u00FDt autoplay aktivn\u00ED.\n\tthis.interval = wrapper.getAttribute(\"data-carousel-interval\");\n\n\t// Je povoleno zastaven\u00ED p\u0159ehr\u00E1v\u00E1n\u00ED p\u0159i najet\u00ED my\u0161\u00ED?\n\tthis.isPauseOnHoverEnabled = wrapper.getAttribute(\"data-carousel-pauseonhover\") !== \"false\";\n\n\t// Kontejnery carouselu.\n\tthis.wrapper = wrapper;\n\tthis.container = wrapper.querySelector(\"[data-carousel='slides']\");\n\tthis.navigation = wrapper.querySelector(\"[data-carousel='dots']\")\n\n\t// Slidy + naviga\u010Dn\u00ED tla\u010D\u00EDtka.\n\tthis.slides = this.container ? this.container.children : [];\n\tthis.dots = this.navigation ? this.navigation.children : [];\n\n\t// Slidy ulo\u017E\u00EDme do vlastn\u00ED struktury pro snaz\u0161\u00ED zach\u00E1zen\u00ED.\n\t// Naviga\u010Dn\u00ED te\u010Dky nejsou povinn\u00E9.\n\tthis.items = [];\n\tfor (var i = 0; i < this.slides.length; ++i) {\n\t\tthis.items.push(new CarouselItem(\n\t\t\tthis.slides[i],\n\t\t\ti < this.dots.length ? this.dots[i] : null\n\t\t));\n\t}\n\n\t// Registrace ud\u00E1lost\u00ED.\n\tfor (let button of wrapper.querySelectorAll(\"[data-carousel='prev']\")) {\n\t\tbutton.addEventListener(\"click\", this.onPrev.bind(this));\n\t}\n\tfor (let button of wrapper.querySelectorAll(\"[data-carousel='next']\")) {\n\t\tbutton.addEventListener(\"click\", this.onNext.bind(this));\n\t}\n\tfor (var i = 0; i < this.dots.length; ++i) {\n\t\tthis.dots[i].addEventListener(\"click\", this.onNavigation.bind(this));\n\t}\n\n\t// Ud\u00E1losti pro posun prstem.\n\tthis.container.addEventListener(\"touchstart\", this.onTouchStart.bind(this), { passive: true });\n\tthis.container.addEventListener(\"touchmove\", this.onTouchMove.bind(this), { passive: false });\n\tthis.container.addEventListener(\"mouseenter\", this.onMouseEnter.bind(this), { passive: true });\n\tthis.container.addEventListener(\"mouseleave\", this.resumeAutoplay.bind(this), { passive: true });\n\n\t// Nastartujme autoplay (je-li u\u017Eivatelem definovan\u00FD).\n\tthis.initByActive();\n\tthis.startAutoplay();\n}\nCarousel.prototype = {\n\tconstructor: Carousel,\n\n\t//\n\t// Posune se na nov\u00FD slide.\n\t//\n\tmove: function(index, direction, force) {\n\t\tvar activeIndex = this.activeIndex;\n\t\tif (!force && index == activeIndex) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Pokud nen\u00ED sm\u011Br zad\u00E1n, zkusme si ho odvodit.\n\t\tif (!direction && activeIndex !== -1) {\n\t\t\t// Carousel je \"nekone\u010Dn\u00FD\", zjist\u011Bme proto, kam se u\u017Eivatel posouv\u00E1 (zda vp\u0159ed nebo vzad).\n\t\t\tvar forwardDistance = activeIndex < index ? index - activeIndex : this.items.length - activeIndex + index;\n\t\t\tvar backwardDistance = activeIndex < index ? this.items.length - index + activeIndex : activeIndex - index;\n\t\t\tdirection = forwardDistance <= backwardDistance ? \"forward\" : \"backward\";\n\t\t}\n\n\t\tif (0 <= activeIndex) {\n\t\t\tvar activeItem = this.items[activeIndex];\n\t\t\tthis.wrapper.trigger(\"carouselslidebefore\", { item: activeItem });\n\t\t}\n\n\t\tfor (var i = 0; i < this.items.length; ++i) {\n\t\t\tvar item = this.items[i];\n\t\t\titem.removeClass(\"active\", \"last\", \"next\", \"forward\", \"backward\");\n\t\t\tif (direction) {\n\t\t\t\titem.addClass(direction);\n\t\t\t}\n\t\t\titem.clearAnimation();\n\t\t}\n\n\t\tfor (var i = 0; i < this.items.length; ++i) {\n\t\t\tvar orderIndex = (index + this.items.length - (direction != \"backward\" ? 1 : 0) + i) % this.items.length;\n\t\t\tvar item = this.items[orderIndex];\n\t\t\titem.slide.style.order = i;\n\t\t}\n\n\t\tvar item = this.items[index];\n\t\titem.addClass(\"active\");\n\n\t\tvar prevItem = this.items[this.prevIndex(index)];\n\t\tif (item != prevItem) {\n\t\t\tprevItem.addClass(\"last\");\n\t\t}\n\n\t\tvar nextItem = this.items[this.nextIndex(index)];\n\t\tif (item != nextItem) {\n\t\t\tnextItem.addClass(\"next\");\n\t\t}\n\n\t\tthis.wrapper.trigger(\"carouselslide\", { item: item });\n\n\t\tfor (var i = 0; i < this.items.length; ++i) {\n\t\t\tvar item = this.items[i];\n\t\t\titem.resumeAnimation();\n\t\t}\n\t},\n\n\tget activeIndex() {\n\t\treturn Array.prototype.findIndex.call(this.slides, function(slide) {\n\t\t\treturn slide.classList.contains(\"active\");\n\t\t});\n\t},\n\n\t//\n\t// Dal\u0161\u00ED obr\u00E1zek\n\t//\n\tnext: function() {\n\t\tvar newIndex = this.nextIndex(this.activeIndex);\n\t\tthis.move(newIndex, \"forward\");\n\t},\n\n\tnextIndex: function(idx) {\n\t\treturn (idx + 1) % this.items.length;\n\t},\n\n\t//\n\t// P\u0159edchoz\u00ED obr\u00E1zek\n\t//\n\tprev: function() {\n\t\tvar newIndex = this.prevIndex(this.activeIndex);\n\t\tthis.move(newIndex, \"backward\");\n\t},\n\n\tprevIndex: function(idx) {\n\t\treturn (idx + this.items.length - 1) % this.items.length;\n\t},\n\n\t//\n\t// Handler kliknut\u00ED na tla\u010D\u00EDtko \"dal\u0161\u00ED\".\n\t//\n\tonNext: function(event) {\n\t\tevent.preventDefault();\n\t\tthis.stopAutoplay();\n\t\tthis.next();\n\t},\n\n\t//\n\t// Handler kliknut\u00ED na tla\u010D\u00EDtko \"p\u0159edchoz\u00ED\".\n\t//\n\tonPrev: function(event) {\n\t\tevent.preventDefault();\n\t\tthis.stopAutoplay();\n\t\tthis.prev();\n\t},\n\n\t//\n\t// Handler kliknut\u00ED na tla\u010D\u00EDtko sn\u00EDmku v navigaci.\n\t//\n\tonNavigation: function(event) {\n\t\tevent.preventDefault();\n\t\tthis.stopAutoplay();\n\t\tvar newIndex = Array.prototype.indexOf.call(event.currentTarget.parentNode.children, event.currentTarget);\n\t\tthis.move(newIndex, newIndex < this.activeIndex ? \"backward\" : \"forward\");\n\t},\n\n\t//\n\t// Handler dotyku prstem v carouselu.\n\t//\n\tonTouchStart: function(event) {\n\t\tthis.touchX = event.touches[0].clientX;\n\t},\n\n\t//\n\t// P\u0159esun na dal\u0161\u00ED sn\u00EDmek gestem prstu.\n\t//\n\tonTouchMove: function(event) {\n\t\tif (this.touchX !== null) {\n\t\t\tvar x = event.touches[0].clientX;\n\t\t\tvar difference = this.touchX - x;\n\t\t\tif (this.touchBound < Math.abs(difference)) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tthis.stopAutoplay();\n\n\t\t\t\tif (0 < difference) {\n\t\t\t\t\tthis.next();\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.prev();\n\t\t\t\t}\n\n\t\t\t\tthis.touchX = null;\n\t\t\t}\n\t\t}\n\t},\n\n\t//\n\t// Vstup my\u0161i\n\t//\n\tonMouseEnter: function(event) {\n\t\tif (this.isPauseOnHoverEnabled) {\n\t\t\tthis.pauseAutoplay();\n\t\t}\n\t},\n\n\t//\n\t// Autoplay tick - p\u0159echod na dal\u0161\u00ED sn\u00EDmek po tiku \u010Dasova\u010De.\n\t//\n\tonTick: function() {\n\t\tif (!this.isAutoplayPaused) {\n\t\t\tthis.next();\n\t\t}\n\t},\n\n\t//\n\t// Pokud je n\u011Bjak\u00FD slide ozna\u010Den\u00FD jako aktivn\u00ED, nastartujeme na n\u011Bj.\n\t//\n\tinitByActive: function() {\n\t\tlet activeIndex = this.activeIndex;\n\t\tif (activeIndex && 0 < activeIndex) {\n\t\t\tthis.move(activeIndex, \"forward\", true);\n\t\t}\n\t},\n\n\t//\n\t// Spust\u00ED autoplay p\u0159ehr\u00E1v\u00E1n\u00ED.\n\t//\n\tstartAutoplay: function() {\n\t\tif (this.interval && 1 < this.items.length) {\n\t\t\tthis.stopAutoplay();\n\t\t\tthis.intervalId = setInterval(this.onTick.bind(this), this.interval);\n\t\t\tthis.container.classList.add(\"autoplay\");\n\t\t}\n\t},\n\n\t//\n\t// Zastav\u00ED auto-p\u0159ehr\u00E1v\u00E1n\u00ED.\n\t//\n\tstopAutoplay: function() {\n\t\tif (this.intervalId) {\n\t\t\tclearInterval(this.intervalId);\n\t\t\tthis.intervalId = null;\n\t\t\tthis.container.classList.remove(\"autoplay\");\n\t\t}\n\t},\n\n\t//\n\t// Pozastav\u00ED auto-p\u0159ehr\u00E1v\u00E1n\u00ED.\n\t//\n\tpauseAutoplay: function() {\n\t\tthis.isAutoplayPaused = true;\n\t},\n\n\t//\n\t// Op\u011Btovn\u011B rozb\u011Bhne auto-p\u0159ehr\u00E1v\u00E1n\u00ED (pouze v p\u0159\u00EDpad\u011B, \u017Ee bylo \"pauznut\u00E9\").\n\t//\n\tresumeAutoplay: function() {\n\t\tthis.isAutoplayPaused = false;\n\t}\n};\n", "import { Modal } from \"./modal\";\nimport { Carousel } from \"../carousel\";\n\n// *************************************************************************\n// T\u0159\u00EDda s mod\u00E1ln\u00ED galeri\u00ED.\n//\n// ModalGallery nen\u00ED p\u0159ed\u00E1na do ve\u0159ejn\u00E9ho namespace (nen\u00ED to zat\u00EDm pot\u0159eba).\n// ModalGallery pou\u017E\u00EDv\u00E1 Carousel, \u010D\u00EDm\u017E se vy\u0159e\u0161ila cel\u00E1 funk\u010Dn\u00ED str\u00E1nka v\u011Bci. \u00DAkolem\n// t\u00E9to t\u0159\u00EDdy je tak pouze spojit dohromady funkcionalitu mod\u00E1ln\u00EDho okna a carouselu.\n// Mod\u00E1ln\u00ED dialog proto roz\u0161\u00ED\u0159\u00EDme o markup pro carousel, do kter\u00E9ho p\u0159id\u00E1me obr\u00E1zky.\n// A to je cel\u00E9... v\u0161echno ostatn\u00ED (ve\u0161kerou funkcionalitu) u\u017E pak zajist\u00ED hotov\u00E9\n// t\u0159\u00EDdy Modal a Carousel.\n// *************************************************************************\n\n//\n// T\u0159\u00EDda ModalGallery d\u011Bd\u00ED od t\u0159\u00EDdy Modal.\n//\nexport function ModalGallery(element) {\n\tModal.call(this, element);\n\tthis.gallery = this.element.querySelector(\".modal-gallery-inner\");\n\tthis.carousel = new Carousel(this.gallery);\n\n\tthis.gallery.addEventListener(\"carouselslidebefore\", this.onBeforeSlide.bind(this));\n\tthis.gallery.addEventListener(\"carouselslide\", this.onAfterSlide.bind(this));\n\n\tthis.enableClipboard = false;\n}\nModalGallery.prototype = Object.create(Modal.prototype);\nModalGallery.prototype.constructor = ModalGallery;\n\nModalGallery.prototype.onBeforeSlide = function(event) {\n\tvar clipboardButton = this.gallery.querySelector(\".modal-btn[data-clipboard]\");\n\tif (clipboardButton) {\n\t\tclipboardButton.remove();\n\t}\n}\n\nModalGallery.prototype.onAfterSlide = function(event) {\n\tif (this.enableClipboard) {\n\t\tvar url = event.detail.item.slide.getAttribute(\"src\");\n\t\tthis.gallery.querySelector(\".modal-gallery-content\").innerHTML += \"\";\n\t}\n}\n\n\n//\n// Vytvo\u0159\u00ED mod\u00E1ln\u00ED dialog s kostrou galerie.\n//\nModalGallery.create = function(links) {\n\tvar modal = Modal.create();\n\tmodal.classList.add(\"modal-gallery\");\n\n\tvar hasDots = 1 < links.length;\n\n\t// Oby\u010Dejn\u00FD mod\u00E1ln\u00ED dialog obohat\u00EDme o markup galerie (jej\u00ED kostry).\n\tmodal.innerHTML = \"\";\n\n\t// P\u0159id\u00E1me obr\u00E1zky (nebo videa).\n\tvar slides = modal.querySelector(\"[data-carousel='slides']\");\n\tvar dots = modal.querySelector(\"[data-carousel='dots']\");\n\n\tfor (var i = 0; i < links.length; ++i) {\n\t\tvar link = links[i];\n\t\tvar url = link.getAttribute(\"href\") || link.getAttribute(\"data-href\");\n\t\tvar caption = link.getAttribute(\"data-caption\");\n\t\tvar isAutoplay = link.getAttribute(\"data-gallery-autoplay\") == \"true\";\n\n\t\t// Slide\n\t\tlet slide = document.createElement(\"div\");\n\t\tslide.classList.add(\"modal-gallery-slide\");\n\n\t\tif (url.match(/.*\\.mp4$/i)) {\n\t\t\t// Video\n\t\t\tvar video = document.createElement(\"video\");\n\t\t\tvideo.setAttribute(\"src\", url);\n\t\t\tvideo.setAttribute(\"controls\", \"controls\");\n\t\t\tif (isAutoplay) {\n\t\t\t\tvideo.setAttribute(\"autoplay\", \"autoplay\");\n\t\t\t}\n\n\t\t\tslide.appendChild(video);\n\n\t\t\t// TODO:\n\t\t\t// if (dots) { ... }\n\t\t}\n\t\telse if (url.match(/^http(s)?:\\/\\/(www\\.)?youtube\\.com\\//i) || url.match(/^http(s)?:\\/\\/(www\\.)?youtu\\.be\\//i)) {\n\t\t\tlet urlParts = new URL(url);\n\t\t\tlet videoId = urlParts.searchParams.get(\"v\") || urlParts.pathname.replace(/^\\//, \"\");\n\n\t\t\tlet iframe = document.createElement(\"iframe\");\n\t\t\tiframe.setAttribute(\"width\", 1920);\n\t\t\tiframe.setAttribute(\"height\", 1080);\n\t\t\tiframe.setAttribute(\"src\", \"https://www.youtube-nocookie.com/embed/\" + videoId + (isAutoplay ? \"?autoplay=1\" : \"\"));\n\t\t\tiframe.setAttribute(\"frameborder\", \"0\");\n\t\t\tiframe.setAttribute(\"allow\", \"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\");\n\t\t\tiframe.setAttribute(\"allowfullscreen\", \"allowfullscreen\");\n\n\t\t\tslide.appendChild(iframe);\n\t\t}\n\t\telse {\n\t\t\t// Obr\u00E1zek\n\t\t\tslide.classList.add(\"modal-sending-request\");\n\t\t\tvar image = document.createElement(\"img\");\n\t\t\timage.onload = function() {\n\t\t\t\tslide.classList.remove(\"modal-sending-request\");\n\t\t\t}\n\t\t\timage.src = url;\n\n\t\t\tslide.appendChild(image);\n\n\t\t\tif (dots) {\n\t\t\t\tvar dot = document.createElement(\"img\");\n\t\t\t\tdot.setAttribute(\"src\", url);\n\t\t\t\tdots.appendChild(dot);\n\t\t\t}\n\n\t\t\t// Popisek obr\u00E1zku\n\t\t\tif (caption) {\n\t\t\t\tlet element = document.createElement(\"div\");\n\t\t\t\telement.classList.add(\"modal-gallery-caption\");\n\t\t\t\telement.innerHTML = caption;\n\t\t\t\tslide.appendChild(element);\n\t\t\t}\n\t\t}\n\n\t\tslides.appendChild(slide);\n\t}\n\n\treturn modal;\n}\n\n\n//\n// Vytvo\u0159\u00ED nebo vr\u00E1t\u00ED existuj\u00EDc\u00ED instanci mod\u00E1ln\u00EDho dialogu.\n//\nModalGallery.get = function(element, links) {\n\treturn Modal.get(element, ModalGallery, ModalGallery.create.bind(null, links));\n}\n\n\n//\n// Vytvo\u0159\u00ED galerii po kliknut\u00ED na element.\n//\nModalGallery.createFromElement = function(element) {\n\tvar galleryId = element.getAttribute(\"data-gallery\");\n\tvar links = document.querySelectorAll(\"[data-gallery='\" + galleryId + \"']\");\n\tvar enableClipboard = element.getAttribute(\"data-gallery-clipboard\") == \"true\";\n\n\tvar gallery = ModalGallery.get(null, links);\n\tgallery.enableClipboard = enableClipboard;\n\n\t// Galerie je vytvo\u0159en\u00E1 ze v\u0161ech prvk\u016F na str\u00E1nce se stejn\u00FDm galleryId, co\u017E nutn\u011B nemus\u00ED b\u00FDt\n\t// prvn\u00ED prvek z galerie. Pro intuitivnost proto chceme, aby se galerie zobrazila p\u0159\u00EDmo na tom\n\t// slide, na kter\u00FD u\u017Eivatel klikl. Najd\u011Bme ho v kolekci a p\u0159esu\u0148me se na n\u011Bj.\n\tvar galleryElements = Array.from(links);\n\tgallery.carousel.move(galleryElements.indexOf(element));\n\n\t// Galerie je vytvo\u0159en\u00E1, zobrazme ji.\n\tgallery.open();\n}\n\n\n// *************************************************************************\n// Ud\u00E1losti.\n// *************************************************************************\n\n//\n// Galerie se spou\u0161t\u00ED kliknut\u00EDm na tla\u010D\u00EDtko.\n//\ndocument.addEventSelectorListener(\"click\", \"[data-gallery]\", function(event, target) {\n\tevent.preventDefault();\n\tModalGallery.createFromElement(target);\n});\n\n\n//\n// Uzav\u0159en\u00ED mod\u00E1ln\u00EDho okna kliknut\u00EDm na \u010Dern\u00E9 pozad\u00ED.\n//\ndocument.addEventMatchesListener(\"click\", \".modal-gallery-content, .modal-gallery-nav, .modal-gallery-slide\", function(event, target) {\n\tevent.preventDefault();\n\tModalGallery.get(target).close();\n});\n\n\n//\n// Galerii lze ovl\u00E1dat kl\u00E1vesnic\u00ED.\n//\ndocument.addEventListener(\"keydown\", function(event) {\n\tif (event.key != \"ArrowLeft\" && event.key != \"ArrowRight\") {\n\t\treturn;\n\t}\n\n\tvar modal = document.querySelector(\".modal .modal-gallery-inner\");\n\tif (!modal) {\n\t\treturn;\n\t}\n\n\tevent.preventDefault();\n\n\tif (event.key == \"ArrowLeft\") {\n\t\tModalGallery.get(modal).carousel.prev();\n\t}\n\telse {\n\t\tModalGallery.get(modal).carousel.next();\n\t}\n});\n\n// Odstran\u011Bn\u00ED titulku\ndocument.addEventSelectorListener(\"click\", \".modal-gallery-caption\", function(event, target) {\n\tevent.preventDefault();\n\ttarget.remove();\n});\n"], "mappings": "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", "names": ["triggerEvent", "eventName", "params", "bubbles", "cancellable", "customEvent", "isVisible", "querySelectorChildren", "selector", "child", "addEventSelectorListener", "eventNames", "callback", "i", "event", "target", "addEventMatchesListener", "preventLinkDefault", "triggerEvent", "isVisible", "querySelectorChildren", "addEventSelectorListener", "addEventMatchesListener", "Animation", "animate", "elements", "kind", "initialize", "setUp", "run", "tearDown", "resolve", "reject", "element", "i", "elementDisplay", "data", "fadeInitialize", "fadeHidden", "fadeVisible", "fadeCleanAnimation", "onlyHide", "slideInitialize", "slideHidden", "slideVisible", "slideCleanAnimation", "slideCleanState", "isTargetExpanded", "target", "removeExpandedClass", "toggleToggleClasses", "toggle", "animationKind", "classNames", "addOrRemove", "i", "feedbacksSelector", "feedbacks", "j", "hideElements", "toggles", "targets", "animationOut", "showElements", "animationIn", "promises", "hideNonStickyElements", "eventTarget", "omitElement", "elementSelector", "Animation", "elements", "animate", "blockAnimationIfRunning", "exclusiveGroup", "otherGroups", "otherGroup", "isExpanded", "direction", "waitForFinish", "otherElementSelector", "otherElements", "PromiseQueue", "promise", "self", "returnValue", "animationQueue", "event", "breakpointDown", "breakpointUp", "preventLinkDefault", "modals", "Modal", "element", "openedModalsCount", "modal", "childObject", "factoryMethod", "i", "event", "target", "selector", "CarouselItem", "slideElement", "dotElement", "klass", "Carousel", "wrapper", "i", "button", "index", "direction", "force", "activeIndex", "forwardDistance", "backwardDistance", "activeItem", "item", "orderIndex", "prevItem", "nextItem", "slide", "newIndex", "idx", "event", "x", "difference", "ModalGallery", "element", "Modal", "Carousel", "event", "clipboardButton", "url", "links", "modal", "hasDots", "slides", "dots", "i", "link", "caption", "isAutoplay", "slide", "video", "urlParts", "videoId", "iframe", "image", "dot", "galleryId", "enableClipboard", "gallery", "galleryElements", "target"] }