{"version":3,"names":["PF","ui","getFixedElementsOffset","excludedElements","windowWidth","$","window","width","windowHeight","height","$fixedElements","filter","computedStyle","getComputedStyle","this","position","display","parents","length","getRelatedParentIndex","sort","a","b","offset","top","fixedElementsOffsetStart","scrollTop","fixedElementsOffset","$nearElements","Math","abs","outerHeight","newFixedElementsOffset","eq","ensureVisible","element","callback","recheckAfterScroll","undefined","elmTop","is","show","hide","elmHeight","scrollPos","document","apply","animate","promise","done","scrollToTarget","optionsObj","history","scrollRestoration","options","highlight","highlightClass","highlightDelay","highlightDuration","scrollOffset","Promise","resolve","reject","target","data","parseInt","targetScrollPos","recomputedTargetPos","duration","step","now","tween","end","setTimeout","addClass","removeClass","getDocumentHeight","additionalValues","maxHeight","max","body","scrollHeight","documentElement","offsetHeight","clientHeight","k","getPageZoom","getElementById","parent","prepend","zoom","left","scrollLeft","getScrollbarWidth","outer","createElement","style","visibility","appendChild","widthNoScroll","offsetWidth","overflow","inner","widthWithScroll","parentNode","removeChild","fitImage","original_width","original_height","resize_method","ret","x_ratio","y_ratio","floor","isOnTop","r","x","right","y","bottom","elementFromPoint","isOurChild","isInPage","contains","isReallyVisible","rects","getClientRects","i","l","child","jQuery","inArray","toArray","index","getRelatedParent","getEventTarget","e","event","srcElement","filterLoadedScripts","html","loadedScripts","Array","prototype","slice","querySelectorAll","s","src","map","tempDiv","innerHTML","scriptTags","getElementsByTagName","includes"],"sources":["pf.ui.js"],"sourcesContent":["PF.ui = {};\r\n\r\n/**\r\n* Zajisti offset fixed elementu na vrchu stranky\r\n*/\r\nPF.ui.getFixedElementsOffset = function(excludedElements) {\r\n\t/* 2021.12.15!!! misto .height() jsem vsude pouzil .outerHeight(), aby se bral i pri pocitani vysky elementu padding, kdyz se neco rozbije, tak za to muzu ja Tonda*/\r\n\r\n\t// zjistit vsechny fixed elementy na strance, ktere jsou blokove a zabiraji alespon polovinu sirky okna a nezabiraji vice nez pulky vysky okna (napr overlaye)\r\n\tvar windowWidth = $(window).width();\r\n\tvar windowHeight = $(window).height();\r\n\tvar $fixedElements = $('body *:visible').filter(function () {\r\n\t\tvar computedStyle = window.getComputedStyle(this);\r\n\t\treturn (computedStyle.position == 'fixed' || computedStyle.position == 'sticky') && computedStyle.display == 'block' && $(this).width() > windowWidth / 2 && $(this).height() < windowHeight / 2 && $(this).parents(':hidden').length == 0; \r\n\t});\r\n\t\r\n\r\n\t// odstranit elementy, ktere nemaji byt zohledneny\r\n\texcludedElements = excludedElements || [];\r\n\t$fixedElements = $fixedElements.filter(function() {\r\n\t\treturn PF.ui.getRelatedParentIndex(this, excludedElements) === -1;\r\n\t});\r\n\t\r\n\t// seradit je podle pozice od shora\r\n\t$fixedElements.sort(function(a, b) {\r\n\t\treturn $(a).offset().top - $(b).offset().top;\r\n\t});\r\n\t\r\n\t// vzhledem k tomu, ze kdyz jsou elementy fixed, tak top: 0 == scrollTop\r\n\t// Proto zacit prochazet elementy cyklem zacinajici pozici scrollbaru\r\n\t// a s toleranci 7 px hledaj ty co prekryvaji stranku\r\n\tvar fixedElementsOffsetStart = $(window).scrollTop();\r\n\tvar fixedElementsOffset = fixedElementsOffsetStart;\r\n\r\n\twhile (fixedElementsOffset - fixedElementsOffsetStart < 250) { // max limit 250px\r\n\t\t// najit elementy, ktere jsou vzdalene od aktualniho offsetu v ramci tolerance\r\n\t\t// a seradit je od spodniho okraje\r\n\t\tvar $nearElements = $fixedElements.filter(function () {\r\n\t\t\treturn Math.abs($(this).offset().top - fixedElementsOffset) < 7;\r\n\t\t}).sort(function(a, b) {\r\n\t\t\treturn -1 * (($(a).offset().top + $(a).outerHeight()) - ($(b).offset().top + $(b).outerHeight()));\r\n\t\t});\r\n\t\t\r\n\t\tif ($nearElements.length == 0) {\r\n\t\t\tbreak;\r\n\t\t}else {\r\n\t\t\tvar newFixedElementsOffset = $nearElements.eq(0).offset().top + $nearElements.eq(0).outerHeight();\r\n\t\t\t// zkontrolovat zdali jsme se pohnuli vpred a neskoncili jsme v nejakem cyklu\r\n\t\t\tif (newFixedElementsOffset > fixedElementsOffset) {\r\n\t\t\t\tfixedElementsOffset = newFixedElementsOffset;\r\n\t\t\t}else {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn fixedElementsOffset - fixedElementsOffsetStart;\r\n}\r\n\r\n/**\r\n* Zajisti zascrollovanim, aby byl dany element na strance videt\r\n*/\r\nPF.ui.ensureVisible = function(element, callback, recheckAfterScroll) {\r\n\tif (recheckAfterScroll == undefined) {\r\n\t\trecheckAfterScroll = true;\r\n\t}\r\n\t// zjistit zda-li je element zcela videt\r\n\tvar elmTop = $(element).offset().top;\r\n\t// pokud element je shovany, tak je potreba ho nejdrive zobrazit, aby se dala zjistit jeho pozice\r\n\tif (!$(element).is(\":visible\")) {\r\n\t\t$(element).show();\r\n\t\telmTop = $(element).offset().top;\r\n\t\t$(element).hide();\r\n\t}\r\n\tvar elmHeight = $(element).outerHeight();\r\n\tvar scrollPos = $(document).scrollTop();\r\n\t// zjistit kolik zabiraji fixed elementy zhora obrazovky\r\n\tvar fixedElementsOffset = PF.ui.getFixedElementsOffset();\r\n\t\r\n\tif (elmTop >= scrollPos + fixedElementsOffset && elmTop + elmHeight <= scrollPos + $(window).height()) {\r\n\t\t// zcela videt\r\n\t\tif (callback) {\r\n\t\t\tcallback.apply();\r\n\t\t}\r\n\t\treturn;\r\n\t}else {\r\n\t\t$('html,body').animate({scrollTop: elmTop - (10 + fixedElementsOffset / 10) - fixedElementsOffset}, 400).promise().done(function() {\r\n\t\t\tif (recheckAfterScroll === true) {\r\n\t\t\t\tPF.ui.ensureVisible(element, callback, false);\r\n\t\t\t}else {\r\n\t\t\t\tif (callback) {\r\n\t\t\t\t\tcallback.apply();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n\r\n/**\r\n* Nascroluje na dany element\r\n*/\r\nPF.ui.scrollToTarget = function(element, optionsObj) {\r\n\tif ('scrollRestoration' in history) {\r\n\t\thistory.scrollRestoration = 'manual';\r\n\t}\r\n\r\n\tif (!optionsObj) {\r\n\t\toptionsObj = {};\r\n\t}\r\n\r\n\tlet options = {\r\n\t\thighlight: true,\r\n\t\thighlightClass: 'scrollToHighlight',\r\n\t\thighlightDelay: 100,\r\n\t\thighlightDuration: 2000,\r\n\t\tscrollOffset: -10,\r\n\t};\r\n\toptions = {...options, ...optionsObj};\r\n\r\n\tvar promise = new Promise(function(resolve, reject) {\r\n\t\tconst target = $(element);\r\n\r\n\t\tconst scrollOffset = target.data(\"scroll-to-target-offset\");\r\n\t\tif (scrollOffset) {\r\n\t\t\toptions.scrollOffset = parseInt(scrollOffset);\r\n\t\t}\r\n\r\n\t\tlet targetScrollPos = target.offset().top + options.scrollOffset - PF.ui.getFixedElementsOffset();\r\n\t\tlet recomputedTargetPos = false;\r\n\r\n\t\t$('html,body').animate({\r\n\t\t\tscrollTop: targetScrollPos,\r\n\t\t}, {\r\n\t\t\tduration: 700,\r\n\t\t\tstep: (now, tween) => {\r\n\t\t\t\tif (Math.abs(tween.end - tween.now) < 100 && !recomputedTargetPos) {\r\n\t\t\t\t\trecomputedTargetPos = true;\r\n\t\t\t\t\ttween.end = target.offset().top + options.scrollOffset - PF.ui.getFixedElementsOffset();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}).promise().done(() => {\r\n\t\t\t// pro zichr zkontrolovat scrolovaci pozici za 100ms\r\n\t\t\tsetTimeout(\r\n\t\t\t\t() => {\r\n\t\t\t\t\tlet targetScrollPos = target.offset().top + options.scrollOffset - PF.ui.getFixedElementsOffset();\r\n\t\t\t\t\t$('html,body').animate({\r\n\t\t\t\t\t\tscrollTop: targetScrollPos,\r\n\t\t\t\t\t}, {\r\n\t\t\t\t\t\tduration: 100,\r\n\t\t\t\t\t}).promise().done(() => {\r\n\t\t\t\t\t\tif (options.highlight) {\r\n\t\t\t\t\t\t\tsetTimeout(\r\n\t\t\t\t\t\t\t\t() => {\r\n\t\t\t\t\t\t\t\t\ttarget.addClass(options.highlightClass);\r\n\t\t\t\t\t\t\t\t\tsetTimeout(\r\n\t\t\t\t\t\t\t\t\t\t() => {\r\n\t\t\t\t\t\t\t\t\t\t\ttarget.removeClass(options.highlightClass);\r\n\t\t\t\t\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\toptions.highlightDuration\r\n\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\toptions.highlightDelay\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t}else {\r\n\t\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t\t100\r\n\t\t\t);\r\n\t\t});\r\n\t});\r\n\r\n\treturn promise;\r\n}\r\n\r\n\r\n/**\r\n* Vrátí výšku dokumentu\r\n*/\r\nPF.ui.getDocumentHeight = function(additionalValues) {\r\n\tvar maxHeight = Math.max(Math.max(document.body.scrollHeight,    document.documentElement.scrollHeight), Math.max(document.body.offsetHeight, document.documentElement.offsetHeight), Math.max(document.body.clientHeight, document.documentElement.clientHeight));\r\n\tif (additionalValues) {\r\n\t\tfor (var k in additionalValues) {\r\n\t\t\tif (additionalValues[k] > maxHeight) {\r\n\t\t\t\tmaxHeight = additionalValues[k];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn maxHeight;\r\n}\r\n\r\nPF.ui.getPageZoom = function() {\r\n\tif (!document.getElementById('pf_ui_centered_point')) {\r\n\t\t$('body').prepend('<div style=\"position: fixed; width: 100%; height: 10px;\"><div id=\"pf_ui_centered_point\" style=\"margin: auto; width: 2px; height: 10px;\"></div></div>');\r\n\t}else {\r\n\t\t$('#pf_ui_centered_point').parent().show();\r\n\t}\r\n\tvar zoom = ($(window).width() / 2) / ($('#pf_ui_centered_point').offset().left - $(window).scrollLeft());\r\n\t$('#pf_ui_centered_point').parent().hide();\r\n\tif (zoom < 0) {\r\n\t\treturn 1.0;\r\n\t}\r\n\treturn zoom;\r\n}\r\n\r\nPF.ui.getScrollbarWidth = function() {\r\n\tvar outer = document.createElement(\"div\");\r\n\touter.style.visibility = \"hidden\";\r\n\touter.style.width = \"100px\";\r\n\tdocument.body.appendChild(outer);\r\n\t\r\n\tvar widthNoScroll = outer.offsetWidth;\r\n\t// force scrollbars\r\n\touter.style.overflow = \"scroll\";\r\n\t\r\n\t// add innerdiv\r\n\tvar inner = document.createElement(\"div\");\r\n\tinner.style.width = \"100%\";\r\n\touter.appendChild(inner);        \r\n\t\r\n\tvar widthWithScroll = inner.offsetWidth;\r\n\t\r\n\t// remove divs\r\n\touter.parentNode.removeChild(outer);\r\n\t\r\n\treturn widthNoScroll - widthWithScroll;\r\n}\r\n\r\nPF.ui.fitImage = function(original_width, original_height, width, height, resize_method) {\r\n\tret = {'width' : original_width, 'height' : original_height};\r\n\t\r\n\tif (!width && !height) {\r\n\t\twidth = original_width;\r\n\t\theight = original_height;\r\n\t}\r\n\tif (!width)\r\n\t\twidth = original_width * height / original_height;\r\n\telse if (!height)\r\n\t\theight = original_height * width / original_width;\r\n\r\n\tif (resize_method == '0') {\r\n\t\treturn {'width' : original_width, 'height' : original_height};\r\n\t}else if (resize_method == 'pc') {\r\n\t\treturn {'width' : width, 'height' : height};\r\n\t}else if (resize_method == 'p' || resize_method == 'pp') {\r\n\t\tif (resize_method == 'pp' && original_width >= width && original_height >= height) {\r\n\t\t\tret = {'width' : original_width, 'height' : original_height};\r\n\t\t}else if (width <= original_width && height > original_height) {\r\n\t\t\tret = {'width' : original_width * height / original_height, 'height' : height};\r\n\t\t}else if (width > original_width && height <= original_height) {\r\n\t\t\tret = {'width' : width, 'height' : original_height * width / original_width};\r\n\t\t}else {\r\n\t\t\tx_ratio = original_width / width;\r\n\t\t\ty_ratio = original_height / height;\r\n\t\t\tret = x_ratio < y_ratio ? {'width' : width, 'height' : original_height / x_ratio} : {'width' : original_width / y_ratio, 'height' : height};\r\n\t\t}\r\n\t}else if (resize_method == 'm' || resize_method == 'mm') {\r\n\t\tif (resize_method == 'mm' && original_width <= width && original_height <= height) {\r\n\t\t\tret = {'width' : original_width, 'height' : original_height};\r\n\t\t}else if (width <= original_width && height > original_height) {\r\n\t\t\tret = {'width' : width, 'height' : original_height * width / original_width};\r\n\t\t}else if (width > original_width && height <= original_height) {\r\n\t\t\tret = {'width' : original_width * height / original_height, 'height' : height};\r\n\t\t}else {\r\n\t\t\tx_ratio = original_width / width;\r\n\t\t\ty_ratio = original_height / height;\r\n\t\t\tret = x_ratio > y_ratio ? {'width' : width, 'height' : original_height / x_ratio} : {'width' : original_width / y_ratio, 'height' : height};\r\n\t\t}\r\n\t}\r\n\t\r\n\tret['width'] = Math.floor(ret['width']);\r\n\tret['height'] = Math.floor(ret['height']);\r\n\treturn ret;\r\n}\r\n\r\n\r\nPF.ui.isOnTop = function(element, r) {\r\n\tvar x = (r.left + r.right)/2, y = (r.top + r.bottom)/2;\r\n\t\r\n\tvar parentNode = document.elementFromPoint(x, y);\r\n\tif (!parentNode) {\r\n\t\treturn false;\r\n\t}\r\n\tvar isOurChild = false;\r\n\tdo {\r\n\t\tif (parentNode == element) {\r\n\t\t\tisOurChild = true;\r\n\t\t}\r\n\t}while (!isOurChild && (parentNode = parentNode.parentNode));\r\n\t\r\n\treturn isOurChild;\r\n}\r\n\r\nPF.ui.isInPage = function(element) {\r\n\treturn document.body.contains(element);\r\n}\r\n\r\nPF.ui.isReallyVisible = function(element) {\r\n\tif (element.offsetWidth === 0 || element.offsetHeight === 0) {\r\n\t\treturn false;\r\n\t}\r\n\tvar height = document.documentElement.clientHeight;\r\n\tvar rects = element.getClientRects();\r\n\t\r\n\tfor (var i = 0, l = rects.length; i < l; i++) {\r\n\t\tvar r = rects[i];\r\n\t\tvar in_viewport = r.top > 0 ? r.top <= height : (r.bottom > 0 && r.bottom <= height);\r\n\t\tif (in_viewport && PF.ui.isOnTop(element, r)) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n\treturn false;\r\n}\r\n\r\nPF.ui.getRelatedParentIndex = function(child, parents) {\r\n\tvar parentNode = child;\r\n\t\r\n\tdo {\r\n\t\tfor (var i = 0; i < parents.length; ++i) {\r\n\t\t\tvar parent = parents[i];\r\n\t\t\tif (parent instanceof jQuery) {\r\n\t\t\t\tif ($.inArray(parentNode, parent.toArray()) != -1) {\r\n\t\t\t\t\treturn i;\r\n\t\t\t\t}\t\t\r\n\t\t\t}else {\r\n\t\t\t\tif (parent === parentNode) {\r\n\t\t\t\t\treturn i;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar index = $.inArray(parentNode, parents);\r\n\t\tif (index != -1) {\r\n\t\t\treturn index;\r\n\t\t}\r\n\t}while (parentNode = parentNode.parentNode);\r\n\t\r\n\treturn -1;\r\n}\r\n\r\nPF.ui.getRelatedParent = function(child, parents) {\r\n\tvar index = PF.ui.getRelatedParentIndex(child, parents);\r\n\tif (index == -1) {\r\n\t\treturn null;\r\n\t}else {\r\n\t\treturn parents[index];\r\n\t}\r\n}\r\n\r\nPF.ui.getEventTarget = function(e) {\r\n\tvar targ;\r\n\tif (!e) {\r\n\t\tvar e = window.event;\r\n\t}\r\n\tif (!e) {\r\n\t\treturn undefined;\r\n\t}\r\n\tif (e.target) {\r\n\t\treturn e.target;\r\n\t}else if (e.srcElement) {\r\n\t\treturn e.srcElement;\r\n\t}\r\n\treturn undefined;\r\n}\r\n\r\nPF.ui.filterLoadedScripts = function (html) {\r\n\tvar loadedScripts = Array.prototype.slice\r\n\t\t.apply(document.querySelectorAll('script'))\r\n\t\t.filter(s => s.src)\r\n\t\t.map(s => s.src);\r\n\r\n\tvar tempDiv = document.createElement('div');\r\n\ttempDiv.innerHTML = html;\r\n\r\n\tvar scriptTags = tempDiv.getElementsByTagName('script');\r\n\r\n\tfor (var i = scriptTags.length - 1; i >= 0; i--) {\r\n\t\tif (!scriptTags[i].src) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tif (loadedScripts.includes(scriptTags[i].src)) {\r\n\t\t\tscriptTags[i].parentNode.removeChild(scriptTags[i]);\r\n\t\t}\r\n\t}\r\n\r\n\treturn tempDiv.innerHTML;\r\n}"],"mappings":"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"}