{"version":3,"sources":["webpack:///./src/frontend/components/ads/dfp-ad-init-data-decorator.js","webpack:///./src/frontend/components/ads/boot-takeover-ads.js","webpack:///./src/frontend/components/ads/boot-react-ads.js","webpack:///./node_modules/core-js-pure/modules/es.array.every.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/ui/open-javascript-href.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/ui/items-in-viewport-ui.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/models/items-in-viewport-storage.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/ui/wish-list-ui-for-list.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/ui/message-box-ui.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/ui/search-result/scroll-to-top-ui.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/models/items-click-storage.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/pages/basic.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/ui/search-result/search-result-header-ui.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/ui/search-result/search-result-filter-close-ui.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/ui/realtime.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/boot/item-result-list/boot-result-layout.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/ui/layout/login-signup-events.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/data/with-ajax.js","webpack:///./src/EbaySweden.TouchWeb/static/script/utils/abstract-modal.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/data/navigation-modal.js","webpack:///./node_modules/core-js-pure/es/instance/every.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/data/ajax.js","webpack:///./src/EbaySweden.TouchWeb/static/script/utils/is-hybrid-app.js","webpack:///./node_modules/core-js-pure/stable/instance/every.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/ui/modal-tooltip-ui.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/data/navigation-filter.js","webpack:///./src/EbaySweden.TouchWeb/static/script/packages/react/messaging.js","webpack:///./src/frontend/components/ads/index.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/ui/form-select-ui.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/data/searchid.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/ui/layout/google-tagmanager.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/data/init-data.js","webpack:///./src/EbaySweden.TouchWeb/static/script/utils/format-number.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/ui/modal-ui.js","webpack:///./src/EbaySweden.TouchWeb/static/script/utils/viewport.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/ui/search-result/pagination.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/ui/search-result/result-layout-toggler-ui.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/data/navigation.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/data/temp-data.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/ui/loading.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/ui/layout/login.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/data/feature-feedback-service.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/ui/feature-feedback/feature-feedback.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/ui/feature-feedback/feature-feedback-link.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/ui/saved-search-monitor-toggler-ui.js","webpack:///./src/EbaySweden.TouchWeb/static/script/utils/window-load.js","webpack:///./src/EbaySweden.TouchWeb/static/script/utils/window-scroll.js","webpack:///./src/EbaySweden.TouchWeb/static/script/utils/prevent-default.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/ui/layout/signup-referral-path-cookie-creator.js","webpack:///./src/EbaySweden.TouchWeb/static/script/utils/triot-flight-bridge.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/boot/boot-layout.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/ui/save-search-ui.js","webpack:///./node_modules/core-js/modules/es.string.small.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/data/member-info.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/ui/toggle-elements.js","webpack:///./node_modules/core-js-pure/es/array/virtual/every.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/ui/layout/login-signup-analytics.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/ui/expandable.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/instance/every.js","webpack:///./src/EbaySweden.TouchWeb/static/script/utils/minimal-router.js","webpack:///./src/EbaySweden.TouchWeb/static/script/utils/breakpoints.js","webpack:///./src/EbaySweden.TouchWeb/static/script/utils/disable-zoom.js","webpack:///./src/EbaySweden.TouchWeb/static/script/utils/window-resize.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/data/bid-notifier.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/ui/item-cards-ui.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/ui/search-result/search-result-filter-box-ui.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/data/saved-searches-service.js","webpack:///./src/EbaySweden.TouchWeb/static/script/utils/history.js","webpack:///./src/EbaySweden.TouchWeb/static/script/app/data/anti-forgery-token.js","webpack:///./src/EbaySweden.TouchWeb/static/script/utils/bubbled-focus.js"],"names":["DfpAdInitDataDecorator","props","state","pageTargeting","initData","gptData","customTargetingParameters","adUnitPath","prevProps","this","setState","React","Component","initLeeadsDesktop","takeoverElement","children","length","innerHTML","window","ADTECH","config","page","protocol","server","network","siteid","params","loc","placements","sizeid","alias","target","enqueueAd","executeQueue","isTakeOverAllowedOnPage","getInitData","pageName","loadScript","src","resolve","reject","script","document","createElement","async","onload","onerror","body","appendChild","initTakeovers","a","GdprSettings","isMarketingEnabled","getElementById","clientWidth","Math","max","documentElement","innerWidth","isBreakpointOrHigher","BREAKPOINTS","MD","loadReactElements","getElementsByTagName","element","hasAttribute","position","getAttribute","adFormats","deviceName","lazyLoad","adOnlyOnPages","stickyEnabled","autoscale","stickyTop","stickyBottom","adContainerClass","refresh","featureSwitches","split","isNaN","isLoggedIn","sizeMapping","createGptSizeMapping","mapDeviceNameToViewport","minViewportWidth","maxViewportWidth","ReactDOM","render","slotTargeting","pos","autoscaleOffsetWidth","offsetWidth","undefined","messages","Messaging","subscribe","unmountComponentAtNode","teardown","e","logger","initReactElement","setAttribute","reactAdsLoader","$","$every","every","arrayMethodIsStrict","arrayMethodUsesToLength","STRICT_METHOD","USES_TO_LENGTH","proto","forced","callbackfn","arguments","url","evt","ctrlKey","open","location","href","component","_storage","ItemsInViewportStorage","defaultAttrs","itemCardBody","itemCardsSentAttribute","itemCardsNotSent","itemLink","statusItemNotSent","statusItemSent","_logShowItems","itemId","itemSearchId","itemCards","select","$window","vpTop","scrollTop","vpBottom","innerHeight","height","_","item","$item","parent","attr","_isAdded","viewport","isIn","itemsShown","hasOwnProperty","push","isBelow","_allItems","contains","_sendShownItems","searchId","sendUs","items","trigger","saveAllItems","_init","_currentSearchIds","chain","uniq","value","storedItem","storedItems","getItemsBySearchIds","each","timeout","after","throttledOnScroll","throttle","on","debouncedItemsToSend","debounce","maxNoOfStorages","maxNoOfItems","timeToLive","StorageService","STORAGE_KEYS","ITEMS_IN_VIEWPORT","SENT","removeExpired","_removeIfToManyStorages","prototype","storageItemsOrderedByExpires","fetch","orderByExpire","tooMany","deleteUs","i","remove","key","searchIds","allStorageItems","storageItems","search","JSON","parse","saveUs","searchItem","_saveItems","currentTime","Date","getTime","expires","set","addToWishList","removeFromWishList","searchIdSelector","_addItemToWishList","payload","preventDefault","stopPropagation","_triggerWishListAction","el","_removeItemFromWishList","button","removeFromDom","data","closest","fadeOut","eventName","itemNode","hasClass","addClass","s","_wishListItemAdded","$node","removeClass","_triggerGAEventAction","gtmCore","trackGtmEvent","memberId","memberInfo","_wishListItemRemoved","actionName","itm","source","medium","label","category","action","userTriggered","closeSelector","contentSelector","close","showError","html","message","css","opacity","linkSelector","activeClass","_scrollToTop","scrollTo","_disableButton","blur","_toggleElement","scrollY","_enableButton","lastScrollY","throttledToggleElement","ItemsClickStorage","ITEMS_CLICK","_removeOld","get","getSearchId","add","onReady","bootLayout","sortButtonSelector","selectBoxSelector","filterJavascriptLink","_sortChanged","callbackDone","hitCallback","_filterClick","currentTarget","openJavascriptHref","_closeFilter","scrollToTop","parents","offset","top","context","expand","_closeCategoryFilterOnLayoutChange","_register","itemIds","BidNotifierData","attachTo","buyingEventPusherServerUrl","pageSpecificData","BuyingEventPusherServerUrl","buyingEventPusherEnabled","BuyingEventPusherEnabled","_flash","itemCard","highlightee","_updateBid","AuctionId","text","formatNumber","asMoney","BidAmount","NumberOfBids","_handleItemEnded","ItemId","teardownAll","SearchResultFilterBoxUI","FormSelectUI","SearchResultHeaderUI","SearchResultFilterCloseUI","Expandable","ResultLayoutTogglerUI","Pagination","WishListUIList","ItemCardsUI","ItemsInViewportUI","ScrollToTopUI","Realtime","SaveSearchService","SaveSearchUI","trackLoginSuccess","analytics","trackLoginFailure","validationError","LoginWithPasswordButtonComponent","_click","connect","inIframe","LOGIN","PASSWORD","TrackLoginSuccessComponent","TrackConnectSuccessComponent","TrackLoginFailureComponent","TrackConnectFailureComponent","WithAjax","_currentRequests","_callSuccessHandler","callbackOrEvent","isFunction","isString","_callErrorHandler","jqXHR","_createSuccessHandler","_userAborted","statusText","_createErrorHandler","noShowError","textStatus","errorThrown","responseJSON","responseStatus","code","reload","_populateOptions","options","method","toLocalizedUrl","languageCodeIso2","dataType","requestId","type","traditional","success","error","cache","_jsonRequest","deferred","Deferred","removeFromCurrentRequests","has","antiForgeryToken","addToAjaxRequest","startTime","ajax","done","fail","endTime","_globalErrorHandler","always","abort","_get","_post","_getInitDataForScribe","InitData","getForScribe","_populateScribePayload","status","responseHeaders","getAllResponseHeaders","pageUrl","referrer","modalId","opts","closeModal","modalBackground","modalTemplate","_isActive","$modal","$modalHtml","triggerOpen","evtData","_open","triggerClose","_close","triggerSetNonDismissible","_setNonDismissible","openModal","_cancelSpinner","_updateModal","_createModal","clearTimeout","cssClass","$modalContent","content","adjustModalPosition","_adjustModalPosition","nonDismissible","beforeShow","clone","chromeless","append","_resizeModalHeight","_fadeIn","_escButtonClose","which","_nonDismissible","_closeClick","_closePrevented","off","_removeModal","popupHeight","scroll","windowHeight","clientHeight","targetOffset","_preventClose","_enableClose","focus","BubbledFocus","_postModal","eventData","_abortPendingRequests","_request","headers","reloadAfterModalClose","_reloadAfterModalClose","_showModal","_getModal","parseHtml","_reloadPage","ArrayPrototype","Array","module","exports","it","own","IsHybridApp","AbstractModal","mixin","_triggerOpen","thisTop","thisLeft","thisLeftPosition","_addBreakpointClass","_fitsToTheRight","outerHeight","left","outerWidth","index","match","join","_getLeftPosition","arrowPosition","windowWidth","modalWidth","elementWidth","bestCenter","maxLeft","breakpoints","getCurrent","_getFilterModal","forceStart","successCallback","_refresh","$html","$newView","$currentView","setFromHtml","History","pushState","title","empty","contents","bootResultLayout","publish","namespace","random","events","callback","event","me","selectMethod","dropdownSelector","dropdownLabel","navigateEvent","_selectChange","_updateLabel","optionValue","val","_handleUrl","selected","is","_addGaAndGotoUrl","_gotoUrl","optionLabel","cookieUtil","eraseCookie","name","date","setMonth","getMonth","createCookie","saveSearchId","hitCallbackCalled","pushToDataLayer","dataLayer","gaEventTrackingSelector","gaShowEventTrackingSelector","_trackPageView","_trackEvent","analyticsData","eventCategory","eventAction","eventLabel","eventValue","eventNonInteractive","_isNonInteractive","_trackEventFromLink","link","theUserWantsToOpenTheLinkInANewTab","metaKey","keyCode","shiftKey","isDefaultPrevented","stopImmediatePropagation","_changeLocation","_sendTrackEvent","_trackEventFromPjax","_hasCategoryOrLabel","_getPayloadFromLink","_trackShowEvent","$el","_trackSearchFilterToggle","_trackCategoryMenuToggle","_userLoggedIn","version","loginState","_trackSearchResultLayoutChange","gaPayload","_clearPageVariables","currentData","currentClone","current","description","viewHtml","initDataString","parsed","c","number","toString","replace","_loading","spinner","Spinner","width","radius","lines","color","wrap","spin","_getCurrentVpBottom","itemTop","itemBottom","cardListContainer","pagination","paginationTop","next","first","previous","_next","_loadPage","_afterNext","_previous","_afterPrev","targetElement","onSuccess","updatePageState","_forceReflowIfAndroid","replaceState","Feature","_getUserAgent","forceReflow","appendTo","replaceWith","pageIndex","direction","firstElement","firstElementPosition","prepend","_updateUrl","origin","_isOnFirstPage","toggleLayoutSelector","_toggleLayout","targetLayout","pageContainer","navigate","fullPageReload","toLocalizedRiotUrl","doTeardown","_process","actions","tempDataString","tempData","justLoggedIn","_justLoggedIn","justLoggedInV2","_justLoggedInV2","errorMessage","_errorMessage","currentSpinner","stop","delayInMilliseconds","timeoutId","_spinner","start","className","_show","isVisible","xlarge","isHybridApp","_startDelay","_hide","setTimeout","_showLogin","destination","encodeURIComponent","pathname","_submitFeedback","_like","_key","_subtitle","_title","overlay","container","like","dislike","likeLabel","dislikeLabel","cancel","submit","subtitle","comment","dialog","isOkToContact","removeAttr","_dislike","_prompt","_clear","_goToStep1","_setPosition","_showOverlay","_showDialog","_submit","breakpoint","_goToStep2","defaultPosition","_getCenterPosition","show","_hideOverlay","hide","visibility","_hideDialog","_hideAll","_isSmallScreen","large","_cancel","_closeStep2","FeatureFeedbackService","FeatureFeedback","template","offsetLeft","_promptFeatureFeedback","_initTemplateOnce","_trackGAEvent","tpl","_teardown","_containerClicked","_getPageNameForGA","idAttribute","savedSearchTogglerElement","savedSearchTogglerLabelElement","disabledClass","_onToggleChange","SearchId","SendMail","_monitoringCallback","sendMail","_clickOnCheckbox","_clickOnLabel","input","click","_triggerLoad","readyState","timer","_onScroll","_preventDefaultClick","createSignupReferralPathCookie","expireDate","referralPath","setTime","evtNames","_teardownTriot","triot","bus","keepRootTag","_gaEvent","_navigate","Login","NavigationFilterData","NavigationData","GoogleTagManager","PreventDefault","ModalUI","ModalTooltipUI","MessageBoxUI","ToggleElementsUI","disableZoomIfAndroidChrome","WindowResize","TempData","Loading","NavigationModal","FeatureFeedbackLink","SavedSearchMonitorTogglerUI","WindowLoad","WindowScroll","SignupReferralPathCookieCreator","TriotFlightBridge","LoginSignupEvents","attachFlightComponents","bootReactAds","humany","isFunctionalEnabled","then","loadModule","handleModuleError","saveSearchForm","saveSearchSubmit","showModalFeedbackContentSelector","savedSearchIdName","modalName","buttonIsToggledClass","_actionButtonClicked","_removeSavedSearch","_saveSearch","_disableSubmitButton","host","ids","serialize","_getNrOfHits","itemResultTotalItems","_searchSaved","responseData","id","_showModalTooltipFeedback","_enableSubmitButton","_searchRemoved","removeData","submitButton","modalTooltipHtml","prop","_userReturnedAfterLogin","history","defineHashRoute","MinimalRouter","createHTML","forcedStringHTMLMethod","small","memberAlias","BUTTON_ACTION","collapse","HIDDEN_CLASS","ACTIVE_CLASS","toggleButton","toggleItems","hasActiveLink","_toggleOptions","_hideOptions","_showOptions","nodeBottomOffsetY","entryVirtual","AnalyticsStorage","sessionStorage","setItem","setIfEmpty","getItem","clear","removeItem","flow","FLOW","SIGNUP","UNKNOWN","METHOD","FACEBOOK","GOOGLE","trackEvent","console","log","trackButtonClick","Analytics","_afterLayout","_startAnimationTimer","animationTimer","afterAnimation","previousAnimation","_toggle","elementHeight","_updateStateForAnchor","anchor","hash","substring","route","fn","result","RegExp","exec","apply","removeHashFromCurrentUrl","getValueFromHashParam","param","hashArr","charAt","hit","pair","sizes","xxlarge","siteheader","siteheaderportrait","sidebarsearch","detected","inputZoom","_lastWidth","_updateLayout","_setUpdateLayout","currentWidth","userResize","addEventListener","around","removeEventListener","Logger","_socket","_listenToBuyingEvents","ioLocation","io","logInfo","emit","_handleClientEvent","_disconnectSocket","socket","disconnect","Type","Event","_shouldEnableLiveUpdates","searchIdDataAttribute","_itemBodyClick","listener","searchIdStorage","itemLinks","boxHeader","_toggleFilterBox","toggleClass","_trackCategories","_setLoadingStateOnSelected","_addSkipNavigationForHybrid","origEl","cleanedUrl","_nullFunction","_removeItemFromSavedSearches","_whenLoggedIn","_addSavedSearch","_monitoringSearchCallback","_startMonitoringSearch","_stopMonitoringSearch","doNothing","go","forward","back","_value","boundNodes","selector","callFn","_raise","_captureEvent","allowedTargets","detachFocus"],"mappings":"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","file":"script/chunks/chunk.basic.13c1b98685.js","sourcesContent":["import React from 'react';\nimport LocalizedDfpAd from './localized-dfp-ad';\n\nclass DfpAdInitDataDecorator extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n pageTargeting: props.initData.gptData.customTargetingParameters,\n adUnitPath: props.initData.gptData.adUnitPath\n };\n }\n\n componentDidUpdate(prevProps) {\n if (\n prevProps.initData &&\n prevProps.initData.gptData &&\n prevProps.initData.gptData.customTargetingParameters\n ) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({\n pageTargeting:\n prevProps.initData.gptData.customTargetingParameters,\n adUnitPath: prevProps.initData.gptData.adUnitPath\n });\n }\n }\n\n render() {\n return ;\n }\n}\nexport default DfpAdInitDataDecorator;\n","/*\n----------------------------------------------------------------------------------------------------------------------------------\n\n# DESCRIPTION\nThis script contains the boot loader for takeover ads at Tradera. In the current version it has support for following vendors:\n- Leeads\n\nIMPORTANT: if you need to add a new takeover solution then be sure it doesn't collide with the leeads takeover solution. \nThere is a risk you get a take over over a take over if that happens.\n\n----------------------------------------------------------------------------------------------------------------------------------\n*/\n\nimport { getInitData } from 'packages/init-data';\nimport { BREAKPOINTS, isBreakpointOrHigher } from 'tradera-utils/breakpoints';\nimport GdprSettings from 'tradera-utils/gdpr-settings';\n\n/**\n * this will be false if the user has an ad blocker\n */\nconst adTechLoaded = () => {\n return typeof window.ADTECH === 'undefined' ? false : true;\n};\n\n/**\n * init the leeads desktop take over\n * @param {*DOMElement} takeoverElement\n */\nconst initLeeadsDesktop = takeoverElement => {\n // console.info('[init] leeads take over - desktop');\n\n // \n if (takeoverElement.children.length == 0) {\n takeoverElement.innerHTML =\n '
';\n }\n window.ADTECH.config.page = {\n protocol: 'https',\n server: 'adserver.adtech.de',\n network: '1568.1',\n siteid: '894854',\n params: { loc: '100' }\n };\n window.ADTECH.config.placements[6498025] = {\n sizeid: '16',\n params: { alias: '', target: '_blank' }\n };\n window.ADTECH.enqueueAd(6498025);\n window.ADTECH.executeQueue();\n};\n\nconst isTakeOverAllowedOnPage = () => {\n let initData = getInitData();\n switch (initData.pageName) {\n case 'StartPage':\n case 'Category':\n case 'SearchResults':\n return true;\n default:\n return false;\n }\n};\n\nconst loadScript = src => {\n return new Promise((resolve, reject) => {\n let script = document.createElement('script');\n script.src = src;\n script.async = false;\n script.onload = () => {\n resolve();\n };\n script.onerror = () => {\n reject('failed to load adtech script');\n };\n document.body.appendChild(script);\n });\n};\n\nconst initTakeovers = async () => {\n if (!GdprSettings.isMarketingEnabled()) {\n return;\n }\n try {\n await loadScript('https://aka-cdn.adtech.de/dt/common/DAC.js');\n } catch (err) {\n // failed, maybe adblocker or other, do not do anything more here\n return;\n }\n\n if (!adTechLoaded()) {\n return;\n }\n\n if (!isTakeOverAllowedOnPage()) {\n return;\n }\n\n let takeoverElement = document.getElementById('ads-takeover');\n let clientWidth = Math.max(\n document.documentElement.clientWidth,\n window.innerWidth || 0\n );\n\n // LEEADS TAKEOVERS\n if (isBreakpointOrHigher(BREAKPOINTS.MD, clientWidth)) {\n initLeeadsDesktop(takeoverElement);\n }\n};\n\nexport default initTakeovers;\n","/**\n *\n * DESCRIPTION:\n * This script detects elements in a HTML page and initializes react components in those slots.\n * The react component that is created can be configured using data attributes, see under function declaration below.\n *\n * data-g-ad-position - {string} Tradera domain specific custom targeting parameter e.g. mid1-desktop, see google ad manager (DFP) for more info\n * data-g-ad-format - {string} comma separated, maps to an ad size, see ad-slot-utilities.js\n * data-g-ad-device - {string} maps to viewport according to our breakpoints, see ad-slot-utilities.js\n * data-g-ad-lazy-load - {bool} enable lazy load\n * data-g-ad-only-on-pages - {string} comma separated, specify pages where ad should be visible, OR filter, uses our pagename in init-data\n * data-g-ad-sticky - {bool} enable sticky\n * data-g-ad-autoscale - {bool} enable autoscale, which resizes an ad to fit the available space to parent\n * data-g-ad-sticky-top - {string (#id) or number} if sticky is enabled, specifies top boundary\n * data-g-ad-sticky-bottom - {string (#id) or number} if sticky is enabled, specifies top boundary\n * data-g-ad-ad-container-class - {string} possibility to wrap entire ad component in div with class specified as value\n */\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport logger from 'packages/logger';\nimport {\n createGptSizeMapping,\n mapDeviceNameToViewport\n} from 'static/script/app/ui/layout/ads/ad-slot-utilities';\nimport DfpAdInitDataDecorator from './dfp-ad-init-data-decorator';\nimport Messaging from 'packages/react/messaging';\nimport initTakeovers from './boot-takeover-ads';\nimport { ApplicationErrorBoundary } from 'components';\n\n/**\n * initializes the react into the DOM element\n * @param {*HTMLDomElement} element a HTML Dom element for the that is to be initialized.\n * @param {*} initData The init data element that is part of every page request\n */\nconst initReactElement = (element, initData) => {\n // get all element attributes\n const position = element.getAttribute('data-g-ad-position');\n const adFormats = element.getAttribute('data-g-ad-format');\n const deviceName = element.getAttribute('data-g-ad-device');\n const lazyLoad = element.hasAttribute('data-g-ad-lazy-load');\n const adOnlyOnPages = element.getAttribute('data-g-ad-only-on-pages');\n const stickyEnabled = element.hasAttribute('data-g-ad-sticky');\n const autoscale = element.hasAttribute('data-g-ad-autoscale');\n let stickyTop = element.getAttribute('data-g-ad-sticky-top');\n let stickyBottom = element.getAttribute('data-g-ad-sticky-bottom');\n let adContainerClass = element.getAttribute('data-g-ad-ad-container-class');\n\n const refresh =\n element.hasAttribute('data-g-ad-refresh') &&\n 'ads-refresh' in initData.featureSwitches &&\n initData.featureSwitches['ads-refresh'] === true;\n\n // check if this adslot has specific exclusion rules\n if (adOnlyOnPages !== null) {\n // if page not found in list of ads to load then exit\n if (\n adOnlyOnPages\n .split(',')\n .indexOf(initData.gptData.customTargetingParameters.page) === -1\n ) {\n return;\n }\n }\n\n // handle sticky properties\n if (stickyTop !== null && !isNaN(stickyTop)) {\n stickyTop = parseInt(stickyTop);\n if (!initData.isLoggedIn) {\n stickyTop += 38;\n }\n }\n if (stickyBottom !== null && !isNaN(stickyBottom)) {\n stickyBottom = parseInt(stickyBottom);\n }\n\n // get size mapping\n const sizeMapping = createGptSizeMapping(adFormats, deviceName);\n const [minViewportWidth, maxViewportWidth] = mapDeviceNameToViewport(\n deviceName\n );\n\n if (element && sizeMapping) {\n try {\n ReactDOM.render(\n \n \n ,\n element\n );\n\n // make sure that we kill our react stuff once a pjax happens\n const messages = new Messaging();\n messages.subscribe(['data:navigation:after-page-load'], function() {\n ReactDOM.unmountComponentAtNode(element);\n messages.teardown();\n });\n } catch (e) {\n logger(e);\n }\n }\n};\n\n/**\n * Finds all react ad elements in the DOM and initializes them if they have not previously been initialized\n * @param {*object} initData\n */\nconst loadReactElements = initData => {\n // find all the elements on the page\n Array.from(document.getElementsByTagName('react-adslot')).forEach(\n element => {\n if (!element.hasAttribute('data-react-loaded')) {\n initReactElement(element, initData);\n element.setAttribute('data-react-loaded', true);\n }\n }\n );\n};\n\n/**\n * This is the main loader function to init the ads on a page. This function should only be called once per \"loaded page.\"\n * @param {*object} initData\n */\nconst reactAdsLoader = initData => {\n if (\n 'ads-leeads-takeover' in initData.featureSwitches &&\n initData.featureSwitches['ads-leeads-takeover'] === true\n ) {\n initTakeovers();\n }\n loadReactElements(initData);\n\n // make sure that on mobile pagination that the new that are sent are loaded\n const messages = new Messaging();\n messages.subscribe(\n [\n 'ui:search-result:after-pagination',\n 'data:navigation-filter:after-load'\n ],\n function() {\n loadReactElements(initData);\n }\n );\n messages.subscribe(['data:navigation:after-page-load'], function() {\n messages.teardown();\n });\n};\n\nexport default reactAdsLoader;\n","'use strict';\nvar $ = require('../internals/export');\nvar $every = require('../internals/array-iteration').every;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar STRICT_METHOD = arrayMethodIsStrict('every');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('every');\n\n// `Array.prototype.every` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.every\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, {\n every: function every(callbackfn /* , thisArg */) {\n return $every(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","/**\n * This file has been created for SEO purposes. To prevent google bot from finding the search filters and create crawl traps\n * a href have been removed from the search filters. This script hooks into the search filters and takes the user to the correct url\n * the filter would have taken the user.\n *\n */\n\nexport default (url, evt) => {\n if (url !== '') {\n if (evt.ctrlKey) {\n window.open(url);\n } else {\n window.location.href = url;\n }\n }\n};\n","import { component } from 'flightjs';\nimport ItemsInViewportStorage from 'static/script/app/models/items-in-viewport-storage';\nimport viewport from 'static/script/utils/viewport';\n\nfunction ItemsInViewportUI() {\n this._storage = new ItemsInViewportStorage();\n\n this.defaultAttrs({\n itemCardBody: '[data-item-card-body]',\n itemCardsSentAttribute: 'data-registered-in-viewport',\n itemCardsNotSent:\n '[data-item-card-body]:not([data-registered-in-viewport])',\n itemLink: '[data-item-link]',\n statusItemNotSent: 'NOT_SENT',\n statusItemSent: 'SENT'\n });\n\n this._logShowItems = function() {\n let itemCards = this.select('itemCardsNotSent');\n let $window = $(window);\n\n let vpTop = $window.scrollTop();\n let vpBottom =\n (window.innerHeight ? window.innerHeight : $window.height()) +\n $window.scrollTop();\n\n let itemId;\n let itemSearchId;\n\n _.every(\n itemCards,\n function(item) {\n let $item = $(item);\n\n itemId = $item.parent().attr('data-item-id');\n itemSearchId = $item.attr('data-search-id');\n\n if (\n itemId &&\n !this._isAdded(itemId, itemSearchId) &&\n viewport.isIn($item, vpBottom, vpTop)\n ) {\n if (this.itemsShown.hasOwnProperty(itemSearchId)) {\n $item.attr(this.attr.itemCardsSentAttribute, '');\n this.itemsShown[itemSearchId][\n this.attr.statusItemNotSent\n ].push(itemId);\n }\n } else if (viewport.isBelow($item, vpBottom)) {\n return false;\n }\n return true;\n }.bind(this)\n );\n };\n\n this._allItems = function(itemSearchId) {\n if (this.itemsShown.hasOwnProperty(itemSearchId)) {\n return this.itemsShown[itemSearchId][\n this.attr.statusItemSent\n ].concat(\n this.itemsShown[itemSearchId][this.attr.statusItemNotSent]\n );\n }\n\n return [];\n };\n\n this._isAdded = function(itemId, itemSearchId) {\n return _.contains(this._allItems(itemSearchId), itemId);\n };\n\n this._sendShownItems = function() {\n let searchId;\n let sendUs = [];\n\n for (searchId in this.itemsShown) {\n if (\n this.itemsShown.hasOwnProperty(searchId) &&\n this.itemsShown[searchId][this.attr.statusItemNotSent].length >\n 0\n ) {\n sendUs.push({\n searchId: searchId,\n items: this.itemsShown[searchId][\n this.attr.statusItemNotSent\n ]\n });\n\n this.itemsShown[searchId][\n this.attr.statusItemSent\n ] = this._allItems(searchId);\n this.itemsShown[searchId][this.attr.statusItemNotSent] = [];\n }\n }\n\n if (sendUs.length > 0) {\n this.trigger('ui:items-in-viewport:on-send-items', {\n sendUs: sendUs\n });\n this._storage.saveAllItems(sendUs);\n }\n };\n\n this._init = function() {\n this.itemsShown = {};\n\n this._currentSearchIds = _.chain(this.select('itemCardBody'))\n .map(function(element) {\n return $(element).attr('data-search-id');\n })\n .uniq()\n .value();\n\n let storedItems = this._storage.getItemsBySearchIds(\n this._currentSearchIds\n ),\n storedItem;\n\n _.each(\n this._currentSearchIds,\n function(searchId) {\n storedItem =\n _.find(storedItems, function(item) {\n return item.searchId === searchId;\n }) || [];\n\n this.itemsShown[searchId] = {};\n this.itemsShown[searchId][this.attr.statusItemNotSent] = [];\n this.itemsShown[searchId][this.attr.statusItemSent] =\n storedItem.items || [];\n }.bind(this)\n );\n\n // Add a timeout because if we're using pjax, this will trigger before window gets scrolled to top\n // and wrong items will be registered on some pages\n this.timeout = setTimeout(\n function() {\n this._logShowItems();\n this._sendShownItems();\n }.bind(this),\n 200\n );\n };\n\n this.after('initialize', function() {\n this._init();\n\n let throttledOnScroll = _.throttle(this._logShowItems, 900);\n this.on(document, 'scroll', throttledOnScroll);\n\n let debouncedItemsToSend = _.debounce(this._sendShownItems, 1000);\n\n this.on(document, 'ui:search-result:after-pagination', this._init);\n this.on(document, 'utils:window-scroll:on-stop', debouncedItemsToSend);\n this.on(\n document,\n 'data:navigation:before-page-load',\n debouncedItemsToSend\n );\n });\n}\n\nexport default component(ItemsInViewportUI);\n","import _ from 'static/script/libs/underscore';\nimport { STORAGE_KEYS } from 'tradera-constants/storage';\nimport StorageService from 'static/script/app/data/storage-service';\n\nlet ItemsInViewportStorage = function() {\n this.maxNoOfStorages = 5;\n this.maxNoOfItems = 200;\n this.timeToLive = 60 * 60 * 1000;\n this._storage = new StorageService(STORAGE_KEYS.ITEMS_IN_VIEWPORT);\n\n this.SENT = 'SENT';\n\n this._storage.removeExpired();\n this._removeIfToManyStorages();\n};\n\nItemsInViewportStorage.prototype._removeIfToManyStorages = function() {\n let storageItemsOrderedByExpires = this._storage.fetch().orderByExpire();\n if (storageItemsOrderedByExpires.length > this.maxNoOfStorages) {\n let tooMany =\n storageItemsOrderedByExpires.length - this.maxNoOfStorages;\n let deleteUs = storageItemsOrderedByExpires.splice(0, tooMany);\n for (let i = 0; i < deleteUs.length; i++) {\n this._storage.remove(deleteUs[i].key);\n }\n }\n};\n\nItemsInViewportStorage.prototype.getItemsBySearchIds = function(searchIds) {\n let allStorageItems = this._storage.fetch();\n\n let storageItems = _.chain(allStorageItems)\n .filter(function(search) {\n return _.indexOf(searchIds, search.key) > -1;\n })\n .map(function(item) {\n return { searchId: item.key, items: JSON.parse(item.value).items };\n })\n .value();\n\n if (storageItems.length === 0) {\n return null;\n }\n\n return storageItems;\n};\n\nItemsInViewportStorage.prototype.saveAllItems = function(saveUs) {\n _.each(\n saveUs,\n function(searchItem) {\n this._saveItems(searchItem.searchId, searchItem.items);\n }.bind(this)\n );\n};\n\nItemsInViewportStorage.prototype._saveItems = function(searchId, items) {\n let currentTime = new Date().getTime();\n let expires = new Date(currentTime + this.timeToLive);\n\n if (items.length > this.maxNoOfItems) {\n // Make sure we're not saving more than this.maxNoOfItems\n let tooMany = items.length - this.maxNoOfItems;\n items.splice(0, tooMany);\n }\n\n return this._storage.set(\n searchId,\n JSON.stringify({\n items: items\n }),\n expires\n );\n};\n\nexport default ItemsInViewportStorage;\n","import { component } from 'flightjs';\nimport $ from 'static/script/libs/jquery';\nimport gtmCore from './google-tagmanager-service';\nimport memberInfo from 'static/script/app/data/member-info';\n\nfunction WishListUIList() {\n let TOGGLE_CSS_CLASS = 'wish-list-toggle';\n let EXISTS_IN_LIST_CSS_CLASS = 'exists-in-wish-list';\n\n this.defaultAttrs({\n addToWishList: '[data-add-to-wish-list]',\n removeFromWishList: '[data-remove-from-wish-list]',\n initData: null,\n searchIdSelector: '[data-search-id]'\n });\n\n this._addItemToWishList = function(e, payload) {\n e.preventDefault();\n e.stopPropagation();\n this._triggerWishListAction(\n 'ui:item:on-add-to-wish-list',\n $(payload.el)\n );\n };\n\n this._removeItemFromWishList = function(e, payload) {\n e.preventDefault();\n e.stopPropagation();\n\n let button = $(payload.el);\n\n let removeFromDom = button.data('remove-item-from-dom');\n if (removeFromDom) {\n let item = button.closest(removeFromDom);\n item.fadeOut('slow', function() {\n item.remove();\n });\n }\n\n this._triggerWishListAction('ui:item:on-remove-from-wish-list', button);\n };\n\n this._triggerWishListAction = function(eventName, button) {\n let itemNode = button.closest('[data-item-id]');\n\n // prevent double clicks\n if (itemNode.hasClass(TOGGLE_CSS_CLASS)) {\n return;\n }\n\n let itemId = itemNode.data('item-id');\n let searchId = itemNode\n .find(this.attr.searchIdSelector)\n .data('search-id');\n\n itemNode.addClass(TOGGLE_CSS_CLASS);\n this.trigger(document, eventName, { itemId: itemId, s: searchId });\n };\n\n this._wishListItemAdded = function(e, payload) {\n let itemNode = this.$node.find('[data-item-id=' + payload.itemId + ']');\n\n itemNode\n .removeClass(TOGGLE_CSS_CLASS)\n .addClass(EXISTS_IN_LIST_CSS_CLASS);\n\n this._triggerGAEventAction('add');\n\n gtmCore.trackGtmEvent('add-to-wishlist', {\n memberId: memberInfo.memberId,\n itemId: payload.itemId\n });\n };\n\n this._wishListItemRemoved = function(e, payload) {\n let itemNode = this.$node.find('[data-item-id=' + payload.itemId + ']');\n\n itemNode\n .removeClass(TOGGLE_CSS_CLASS)\n .removeClass(EXISTS_IN_LIST_CSS_CLASS);\n\n this._triggerGAEventAction('remove');\n };\n\n this._triggerGAEventAction = function(actionName) {\n const hasItm =\n this.$node.attr('data-itm-source') ||\n this.$node.attr('data-itm-medium');\n\n const itm = hasItm && {\n source: this.$node.attr('data-itm-source'),\n medium: this.$node.attr('data-itm-medium')\n };\n\n const label = itm\n ? `source:${itm.source}medium:${itm.medium}`\n : this.attr.initData.pageName;\n\n this.trigger(document, 'analytics:track-event', {\n category: 'Wish list',\n action: actionName,\n label: label,\n userTriggered: true\n });\n };\n\n this.after('initialize', function() {\n this.on('click', {\n addToWishList: this._addItemToWishList,\n removeFromWishList: this._removeItemFromWishList\n });\n\n this.on(\n document,\n 'data:item:wish-list-item-added',\n this._wishListItemAdded\n );\n this.on(\n document,\n 'data:item:wish-list-item-removed',\n this._wishListItemRemoved\n );\n });\n}\n\nexport default component(WishListUIList);\n","import { component } from 'flightjs';\n\nfunction MessageBoxUI() {\n this.defaultAttrs({\n closeSelector: '[data-message-box-close-btn]',\n contentSelector: '.message-box-content'\n });\n\n this.close = function() {\n this.$node.removeClass('message-box-wrapper-active');\n };\n\n this.showError = function(e, payload) {\n this.select('contentSelector').html(payload.message);\n\n this.$node.addClass('message-box-wrapper-active');\n this.$node.css({ opacity: 1 });\n };\n\n this.after('initialize', function() {\n this.on(document, 'ui:error:show', this.showError);\n this.on(document, 'data:navigation:after-page-load', this.close);\n this.on('click', { closeSelector: this.close });\n });\n}\n\nexport default component(MessageBoxUI);\n","import { component } from 'flightjs';\n\nfunction ScrollToTopUI() {\n this.defaultAttrs({\n linkSelector: '[data-scroll-to-top-link]',\n activeClass: 'active'\n });\n\n this._scrollToTop = function() {\n window.scrollTo(0, 1);\n this._disableButton();\n this.select('linkSelector').blur();\n };\n\n this._toggleElement = function() {\n let scrollY = this.$window.scrollTop();\n\n if (scrollY > 100) {\n this._enableButton();\n } else {\n this._disableButton();\n }\n\n this.lastScrollY = scrollY;\n };\n\n this._enableButton = function() {\n this.select('linkSelector').attr('disabled', false);\n this.$node.addClass(this.attr.activeClass);\n };\n\n this._disableButton = function() {\n this.select('linkSelector').attr('disabled', true);\n this.$node.removeClass(this.attr.activeClass);\n };\n\n this.after('initialize', function() {\n let scrollEvent = 'scroll';\n\n this.throttledToggleElement = _.throttle(this._toggleElement, 50);\n\n this.lastScrollY = window.scrollY;\n this.$window = $(window);\n\n this.on(document, scrollEvent, this.throttledToggleElement.bind(this));\n\n this.on('click', {\n linkSelector: this._scrollToTop\n });\n });\n}\n\nexport default component(ScrollToTopUI);\n","import { STORAGE_KEYS } from 'tradera-constants/storage';\nimport StorageService from 'static/script/app/data/storage-service';\n\nlet ItemsClickStorage = function() {\n this.maxNoOfItems = 200;\n this.timeToLive = 60 * 60 * 1000;\n this._storage = new StorageService(STORAGE_KEYS.ITEMS_CLICK);\n\n this._removeOld();\n};\n\nItemsClickStorage.prototype._removeOld = function() {\n // TODO: Clean old ones\n};\n\nItemsClickStorage.prototype.get = function(itemId) {\n return this._storage.get(itemId);\n};\n\nItemsClickStorage.prototype.getSearchId = function(itemId) {\n // TODO: Check that it isnt too old\n let item = this._storage.get(itemId);\n\n if (item) {\n return JSON.parse(item).searchId;\n }\n return false;\n};\n\nItemsClickStorage.prototype.add = function(payload) {\n this._storage.remove(payload.itemId);\n\n return this._storage.set(\n payload.itemId,\n JSON.stringify({\n searchId: payload.searchId\n })\n );\n};\n\nexport default ItemsClickStorage;\n","import bootLayout from 'static/script/app/boot/boot-layout';\nimport onReady from 'utils/on-ready';\n\nexport default initData => {\n onReady(() => {\n bootLayout(initData);\n });\n};\n","import { component } from 'flightjs';\nimport $ from 'static/script/libs/jquery';\nimport openJavascriptHref from 'static/script/app/ui/open-javascript-href';\n\nfunction SearchResultHeaderUI() {\n this.defaultAttrs({\n sortButtonSelector: '[data-form-select-select]',\n selectBoxSelector: '[data-form-select]',\n filterJavascriptLink: '[data-javascript-href]'\n });\n\n this._sortChanged = function(evt) {\n let url = $(evt.target)\n .find(':selected')\n .data('url');\n let callbackDone = false;\n let hitCallback = function() {\n if (callbackDone === false) {\n // callback should never be ran twice (ipad issue when using hitCallback + setTimeout)\n this.trigger(document, 'ui:navigate', { href: url });\n }\n callbackDone = true;\n }.bind(this);\n\n setTimeout(function() {\n hitCallback();\n }, 1000);\n };\n\n this._filterClick = function(evt) {\n evt.preventDefault();\n const url = $(evt.currentTarget).attr('data-javascript-href');\n openJavascriptHref(url, evt);\n };\n\n this.after('initialize', function() {\n this.on('change', {\n sortButtonSelector: this._sortChanged\n });\n this.on('click', {\n filterJavascriptLink: this._filterClick\n });\n });\n}\n\nexport default component(SearchResultHeaderUI);\n","import 'static/script/libs/jquery';\nimport { component } from 'flightjs';\n\nfunction SearchResultFilterCloseUI() {\n this._closeFilter = function() {\n let scrollToTop = parseInt(\n this.$node.parents('[data-result-layout]').offset().top,\n 10\n );\n let context = this.$node\n .parents('[data-expandable]')\n .data('expandable');\n\n this.trigger(document, 'ui:toggle:' + context, {\n expand: false\n });\n\n window.scrollTo(0, scrollToTop);\n };\n\n this._closeCategoryFilterOnLayoutChange = function() {\n let context = this.$node\n .parents('[data-expandable]')\n .data('expandable');\n\n if (context === 'search-filters-sort') {\n this.trigger(document, 'ui:toggle:' + context, {\n expand: false\n });\n }\n };\n\n this.after('initialize', function() {\n this.on('click', this._closeFilter);\n this.on(\n document,\n 'ui:search:on-layout-change',\n this._closeCategoryFilterOnLayoutChange\n );\n });\n}\n\nexport default component(SearchResultFilterCloseUI);\n","import { component } from 'flightjs';\nimport $ from 'static/script/libs/jquery';\nimport BidNotifierData from 'static/script/app/data/bid-notifier';\nimport formatNumber from 'static/script/utils/format-number';\n\nfunction Realtime() {\n this.defaultAttrs({\n initData: null\n });\n\n this._register = function() {\n let itemIds = this.$node\n .find('[data-item-id]')\n .map(function() {\n return $(this).attr('data-item-id');\n })\n .get();\n BidNotifierData.attachTo(document, {\n itemId: itemIds,\n buyingEventPusherServerUrl: this.attr.initData.pageSpecificData\n .BuyingEventPusherServerUrl,\n buyingEventPusherEnabled: this.attr.initData.pageSpecificData\n .BuyingEventPusherEnabled,\n featureSwitches: this.attr.initData.featureSwitches\n });\n };\n\n this._flash = function(itemCard) {\n let highlightee = itemCard.find('[data-item-card-details-price]');\n highlightee.addClass('highlight');\n setTimeout(function() {\n highlightee.removeClass('highlight');\n }, 1000);\n };\n\n this._updateBid = function(evt, data) {\n let item = this.$node.find('[data-item-id=' + data.AuctionId + ']');\n item.find('[data-item-card-details-price]').text(\n formatNumber.asMoney(data.BidAmount) + ' kr'\n );\n item.find('[data-item-card-details-bids]').text(\n data.NumberOfBids + ' bud'\n );\n this._flash(item.find('[data-item-card-body]'));\n };\n\n this._handleItemEnded = function(evt, data) {\n let item = this.$node.find('[data-item-id=' + data.ItemId + ']');\n item.find('[data-item-card-details-time-left]').text('Avslutad');\n //setTimeout(function() {\n // item.remove();\n //}, 5000);\n };\n\n this.after('initialize', function() {\n if (\n this.attr.initData.pageSpecificData &&\n this.attr.initData.pageSpecificData.BuyingEventPusherServerUrl &&\n this.attr.initData.pageSpecificData.BuyingEventPusherEnabled\n ) {\n this._register();\n this.on(\n document,\n 'data:notifications:on-bid-update',\n this._updateBid\n );\n this.on(\n document,\n 'data:notifications:on-item-sold',\n this._handleItemEnded\n );\n this.on(\n document,\n 'data:notifications:on-item-unsold',\n this._handleItemEnded\n );\n }\n });\n}\n\nexport default component(Realtime);\n","// jshint maxparams:200\nimport SearchResultFilterBoxUI from 'static/script/app/ui/search-result/search-result-filter-box-ui';\nimport FormSelectUI from 'static/script/app/ui/form-select-ui';\nimport SearchResultHeaderUI from 'static/script/app/ui/search-result/search-result-header-ui';\nimport SearchResultFilterCloseUI from 'static/script/app/ui/search-result/search-result-filter-close-ui';\nimport Expandable from 'static/script/app/ui/expandable';\nimport ResultLayoutTogglerUI from 'static/script/app/ui/search-result/result-layout-toggler-ui';\nimport Pagination from 'static/script/app/ui/search-result/pagination';\nimport WishListUIList from 'static/script/app/ui/wish-list-ui-for-list';\nimport ItemCardsUI from 'static/script/app/ui/item-cards-ui';\nimport ItemsInViewportUI from 'static/script/app/ui/items-in-viewport-ui';\nimport ScrollToTopUI from 'static/script/app/ui/search-result/scroll-to-top-ui';\nimport Realtime from 'static/script/app/ui/realtime';\nimport SaveSearchUI from 'static/script/app/ui/save-search-ui';\nimport SaveSearchService from 'static/script/app/data/saved-searches-service';\n\nexport default (initData, teardownAll) => {\n if (teardownAll === true) {\n // When filtering on mobile and replacing the result html we need\n // to manually teardown those components to avoid memory leak\n SearchResultFilterBoxUI.teardownAll();\n FormSelectUI.teardownAll();\n SearchResultHeaderUI.teardownAll();\n SearchResultFilterCloseUI.teardownAll();\n Expandable.teardownAll();\n ResultLayoutTogglerUI.teardownAll();\n Pagination.teardownAll();\n WishListUIList.teardownAll();\n ItemCardsUI.teardownAll();\n ItemsInViewportUI.teardownAll();\n ScrollToTopUI.teardownAll();\n Realtime.teardownAll();\n SaveSearchService.teardownAll();\n SaveSearchUI.teardownAll();\n }\n\n SearchResultFilterBoxUI.attachTo('[data-search-filter-box]');\n SearchResultHeaderUI.attachTo('.search-result-header');\n FormSelectUI.attachTo('[data-form-select]');\n Expandable.attachTo('[data-expandable]');\n ResultLayoutTogglerUI.attachTo('[data-search-result-toggler]');\n Pagination.attachTo('[data-pagination]');\n WishListUIList.attachTo('[data-card-list-container]', {\n initData: initData\n });\n WishListUIList.attachTo('[data-card-list-container-ondisplay]', {\n initData: initData\n });\n ItemCardsUI.attachTo('[data-card-list-container]');\n SearchResultFilterCloseUI.attachTo('[data-button-filter-close]');\n\n ScrollToTopUI.attachTo('[data-scroll-to-top]');\n Realtime.attachTo('[data-card-list-container]', { initData: initData });\n SaveSearchService.attachTo(document);\n SaveSearchUI.attachTo('[data-save-search-container]', {\n initData: initData\n });\n};\n","import { component } from 'flightjs';\nimport * as analytics from './login-signup-analytics';\n\nexport function trackLoginSuccess(memberId) {\n analytics.trackEvent('user-login-success', memberId);\n}\n\nexport function trackLoginFailure(validationError) {\n analytics.trackEvent('user-login-fail', null, validationError);\n}\n\nfunction LoginWithPasswordButton() {\n this._click = function() {\n const connect = this.$node.data('loginConnect') || 'none';\n const inIframe = this.$node.data('loginSubmitIframe');\n if (connect !== 'none') {\n analytics.trackEvent('user-connect-submit');\n } else if (inIframe) {\n analytics.trackButtonClick();\n } else {\n analytics.flow.set(analytics.FLOW.LOGIN);\n analytics.method.set(analytics.METHOD.PASSWORD);\n analytics.trackEvent('user-login-submit');\n }\n };\n this.after('initialize', function() {\n this.on('click', this._click.bind(this));\n });\n}\n\nfunction TrackLoginSuccess() {\n this.after('initialize', function() {\n analytics.trackEvent('user-login-success', this.$node.data('memberId'));\n });\n}\n\nfunction TrackConnectSuccess() {\n this.after('initialize', function() {\n analytics.trackEvent(\n 'user-connect-success',\n this.$node.data('memberId')\n );\n });\n}\n\nfunction TrackLoginFailure() {\n this.after('initialize', function() {\n analytics.trackEvent(\n 'user-login-fail',\n null,\n this.$node.data('errorCode')\n );\n });\n}\n\nfunction TrackConnectFailure() {\n this.after('initialize', function() {\n analytics.trackEvent(\n 'user-connect-fail',\n null,\n this.$node.data('errorCode')\n );\n });\n}\n\nexport const LoginWithPasswordButtonComponent = component(\n LoginWithPasswordButton\n);\nexport const TrackLoginSuccessComponent = component(TrackLoginSuccess);\nexport const TrackConnectSuccessComponent = component(TrackConnectSuccess);\nexport const TrackLoginFailureComponent = component(TrackLoginFailure);\nexport const TrackConnectFailureComponent = component(TrackConnectFailure);\n","/*jshint maxcomplexity: 10 */\nimport ajax from 'static/script/app/data/ajax';\nimport antiForgeryToken from 'static/script/app/data/anti-forgery-token';\nimport _ from 'static/script/libs/underscore';\nimport InitData from 'static/script/app/data/init-data';\nimport initData from 'init-data';\nimport { reload } from 'tradera-utils/location';\nimport { toLocalizedUrl } from 'tradera-utils/url';\n\nlet WithAjax = function() {\n this._currentRequests = {};\n\n this._callSuccessHandler = function(callbackOrEvent, data) {\n if (_.isFunction(callbackOrEvent)) {\n callbackOrEvent(data);\n } else if (_.isString(callbackOrEvent)) {\n this.trigger(callbackOrEvent, data);\n }\n };\n\n this._callErrorHandler = function(callbackOrEvent, data, jqXHR) {\n if (_.isFunction(callbackOrEvent)) {\n callbackOrEvent(data, jqXHR);\n } else if (_.isString(callbackOrEvent)) {\n this.trigger(callbackOrEvent, data);\n }\n };\n\n this._createSuccessHandler = function(callbackOrEvent) {\n if (!callbackOrEvent) {\n return null;\n }\n\n return function(data) {\n return this._callSuccessHandler(callbackOrEvent, data);\n }.bind(this);\n };\n\n this._userAborted = function(jqXHR) {\n return jqXHR.statusText === 'abort';\n };\n\n this._createErrorHandler = function(callbackOrEvent, noShowError) {\n return function(jqXHR, textStatus, errorThrown) {\n if (this._userAborted(jqXHR, errorThrown)) {\n return;\n }\n\n let data = jqXHR.responseJSON || {\n message:\n 'Någonting gick fel. Pröva att ladda om sidan och försök igen.'\n };\n data = data.responseStatus || data;\n\n if (data.code === 'XSRF-Error') {\n reload();\n return;\n }\n\n if (!this.attr.noShowError && !noShowError) {\n this.trigger(document, 'ui:error:show', data);\n }\n\n this._callErrorHandler(callbackOrEvent, data, jqXHR);\n }.bind(this);\n };\n\n this._populateOptions = function(options, method) {\n options.url = toLocalizedUrl(options.url, initData.languageCodeIso2);\n options.dataType = options.dataType || 'json';\n options.requestId = options.requestId || '';\n options.type = method;\n options.traditional = true;\n options.success = this._createSuccessHandler(options.success);\n options.error = this._createErrorHandler(\n options.error,\n options.noShowError\n );\n\n if (options.type === 'GET') {\n options.timeout = 15000;\n }\n\n if (!options.cache) {\n options.cache = options.type === 'GET' ? false : true;\n }\n\n return options;\n };\n\n this._jsonRequest = function(options, method) {\n let deferred = $.Deferred(),\n removeFromCurrentRequests = function(requestId) {\n if (_.has(this._currentRequests, requestId)) {\n delete this._currentRequests[requestId];\n }\n }.bind(this);\n\n options = this._populateOptions(options, method);\n\n if (options.type === 'POST') {\n antiForgeryToken.addToAjaxRequest(options);\n }\n\n let startTime = new Date();\n let jqXHR = ajax(options)\n .done(function(data, textStatus, jqXHR) {\n deferred.resolve(data, textStatus, jqXHR);\n })\n .fail(\n function(jqXHR, textStatus, errorThrown) {\n let endTime = new Date();\n this._globalErrorHandler(\n jqXHR,\n textStatus,\n errorThrown,\n options,\n startTime,\n endTime\n );\n deferred.reject(jqXHR, textStatus, errorThrown);\n }.bind(this)\n )\n .always(function() {\n removeFromCurrentRequests(options.requestId);\n });\n\n if (options.requestId) {\n if (_.has(this._currentRequests, options.requestId)) {\n this._currentRequests[options.requestId].abort();\n }\n this._currentRequests[options.requestId] = jqXHR;\n }\n\n deferred.fail(function() {\n jqXHR.abort();\n });\n return deferred;\n };\n\n this._get = function(options) {\n return this._jsonRequest(options, 'GET');\n };\n\n this._post = function(options) {\n return this._jsonRequest(options, 'POST');\n };\n\n this._getInitDataForScribe = function() {\n return InitData.getForScribe();\n };\n\n this._populateScribePayload = function(\n jqXHR,\n textStatus,\n errorThrown,\n options,\n startTime,\n endTime\n ) {\n return {\n eventName: 'js-ajax-error',\n textStatus: textStatus || '',\n errorThrown: errorThrown || '',\n initData: this._getInitDataForScribe() || '',\n status: jqXHR.status || '',\n state: jqXHR.state ? jqXHR.state() : '',\n responseHeaders: jqXHR.getAllResponseHeaders\n ? jqXHR.getAllResponseHeaders()\n : '',\n options: options,\n pageUrl: document.location.href,\n referrer: document.referrer,\n startTime: startTime || '',\n endTime: endTime || ''\n };\n };\n\n this._globalErrorHandler = function(\n jqXHR,\n textStatus,\n errorThrown,\n options,\n startTime,\n endTime\n ) {\n if (\n this._userAborted(jqXHR, errorThrown) ||\n jqXHR.statusText === 'timeout'\n ) {\n return;\n }\n let payload = this._populateScribePayload(\n jqXHR || {},\n textStatus,\n errorThrown,\n options || {},\n startTime,\n endTime\n );\n this.trigger(document, 'data:scribe', payload);\n };\n};\n\nexport default WithAjax;\n","import $ from 'static/script/libs/jquery';\nimport { component } from 'flightjs';\nimport BubbledFocus from 'static/script/utils/bubbled-focus';\n\nfunction AbstractModal() {\n this.modalId = undefined;\n\n this.opts = {};\n\n this.defaultAttrs({\n closeModal: '[data-modal-close]',\n modalBackground: '[data-modal-background]',\n modalTemplate: '[data-modal-template]'\n });\n\n this._isActive = function() {\n if (\n this.$modal &&\n this.$modal.data('modalId') === this.modalId &&\n $('body').find('> ' + this.attr.modalBackground).length > 0 &&\n this.$modalHtml\n ) {\n return true;\n }\n return false;\n };\n\n this.triggerOpen = function(evt, evtData) {\n /* Triggered by event */\n this._open(evtData);\n };\n\n this.triggerClose = function(evt, evtData) {\n /* Triggered by event */\n this._close(evtData);\n };\n\n this.triggerSetNonDismissible = function(evt, evtData) {\n /* Triggered by event */\n this._setNonDismissible(evtData);\n };\n\n this.openModal = function(data) {\n /* Triggered from components extending this */\n this._open(data);\n };\n\n this._open = function(evtData) {\n this._cancelSpinner();\n if (this._isActive()) {\n this._updateModal(evtData);\n } else {\n this._createModal(evtData);\n }\n };\n\n this._cancelSpinner = function() {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n };\n\n this._updateModal = function(evtData) {\n evtData.cssClass = evtData.cssClass\n ? evtData.cssClass\n : 'modal-default';\n\n this.$modalContent.html(evtData.content);\n this.$modalHtml\n .attr('class', 'modal-background')\n .addClass(evtData.cssClass);\n if (evtData.adjustModalPosition) {\n evtData.adjustModalPosition(this);\n } else {\n this._adjustModalPosition();\n }\n\n if (evtData.nonDismissible) {\n this._setNonDismissible(true);\n }\n\n if (evtData.beforeShow) {\n evtData.beforeShow();\n }\n };\n\n this._createModal = function(evtData) {\n evtData.cssClass = evtData.cssClass\n ? evtData.cssClass\n : 'modal-default';\n\n this.$modalHtml = $(\n this.$node\n .find(this.attr.modalTemplate)\n .clone()\n .html()\n );\n this.$modal = this.$modalHtml.find('[data-modal]');\n\n this.modalId = 'id' + new Date().getTime();\n\n this.$modal.data('modalId', this.modalId);\n\n if (evtData.chromeless) {\n this.$modalContent = this.$modal;\n this.$modalContent.html(evtData.content);\n } else {\n this.$modalContent = this.$modalHtml.find('[data-modal-content]');\n this.$modalContent.html(evtData.content);\n }\n\n this.$modalHtml.addClass(evtData.cssClass);\n this.$node.append(this.$modalHtml);\n\n this._resizeModalHeight();\n if (evtData.adjustModalPosition) {\n evtData.adjustModalPosition(this);\n } else {\n this._adjustModalPosition();\n }\n\n if (evtData.nonDismissible) {\n this._setNonDismissible(true);\n }\n\n if (evtData.beforeShow) {\n evtData.beforeShow();\n }\n\n this._fadeIn();\n\n this.on(document, 'keyup', this._escButtonClose);\n };\n\n this._resizeModalHeight = function() {\n if (this._isActive()) {\n this.$modalHtml.css('height', $(document).height());\n }\n };\n\n this._escButtonClose = function(evt) {\n if (evt.which === 27 && !this._nonDismissible) {\n this._close();\n }\n };\n\n this._closeClick = function(evt) {\n if (!this._isActive()) {\n return;\n }\n if (this._closePrevented) {\n return;\n }\n\n let target = $(evt.target);\n if (target.attr('data-modal-close') === undefined) {\n return;\n }\n if (\n this._nonDismissible &&\n target.attr('data-modal-background') != undefined\n ) {\n return;\n }\n\n evt.stopPropagation();\n this._close();\n };\n\n this._close = function() {\n if (!this._isActive()) {\n return;\n }\n\n this.off(document, 'keyup', this._escButtonClose);\n this.trigger(document, 'ui:body-container:on-modal-close');\n\n this.$modalHtml.css('opacity', 0);\n setTimeout(\n function() {\n this._removeModal();\n }.bind(this),\n 250\n );\n };\n\n this._removeModal = function() {\n if (this.$modalHtml) {\n this.$modalHtml.remove();\n }\n };\n\n this._adjustModalPosition = function() {\n let popupHeight = this.$modal.height();\n let scroll = $(document).scrollTop();\n let windowHeight =\n window.innerHeight || document.documentElement.clientHeight;\n\n if (popupHeight > windowHeight) {\n this.$modal.css('margin-top', scroll);\n } else {\n let targetOffset = (windowHeight - popupHeight) * 0.25;\n this.$modal.css('margin-top', targetOffset + scroll);\n }\n };\n\n this._fadeIn = function() {\n this.$modalHtml.css('opacity', 1);\n };\n\n this._preventClose = function() {\n this._closePrevented = true;\n };\n\n this._enableClose = function() {\n setTimeout(\n function() {\n this._closePrevented = false;\n }.bind(this),\n 100\n );\n };\n\n this._setNonDismissible = function(value) {\n this._nonDismissible = value;\n if (value) {\n this.$modalHtml.addClass('modal-close-disabled');\n } else {\n this.$modalHtml.removeClass('modal-close-disabled');\n }\n };\n\n this.after('initialize', function() {\n this.on(\n document,\n 'ui:error:show ui:saved-search-modal:after-added',\n this._close\n );\n this.on('click', {\n closeModal: this._closeClick\n });\n\n this.on(document, 'ui:teardown', this._removeModal);\n this.on(\n document,\n 'ui:recently-viewed-items:on-items-change',\n this._resizeModalHeight\n );\n\n this.focus('[data-modal] input', this._preventClose.bind(this));\n this.blur('[data-modal] input', this._enableClose.bind(this));\n });\n}\n\nexport default component(AbstractModal, BubbledFocus);\n","import { component } from 'flightjs';\nimport WithAjax from 'static/script/app/data/with-ajax';\nimport InitData from 'static/script/app/data/init-data';\nimport { reload } from 'tradera-utils/location';\n\nfunction NavigationModal() {\n this._postModal = function(evt, eventData) {\n this.trigger(document, 'data:navigation:before-modal-load', {\n element: eventData.element\n });\n this._abortPendingRequests();\n this._request = this._post({\n url: eventData.href,\n data: eventData.data,\n dataType: 'html',\n headers: { 'x-push-state-request': 'true' }\n })\n .done(\n function() {\n if (eventData.reloadAfterModalClose) {\n this._reloadAfterModalClose();\n }\n }.bind(this)\n )\n .done(this._showModal.bind(this));\n };\n\n this._getModal = function(evt, eventData) {\n this.trigger(document, 'data:navigation:before-modal-load');\n this._abortPendingRequests();\n\n if (eventData.reloadAfterModalClose) {\n this._reloadAfterModalClose();\n }\n\n this._request = this._get({\n url: eventData.href,\n dataType: 'html',\n headers: { 'x-push-state-request': 'true' }\n }).done(this._showModal.bind(this));\n };\n\n this._showModal = function(html) {\n this._request = null;\n let initData = InitData.parseHtml(html);\n this.trigger(document, 'ui:modal:open', {\n content: $(html).find('#view'),\n cssClass: 'bidding-modal'\n });\n this.trigger(document, 'data:navigation:after-modal-load', initData);\n };\n\n this._reloadAfterModalClose = function() {\n this.off(\n document,\n 'ui:body-container:on-modal-close',\n this._reloadPage\n );\n this.on(document, 'ui:body-container:on-modal-close', this._reloadPage);\n };\n\n this._reloadPage = function() {\n reload();\n };\n\n this._abortPendingRequests = function() {\n if (this._request) {\n this._request.reject();\n this._request = null;\n }\n };\n\n this.after('initialize', function() {\n this.on('data:navigation:post-to-modal', this._postModal);\n this.on('data:navigation:get-to-modal', this._getModal);\n this.on(\n document,\n 'ui:body-container:on-modal-close',\n this._abortPendingRequests\n );\n });\n}\n\nexport default component(NavigationModal, WithAjax);\n","var every = require('../array/virtual/every');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.every;\n return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.every) ? every : own;\n};\n","import $ from 'jquery';\nexport default $.ajax;\n","function IsHybridApp() {\n return $('#app-data').length > 0;\n}\n\nexport default IsHybridApp;\n","var parent = require('../../es/instance/every');\n\nmodule.exports = parent;\n","import AbstractModal from 'static/script/utils/abstract-modal';\nimport breakpoints from 'static/script/utils/breakpoints';\n\n// This Component extends AbstractModal\nfunction ModalTooltipUI() {\n this._triggerOpen = function(evt, opts) {\n this.opts = opts;\n this._open(opts);\n };\n\n this._adjustModalPosition = function() {\n if (!this._isActive()) {\n return;\n }\n\n let element = $(this.opts.element),\n offset = element.offset(),\n thisTop,\n thisLeft,\n thisLeftPosition;\n\n this._addBreakpointClass();\n\n if (this._fitsToTheRight(element)) {\n thisTop = parseInt(offset.top + element.outerHeight() / 2 - 20, 10);\n thisLeft = parseInt(\n element.offset().left + element.outerWidth() + 15,\n 10\n ); // 15 is for the arrow\n\n this.$modal\n .removeClass(function(index, css) {\n return (css.match(/\\bmodal-tooltip-arrow-\\S+/g) || []).join(\n ' '\n );\n })\n .addClass('modal-tooltip-arrow-left-top');\n } else {\n thisLeftPosition = this._getLeftPosition(element); // Add 5px to make it differ from the other elements\n thisTop = parseInt(offset.top + element.outerHeight(), 10) + 8; // 8 is for the arrow\n thisLeft = thisLeftPosition.left;\n\n this.$modal\n .removeClass(function(index, css) {\n return (css.match(/\\bmodal-tooltip-arrow-\\S+/g) || []).join(\n ' '\n );\n })\n .addClass(\n 'modal-tooltip-arrow-top-' + thisLeftPosition.arrowPosition\n );\n }\n\n this.$modal.css({ top: thisTop, left: thisLeft });\n };\n\n this._getLeftPosition = function(element) {\n let windowWidth = parseInt($(window).outerWidth(), 10),\n modalWidth = this.$modal.outerWidth(),\n elementWidth = $(element).outerWidth(),\n bestCenter = parseInt(\n $(element).offset().left + elementWidth / 2,\n 10\n ),\n maxLeft = windowWidth - 10 - modalWidth,\n minLeft = 10,\n left = parseInt(bestCenter - modalWidth / 2, 10);\n\n if (left > maxLeft) {\n return { arrowPosition: 'right', left: maxLeft };\n } else if (left < minLeft) {\n return { arrowPosition: 'left', left: minLeft };\n } else {\n return { arrowPosition: 'center', left: left };\n }\n };\n\n this._fitsToTheRight = function(element) {\n let windowWidth = parseInt($(window).outerWidth(), 10),\n elementRightOffset = parseInt(\n element.offset().left + element.outerWidth(),\n 10\n ),\n roomLeft = windowWidth - (elementRightOffset + 10);\n\n if (roomLeft > this.$modal.outerWidth()) {\n return true;\n }\n return false;\n };\n\n this._addBreakpointClass = function() {\n this.$modal.removeClass(function(index, css) {\n return (css.match(/\\bmodal-tooltip-size-\\S+/g) || []).join(' ');\n });\n\n this.$modal.addClass('modal-tooltip-size-' + breakpoints.getCurrent());\n };\n\n this.after('initialize', function() {\n this.on(\n document,\n 'ui:save-search:on-modal-tooltip-open',\n this._triggerOpen\n );\n this.on(\n document,\n 'utils:window-resize:resized',\n this._adjustModalPosition\n );\n });\n}\n\nexport default AbstractModal.mixin(ModalTooltipUI);\n","import { component } from 'flightjs';\nimport WithAjax from 'static/script/app/data/with-ajax';\nimport InitData from 'static/script/app/data/init-data';\nimport History from 'static/script/utils/history';\nimport bootResultLayout from 'static/script/app/boot/item-result-list/boot-result-layout';\n\nfunction NavigationFilter() {\n this._getFilterModal = function(evt, eventData) {\n this.trigger(document, 'data:navigation-filter:before-load', {\n forceStart: true\n });\n this._abortPendingRequests();\n\n if (eventData.reloadAfterModalClose) {\n this._reloadAfterModalClose();\n }\n\n let successCallback = function(html) {\n this._refresh(html, eventData.href);\n };\n\n this._request = this._get({\n url: eventData.href,\n dataType: 'html',\n headers: { 'x-push-state-request': 'true' }\n }).done(successCallback.bind(this));\n };\n\n this._refresh = function(html, href) {\n let replaceSelector = '[data-result-layout]';\n\n let $html = $(html),\n $newView = $html.find(replaceSelector),\n $currentView = this.$node.find(replaceSelector);\n\n let initData = InitData.setFromHtml(html);\n\n // this.trigger('ui:teardown', initData);\n\n History.pushState({ href: href }, initData.title, href);\n\n $currentView.empty().append($newView.contents());\n bootResultLayout(initData, true);\n // var module = require(initData.module);\n // module(initData);\n\n // if (initData.subModule) {\n // var subModule = require(initData.subModule);\n // subModule(initData);\n // }\n\n this.trigger(document, 'data:navigation-filter:after-load', initData);\n };\n\n this._abortPendingRequests = function() {\n if (this._request) {\n this._request.reject();\n this._request = null;\n }\n };\n\n this.after('initialize', function() {\n this.on('ui:modal-filter-ui:on-load', this._getFilterModal);\n this.on(\n document,\n 'ui:body-container:on-modal-close',\n this._abortPendingRequests\n );\n });\n}\n\nexport default component(NavigationFilter, WithAjax);\n","import $ from 'jquery';\nimport logger from 'packages/logger';\n\n/**\n * @description - class for connecting to twitter flight events\n * @class Messaging\n */\nexport default class Messaging {\n constructor() {\n this.subscribe = this.subscribe.bind(this);\n this.publish = this.publish.bind(this);\n this.namespace = `events-${Date.now()}-${Math.random()}`;\n this.events = [];\n }\n\n /**\n * @description - method to 'connect' to events\n * @param {array} events - array of all events to listen to\n * @param {function} callback - function invoked when an event is fired\n * @memberof Messaging\n */\n subscribe(events, callback) {\n if (!events) {\n logger('No event{s} passed, failing to register', true);\n return;\n }\n\n if (!Array.isArray(events)) {\n events = [events];\n }\n events.map(event => {\n this.events.push(event);\n $(document).on(`${event}.${this.namespace}`, callback);\n });\n }\n\n /**\n * @description - publish event\n * @param {string} event\n * @param {(object|string)} payload\n * @memberof Messaging\n */\n publish(event, payload) {\n // this.ConnectedToFlight.prototype.publishEvent(event, payload);\n $(document).trigger(event, payload);\n }\n\n teardown() {\n let me = this;\n this.events.map(event => {\n $(document).off(`${event}.${me.namespace}`);\n });\n this.events = [];\n }\n}\n","export { default as LocalizedDfpAd } from './localized-dfp-ad';\nexport { default as bootReactAds } from './boot-react-ads';\n","// \nimport { component } from 'flightjs';\n\nfunction FormSelectUI() {\n this.defaultAttrs({\n selectMethod: 'data-form-select-method',\n dropdownSelector: '[data-form-select-select]',\n dropdownLabel: '[data-form-select-label]',\n navigateEvent: 'ui:navigate'\n });\n\n this._selectChange = function() {\n this._updateLabel();\n let selectMethod = this.$node.attr(this.attr.selectMethod);\n\n if (selectMethod === 'gotovalue') {\n let optionValue = this.select('dropdownSelector').val();\n this._handleUrl(optionValue);\n }\n };\n\n this._handleUrl = function(url) {\n let selected = this.select('dropdownSelector').find(':selected');\n\n if (\n this.$node.is('[data-form-select-ga-category]') &&\n this.$node.is('[data-form-select-ga-action]') &&\n selected.is('[data-form-select-ga-label]')\n ) {\n this._addGaAndGotoUrl(selected, url);\n } else {\n this._gotoUrl(url);\n }\n };\n\n this._addGaAndGotoUrl = function(selected, url) {\n let callbackDone = false;\n\n let hitCallback = function() {\n if (callbackDone === false) {\n // callback should never be ran twice (ipad issue when using hitCallback + setTimeout)\n this._gotoUrl(url);\n }\n callbackDone = true;\n }.bind(this);\n\n this.trigger(document, 'analytics:track-event', {\n category: this.$node.attr('data-form-select-ga-category') || '',\n action: this.$node.attr('data-form-select-ga-action') || '',\n label: selected.attr('data-form-select-ga-label') || '',\n hitCallback: hitCallback\n });\n\n setTimeout(function() {\n hitCallback();\n }, 1000);\n };\n\n this._gotoUrl = function(url) {\n this.trigger(document, this.attr.navigateEvent, { href: url });\n };\n\n this._updateLabel = function() {\n // Value: optionValue = this.select('dropdownSelector').val()\n let optionLabel = this.select('dropdownSelector')\n .find(':selected')\n .text();\n this.select('dropdownLabel').text(optionLabel);\n };\n\n this.after('initialize', function() {\n this.on('change', {\n dropdownSelector: this._selectChange\n });\n\n this.on('ui:select-or-input-text:on-select-change', this._selectChange);\n this.on('ui:navigation:after-page-change', this._updateLabel);\n this._updateLabel();\n });\n}\n\nexport default component(FormSelectUI);\n","import cookieUtil from 'tradera-utils/cookie';\n\nvar searchId = (function() {\n let cookieName = 's';\n\n function removeSearchId() {\n searchId.cookieUtil.eraseCookie(cookieName);\n }\n\n function saveSearchId(value) {\n let date = new Date();\n date.setMonth(date.getMonth() + 1);\n searchId.cookieUtil.createCookie(cookieName, value, date);\n }\n\n return {\n remove: function() {\n removeSearchId();\n },\n set: function(name, value) {\n saveSearchId(name, value);\n }\n };\n})();\n\nsearchId.cookieUtil = cookieUtil;\n\nexport default searchId;\n","/**\n * OBSOLETE - use google tag manager service instead:\n * src\\EbaySweden.TouchWeb\\static\\script\\app\\ui\\google-tagmanager-service.js\n *\n */\nimport { component } from 'flightjs';\n\nfunction GoogleTagManager() {\n let hitCallbackCalled = false;\n\n this.defaultAttrs({\n gaEventTrackingSelector:\n 'a[data-ga-category], button[data-ga-category]',\n gaShowEventTrackingSelector: '[data-ga-show]'\n });\n\n function pushToDataLayer(payload) {\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push(payload);\n }\n\n this._trackPageView = function() {\n pushToDataLayer({ event: 'trackPageview' });\n };\n\n this._trackEvent = function(evt, analyticsData) {\n let eventCategory = analyticsData.category || '';\n\n if (eventCategory != '') {\n pushToDataLayer({\n event: 'trackEvent',\n eventCategory: eventCategory,\n eventAction: analyticsData.action || '',\n eventLabel: analyticsData.label || '',\n eventValue: analyticsData.value || '0',\n eventNonInteractive: this._isNonInteractive(analyticsData),\n hitCallback: analyticsData.hitCallback\n });\n }\n };\n\n this._isNonInteractive = function(analyticsData) {\n if (analyticsData.userTriggered === undefined) {\n return true;\n }\n return !analyticsData.userTriggered;\n };\n\n this._trackEventFromLink = function(evt) {\n let link = $(evt.target).closest(this.attr.gaEventTrackingSelector),\n hitCallback = null;\n\n if (link.length === 0) {\n return;\n }\n\n /* jshint maxcomplexity:7 */\n let theUserWantsToOpenTheLinkInANewTab =\n evt.which > 1 ||\n evt.metaKey ||\n evt.ctrlKey ||\n evt.keyCode > 1 ||\n evt.shiftKey;\n\n if (\n link.attr('data-nav') === undefined &&\n !evt.isDefaultPrevented() &&\n !theUserWantsToOpenTheLinkInANewTab &&\n !link.attr('target')\n ) {\n evt.preventDefault();\n evt.stopImmediatePropagation();\n hitCallback = this._changeLocation(link.attr('href'));\n }\n\n this._sendTrackEvent(link, hitCallback);\n };\n\n this._changeLocation = function(href) {\n hitCallbackCalled = false;\n\n let hitCallback = function() {\n if (hitCallbackCalled === false) {\n // Avoid double-calls since the iPad seems to continue to setTimeout when using the back button\n hitCallbackCalled = true;\n if (href) {\n window.location.href = href;\n }\n }\n };\n\n setTimeout(hitCallback, 1000);\n return hitCallback;\n };\n\n this._trackEventFromPjax = function(e, payload) {\n if (!payload.target) {\n return;\n }\n\n this._sendTrackEvent($(payload.target));\n };\n\n this._sendTrackEvent = function(link, hitCallback) {\n if (!this._hasCategoryOrLabel(link)) {\n return;\n }\n\n let payload = this._getPayloadFromLink(link);\n\n if (hitCallback) {\n payload.hitCallback = hitCallback;\n }\n\n if (payload.category != '') {\n this.trigger('analytics:track-event', payload);\n }\n };\n\n this._getPayloadFromLink = function(link) {\n let payload = {\n category: link.data('ga-category') || '',\n action: link.data('ga-action') || 'Navigation',\n label: link.data('ga-label') || '',\n value: link.data('ga-value') || null\n };\n\n return payload;\n };\n\n this._hasCategoryOrLabel = function(link) {\n if (!link.data('ga-category') && !link.data('ga-label')) {\n return false;\n }\n return true;\n };\n\n this._trackShowEvent = function() {\n this.select('gaShowEventTrackingSelector').each(\n function(i, el) {\n let $el = $(el);\n let data = {\n category: $el.data('ga-category') || '',\n action: $el.data('ga-show') || 'Show',\n label: $el.data('ga-label') || ''\n };\n\n if (data.category != '') {\n this.trigger('analytics:track-event', data);\n }\n }.bind(this)\n );\n };\n\n this._trackSearchFilterToggle = function(evt, payload) {\n let label = payload.expand === true ? 'Open' : 'Close';\n\n if (evt.type === 'ui:toggle:search-filters-categories') {\n label = label + ' categories';\n } else {\n label = label + ' filters';\n }\n\n this.trigger('analytics:track-event', {\n category: 'Search',\n action: 'Toggle',\n label: label\n });\n };\n\n this._trackCategoryMenuToggle = function(evt, payload) {\n if (!payload.open) {\n return;\n }\n\n this.trigger('analytics:track-event', {\n category: 'Category',\n action: 'Open category menu',\n label: 'Open category menu'\n });\n };\n\n this._userLoggedIn = function(evt, payload) {\n if (payload && payload.version) {\n this.trigger('analytics:track-event', {\n category: 'Login',\n action: 'Navigation',\n label: 'Successful login - member: ' + payload.memberId\n });\n } else {\n this.trigger('analytics:track-event', {\n category: 'Login',\n action: 'Login',\n label: 'member-' + payload.memberId\n });\n }\n\n pushToDataLayer({\n memberId: payload.memberId,\n loginState: 'logged in'\n });\n };\n\n this._trackSearchResultLayoutChange = function(evt, payload) {\n let gaPayload = {\n category: 'Search',\n action: 'Layout',\n label: payload.label\n };\n this.trigger('analytics:track-event', gaPayload);\n };\n\n this._clearPageVariables = function() {\n //Clear page variable\n pushToDataLayer({\n page: null\n });\n // Prevent previously set page variables to get a value of 0\n // There is probably a more elegant solution to this. Feel free to change\n pushToDataLayer({\n page: {}\n });\n };\n\n this.after('initialize', function() {\n this.on(document, 'analytics:track-event', this._trackEvent);\n this.on(\n document,\n 'ui:navigation:after-page-change',\n this._trackPageView\n );\n this.on(\n document,\n 'ui:toggle:search-filters ui:toggle:search-filters-categories',\n this._trackSearchFilterToggle\n );\n this.on(\n document,\n 'ui:site-header:on-toggle-nav-categories',\n this._trackCategoryMenuToggle\n );\n this.on(document, 'data:login:logged-in', this._userLoggedIn);\n this.on(\n document,\n 'ui:search:layout',\n this._trackSearchResultLayoutChange\n );\n this.on('click', this._trackEventFromLink);\n this.on(document, 'ui:navigate', this._trackEventFromPjax);\n this.on(document, 'ui:before-page-change', this._clearPageVariables);\n this.on(document, 'utils:window-load', this._trackShowEvent);\n });\n}\n\nexport default component(GoogleTagManager);\n","//@TODO - kil me when we kill phantomjs;\nimport $ from 'jquery';\n/**\n * @description Gets initData from HTML string or body tag;\n * @class InitData\n */\nclass InitData {\n constructor() {\n this.currentData = null;\n }\n\n /**\n * @returns {object} current initData\n * @memberof InitData\n */\n current() {\n return this.currentData ? { ...this.currentData } : null;\n }\n\n getForScribe() {\n let currentClone = this.current();\n if (currentClone) {\n delete currentClone.description;\n delete currentClone.viewHtml;\n }\n return currentClone;\n }\n\n /**\n * @param {(string|Array)} html HTML string or dom Nodes Array.\n * @returns {object} JSON representation of initData innerHTML\n * @memberof InitData\n */\n parseHtml(html) {\n //@TODO - when we kill phantom use the following 2 lines\n // let doc = typeof html === 'string' ? new DOMParser().parseFromString(html, 'text/html') : html;\n // let initDataString = doc.querySelectorAll('#init-data')[0].innerHTML;\n let initDataString = $(html)\n .find('#init-data')\n .html();\n return initDataString ? JSON.parse(initDataString) : null;\n }\n\n setFromHtml(html) {\n let parsed = this.parseHtml(html);\n this.set(parsed);\n return this.current();\n }\n\n set(val) {\n this.currentData = val;\n }\n\n currentOrSet() {\n let c = this.current();\n if (c !== null) {\n return c;\n }\n return this.setFromHtml(document.body);\n }\n}\n\nexport default new InitData();\n","export default {\n asMoney: function(number) {\n if (number === null || typeof number === 'undefined') {\n return '';\n }\n return number.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ' ');\n }\n};\n","import AbstractModal from 'static/script/utils/abstract-modal';\nimport Spinner from 'static/script/libs/spin';\n\n// This Component extends AbstractModal\nfunction ModalUI() {\n this._loading = function(evt, opts) {\n this._cancelSpinner();\n if (!this._isActive()) {\n this.trigger('ui:modal:open', {\n content: '
'\n });\n }\n let spinner = new Spinner({\n width: 2,\n length: 4,\n radius: 5,\n lines: 11,\n color: '#404a54'\n });\n if (opts && opts.element) {\n let $el = $(opts.element);\n $el.css('opacity', 0.5);\n $el.wrap('
')\n .parent()\n .each(function() {\n spinner.spin(this);\n });\n } else {\n let e = this.$modalContent[0];\n this.$modalHtml.addClass('modal-loading');\n this.timeout = setTimeout(function() {\n spinner.spin(e);\n }, 500);\n }\n };\n\n this.after('initialize', function() {\n this.on(document, 'ui:modal:open', this.triggerOpen);\n this.on(document, 'ui:modal:close', this.triggerClose);\n this.on(\n document,\n 'ui:modal:set-non-dismissible',\n this.triggerSetNonDismissible\n );\n this.on(document, 'data:navigation:before-modal-load', this._loading);\n });\n}\n\nexport default AbstractModal.mixin(ModalUI);\n","let $window = $(window);\n\nlet _getCurrentVpBottom = function() {\n return (\n (window.innerHeight ? window.innerHeight : $window.height()) +\n $window.scrollTop()\n );\n};\n\nlet _getCurrentVpTop = function() {\n return $window.scrollTop();\n};\n\nlet viewport = {\n isIn: function($item, vpBottom, vpTop) {\n vpBottom = vpBottom === undefined ? _getCurrentVpBottom() : vpBottom;\n vpTop = vpTop === undefined ? _getCurrentVpTop() : vpTop;\n\n let itemTop = $item.offset().top;\n let itemBottom = $item.offset().top + $item.height();\n return itemTop > vpTop && itemBottom < vpBottom;\n },\n\n isBelow: function($item, vpBottom) {\n vpBottom = vpBottom === undefined ? _getCurrentVpBottom() : vpBottom;\n\n let itemBottom = $item.offset().top + $item.height();\n return itemBottom > vpBottom;\n }\n};\n\nexport default viewport;\n","import $ from 'static/script/libs/jquery';\nimport { component } from 'flightjs';\nimport WithAjax from 'static/script/app/data/with-ajax';\nimport History from 'static/script/utils/history';\nimport InitData from 'static/script/app/data/init-data';\n\nfunction Pagination() {\n this.defaultAttrs({\n cardListContainer: '[data-card-list-container]',\n pagination: '.search-pagination-bottom',\n paginationTop: '.search-pagination-top',\n items: '.card-list a',\n next: '[data-pagination-show-more]',\n first: '[rel=first]',\n previous: '[data-pagination-prev]'\n });\n\n this._next = function(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n this._loadPage(evt.target, this._afterNext);\n };\n\n this._previous = function(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n this._loadPage(evt.target, this._afterPrev);\n };\n\n this._loadPage = function(targetElement, onSuccess) {\n let target = $(targetElement).closest('a');\n let href = target.attr('href');\n let onError = function() {\n target\n .addClass('error')\n .html('Ett fel uppstod. Försök igen.');\n };\n\n let updatePageState = function() {\n this._forceReflowIfAndroid();\n let initData = InitData.current();\n this.trigger('ui:navigation:after-page-change', initData);\n History.replaceState({}, initData.title, href);\n };\n\n target\n .addClass('loading')\n .removeClass('error')\n .html('Hämtar...');\n\n this._get({\n url: href,\n dataType: 'html',\n headers: { 'x-push-state-request': 'true' },\n success: onSuccess.bind(this, href),\n error: onError,\n requestId: 'search-pagination'\n }).done(updatePageState.bind(this));\n };\n\n this._forceReflowIfAndroid = function() {\n // samsung galaxy tab and s2 need this to render properly, otherwise appended search results cannot be scrolled down to\n if (window.Feature._getUserAgent().indexOf('Android') >= 0) {\n let forceReflow = $('
');\n forceReflow.addClass('force-reflow').appendTo('body');\n\n setTimeout(function() {\n forceReflow.remove();\n }, 200);\n }\n };\n\n this._afterNext = function(href, html) {\n let $html = $(html);\n let initData = InitData.setFromHtml(html);\n\n $html.find('a').data('origin', href);\n this.select('cardListContainer').append(\n $html.find(this.attr.cardListContainer).html()\n );\n this.select('pagination').replaceWith(\n $html.find('.search-pagination-bottom')\n );\n\n this.trigger('ui:search-result:after-pagination', {\n pageIndex: initData.pageIndex,\n direction: 'next'\n });\n };\n\n this._afterPrev = function(href, html) {\n let $html = $(html);\n let initData = InitData.setFromHtml(html);\n\n $html.find('a').data('origin', href);\n let firstElement = this.select('cardListContainer')\n .children()\n .first();\n\n let firstElementPosition = firstElement.position().top;\n\n this.select('cardListContainer').prepend(\n $html.find(this.attr.cardListContainer).html()\n );\n this.select('paginationTop').replaceWith(\n $html.find('.search-pagination-top')\n );\n this.select('pagination').replaceWith(\n $html.find('.search-pagination-bottom')\n );\n\n window.scrollTo(0, firstElement.position().top - firstElementPosition);\n\n this.trigger('ui:search-result:after-pagination', {\n pageIndex: initData.pageIndex,\n direction: 'prev'\n });\n };\n\n this._updateUrl = function(evt) {\n let $link = $(evt.target).closest('a');\n let origin = $link.data('origin');\n\n if (origin) {\n History.replaceState({}, document.title, origin);\n }\n };\n\n this._scrollToTop = function(evt) {\n if (!this._isOnFirstPage) {\n return;\n }\n evt.preventDefault();\n\n $(window).scrollTop(0);\n\n History.replaceState({}, null, this.select('first').attr('href'));\n };\n\n this.after('initialize', function() {\n this.on('click', {\n next: this._next,\n previous: this._previous,\n first: this._scrollToTop,\n items: this._updateUrl\n });\n\n this._isOnFirstPage = this.select('previous').length === 0;\n this.$node.find('a').data('origin', window.location.href);\n });\n}\n\nexport default component(Pagination, WithAjax);\n","import $ from 'static/script/libs/jquery';\nimport { component } from 'flightjs';\n\nfunction ResultLayoutTogglerUI() {\n this.defaultAttrs({\n toggleLayoutSelector: '[data-search-result-toggle-layout]'\n });\n\n this._toggleLayout = function(evt, data) {\n let layout = $(data.el)\n .closest('[data-search-result-toggle-layout]')\n .attr('data-search-result-toggle-layout');\n let payload = {\n targetLayout: layout\n };\n this.trigger(document, 'ui:search:on-layout-change', payload);\n };\n\n this.after('initialize', function() {\n this.on('click', {\n toggleLayoutSelector: this._toggleLayout\n });\n });\n}\n\nexport default component(ResultLayoutTogglerUI);\n","import { component } from 'flightjs';\nimport WithAjax from 'static/script/app/data/with-ajax';\nimport { toLocalizedRiotUrl } from './../../../../Areas/Selling/static/script/app_react/utils/language';\n\nfunction NavigationData() {\n this.defaultAttrs({\n pageContainer: '#page-container',\n noShowError: true,\n version: null\n });\n\n this.navigate = function(evt, eventData) {\n this.fullPageReload(eventData.href);\n };\n\n this.fullPageReload = function(href) {\n window.location.href = toLocalizedRiotUrl(href);\n };\n\n this.doTeardown = function() {\n component.teardownAll();\n };\n\n this.after('initialize', function() {\n this.on(document, 'ui:navigate', this.navigate);\n this.on(document, 'ui:teardown', this.doTeardown);\n });\n}\n\nexport default component(NavigationData, WithAjax);\n","import { component } from 'flightjs';\nimport 'static/script/libs/jquery';\nimport _ from 'static/script/libs/underscore';\nimport memberInfo from 'static/script/app/data/member-info';\n\nfunction TempData() {\n this._process = function(actions) {\n let tempDataString = this.$node.val();\n let tempData = JSON.parse(tempDataString);\n\n _.each(\n tempData,\n function(value, key) {\n if (actions[key]) {\n actions[key](value);\n }\n }.bind(this)\n );\n };\n\n this.after('initialize', function() {\n let actions = {\n justLoggedIn: this._justLoggedIn.bind(this),\n justLoggedInV2: this._justLoggedInV2.bind(this),\n errorMessage: this._errorMessage.bind(this)\n };\n\n this._process(actions);\n });\n\n this._justLoggedIn = function(value) {\n if (value) {\n let payload = { memberId: memberInfo.memberId };\n this.trigger(document, 'data:login:logged-in', payload);\n }\n };\n\n this._justLoggedInV2 = function(value) {\n if (value) {\n let payload = { memberId: memberInfo.memberId, version: 'V2' };\n this.trigger(document, 'data:login:logged-in', payload);\n }\n };\n\n this._errorMessage = function(value) {\n if (value) {\n let payload = { message: value };\n this.trigger(document, 'ui:error:show', payload);\n }\n };\n}\n\nexport default component(TempData);\n","/*jslint bitwise: true */\nimport $ from 'static/script/libs/jquery';\nimport breakpoints from 'static/script/utils/breakpoints';\nimport { component } from 'flightjs';\nimport Spinner from 'static/script/libs/spin';\nimport isHybridApp from 'static/script/utils/is-hybrid-app';\n\nfunction Loading() {\n this.defaultAttrs({\n delayInMilliseconds: 1000,\n timeoutId: -1,\n forced: false\n });\n\n this._spinner = (function() {\n let currentSpinner = null;\n let stop = function() {\n if (!currentSpinner) {\n return;\n }\n currentSpinner.stop();\n currentSpinner = null;\n };\n let start = function() {\n if (currentSpinner) {\n stop();\n }\n\n let options = {\n top: parseInt(\n $(window).scrollTop() + ($(window).height() / 7) * 3 || 0,\n 10\n ),\n lines: 9,\n length: 8,\n width: 4,\n radius: 6,\n className: 'framed-spinner'\n };\n\n currentSpinner = new Spinner(options);\n currentSpinner.spin(document.body);\n };\n return {\n start: start,\n stop: stop\n };\n })();\n\n this._show = function(evt, payload) {\n if (breakpoints.isVisible(breakpoints.xlarge) || isHybridApp()) {\n return;\n }\n\n if (\n payload &&\n payload.hasOwnProperty('forceStart') &&\n payload.forceStart === true\n ) {\n this.attr.forced = true;\n }\n\n this._spinner.start();\n this.attr.timeoutId = -1;\n };\n\n this._startDelay = function() {\n if (this.attr.forced !== true) {\n this._hide();\n this.attr.timeoutId = window.setTimeout(\n this._show.bind(this),\n this.attr.delayInMilliseconds\n );\n }\n };\n\n this._hide = function() {\n if (this.attr.timeoutId !== -1) {\n window.clearTimeout(this.attr.timeoutId);\n this.attr.timeoutId = -1;\n }\n\n this.attr.forced = false;\n this._spinner.stop();\n };\n\n this.after('initialize', function() {\n this.on(document, 'ui:loading:before-load', this._show);\n this.on(document, 'ui:loading:after-load', this._hide);\n\n this.on(document, 'ui:side-menu:on-filter-click', this._show);\n this.on(document, 'data:navigation-filter:before-load', this._show);\n this.on(document, 'data:navigation-filter:after-load', this._hide);\n this.on(document, 'data:navigation:before-page-load', this._startDelay);\n this.on(document, 'data:navigation-filter:after-load', this._hide);\n this.on(document, 'data:navigation:after-page-load', this._hide);\n this.on(document, 'ui:site-search:on-search-field-input', this._hide);\n this.on(document, 'ui:price-check:before-check', this._show);\n this.on(document, 'ui:price-check:after-check', this._hide);\n });\n}\n\nexport default component(Loading);\n","import { component } from 'flightjs';\n\nfunction Login() {\n this._showLogin = function(evt, evtData) {\n let destination =\n evtData && evtData.destination\n ? evtData.destination\n : encodeURIComponent(window.location.pathname) +\n encodeURIComponent(window.location.search);\n let url = '/login?ReturnUrl=' + destination;\n document.location.href = url;\n };\n\n this.after('initialize', function() {\n this.on(document, 'ui:login:show', this._showLogin);\n });\n}\n\nexport default component(Login);\n","import { component } from 'flightjs';\nimport WithAjax from 'static/script/app/data/with-ajax';\n\nfunction FeatureFeedbackService() {\n this._submitFeedback = function(evt, payload) {\n this._post({\n url: '/feature-feedback/',\n data: payload,\n success: 'data:feature-feedback:after-submit',\n error: 'data:feature-feedback:on-submit-error'\n });\n };\n\n this.after('initialize', function() {\n this.on(document, 'data:feature-feedback:submit', this._submitFeedback);\n });\n}\n\nexport default component(FeatureFeedbackService, WithAjax);\n","import $ from 'static/script/libs/jquery';\nimport { component } from 'flightjs';\nimport breakpoints from 'static/script/utils/breakpoints';\nimport FeatureFeedbackService from 'static/script/app/data/feature-feedback-service';\n\nfunction FeatureFeedback() {\n this._like = null;\n this._key = null;\n this._subtitle = null;\n this._title = null;\n\n this.defaultAttrs({\n overlay: '[data-feature-feedback-overlay]',\n container: '[data-feature-feedback-container]',\n like: '[data-feature-feedback-dialog-like]',\n dislike: '[data-feature-feedback-dialog-dislike]',\n likeLabel: '[data-feature-feedback-dialog-likelabel]',\n dislikeLabel: '[data-feature-feedback-dialog-dislikelabel]',\n cancel: '[data-feature-feedback-dialog-cancel]',\n submit: '[data-feature-feedback-dialog-submit]',\n subtitle: '[data-feature-feedback-dialog-subtitle]',\n title: '[data-feature-feedback-dialog-title]',\n comment: '[data-feature-feedback-dialog-comment]',\n dialog: '[data-feature-feedback-dialog]',\n isOkToContact: '[data-feature-feedback-dialog-isoktocontact]'\n });\n\n this._like = function() {\n this._like = true;\n this.select('container').removeClass('feature-feedback-status-dislike');\n this.select('container').addClass('feature-feedback-status-like');\n this.select('submit').removeAttr('disabled');\n };\n\n this._dislike = function() {\n this._like = false;\n this.select('container').removeClass('feature-feedback-status-like');\n this.select('container').addClass('feature-feedback-status-dislike');\n this.select('submit').removeAttr('disabled');\n };\n\n this._prompt = function(evt, payload) {\n this._clear();\n this._key = payload.key;\n this._subtitle = payload.subtitle;\n this._title = payload.title;\n this.select('subtitle').text(payload.subtitle);\n this.select('title').text(payload.title);\n this.select('likeLabel').text(payload.likeLabel || 'Bra');\n this.select('dislikeLabel').text(payload.dislikeLabel || 'Dåligt');\n\n this._goToStep1();\n this._setPosition(payload.position);\n this._showOverlay();\n this._showDialog();\n\n if (payload.cssClass) {\n this.$node.addClass(payload.cssClass);\n }\n };\n\n this._submit = function(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n let payload = {\n key: this._key,\n title: this._subtitle + ' ' + this._title,\n like: this._like,\n comment: this.select('comment').val(),\n breakpoint: breakpoints.getCurrent(),\n isOkToContact: this.select('isOkToContact').is(':checked')\n };\n this.trigger(document, 'data:feature-feedback:submit', payload);\n this._clear();\n this._goToStep2();\n };\n\n this._clear = function() {\n this._like = null;\n this._key = null;\n this._subtitle = null;\n this._title = null;\n this.select('container').removeClass('feature-feedback-status-dislike');\n this.select('container').removeClass('feature-feedback-status-like');\n this.select('submit').attr('disabled', 'disabled');\n this.select('comment').val('');\n };\n\n this._setPosition = function(defaultPosition) {\n let position = defaultPosition;\n let container = this.select('container');\n\n position = this._getCenterPosition();\n\n container.css({\n top: position.top,\n left: position.left\n });\n };\n\n this._showOverlay = function() {\n this.select('overlay')\n .height(Math.max($(window).height(), $(document).height()))\n .show();\n };\n\n this._hideOverlay = function() {\n this.select('overlay').hide();\n };\n\n this._showDialog = function() {\n this.select('container').css({ visibility: 'visible' });\n };\n\n this._hideDialog = function() {\n this.select('container').css({ visibility: 'hidden' });\n };\n\n this._hideAll = function() {\n this._hideDialog();\n this._hideOverlay();\n };\n\n this._isSmallScreen = function() {\n return !breakpoints.isVisible(breakpoints.large);\n };\n\n this._getCenterPosition = function() {\n return {\n top:\n $(window).scrollTop() +\n ($(window).height() / 2 -\n this.select('container').outerHeight() / 2),\n left:\n $(window).width() / 2 -\n this.select('container').outerWidth() / 2\n };\n };\n\n this._cancel = function() {\n this._hideDialog();\n this._hideOverlay();\n };\n\n this._goToStep1 = function() {\n this.select('container').removeClass('feature-feedback-step2');\n this.select('container').addClass('feature-feedback-step1');\n };\n\n this._goToStep2 = function() {\n this.select('container').removeClass('feature-feedback-step1');\n this.select('container').addClass('feature-feedback-step2');\n\n window.setTimeout(\n function() {\n this._hideAll();\n }.bind(this),\n 1500\n );\n };\n\n this._closeStep2 = function() {\n if (this.select('container').hasClass('feature-feedback-step2')) {\n this._hideAll();\n }\n };\n\n this.after('initialize', function() {\n this.on('click', {\n like: this._like,\n dislike: this._dislike,\n cancel: this._cancel,\n overlay: this._cancel,\n submit: this._submit,\n dialog: this._closeStep2\n });\n this.on(document, 'ui:feature-feedback:prompt', this._prompt);\n FeatureFeedbackService.attachTo(document);\n });\n}\n\nexport default component(FeatureFeedback);\n","import $ from 'static/script/libs/jquery';\nimport { component } from 'flightjs';\nimport FeatureFeedback from 'static/script/app/ui/feature-feedback/feature-feedback';\n\nfunction FeatureFeedbackLink() {\n this.defaultAttrs({\n link: '[data-feature-feedback-link]',\n key: 'data-feature-feedback-key',\n title: 'data-feature-feedback-title',\n subtitle: 'data-feature-feedback-subtitle',\n likeLabel: 'data-feature-feedback-likelabel',\n dislikeLabel: 'data-feature-feedback-dislikeLabel',\n FeatureFeedback: '[data-feature-feedback]',\n template: '[data-feature-feedback-template]',\n offsetLeft: 'data-feature-feedback-offset-left',\n container: '[data-feature-feedback-link-container]', // Just to see how many clicks the container instead of the link\n initData: null\n });\n\n /*jshint maxcomplexity:7 */\n this._promptFeatureFeedback = function(evt) {\n evt.preventDefault();\n evt.stopPropagation();\n let el = $(evt.target);\n let paddingLeft = 10;\n let top = el.height() + el.offset().top;\n let offsetLeft = parseInt(el.attr(this.attr.offsetLeft) || '0');\n let left = el.offset().left - paddingLeft + offsetLeft;\n let cssClass = el.attr('data-feature-feedback-cssclass') || '';\n\n let payload = {\n key: el.attr(this.attr.key),\n subtitle: el.attr(this.attr.subtitle) || '',\n title: el.attr(this.attr.title) || '',\n likeLabel: el.attr(this.attr.likeLabel) || '',\n dislikeLabel: el.attr(this.attr.dislikeLabel) || '',\n position: {\n top: top,\n left: left\n },\n cssClass: cssClass\n };\n\n this._initTemplateOnce();\n this.trigger(document, 'ui:feature-feedback:prompt', payload);\n\n let gaData = {\n category: 'Feature feedback',\n action: 'Click',\n label: 'Link'\n };\n this._trackGAEvent(gaData);\n };\n\n this._initTemplateOnce = function() {\n if (this.select('FeatureFeedback').length < 1) {\n let tpl = $(this.select('template').html());\n $('body').append(tpl);\n FeatureFeedback.attachTo(this.attr.FeatureFeedback);\n }\n };\n\n this._teardown = function() {\n this.select('FeatureFeedback').remove();\n };\n\n this._containerClicked = function() {\n let gaData = {\n category: 'Feature feedback',\n action: 'Click',\n label: 'Container'\n };\n this._trackGAEvent(gaData);\n };\n\n this._trackGAEvent = function(data) {\n this.trigger(document, 'analytics:track-event', {\n category: data.category,\n action: data.action,\n label: data.label + ' | ' + this._getPageNameForGA()\n });\n };\n\n this._getPageNameForGA = function() {\n return this.attr.initData.pageName || 'Unknown page';\n };\n\n this.after('initialize', function() {\n this.on('click', {\n link: this._promptFeatureFeedback,\n container: this._containerClicked\n });\n this.on('ui:teardown', this._teardown);\n });\n}\n\nexport default component(FeatureFeedbackLink);\n","import $ from 'static/script/libs/jquery';\nimport { component } from 'flightjs';\n\nfunction SavedSearchMonitorTogglerUI() {\n this.defaultAttrs({\n idAttribute: 'data-search-form-monitor-id',\n savedSearchTogglerElement: '[data-search-form-monitor-id]',\n savedSearchTogglerLabelElement: '[data-search-form-monitor-label]',\n disabledClass: 'disabled'\n });\n\n this._onToggleChange = function(element) {\n let eventName, payload;\n\n if (element.is(':checked')) {\n eventName = 'ui:saved-searches:on-monitor-start';\n payload = {\n SearchId: element.attr(this.attr.idAttribute),\n SendMail: true,\n element: element\n };\n } else {\n eventName = 'ui:saved-searches:on-monitor-stop';\n payload = {\n SearchId: element.attr(this.attr.idAttribute),\n SendMail: false,\n element: element\n };\n }\n\n element.addClass(this.attr.disabledClass); // Avoid double clicks or slow connections clicking twice\n this.trigger(eventName, payload);\n };\n\n this._monitoringCallback = function(evt, payload) {\n let sendMail = payload.sendMail,\n element = payload.element;\n\n if (element.is(':checkbox')) {\n element.attr('checked', sendMail);\n element.removeClass(this.attr.disabledClass);\n }\n };\n\n this._clickOnCheckbox = function(evt, options) {\n evt.stopPropagation(); // If the checkbox is inside a