The It List: Will Ferrell's 'Eurovision' comedy premieres, 'Athlete A' doc delves into U.S. gymnastics sexual abuse scandal, 'St. Elmo's Fire' turns 35 and the most effective in popular culture the week of June 22, 2020

12

‘ + ‘

‘ + ‘

    ‘ + ‘{promoMarkup}’ + ‘{notifMarkup}’ + ‘

‘ + ‘

‘ + ”; var panelEmptyTemplate = ‘

  • ‘ + ‘

    ‘ + ‘{emptyPanelMsg}’ + ‘

    ‘ + ‘

  • ‘; var panelErrorTemplate = ‘

    ‘ + ‘ {errorMsg} ‘ + ‘

    ‘; var panelParentTemplate = ”; var notifOnboardPromoTemplate = ‘

  • ‘ + ‘

    ‘ + ‘

  • ‘; /* world doc, window */ var EXPANDED_PANEL = ‘expanded_panel’;
    var ERROR_PANEL = ‘error_panel’; var NotificationView = operate () { operate NotificationView(config, retailer) { classCallCheck(this, NotificationView); var self = this; self._config = config; self._panelNode = null; self._store = retailer; } /** * _renderPanel * Renders the notification panel * @param {string} template – Notification panel template * @param {object} panelData – Notification panel information * @return {object} notification panel show markup */ createClass(NotificationView, [{ key: ‘_generatePanelMarkup’, value: function _generatePanelMarkup(template, panelData) { var config = this._config; var isNotifPermissionGranted = void 0; var isClientPromoEligible = void 0; if (typeof window !== ‘undefined’) { isNotifPermissionGranted = window.Notification && window.Notification.permission === ‘granted’; isClientPromoEligible = hasClass(document.body, config.promos.eligibleBodyClass); } var shouldShowNotifOnboardPromo = config.promos.enableNotifOnboard && !isNotifPermissionGranted && isClientPromoEligible; var promoMarkup = shouldShowNotifOnboardPromo ? notifOnboardPromoTemplate : ”; if (promoMarkup) { promoMarkup = promoMarkup.replace(‘{notifOnboardBtnLabel}’, config.promos.notifOnboardBtnLabel).replace(‘{notifOnboardMsg}’, config.promos.notifOnboardMsg).replace(‘{subscriptionTopic}’, config.promos.subscriptionTopic); } var hasAdditionalNotifs = panelData.newCount > config.panel.maxCount; var newCount = hasAdditionalNotifs ? panelData.newCount : ”; var notifCenterPath = config.panel.notificationCenterPath; var notifCenterLinkClass = notifCenterPath ? ” : constants.panelHideElement; var panelHeaderDisplayClass = config.panel.headerMsg ? ” : ‘ ‘ + constants.panelHideElement; var paddingClass = notifCenterPath ? constants.panelPaddingBtm : ”; var notifMarkup = void 0; if (panelData.count) { notifMarkup = panelData.markup; } else { var panelEmptyMarkup = panelEmptyTemplate; notifMarkup = panelEmptyMarkup.replace(‘{emptyPanelMsg}’, config.panel.emptyPanelMsg); } template = template.replace(‘{notifMarkup}’, notifMarkup).replace(‘{promoMarkup}’, promoMarkup).replace(‘{hideClass}’, notifCenterLinkClass).replace(‘{notifCenterLink}’, notifCenterPath).replace(‘{paddingClass}’, paddingClass).replace(‘{headerMsg}’, config.panel.headerMsg).replace(‘{hideHeaderClass}’, panelHeaderDisplayClass).replace(/{notificationCenterNavMsg}/g, config.panel.notificationCenterNavMsg).replace(/{newCount}/g, newCount); return template; } /** * render * Renders the panel based on type – collapsed, expanded, toast * @param {string} templateType – template type to be used * @param {Function} callback – The callback function * @return {void} */ }, { key: ‘render’, value: function render(templateType, callback) { var self = this; if (!self._panelNode) { callback && callback(new Error(‘No panel parent’)); return; } var template = void 0; var parent = self._panelNode; var panelMarkup = void 0; var panelData = void 0; switch (templateType) { case EXPANDED_PANEL: template = panelTemplate || ”; panelData = self._store.getNotifications(); panelMarkup = self._generatePanelMarkup(template, panelData); parent.innerHTML = panelMarkup; break; case ERROR_PANEL: template = panelErrorTemplate || ”; panelMarkup = template.replace(‘{errorMsg}’, self._config.panel.errorMsg); parent.innerHTML = panelMarkup; break; default: break; } callback && callback(); } /** * createPanelParentNode * Create the panel DOM structure * @param {object} panelParentNode – Panel’s parent node – from consumer * @return {void} */ }, { key: ‘createPanelParentNode’, value: function createPanelParentNode(panelParentNode) { if (!panelParentNode) { return; } panelParentNode.innerHTML = panelParentTemplate; // Store the panel node this._panelNode = document.getElementById(constants.panelNodeId); } /** * updateBadgeNode * Updates the badge node if needed * @param {object} badgeNode badge HTML node * @return {void} */ }, { key: ‘updateBadgeNode’, value: function updateBadgeNode(badgeNode) { if (badgeNode) { var _store$getNotificatio = this._store.getNotifications(), newCount = _store$getNotificatio.newCount; var maxBadgeCount = this._config.badge.maxCount; if (newCount) { var badgeCount = newCount > maxBadgeCount ? maxBadgeCount + ‘+’ : newCount; badgeNode.innerHTML = badgeCount; } else { badgeNode.innerHTML = ”; } } } /** * addStyles * Add panel css returned by service to page once * @param {object} styles css style blob * @return {void} */ }, { key: ‘addStyles’, value: function addStyles(styles) { if (styles) { if (typeof window !== ‘undefined’) { var styleTag = document.getElementById(this._config.panel.styleTagId); if (!styleTag) { styleTag = document.createElement(‘style’); styleTag.type = ‘text/css’; styleTag.id = this._config.panel.styleTagId; styleTag.innerText = styles; document.head.appendChild(styleTag); } } } } }]); return NotificationView;
    }(); /* world doc */
    /* Updates the notification retailer when wanted Controls the notification view */ var EXPANDED_PANEL$1 = ‘expanded_panel’;
    var ERROR_PANEL$1 = ‘error_panel’; var PanelController = operate () { operate PanelController(config, retailer, view) { classCallCheck(this, PanelController); var self = this; self._store = retailer; self._view = view; self._config = config; var panelConfig = self._config.panel; self._panelParentNode = doc.querySelector(panelConfig.parentSelector); self._badgeNode = self._config.badge.selector && doc.querySelector(self._config.badge.selector); self._indicatorNode = panelConfig.indicatorSelector && doc.querySelector(panelConfig.indicatorSelector); } /** * createPanelParentNode * Creates the bottom node for panel * @return {void} */ createClass(PanelController, [{ key: ‘createPanelParentNode’, value: function createPanelParentNode() { this._view.createPanelParentNode(this._panelParentNode); this._notifPanelNode = document.getElementById(constants.panelNodeId); } /** * refreshPanelNode * Shows the expanded panel – fetches data from store, calls view to render, attached delegates * @param {object} requestOverride – matrix params to over ride the reqeust * @param {Function} callback – The callback function * @return {void} */ }, { key: ‘refreshPanelNode’, value: function refreshPanelNode(requestOverride, callback) { var self = this; addClass(self._notifPanelNode, constants.panelLoading); self._store.fetchNotifications(requestOverride, function handleExpandedFetch(err, response) { if (err) { if (!self._notifPanelNode.innerHTML) { self._view.render(ERROR_PANEL$1); addClass(self._notifPanelNode, constants.panelLoading); } } else { self._view.render(EXPANDED_PANEL$1); self._view.updateBadgeNode(self._badgeNode); self._showBadge(); self._showIndicator(); self._view.addStyles(response.css); } removeClass(self._notifPanelNode, constants.panelLoading); callback && callback(err, response); }); } /** * resetBadge * Reset the badge count * @return {void} */ }, { key: ‘resetBadge’, value: function resetBadge() { var self = this; self._store.resetNewCount(); self._view.updateBadgeNode(self._badgeNode); addClass(self._badgeNode, self._config.badge.hideClass); } /** * _showIndicator * Add class to indicator node * @return {void} */ }, { key: ‘_showIndicator’, value: function _showIndicator() { if (!this._indicatorNode) { return; } var _store$getNotificatio = this._store.getNotifications(), newCount = _store$getNotificatio.newCount; if (newCount) { addClass(this._indicatorNode, this._config.panel.indicatorClass); } else { removeClass(this._indicatorNode, this._config.panel.indicatorClass); } } /** * _showBadge * Show/hide the badge count * @return {void} */ }, { key: ‘_showBadge’, value: function _showBadge() { var self = this; var _self$_store$getNotif = self._store.getNotifications(), newCount = _self$_store$getNotif.newCount; if (newCount) { removeClass(self._badgeNode, self._config.badge.hideClass); } else { addClass(self._badgeNode, self._config.badge.hideClass); } } }]); return PanelController;
    }(); var config = { promos: { eligibleBodyClass: ‘display-push-promos’, allowNotifOnboard: true, notifOnboardBtnLabel: ‘Notify Me’, notifOnboardMsg: ‘Get Notifications for Your Favorite Topics’, subscriptionTopic: ‘gondor_homerun_news’ }, badge: { hideClass: ”, maxCount: 5, selector: ” }, panel: { emptyPanelMsg: ‘You don’t have any new notifications.’, errorMsg: ”, headerMsg: ‘Notifications’, imageTag: ‘img:40×40|2|80’, indicatorClass: ‘yns-indicator’, indicatorSelector: null, maxCount: 6, notificationCenterNavMsg: ‘View all {newCount} notifications’, notificationCenterPath: ”, styleTagId: ‘notificationStyles’, parentSelector: null // required }, service: { attemptCount: 2, attemptDelay: 1, url: null, // required resetUrl: null, isRMP: false, responseType: ‘json’, timeout: 1500 }
    }; var Main = operate () { operate Main(config$$1) { classCallCheck(this, Main); var self = this; self.config = self._parseConfig(config$$1); var validConfigs = self._validateRequiredConfigs(); // silently return if required configs are lacking if (!validConfigs) { return; } self._request = new NotificationRequest(self.config); self._store = new NotificationStore(self.config, self._request); self._view = new NotificationView(self.config, self._store); self._panelController = new PanelController(self.config, self._store, self._view); self._panelController.createPanelParentNode(); // Once all the interior modules are init, create helper technique reference. self._assignHelperMethods(); } /** * _parseConfig * Parses the offered config and updates default. The configs are anticipated to be max one stage deep * @param {object} config – The config object * @return {object} request configuration */ createClass(Main, [{ key: ‘_parseConfig’, value: function _parseConfig(config$$1) { var defaultConfig = {}; objectAssign(defaultConfig, config); for (var key in defaultConfig) { if (defaultConfig.hasOwnProperty(key)) { var orig = defaultConfig[key]; var extn = config$$1[key]; if ((typeof orig === ‘undefined’ ? ‘undefined’ : _typeof(orig)) === ‘object’) { objectAssign(orig, extn); } else { defaultConfig[key] = config$$1[key]; } } } return defaultConfig; } /** * _validateRequiredConfigs * Validates if required configs are being handed by shopper * @return {boolean} validity of configs */ }, { key: ‘_validateRequiredConfigs’, worth: operate _validateRequiredConfigs() { var _config = this.config; return !!(_config.panel.parentSelector && _config.service.url); } /** * _assignHelperMethods * This operate creates helper strategies that seek advice from inside capabilities, binds appropriate context * @return {void} */ }, { key: ‘_assignHelperMethods’, worth: operate _assignHelperMethods() { var self = this; self.helpers = { refreshPanelNode: self._panelController.refreshPanelNode.bind(self._panelController), resetBadge: self._panelController.resetBadge.bind(self._panelController), resetIndicator: operate resetIndicator() { removeClass(self._panelController._indicatorNode, self.config.panel.indicatorClass); } }; } }]); return Main;
    }(); return Main; }());
    //# sourceMappingURL=notificationClient.min.js.map
    !operate(){var a,o,i,n=”lnct”;operate t(e,n){var t=this;t.config=e||{},t.accordion=o.querySelector(e.accordionSelector),t.countBadge=o.querySelector(e.countBadgeSelector),t.notificationButton=o.querySelector(e.notificationButtonSelector),t.profileButton=o.querySelector(e.profileButtonSelector),t.notificationClient=n,t.visibilityMetaTag=””,a.wafer&&a.wafer.prepared(operate()””);operate i(e)t.refreshPanel.name(t,e)t.attachEventListeners(),i(t.handleBackgroundRefresh),e.pollingInterval&&setInterval(i,1e3*e.pollingInterval,t.handleBackgroundRefresh)}operate e(){if(a.NotificationShopper){var e=new window.NotificationShopper(i);e&&e.helpers&&new t(i.adapter,e)}}operate r(e,n,t){a=e,o=n,i=t||{“adapter”:{“accordionSelector”:”#profile-notification-accordion”,”countBadgeSelector”:”#header-notification-badge”,”initializeImmediately”:false,”lang”:”de-DE”,”loadInHpViewer”:false,”notificationButtonSelector”:”#header-notification-button”,”pollingInterval”:300,”profileButtonSelector”:”#header-profile-button”,”rapidModuleId”:”applet_p_50000372″,”region”:”DE”},”badge”:{“hideClass”:”D(n)”,”selector”:”#header-notification-badge”},”panel”:{“emptyPanelMsg”:”Sie haben keine neuen Benachrichtigungen.”,”errorMsg”:”Bitte kommen Sie später zurück.”,”headerMsg”:”Benachrichtigungen”,”indicatorSelector”:”#header-notification-indicator”,”maxCount”:6,”notificationCenterNavMsg”:””,”notificationCenterPath”:”/”,”parentSelector”:”#header-notification-panel”},”promos”:{“eligibleBodyClass”:”display-push-promos”,”enableNotifOnboard”:true,”notifOnboardBtnLabel”:”Mich benachrichtigen”,”notifOnboardMsg”:”Benachrichtigungen für bestimmte Themen erhalten”,”subscriptionTopic”:”gondor_homerun_news”},”service”:{“url”:”/tdv2_fp/api/resource/NotificationHistory.getHistory”}}}t.prototype={attachEventListeners:operate(){var e=this;e.profileButton&&e.profileButton.addEventListener(“click”,operate(){e.refreshPanel.name(e)}),e.accordion&&e.accordion.addEventListener(“click”,operate(){e.handlePanelOpen.name(e)}),e.notificationButton&&(e.notificationButton.addEventListener(“mouseenter”,operate(){e.handlePanelOpen.name(e)}),e.notificationButton.addEventListener(“focus”,operate(){e.handlePanelOpen.name(e)}))},getConsumptionTime:operate(){return a.nativeStorage&&a.nativeStorage.getItem(n)},handleBackgroundRefresh:operate(e,n){var t=this,i=a.YAHOO&&a.YAHOO.i13n&&a.YAHOO.i13n.rapidInstance||a.rapidInstance;if(i&&t.countBadge&&t.countBadge.className.indexOf(“D(n)”)