define(["emby-progressring", "dom", "serverNotifications", "events", "registerElement"], function(EmbyProgressRing, dom, serverNotifications, events) { "use strict"; function addNotificationEvent(instance, name, handler) { var localHandler = handler.bind(instance); events.on(serverNotifications, name, localHandler), instance[name] = localHandler } function removeNotificationEvent(instance, name) { var handler = instance[name]; handler && (events.off(serverNotifications, name, handler), instance[name] = null) } function onRefreshProgress(e, apiClient, info) { var indicator = this; if (indicator.itemId || (indicator.itemId = dom.parentWithAttribute(indicator, "data-id").getAttribute("data-id")), info.ItemId === indicator.itemId) { var progress = parseFloat(info.Progress); progress && progress < 100 ? this.classList.remove("hide") : this.classList.add("hide"), this.setProgress(progress) } } var EmbyItemRefreshIndicatorPrototype = Object.create(EmbyProgressRing); EmbyItemRefreshIndicatorPrototype.createdCallback = function() { EmbyProgressRing.createdCallback && EmbyProgressRing.createdCallback.call(this), addNotificationEvent(this, "RefreshProgress", onRefreshProgress) }, EmbyItemRefreshIndicatorPrototype.attachedCallback = function() { EmbyProgressRing.attachedCallback && EmbyProgressRing.attachedCallback.call(this) }, EmbyItemRefreshIndicatorPrototype.detachedCallback = function() { EmbyProgressRing.detachedCallback && EmbyProgressRing.detachedCallback.call(this), removeNotificationEvent(this, "RefreshProgress"), this.itemId = null }, document.registerElement("emby-itemrefreshindicator", { prototype: EmbyItemRefreshIndicatorPrototype, extends: "div" }) });