define(["dialogHelper", "layoutManager", "globalize", "browser", "dom", "emby-button", "css!./actionsheet", "material-icons", "scrollStyles", "listViewStyle"], function(dialogHelper, layoutManager, globalize, browser, dom) { "use strict"; function getOffsets(elems) { var doc = document, results = []; if (!doc) return results; for (var box, elem, i = 0, length = elems.length; i < length; i++) elem = elems[i], box = elem.getBoundingClientRect ? elem.getBoundingClientRect() : { top: 0, left: 0 }, results[i] = { top: box.top, left: box.left, width: box.width, height: box.height }; return results } function getPosition(options, dlg) { var windowSize = dom.getWindowSize(), windowHeight = windowSize.innerHeight, windowWidth = windowSize.innerWidth; if (windowWidth < 600 || windowHeight < 600) return null; var pos = getOffsets([options.positionTo])[0]; "top" !== options.positionY && (pos.top += (pos.height || 0) / 2), pos.left += (pos.width || 0) / 2; var height = dlg.offsetHeight || 300, width = dlg.offsetWidth || 160; pos.top -= height / 2, pos.left -= width / 2; var overflowX = pos.left + width - windowWidth, overflowY = pos.top + height - windowHeight; return overflowX > 0 && (pos.left -= overflowX + 20), overflowY > 0 && (pos.top -= overflowY + 20), pos.top += options.offsetTop || 0, pos.left += options.offsetLeft || 0, pos.top = Math.max(pos.top, 10), pos.left = Math.max(pos.left, 10), pos } function centerFocus(elem, horiz, on) { require(["scrollHelper"], function(scrollHelper) { var fn = on ? "on" : "off"; scrollHelper.centerFocus[fn](elem, horiz) }) } function show(options) { var isFullscreen, dialogOptions = { removeOnClose: !0, enableHistory: options.enableHistory, scrollY: !1 }; layoutManager.tv ? (dialogOptions.size = "fullscreen", isFullscreen = !0, !0, dialogOptions.autoFocus = !0) : (dialogOptions.modal = !1, dialogOptions.entryAnimation = options.entryAnimation, dialogOptions.exitAnimation = options.exitAnimation, dialogOptions.entryAnimationDuration = options.entryAnimationDuration || 140, dialogOptions.exitAnimationDuration = options.exitAnimationDuration || 100, dialogOptions.autoFocus = !1); var dlg = dialogHelper.createDialog(dialogOptions); isFullscreen ? dlg.classList.add("actionsheet-fullscreen") : dlg.classList.add("actionsheet-not-fullscreen"), dlg.classList.add("actionSheet"), options.dialogClass && dlg.classList.add(options.dialogClass); var html = "", scrollClassName = layoutManager.tv ? "scrollY smoothScrollY hiddenScrollY" : "scrollY", style = ""; if (options.items.length > 20) { style += "min-width:" + (dom.getWindowSize().innerWidth >= 300 ? 240 : 200) + "px;" } var i, length, option, itemIcon, renderIcon = !1, icons = []; for (i = 0, length = options.items.length; i < length; i++) option = options.items[i], itemIcon = option.icon || (option.selected ? "check" : null), itemIcon && (renderIcon = !0), icons.push(itemIcon || ""); layoutManager.tv && (html += ''); var center = options.title && !renderIcon; center || layoutManager.tv ? html += '
', html += options.text, html += "
"); var scrollerClassName = "actionSheetScroller"; layoutManager.tv && (scrollerClassName += " actionSheetScroller-tv focuscontainer-x focuscontainer-y"), html += '