Proposal from MGI’s Nomination Committee
- {promoMarkup}{notifMarkup}
“,panelEmptyTemplate=”
{emptyPanelMsg}
“,panelErrorTemplate=”
{errorMsg}
“,panelParentTemplate=””,notifOnboardPromoTemplate=”
{notifOnboardMsg}
“,EXPANDED_PANEL=”expanded_panel”,ERROR_PANEL=”error_panel”,NotificationView=perform(){perform e(n,t){classCallCheck(this,e);var i=this;i._config=n,i._panelNode=null,i._store=t}return createClass(e,[{key:”_generatePanelMarkup”,value:function(e,n){var t=this._config,i=void 0,o=void 0;”undefined”!=typeof window&&(i=window.Notification&&”default”===window.Notification.permission,o=t.promos.bypassEligibleClassCheck||hasClass(document.body,t.promos.eligibleBodyClass));var r=t.promos.enableNotifOnboard&&i&&o?notifOnboardPromoTemplate:””;if(r){var s=t.promos.showYahooLogo?””:”yns-no-logo”;r=r.replace(“{notifOnboardBtnLabel}”,t.promos.notifOnboardBtnLabel).replace(“{notifOnboardMsg}”,t.promos.notifOnboardMsg).replace(“{subscriptionTopic}”,t.promos.subscriptionTopic).replace(“{noLogoClass}”,s).replace(” a=n.newCount>t.panel.maxCount?n.newCount:””,c=t.panel.notificationCenterPath,l=c?””:constants.panelHideElement,d=t.panel.headerMsg?””:” “+constants.panelHideElement,u=c?constants.panelPaddingBtm:””,p=void 0;n.count?p=n.markup:p=panelEmptyTemplate.replace(“{emptyPanelMsg}”,t.panel.emptyPanelMsg);return e=e.replace(“{notifMarkup}”,p).replace(“{promoMarkup}”,r).replace(“{hideClass}”,l).replace(” t=this;if(t._panelNode){var i=void 0,o=t._panelNode,r=void 0,s=void 0;switch(e){case EXPANDED_PANEL:i=panelTemplate,s=t._store.getNotifications(),r=t._generatePanelMarkup(i,s),o.innerHTML=r;break;case ERROR_PANEL:r=(i=panelErrorTemplate).replace(“{errorMsg}”,t._config.panel.errorMsg),o.innerHTML=r}n&&n()}else n&&n(new Error(“No panel parent”))}},{key:”createPanelParentNode”,value:function(e){e&&(e.innerHTML=panelParentTemplate,this._panelNode=document.getElementById(constants.panelNodeId))}},{key:”updateBadgeNode”,value:function(e){if(e){var n=this._store.getNotifications().newCount,t=this._config.badge.maxCount;if(n){var i=n>t?t+”+”:n;e.innerHTML=i}else e.innerHTML=””}}},{key:”addStyles”,value:function(e){if(e&&”undefined”!=typeof window)}}]),e}(),EXPANDED_PANEL$1=”expanded_panel”,ERROR_PANEL$1=”error_panel”,PanelController=perform(){perform e(n,t,i){classCallCheck(this,e);var o=this;o._store=t,o._view=i,o._config=n;var r=o._config.panel;o._panelParentNode=doc.querySelector(r.parentSelector),o._badgeNode=o._config.badge.selector&&doc.querySelector(o._config.badge.selector),o._indicatorNode=r.indicatorSelector&&doc.querySelector(r.indicatorSelector)}return createClass(e,[{key:”createPanelParentNode”,value:function(){this._view.createPanelParentNode(this._panelParentNode),this._notifPanelNode=document.getElementById(constants.panelNodeId)}},{key:”refreshPanelNode”,value:function(e,n){var t=this;addClass(t._notifPanelNode,constants.panelLoading),t._store.fetchNotifications(e,(function(e,i)(t._view.render(ERROR_PANEL$1),addClass(t._notifPanelNode,constants.panelLoading)):(t._view.render(EXPANDED_PANEL$1),t._view.updateBadgeNode(t._badgeNode),t._showBadge(),t._showIndicator(),t._view.addStyles(i.css)),removeClass(t._notifPanelNode,constants.panelLoading),n&&n(e,i)))}},{key:”resetBadge”,value:function(){var e=this;e._store.resetNewCount(),e._view.updateBadgeNode(e._badgeNode),addClass(e._badgeNode,e._config.badge.hideClass)}},{key:”_showIndicator”,value:function(){this._indicatorNode&&(this._store.getNotifications().newCount?addClass(this._indicatorNode,this._config.panel.indicatorClass):removeClass(this._indicatorNode,this._config.panel.indicatorClass))}},{key:”_showBadge”,value:function(){var e=this;e._store.getNotifications().newCount?removeClass(e._badgeNode,e._config.badge.hideClass):addClass(e._badgeNode,e._config.badge.hideClass)}}]),e}(),config={promos:{eligibleBodyClass:”display-push-promos”,enableNotifOnboard:!0,bypassEligibleClassCheck:!1,notifOnboardBtnLabel:”Notify Me”,notifOnboardMsg:”Get alerts for breaking information and prime tales”,promoLogo:” haven’t 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:””,notificationTypes:””,parentSelector:null,styleTagId:”notificationStyles”,theme:”default”},service:{attemptCount:2,attemptDelay:1,url:null,resetUrl:null,isRMP:!1,responseType:”json”,timeout:1500}},Foremost=perform(){perform e(n){classCallCheck(this,e);var t=this;t.config=t._parseConfig(n),t._validateRequiredConfigs()&&(t._request=new NotificationRequest(t.config),t._store=new NotificationStore(t.config,t._request),t._view=new NotificationView(t.config,t._store),t._panelController=new PanelController(t.config,t._store,t._view),t._panelController.createPanelParentNode(),t._assignHelperMethods())}return createClass(e,[{key:”_parseConfig”,value:function(e){var n={};for(var t in objectAssign(n,config),n)if(n.hasOwnProperty(t)){var i=n[t],o=e[t];”object”===(void 0===i?”undefined”:_typeof(i))?objectAssign(i,o):n[t]=e[t]}return n}},{key:”_validateRequiredConfigs”,worth:perform()},{key:”_assignHelperMethods”,worth:perform(){var e=this;e.helpers={refreshPanelNode:e._panelController.refreshPanelNode.bind(e._panelController),resetBadge:e._panelController.resetBadge.bind(e._panelController),resetIndicator:perform(){removeClass(e._panelController._indicatorNode,e.config.panel.indicatorClass)}}}}]),e}(),notificationClient_module_min=Foremost,notificationClient={NotificationClient:notificationClient_module_min},CONSUMPTION_STORAGE_KEY=”lnct”,NotifClient=perform(){perform e()return e.prototype.refreshPanel=perform(){var e,n,t,i=this,o=,r=(null===(e=window.YAHOO)||void 0===e?void 0:e.context)||(null===(n=window.Af)||void 0===n?void 0:n.context)||{};return r.area&&r.lang&&(o.lang=r.lang,o.area=r.area),(null===(t=this.partnerClasses)||void 0===t?void 0:t.size)&&(o.accomplice=this.partnerClasses[1]),new Promise((perform(e,n){i.consumer.helpers.refreshPanelNode({matrixParams:o},(perform(t,i){t&&(logError(“Notification refresh error:”,t),n(t)),e(i)}))}))},e.prototype.resetBadge=perform(){this.consumer.helpers.resetBadge(),this.setTimeStamp()},e.prototype.getConfig=perform(){var e,n,t={promos:{eligibleBodyClass:”display-push-promos”,enableNotifOnboard:!0},badge:{selector:”#notif-badge”,hideClass:”ybar-notification-hidden”},panel:{emptyPanelMsg:”You haven’t any new notifications.”,errorMsg:”Please verify again later.”,headerMsg:”Notifications”,maxCount:5,parentSelector:”#ybarNotificationBody”,notificationTypes:”breakingNews”},service:{url:”/tdv2_fp/api/useful resource/NotificationHistory.getHistory”,isRMP:!1}},i=doc.getElementById(“notification-container”),o=null===(e=null==i?void 0:i.dataset)||void 0===e?void 0:e.config,r={};if(o){“att”===(null===(n=this.partnerClasses)||void 0===n?void 0:n[1])&&(t.promos.showYahooLogo=!1);strive{var s=JSON.parse(o);r=__assign({},s),this.personalised=1===s.personalize}catch(e){logError(“Notifications config parsing error”,e)}i&&delete i.dataset.config}return this.mergeConfigs(t,r)},e.prototype.mergeConfigs=perform(e,n){var t=__assign({},e);for(var i in e)t[i]=__assign(__assign({},e[i]),n[i]);return t},e.prototype.getTimeStamp=perform(),e.prototype.setTimeStamp=perform(),e}(),notifClient=new NotifClient,getNotifClient=perform(){return notifClient},reInit=perform(){notifClient=new NotifClient},ybarRapid,ybarRapidInterval,ybarRapidErrMsg=””,beaconQueue=[],noop=perform(){},logRapidError=perform(){window.removeEventListener(“beforeunload”,logRapidError),””!==ybarRapidErrMsg&&logError(“Fast not discovered on web page”,new Error(ybarRapidErrMsg))},findRapidWithSpaceid=perform(e){var n=void 0;if(e&&e.size>0)for(var t=0;t
/*!**********************!*
!*** ./src/index.js ***!
**********************/perform(__unused_webpack_module,__unused_webpack_exports,__webpack_require__){eval(“var I18n = __webpack_require__(/*! ./lib/I18n */ “./src/lib/I18n.js”);nn(perform (win, doc) {n “use strict”;nn var defaultConfig = {n uiLang: ‘en-US’,n speechLang: ‘en-US’,n voiceButton: ‘#voice-btn’,n searchBox: {n type: ‘#sf’,n enter: ‘#yschsp’,n params: {n fr: ”,n fr2: ”n }n },n enable_voice_trending: false,n trending: {n market: “en-us”n },n ui: {n speechOverlay: {n disableBlur: falsen }n },n browsers: {n edge: falsen }n };nn perform VoiceSearch(config) {n var self = this;n self.config = Object.assign(defaultConfig, config || {});n self.i18n = new VoiceSearch.I18n({n lang: self.config.uiLangn });n self.renderPermissionGuide(self);n self.renderSpeechPanel(self);n self.speechResult=””;n self.noSpeech = true;n self.isRecognitionStart = false;n self.recognition = null;n self.voiceButton = doc.querySelector(self.config.voiceButton);n self.searchBoxForm = doc.querySelector(self.config.searchBox.type);n self.searchBoxQuery = doc.querySelector(self.config.searchBox.enter);n self.speechPanel = doc.querySelector(‘#spch’);n self.speechButtonContainer = doc.querySelector(‘#spchbc’);n self.speechButton = doc.querySelector(‘#spchbc-btn’);n self.speechText = doc.querySelector(‘#spcht’);n self.speechOverlay = doc.getElementById(‘spch-overlay’);n self.retryLink = doc.querySelector(‘#spcht-retry’);n self.trending = doc.getElementById(‘spch-trending’);n self.trendingTerms = doc.getElementById(‘trending-terms’);n self.termSpans = doc.getElementsByClassName(“trending-term”);n self.closeButton = doc.querySelector(‘#spchx’);n self.startAudio = new Audio(‘ self.resultAudio = new Audio(‘ self.errorAudio = new Audio(‘ self.closeAudio = new Audio(‘ self.permissionGuide = doc.querySelector(‘#spchp’);n self.permissionGuideClose = doc.querySelector(‘#spchpx’);n self.permissionGuideTimer = null;nn self.onEscKeyDown = perform (e) {n if (e.code !== ‘Escape’) {n return;n }nn self.recognition.cease();n self.sendBeacon(‘keybrd’, ‘voicesearch_cancel_esc’); // The clear up ought to put inside closePanel() as an alternative of right here,n // or func will not be cleaned up if person shut panel with btn or overlaynn self.closePanel(self);n };nn if (self.isBrowserSupported()) {n var SpeechRecognition = win.SpeechRecognition || win.webkitSpeechRecognition;n var SpeechGrammarList = win.SpeechGrammarList || win.webkitSpeechGrammarList;n var speechGrammar=”#JSGF V1.0;”;n self.recognition = new SpeechRecognition();n var speechRecognitionList = new SpeechGrammarList();nn if (speechRecognitionList.addFromString) {n speechRecognitionList.addFromString(speechGrammar, 1);n }nn self.recognition.grammars = speechRecognitionList;n self.recognition.steady = false;n self.recognition.lang = self.config.speechLang;n self.recognition.interimResults = false;n self.recognition.maxAlternatives = 1;n /* Listeners */nn if (self.voiceButton) {n self.voiceButton.onclick = perform () {n self.recognition.begin();nn if (self.permissionGuideTimer) {n win.clearTimeout(self.permissionGuideTimer);n }nn self.permissionGuideTimer = win.setTimeout(perform () {n if (!self.isRecognitionStart) {n self.showPermissionGuide(self);n }n }, 300); // Additionally shut when urgent escnn doc.addEventListener(‘keydown’, self.onEscKeyDown);n self.sendBeacon(‘clk’, ‘voicesearch’);n };n }nn if (self.speechButton) {n self.speechButton.onclick = perform () {n if (!self.isRecognitionStart) {n self.recognition.begin();n self.sendBeacon(‘clk’, ‘voicesearch_panel_mic_restart’);n } else {n self.recognition.cease();n self.sendBeacon(‘clk’, ‘voicesearch_panel_mic_close’);n self.closePanel(self);n }n };n }nn if (self.retryLink) {n self.retryLink.onclick = perform () {n if (!self.isRecognitionStart) {n self.recognition.begin();n self.sendBeacon(‘clk’, ‘voicesearch_panel_retry’);n }n };n }nn if (self.speechOverlay) {n self.speechOverlay.onclick = perform () {n self.recognition.cease();n self.sendBeacon(‘clk’, ‘voicesearch_cancel_outside’);n self.closePanel(self);n };n }nn if (self.closeButton) {n self.closeButton.onclick = perform () {n self.recognition.cease();n self.sendBeacon(‘clk’, ‘voicesearch_cancel’);n self.closePanel(self);n };n }nn if (self.permissionGuideClose) {n self.permissionGuideClose.onclick = perform () {n self.recognition.cease();n self.sendBeacon(‘clk’, ‘voicesearch_permission_close’);n self.closeAudio.play();n self.hidePermissionGuide(self);n };n }n /* Recognition Occasions */nnn self.recognition.onresult = perform (occasion) {n // The SpeechRecognitionEvent outcomes property returns a SpeechRecognitionResultList objectn // The SpeechRecognitionResultList object comprises SpeechRecognitionResult objects.n // It has a getter so it may be accessed like an arrayn // The primary [0] returns the SpeechRecognitionResult on the final place.n // Every SpeechRecognitionResult object comprises SpeechRecognitionAlternative objects that include particular person outcomes.n // These even have getters to allow them to be accessed like arrays.n // The second [0] returns the SpeechRecognitionAlternative at place 0.n // We then return the transcript property of the SpeechRecognitionAlternative objectn // console.log(‘Confidence: ‘ + occasion.outcomes[0][0].confidence);n self.speechResult = occasion.outcomes[0][0].transcript;n /* Punctuation Dealing with: Examine final character and strip it if vital */nn self.handlePunctuation(self);nn if (self.speechText) {n self.speechText.innerText = self.speechResult;n }nn if (self.searchBoxQuery) {n self.searchBoxQuery.worth = self.speechResult;n }nn self.resultAudio.play();n win.setTimeout(perform () {n if (self.speechPanel) {n self.speechPanel.classList.take away(“s2tb”);n self.speechPanel.classList.add(“s2tb-h”);n }nn self.hideRetryLink(self);nn if (self.searchBoxForm) {n if (self.searchBoxForm.fr && self.config.searchBox && self.config.searchBox.params && self.config.searchBox.params.fr) {n self.searchBoxForm.fr.worth = config.searchBox.params.fr;n self.searchBoxForm.fr.disabled = false; // for homepage casen }nn if (self.searchBoxForm.fr2 && self.config.searchBox && self.config.searchBox.params && self.config.searchBox.params.fr2) {n self.searchBoxForm.fr2.worth = config.searchBox.params.fr2;n self.searchBoxForm.fr2.disabled = false; // for homepage casen }nn self.searchBoxForm.submit();n }n }, 1000);n };nn self.recognition.onspeechstart = perform () {// Fired when speech startsn };nn self.recognition.onspeechend = perform () {n // Fired when speech endsn self.recognition.cease();n };nn self.recognition.onerror = perform () {n // console.log(‘Error occurred in recognition: ‘ + occasion.error);n if (self.speechText) {n self.speechText.innerText = self.i18n.t(‘search.voice.recognition_error’);n }nn self.hideTrending(self);n self.showRetryLink(self);n self.errorAudio.play();n };nn self.recognition.onaudiostart = perform () {n // Fired when the person agent has began to seize audio.n if (self.speechButtonContainer) {n self.speechButtonContainer.classList.add(“listening”);n }n };nn self.recognition.onaudioend = perform () {n // Fired when the person agent has completed capturing audio.n if (self.speechButtonContainer) {n self.speechButtonContainer.classList.take away(“listening”);n }n };nn self.recognition.onsoundstart = perform () {n // Fired when any sound — recognisable speech or not — has been detected.n self.hideTrending(self);n self.noSpeech = false;nn if (self.speechButtonContainer) {n self.speechButtonContainer.classList.take away(“listening”);n self.speechButtonContainer.classList.add(“talking”);n }n };nn self.recognition.onsoundend = perform () {n // Fired when no sound presentn if (self.speechButtonContainer) {n self.speechButtonContainer.classList.take away(“talking”);n }n };nn self.recognition.onstart = perform () {n // Fired when the speech recognition service has begun listeningn self.recognitionInit(self);n self.startRecognition(self);n };nn self.recognition.onend = perform () {n // Fired when the speech recognition service has disconnected.n self.isRecognitionStart = false;nn if (self.noSpeech == false && self.speechResult == ”) {n // No match: Fired when the speech recognition cannot recognise speechn if (self.speechText) {n self.speechText.innerText = self.i18n.t(‘search.voice.recognition_nomatch’);n }nn self.hideTrending(self);n self.showRetryLink(self);n self.errorAudio.play();n }n }; // set off onReady occasion when initializednnn if (doc && doc.dispatchEvent) {n doc.dispatchEvent(new Occasion(‘VOICE_JS_READY’));n }n }n } // static membersnnn VoiceSearch.I18n = I18n; // occasion membersnn VoiceSearch.prototype.renderPermissionGuide = perform (self) {n var tmpl = “n
n “);n var dom = new DOMParser().parseFromString(tmpl, ‘textual content/html’);n doc.physique.appendChild(dom.physique.kids[0]);n };nn VoiceSearch.prototype.renderSpeechPanel = perform (self) {n var tmpl = “n
n
n n n “.concat(self.i18n.t(‘search.voice.recognition_retry’), “n
n
n
n
n
n “).concat(self.i18n.t(‘search.voice.trending_title’), “n n
n
n
n “);n var dom = new DOMParser().parseFromString(tmpl, ‘textual content/html’);nn if (self && self.config && self.config.ui && self.config.ui.speechOverlay && self.config.ui.speechOverlay.disableBlur) {n dom.physique.kids[0].classList.add(‘disable-blur-overlay’);n }nn doc.physique.appendChild(dom.physique.kids[0]);n };nn VoiceSearch.prototype.isBrowserSupported = perform () {n var isSupported = false;n var self = this;n var isChromium = Boolean(window.chrome);n var isIOSChrome = /CriOS/.check(window.navigator.userAgent);n var isEdge = /Edg//.check(window.navigator.userAgent);n var isLegacyEdge = /Edge//.check(window.navigator.userAgent);n var isOpera = Boolean(window.opr);n var isBrave = Boolean(window.navigator.courageous);n var browsers = [// chromen {n checkEnabled: function checkEnabled() {n return true;n },n checkBrowser: function checkBrowser() {n return isChromium && !isIOSChrome && !isEdge && !isOpera && !isBrave;n },n checkAPI: function checkAPI() ‘webkitSpeechGrammarList’ in win);n n }, // edgen {n checkEnabled: function checkEnabled() {n return self && self.config && self.config.browsers && self.config.browsers.edge;n },n checkBrowser: function checkBrowser() {n return isChromium && isEdge && !isLegacyEdge;n },n checkAPI: function checkAPI() ‘webkitSpeechGrammarList’ in win);n n }];nn for (var b = 0; b 0) {n var lastChar = self.speechResult.charAt(self.speechResult.size – 1);nn if (lastChar === ‘.’ || lastChar === ‘?’ || lastChar === ‘。’ || lastChar === ‘?’) {n self.speechResult = self.speechResult.slice(0, -1);n }n }n };nn VoiceSearch.prototype.sendBeacon = perform (actn, slk) {n var ULT = win.YAHOO.ULT || {},n SB = win.YAHOO.SB || {};nn if (ULT.beacon_click) {n var trackParams = {n _S: SB.config.i13n.spaceid,n _I: SB.config.i13n.pvid,n actn: actn,n sec: ‘search’,n slk: slkn };n win.YAHOO.ULT.beacon_click(trackParams);n }n };nn VoiceSearch.prototype.ajaxReq = perform (url, callback) {n var DONE_STATE = XMLHttpRequest.DONE || 4; // for IE-compatibilitynn var xhr = new XMLHttpRequest();n var responseRaw;n var response; // CORS request just for IE8/IE9nn if (doc.documentMode && doc.documentMode n // tags it’s going to enable on a pagenn if (!choices.singleton && typeof choices.singleton !== ‘boolean’) {n choices.singleton = isOldIE();n }nn record = record || [];n var lastIdentifiers = modulesToDom(record, choices);n return perform replace(newList) {n newList = newList || [];nn if (Object.prototype.toString.name(newList) !== ‘[object Array]’) {n return;n }nn for (var i = 0; i =200&&o.status40959)&&(o19903))return!1}return!0},normalizeAndEscapeUserRecord=perform(e),createAccountItemElement=perform(e,n,t){var i=t.ybarAccMenuItemTemplate,o=t.crumb;if(i){var r=(n+1).toString(),s=i.getAttribute(“data-signedOutState”),a=i.getAttribute(“data-done”)||””,c=getTemplateContent(i),l=c.kids&&c.kids[0];if(!l&&c.childNodes)for(var d=0;d
Yoruma kapalı.