{"version":3,"sources":["webpack:///./src/scripts/components/header/searchBox.ts","webpack:///./src/scripts/components/header/notifications.ts","webpack:///./src/scripts/components/header/notCompletedAdvert.ts","webpack:///./src/scripts/libs/modals.ts","webpack:///./src/scripts/components/header/member-email-approve.ts","webpack:///./node_modules/lodash-es/_arrayEach.js","webpack:///./node_modules/lodash-es/_createBaseFor.js","webpack:///./node_modules/lodash-es/_baseFor.js","webpack:///./node_modules/lodash-es/_baseForOwn.js","webpack:///./node_modules/lodash-es/_createBaseEach.js","webpack:///./node_modules/lodash-es/_baseEach.js","webpack:///./node_modules/lodash-es/_castFunction.js","webpack:///./node_modules/lodash-es/forEach.js","webpack:///./src/scripts/libs/hoverintent.ts","webpack:///./node_modules/hoverintent/index.js","webpack:///./node_modules/lodash-es/throttle.js","webpack:///./node_modules/lodash-es/_baseIsNaN.js","webpack:///./node_modules/lodash-es/_strictIndexOf.js","webpack:///./node_modules/lodash-es/_baseIndexOf.js","webpack:///./node_modules/lodash-es/_charsEndIndex.js","webpack:///./node_modules/lodash-es/_charsStartIndex.js","webpack:///./node_modules/lodash-es/trim.js","webpack:///./src/scripts/components/cookieDisclaimer.ts","webpack:///./src/scripts/components/header/member.ts","webpack:///./src/scripts/libs/cookie.ts","webpack:///./src/scripts/components/header/header.mobile.ts","webpack:///./src/scripts/components/header/top-notification-bar.ts","webpack:///./src/scripts/components/header/lastSearches.ts","webpack:///./src/scripts/components/header/user-menus.ts","webpack:///./node_modules/lodash-es/_hasUnicode.js","webpack:///./node_modules/lodash-es/_asciiToArray.js","webpack:///./node_modules/lodash-es/_unicodeToArray.js","webpack:///./node_modules/lodash-es/_stringToArray.js","webpack:///./src/scripts/components/header/header.ts","webpack:///./src/scripts/libs/segmentify.ts","webpack:///./src/scripts/libs/storage.ts","webpack:///./node_modules/lodash-es/now.js","webpack:///./node_modules/lodash-es/debounce.js","webpack:///./node_modules/lodash-es/_baseSlice.js","webpack:///./node_modules/lodash-es/_castSlice.js"],"names":["suggestionsWrapper","suggestionsAreaWrapper","suggestionAutoCompleteSearchInput","currentSuggestionValue","suggestionHeaderMapper","UsedCarSuggestion","NewCarSuggestion","NewsSuggestion","FirmSuggestion","KeywordSuggestion","closeSearchWrapperLogic","event","elem","target","document","getElementById","contains","closeSuggestionWrapper","onFocusSuggestionAutoCompleteInput","dl","window","dataLayer","push","Category","Action","Label","nonInteraction","generateSuggestions","value","onKeyUpSuggestionAutoComplete","which","keyCode","key","redirectToSearchPage","length","printLastSearches","getSuggestionsFor","suggestions","Success","innerHTML","Data","data","index","dataIn","indexIn","parentCategory","createElement","appendChild","headerOfList","innerText","map","suggestion","appendTo","listElement","anchorElement","textElement","Description","Text","Count","descriptionElement","href","Url","addEventListener","createListElement","searchInAll","searchInAllLink","Type","createSuggestionCategoryListWith","body","classList","remove","removeEventListener","get","trimmedValue","Id","location","encodeURIComponent","focus","lastSearches","charAt","toUpperCase","slice","createLastSearchListElement","headerSearchWrapper","querySelector","searchBarTriggerButton","suggestionWrapperButton","add","setAttribute","onTriggerSearchInputFocus","headerNotificationWrapper","list","listScroller","SCROLL_COUNT","isLoading","createNotificationData","user","bindNotificationIconClick","markAsReadBt","markAsReadAll","showNotificationsWith","memberStatus","UnReadNotificationCount","showLoadingWrapper","post","then","response","console","log","resetPopupElements","getNotifications","hideLoadingWrapper","dropdown","header","selector","offsetTop","viewportOffset","getBoundingClientRect","top","headerOverlay","showOverLay","clientHeight","reinitScrollbar","quantity","textContent","toString","UnReadOnly","take","skip","documents","nothingFoundWrapper","buttonAllNotifications","Documents","forEach","IsRead","WebUrl","onclick","imageWrapper","notificationImage","src","ImageUrl","detailsWrapper","title","Title","detailContent","Body","dateWrapper","date","CreatedDate","time","CreatedHour","UnReadCount","setTimeout","scrollTo","scrollTop","behavior","onScroll","offsetHeight","scrollHeight","wrapper","isUserLoggedIn","memberData","IndividualMember","advert","parentElement","EditUrl","PhotoUrl","image","rawImagePath","replace","style","width","Point","Percentage","createNotCompletedAdvertArea","NotCompletedAdvert","createNewModalElement","options","innerModalData","id","innerModalHeader","success","message","innerModalContent","buttons","close","confirm","innerModalFooter","show","createModalButton","text","callback","createModalFooter","pageYOffset","className","buttonWrapper","button","bindCheckMailApproveNotification","IsMailApproved","MainUser","Email","type","emailAddress","axios","email","showLoading","modals","createNotValidatedEmailModal","Message","default","catch","error","modal","destroy","open","array","iteratee","fromRight","object","keysFunc","iterable","Object","props","keys","eachFunc","collection","isArrayLike","identity","isArray","module","exports","el","onOver","onOut","x","y","pX","pY","mouseOver","focused","h","state","timer","sensitivity","interval","timeout","handleFocus","tracker","e","clientX","clientY","dispatchOver","clearTimeout","compare","Math","abs","undefined","call","this","dispatchOut","delay","dispatchFocus","dispatchBlur","removeFocus","opt","focusOptionChanged","assign","FUNC_ERROR_TEXT","func","wait","leading","trailing","TypeError","fromIndex","strSymbols","chrSymbols","reTrim","string","chars","guard","start","end","join","setCookieForHeaderCookieNotif","cookieDisclaimerClickCallback","memberInfo","INDEX_ARABAM_USER","INDEX_IS_USER_LOGGED_IN","INDEX_MEMBER_DATA","INDEX_MEMBER_STATUS","INDEX_IS_FETCHING_MEMBER","userStatus","userData","getMemberData","Promise","resolve","reject","isMobile","getConfiguration","getStatus","setUserNotLoggedIn","getUser","setUser","getMemberInfo","Date","getTime","setUserLoggedIn","olark","configure","fullName","Name","Surname","phoneNumber","FormattedMobilePhone","identify","initOlark","AuctioPermissions","configuration","bindAngularStuff","isLoggedIn","ang","angular","element","parentNode","injector","$apply","Properties","IsUserLoggedIn","IsEmailRequired","CommercialMember","UnreadFavCount","FavoritedAdvertCount","UnreadMessageCount","UnreadNotificationCount","MissedCallCount","RoutePhoneMissedCallCount","promiseResponse","getCookie","name","parts","cookie","split","pop","shift","setCookie","days","expires","setTime","toGMTString","var1ables","NOTIFICATION_SCROLL_COUNT","showAddNewItemToFavList","hideHeaderOverlay","HeaderButtonOverlay","shareElem","favListContainer","favButtonElem","shareButtonElement","showHeaderOverlay","favElem","addNewItemToFavList","request","EditFavoriteAdvertRequest","inputElement","AdvertId","advertId","trim","favorited","sharePageLink","newVariable","navigator","share","advertTitle","url","shareInFacebook","d","s","js","fjs","FB","getElementsByTagName","insertBefore","fbAsyncInit","init","appId","version","ui","method","link","caption","toggleFav","delete","favListElem","listItem","preventDefault","MemberFavoriteListId","addToFav","append","scroll","stickyElem","scrollY","screen","height","position","setVar","val","getVar","bindCloseButtonForHeaderMenu","onCloseRedPopup","closeAllSubMenu","onClickShowHeaderMenu","notificationWrapper","onClickToggleNotificationPopup","shdWrapper","isOpen","clearNotificationList","listEl","notificationItems","querySelectorAll","removeChild","onClickHeaderLogo","onClickHeaderLogout","domElem","getAttribute","buildDomTreeForGuestUserMobile","headerMobileVisibleLoggedInWrapper","headerMobileLogoutButtonWrapper","sessionStorage","clear","headerMobileNotificationWrapper","headerVisibleNotLoggedInWrapper","buildDomTreeForLoggedInMobile","userLoginHeader","guestLoginHeader","logoutButton","namePlaceholderDom","nameSurname","toLocaleUpperCase","SurName","frag","createDocumentFragment","domS","createTextNode","servicesMobile","buycarMobile","sellcarMobile","priceSuggestionHomeMobile","getNamePlaceholder","notificationDomEl","notificationIcon","quantityCalculated","toLocaleString","getNotificationPlaceholder","buildNavigationTogglers","elemList","elemArr","Array","prototype","i","navigationToggleCallback","nodeName","nextElementSibling","toggle","showNotificationLoader","updateNotification","hideNotificationLoader","count","iconEl","notificationListScroller","docs","notificationList","notificationObject","spanDate","spanTime","spanDateTime","spanBody","spanBodyDateTime","domImg","spanImg","domA","domLi","textTime","textDate","textBody","buildNotificationDomElements","facebookShareButton","popupCampaignElement","cookieName","showPopup","popupStartDate","popupEndDate","currentDate","indexOf","userAgent","logoElem","menuElem","clickHandlers","dataLayerClickCallback","dataLayerClickHandlers","newItemElem","newItembutton","setEventListenerToFavorite","loader","dataLayers","createHeaderTopNotificationBar","anchorText","anchorClickCallback","closeClickCallback","messageWrapper","notificationBarWrapper","row","rowWrapper","container","paragraph","anchor","span","nextIcon","closeIcon","spanWrapper","createInitHtmlForWrapper","spanEl","bindHeaderTopNotificationAnchor","destroyTopHeaderNotificationBar","storageKey","addToLastSearches","searchList","searchItem","isNewSearchSuggestionItem","unshift","getLastSearches","favoritesWrapper","messagesWrapper","headerGuestNav","headerAuthNav","headerUserDropdown","headerCallsWrapper","setHeaderFavorites","showFavoritesWith","initMenusForLoggedUser","CurrentUser","userMenuDropdown","Communication","CallApiCanSeeHistory","RoutePhone","bindUserCallHistorySwitchers","msgCount","messageResolver","messageCounter","AuctionStatus","auctionLinkEl","commercialPremiumLinkEl","insuranceLinkEl","parent","parseInt","removeItem","onClickLogoutButton","overlay","createUserDropdown","searchContainer","checkVisibilityForCallsIcon","services","buycar","sellcar","mainpage","setPriceSuggestionLinks","initMenusForGuestUser","reHasUnicode","RegExp","test","rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsSeq","rsSymbol","reUnicode","match","showNavigation","touchDevice","hideOverlay","activeMenu","outerHTML","arguments","source","hasOwnProperty","documentElement","attributes","ie","headerLogo","newAdvertButton","notificationDropdown","pathname","bindTrinkSatButtonTriggerEvent","createAdvertBtn","advertWrapper","menu","zIndex","getAdvertBtnHover","menuItem","len","menuDomEl","targetElem","searchBoxInput","setSegmentifyLoginOps","userId","segmentify","Segmentify","username","addToLocalStorage","localStorageAvailable","localStorage","setItem","JSON","stringify","getFromLocalStorage","parse","getItem","now","nativeMax","max","nativeMin","min","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","maxing","invokeFunc","args","thisArg","apply","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","toNumber","isObject","cancel","flush"],"mappings":"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","file":"scripts/43.5319ee72d50511959087.component.js","sourcesContent":["import axios from \"@libs/axios\";\r\nimport { forEach, debounce, trim } from \"lodash-es\";\r\nimport { IArabamApiResponse } from \"@interfaces/responses\";\r\nimport { ISuggestionResponse, ISuggestion } from \"@interfaces/suggestions\";\r\nimport {\r\n addClass,\r\n removeClass,\r\n toggleElement,\r\n removeUnnecessaryWhitespaces,\r\n isMobile\r\n} from \"@libs/utils\";\r\nimport { addToLastSearches, getLastSearches } from \"./lastSearches\";\r\n\r\nlet suggestionsWrapper: HTMLElement = null;\r\nlet suggestionsAreaWrapper: HTMLElement = null;\r\nlet suggestionAutoCompleteSearchInput: HTMLInputElement = null;\r\nlet searchBarTriggerInput: HTMLInputElement = null;\r\nlet searchBarTabletTrigger: HTMLInputElement = null;\r\nlet currentSuggestionValue: string = null;\r\n\r\nconst suggestionHeaderMapper = {\r\n UsedCarSuggestion: \"2. El İlanlar\",\r\n NewCarSuggestion: \"Sıfır\",\r\n NewsSuggestion: \"Haberler & Testler\",\r\n FirmSuggestion: \"Galeriler\",\r\n KeywordSuggestion: \"Anahtar Kelimeler\"\r\n};\r\n\r\nexport default function(): any {\r\n const headerSearchWrapper = document.querySelector(\"#header-search-wrapper\");\r\n const searchBarTriggerButton = document.getElementById(\r\n \"js-hook-for-header-mobile-search\"\r\n );\r\n\r\n suggestionsWrapper = document.querySelector(\"#suggestion-wrapper\");\r\n\r\n searchBarTriggerInput = document.querySelector(\r\n \".search-trigger-input-wrapper > .input\"\r\n );\r\n\r\n searchBarTabletTrigger = document.querySelector(\r\n \"#header-tablet-search-box-trigger\"\r\n );\r\n\r\n suggestionAutoCompleteSearchInput = document.querySelector(\r\n \"#search-suggestion-trigger-input\"\r\n );\r\n if (suggestionsWrapper) {\r\n suggestionsAreaWrapper = suggestionsWrapper.querySelector(\r\n \"#suggestions-area\"\r\n );\r\n }\r\n\r\n if (suggestionAutoCompleteSearchInput) {\r\n suggestionAutoCompleteSearchInput.addEventListener(\r\n \"keyup\",\r\n debounce(onKeyUpSuggestionAutoComplete, 250)\r\n );\r\n suggestionAutoCompleteSearchInput.addEventListener(\r\n \"focus\",\r\n debounce(onFocusSuggestionAutoCompleteInput, 250)\r\n );\r\n }\r\n\r\n if (!isMobile()) {\r\n // Arama ikonuna basınca yönlendir\r\n if (headerSearchWrapper) {\r\n headerSearchWrapper\r\n .querySelector(\".search-button\")\r\n .addEventListener(\"click\", redirectToSearchPage);\r\n }\r\n } else {\r\n // Kapat butonuna basınca kapat\r\n var suggestionWrapperButton = document.querySelector(\r\n \"#suggestion-wrapper .btn\"\r\n );\r\n if (suggestionWrapperButton) {\r\n suggestionWrapperButton.addEventListener(\"click\", closeSuggestionWrapper);\r\n }\r\n }\r\n\r\n if (!isMobile()) {\r\n if (suggestionAutoCompleteSearchInput) {\r\n suggestionAutoCompleteSearchInput.addEventListener(\r\n \"focus\",\r\n (event: any) => {\r\n const headerOverlay = document.querySelector(\"body .header-overlay\");\r\n headerOverlay.classList.add(\"topOfAllElement\");\r\n suggestionsWrapper.classList.add(\"active\");\r\n headerSearchWrapper.setAttribute(\"style\", \"z-index:5\");\r\n onTriggerSearchInputFocus(event);\r\n }\r\n );\r\n }\r\n }\r\n\r\n if (!isMobile()) {\r\n // show on desktop\r\n if (headerSearchWrapper) {\r\n headerSearchWrapper.classList.remove(\"dn\");\r\n }\r\n } else {\r\n if (searchBarTriggerButton) {\r\n searchBarTriggerButton.addEventListener(\"click\", () => {\r\n toggleElement(\"#suggestion-wrapper\");\r\n suggestionAutoCompleteSearchInput.focus();\r\n printLastSearches();\r\n document.body.classList.add(\"ovh\");\r\n document.body.classList.add(\"pf\");\r\n document.body.classList.add(\"w100\");\r\n });\r\n }\r\n }\r\n}\r\nfunction closeSearchWrapperLogic(event: any) {\r\n const elem: HTMLElement = event.target as HTMLElement;\r\n if (!document.getElementById(\"suggestion-wrapper\").contains(elem)) {\r\n closeSuggestionWrapper();\r\n }\r\n}\r\n\r\nfunction onFocusSuggestionAutoCompleteInput(event: FocusEvent) {\r\n const dl: any = (window as any).dataLayer;\r\n if (!!dl) {\r\n dl.push({\r\n Category: \"Header\",\r\n Action: \"Search Box\",\r\n Label: \"Focus\",\r\n event: \"gaEvent\",\r\n nonInteraction: true\r\n });\r\n }\r\n generateSuggestions((event.target as HTMLInputElement).value);\r\n}\r\n\r\nfunction onTriggerSearchInputFocus(event: KeyboardEvent): void {\r\n removeClass(suggestionsWrapper, \"dn\");\r\n if (isMobile()) {\r\n const dl: any = (window as any).dataLayer;\r\n if (!!dl) {\r\n dl.push({\r\n Category: \"Header\",\r\n Action: \"Search Box\",\r\n Label: \"Focus\",\r\n event: \"gaEvent\",\r\n nonInteraction: true\r\n });\r\n }\r\n }\r\n const value = (event.target as HTMLInputElement).value;\r\n if (typeof value !== \"undefined\" && value && value !== null) {\r\n suggestionAutoCompleteSearchInput.value = value;\r\n }\r\n printLastSearches();\r\n suggestionAutoCompleteSearchInput.focus();\r\n // document.addEventListener(\"click\", closeSearchWrapperLogic);\r\n}\r\n\r\nfunction onKeyUpSuggestionAutoComplete(event: KeyboardEvent): void {\r\n // ESC kontrolü yaparak UX aşığı olduğumuzu gösteriyoruz\r\n if (event.which === 27 || event.keyCode === 27) {\r\n closeSuggestionWrapper();\r\n return;\r\n }\r\n\r\n if (event.which === 13 || event.key === \"Enter\") {\r\n return redirectToSearchPage();\r\n }\r\n\r\n generateSuggestions((event.target as HTMLInputElement).value);\r\n}\r\n\r\nasync function generateSuggestions(value: string) {\r\n value = trim(removeUnnecessaryWhitespaces(value));\r\n if (value.length < 2) {\r\n printLastSearches();\r\n } else if (\r\n currentSuggestionValue === null ||\r\n currentSuggestionValue !== value\r\n ) {\r\n if (value && value !== \"\") {\r\n currentSuggestionValue = value;\r\n const suggestions = await getSuggestionsFor(value);\r\n\r\n if (suggestions.Success) {\r\n suggestionsAreaWrapper.innerHTML = \"\";\r\n forEach(suggestions.Data, (data, index) => {\r\n if (data.length > 0) {\r\n forEach(data, (dataIn, indexIn) => {\r\n dataIn.parentCategory = index;\r\n });\r\n }\r\n createSuggestionCategoryListWith(data, index as any, value as any);\r\n });\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction closeSuggestionWrapper() {\r\n if (isMobile()) {\r\n addClass(suggestionsWrapper, \"dn\");\r\n suggestionsAreaWrapper.innerHTML = \"\";\r\n suggestionAutoCompleteSearchInput.value = \"\";\r\n document.body.classList.remove(\"ovh\");\r\n document.body.classList.remove(\"pf\");\r\n document.body.classList.remove(\"w100\");\r\n }\r\n document.removeEventListener(\"click\", closeSearchWrapperLogic);\r\n}\r\n\r\nfunction getSuggestionsFor(\r\n value: string\r\n): Promise> {\r\n return axios.get(`/ilan/oneri?searchText=${value}`);\r\n}\r\n\r\nfunction createSuggestionCategoryListWith(\r\n suggestions: ISuggestion[],\r\n index:\r\n | \"UsedCarSuggestion\"\r\n | \"NewCarSuggestion\"\r\n | \"NewsSuggestion\"\r\n | \"FirmSuggestion\"\r\n | \"KeywordSuggestion\",\r\n value: any\r\n): void {\r\n if (suggestions.length > 0) {\r\n const newList = document.createElement(\"ul\");\r\n addClass(newList, \"hs-suggest-category-list\");\r\n suggestionsAreaWrapper.appendChild(newList);\r\n const headerOfList = document.createElement(\"li\");\r\n addClass(headerOfList, \"hs-suggestion-header\");\r\n headerOfList.innerText = suggestionHeaderMapper[index];\r\n newList.appendChild(headerOfList);\r\n suggestions.map((suggestion) => {\r\n createListElement(suggestion, newList);\r\n });\r\n const searchInAll = document.createElement(\"li\");\r\n const searchInAllLink = document.createElement(\"a\");\r\n\r\n addClass(searchInAll, \"search-in-all-categories\");\r\n addClass(searchInAllLink, \"hs-suggestion-link\");\r\n\r\n if (suggestions[0].Type == 10) {\r\n searchInAllLink.href = \"/ikinci-el?searchText=\" + value;\r\n searchInAllLink.target = \"_self\";\r\n searchInAllLink.innerHTML =\r\n \"Tüm 2. el ilanlarda ara\";\r\n } else if (suggestions[0].Type == 20) {\r\n searchInAllLink.href = \"/galeriler?searchText=\" + value;\r\n searchInAllLink.innerHTML =\r\n \"Tüm galerilerde ara\";\r\n }\r\n searchInAll.appendChild(searchInAllLink);\r\n newList.appendChild(searchInAll);\r\n }\r\n}\r\n\r\nfunction createListElement(suggestion: ISuggestion, appendTo: HTMLElement) {\r\n const listElement = document.createElement(\"li\");\r\n const anchorElement = document.createElement(\"a\");\r\n\r\n const textElement = document.createElement(\"div\");\r\n addClass(textElement, \"hs-suggestion-text\");\r\n if (!isMobile()) {\r\n textElement.innerHTML = `${(suggestion.Description\r\n ? suggestion.Description\r\n : suggestion.Text) + \" \"}${\r\n suggestion.Count && suggestion.Count > 0\r\n ? \" (\" + suggestion.Count + \")\"\r\n : \"\"\r\n }`;\r\n }\r\n addClass(anchorElement, \"hs-suggestion-link\");\r\n anchorElement.target = \"_self\";\r\n if (isMobile()) {\r\n anchorElement.appendChild(textElement);\r\n if (suggestion.Description || suggestion.Text) {\r\n const descriptionElement = document.createElement(\"div\");\r\n addClass(descriptionElement, \"hs-suggestion-description\");\r\n descriptionElement.innerHTML = `${(suggestion.Description\r\n ? suggestion.Description\r\n : suggestion.Text) + \" \"}${\r\n suggestion.Count && suggestion.Count > 0\r\n ? \" (\" + suggestion.Count + \")\"\r\n : \"\"\r\n }`;\r\n anchorElement.appendChild(descriptionElement);\r\n }\r\n } else {\r\n anchorElement.appendChild(textElement);\r\n }\r\n\r\n anchorElement.href = suggestion.Url;\r\n anchorElement.addEventListener(\"click\", function() {\r\n addToLastSearches(suggestion);\r\n });\r\n listElement.appendChild(anchorElement);\r\n appendTo.appendChild(listElement);\r\n}\r\n\r\nfunction redirectToSearchPage(): void {\r\n const value = (document.getElementById(\r\n \"search-suggestion-trigger-input\"\r\n ) as HTMLInputElement).value;\r\n const trimmedValue = trim(removeUnnecessaryWhitespaces(value));\r\n if (trimmedValue.length > 0) {\r\n const dl: any = (window as any).dataLayer;\r\n if (!!dl) {\r\n dl.push({\r\n Category: \"Header\",\r\n Action: \"Search Box\",\r\n Label: \"Search Free Text-\" + trimmedValue,\r\n event: \"gaEvent\",\r\n nonInteraction: true\r\n });\r\n }\r\n addToLastSearches({\r\n Id: trimmedValue,\r\n Text: value,\r\n Url: `/ikinci-el?searchText=${trimmedValue}`\r\n });\r\n window.location.href = `/ikinci-el?searchText=${encodeURIComponent(trimmedValue)}`;\r\n } else {\r\n document.getElementById(\"search-suggestion-trigger-input\").focus();\r\n }\r\n}\r\n\r\nfunction printLastSearches(): void {\r\n const lastSearches = getLastSearches();\r\n if (lastSearches && lastSearches.length > 0) {\r\n suggestionsAreaWrapper.innerHTML = \"\";\r\n\r\n const newList = document.createElement(\"ul\");\r\n addClass(newList, \"hs-suggest-category-list\");\r\n suggestionsAreaWrapper.appendChild(newList);\r\n const headerOfList = document.createElement(\"li\");\r\n addClass(headerOfList, \"hs-suggestion-header\");\r\n headerOfList.innerText = \"Son Aramalar\";\r\n newList.appendChild(headerOfList);\r\n\r\n lastSearches.map((suggestion) => {\r\n createLastSearchListElement(suggestion, newList);\r\n });\r\n } else {\r\n suggestionsAreaWrapper.innerHTML = \"\";\r\n }\r\n}\r\n\r\n/** her son arama icin listItem hmtl yaratir */\r\nfunction createLastSearchListElement(suggestion: any, appendTo: HTMLElement) {\r\n const listElement = document.createElement(\"li\");\r\n const anchorElement = document.createElement(\"a\");\r\n\r\n const textElement = document.createElement(\"div\");\r\n addClass(textElement, \"hs-suggestion-text\");\r\n addClass(listElement, \"hs-inline-list\");\r\n textElement.innerHTML =\r\n `${suggestion.Text}`.charAt(0).toUpperCase() +\r\n `${suggestion.Text}`.slice(1);\r\n addClass(anchorElement, \"hs-suggestion-link\");\r\n anchorElement.target = \"_self\";\r\n anchorElement.appendChild(textElement);\r\n\r\n anchorElement.href = suggestion.Url;\r\n anchorElement.addEventListener(\"click\", function() {\r\n addToLastSearches(suggestion);\r\n });\r\n listElement.appendChild(anchorElement);\r\n appendTo.appendChild(listElement);\r\n}\r\n","import { INotificationData, INotificationDocument } from \"@interfaces/notifications\";\r\n\r\nimport axios from \"@libs/axios\";\r\nimport { getUser, getStatus } from \"@components/header/member\";\r\nimport { addClass, removeClass } from \"@libs/utils\";\r\nimport { throttle } from \"lodash-es\";\r\n// import SimpleScrollbar from \"simple-scrollbar\";\r\n\r\nconst headerNotificationWrapper = document.getElementById(\"header-notification-wrapper\");\r\nconst list = headerNotificationWrapper ? headerNotificationWrapper.querySelector(\"ul.notifications-list\") : null;\r\nconst listScroller = headerNotificationWrapper\r\n ? (headerNotificationWrapper.querySelector(\".list-scroller\") as HTMLElement)\r\n : null;\r\n\r\nlet SCROLL_COUNT = 0;\r\nlet isLoading = false;\r\n\r\nexport function createNotificationData() {\r\n const user = getUser();\r\n const notificationFirstWrapper = headerNotificationWrapper.querySelector(\".first-wrapper\");\r\n notificationFirstWrapper.addEventListener(\"click\", bindNotificationIconClick);\r\n const markAsReadBt = headerNotificationWrapper.querySelector(\".mark-as-read-bt\");\r\n if (markAsReadBt) markAsReadBt.addEventListener(\"click\", markAsReadAll, false);\r\n showNotificationsWith(user.memberStatus.UnReadNotificationCount);\r\n}\r\n\r\nfunction markAsReadAll(event: MouseEvent): void {\r\n isLoading = true;\r\n showLoadingWrapper();\r\n axios.post(\"/membernotification/markasreadall \").then((response) => {\r\n console.log(\"response\", response);\r\n if (response.Success) {\r\n showNotificationsWith(0);\r\n resetPopupElements();\r\n getNotifications();\r\n isLoading = false;\r\n hideLoadingWrapper();\r\n }\r\n });\r\n}\r\n\r\nfunction bindNotificationIconClick() {\r\n const dropdown = headerNotificationWrapper.querySelector(\"div.notification-dropdown\");\r\n var header = document.querySelector(\"body .headerBar\");\r\n resetPopupElements();\r\n\r\n if (dropdown.classList.contains(\"opened\")) {\r\n // console.log(\"closing\");\r\n hideOverlay();\r\n removeClass(dropdown, \"opened\");\r\n getStatus();\r\n } else {\r\n // console.log(\"opening\");\r\n showOverLay(\"header#header .headerBar\", header.clientHeight);\r\n addClass(dropdown, \"opened\");\r\n reinitScrollbar();\r\n getNotifications();\r\n }\r\n}\r\n\r\nfunction resetPopupElements() {\r\n // console.log(\"resetting popup\");\r\n list.innerHTML = \"\";\r\n SCROLL_COUNT = 0;\r\n // listScroller.style.height = \"0px\";\r\n}\r\n\r\nfunction showOverLay(selector: string, offsetTop: any) {\r\n var header = selector != \"\" ? document.querySelector(selector) : null;\r\n var viewportOffset = header != null ? header.getBoundingClientRect().top : 0;\r\n\r\n var overlay = document.querySelector(\"body .overlay-container\");\r\n overlay.classList.add(\"show\");\r\n\r\n var headerOverlay = document.querySelector(\"body .header-overlay\");\r\n headerOverlay.setAttribute(\"style\", \"top:\" + (viewportOffset + offsetTop) + \"px\");\r\n headerOverlay.classList.add(\"show\");\r\n}\r\n\r\nfunction hideOverlay() {\r\n var overlay = document.querySelector(\"body .overlay-container\");\r\n overlay.classList.remove(\"show\");\r\n var headerOverlay = document.querySelector(\"body .header-overlay\");\r\n headerOverlay.classList.remove(\"show\");\r\n}\r\n\r\nfunction showNotificationsWith(quantity: number) {\r\n if (!quantity) return;\r\n if (quantity <= 0) {\r\n headerNotificationWrapper.querySelector(\".header-badge .inner\").textContent = \"\"\r\n removeClass(headerNotificationWrapper, \"active\");\r\n return;\r\n }\r\n addClass(headerNotificationWrapper, \"active\");\r\n headerNotificationWrapper.querySelector(\".header-badge .inner\").textContent = quantity > 99 ? \"99+\" : quantity.toString();\r\n}\r\n\r\nfunction getNotifications() {\r\n isLoading = true;\r\n showLoadingWrapper();\r\n axios\r\n .post(\"/membernotification/list\", {\r\n UnReadOnly: false,\r\n take: 5,\r\n skip: SCROLL_COUNT * 5\r\n })\r\n .then((response) => {\r\n // console.log(\"loaded:\", SCROLL_COUNT);\r\n isLoading = false;\r\n SCROLL_COUNT++;\r\n hideLoadingWrapper();\r\n createNotificationListWith(response.Data.Documents);\r\n showNotificationsWith(response.Data.UnReadCount);\r\n setTimeout(() => {\r\n reinitScrollbar();\r\n }, 0);\r\n });\r\n}\r\n\r\nfunction reinitScrollbar(): void {\r\n // SimpleScrollbar.initAll();\r\n // let scrollContent = listScroller.querySelector(\".list-scroller\");\r\n // console.log(\"scrollContent\", scrollContent);\r\n\r\n if (listScroller) {\r\n listScroller.scrollTo({\r\n top: SCROLL_COUNT === 0 ? 0 : listScroller.scrollTop,\r\n behavior: \"smooth\"\r\n });\r\n // let scrollPos = listScroller.scrollTop;\r\n // console.log(\"scrollPos\", scrollPos);\r\n\r\n listScroller.removeEventListener(\"scroll\", onScroll);\r\n listScroller.addEventListener(\"scroll\", onScroll);\r\n }\r\n}\r\n\r\nlet onScroll = throttle(function (event: Event) {\r\n let target = event.target as HTMLElement;\r\n let offsetHeight = target.offsetHeight;\r\n let scrollHeight = target.scrollHeight;\r\n let scrollTop = target.scrollTop;\r\n let yawn = 10;\r\n // let clientHeight = target.clientHeight;\r\n // console.log(offsetHeight, scrollHeight, scrollTop);\r\n // console.log(\"__scroll\", event);\r\n if (offsetHeight + scrollTop + yawn >= scrollHeight) {\r\n if (!isLoading) getNotifications();\r\n }\r\n}, 300);\r\n\r\nfunction markAsRead(Id: number): void {\r\n axios\r\n .post(\"/membernotification/markasread \", { Id });\r\n}\r\n\r\nfunction createNotificationListWith(documents: INotificationDocument[]) {\r\n const nothingFoundWrapper = headerNotificationWrapper.querySelector(\".nothing-found\");\r\n const buttonAllNotifications = headerNotificationWrapper.querySelector(\".button-all-notifications\");\r\n // console.log(\"documents\", documents);\r\n\r\n\r\n if (documents.length > 0) {\r\n addClass(nothingFoundWrapper, \"dn\");\r\n removeClass(buttonAllNotifications, \"dn\");\r\n\r\n documents.forEach((data) => {\r\n const listElement = document.createElement(\"li\");\r\n if (!data.IsRead) listElement.classList.add(\"unread\");\r\n\r\n const anchorElement = document.createElement(\"a\");\r\n anchorElement.href = data.WebUrl;\r\n anchorElement.target = \"_self\";\r\n anchorElement.onclick = () => { markAsRead(data.Id); };\r\n\r\n const imageWrapper = document.createElement(\"div\");\r\n addClass(imageWrapper, \"image-wrapper\");\r\n\r\n const notificationImage = document.createElement(\"img\");\r\n notificationImage.src = data.ImageUrl;\r\n imageWrapper.appendChild(notificationImage);\r\n\r\n const detailsWrapper = document.createElement(\"div\");\r\n addClass(detailsWrapper, \"details-wrapper\");\r\n\r\n const title = document.createElement(\"div\");\r\n addClass(title, \"title\");\r\n title.innerText = data.Title;\r\n\r\n const detailContent = document.createElement(\"p\");\r\n detailContent.innerText = data.Body;\r\n\r\n const dateWrapper = document.createElement(\"div\");\r\n addClass(dateWrapper, \"date-wrapper\");\r\n\r\n const date = document.createElement(\"div\");\r\n date.innerText = data.CreatedDate;\r\n\r\n const time = document.createElement(\"div\");\r\n time.innerText = data.CreatedHour;\r\n\r\n dateWrapper.appendChild(date);\r\n dateWrapper.appendChild(time);\r\n\r\n detailsWrapper.appendChild(title);\r\n detailsWrapper.appendChild(detailContent);\r\n detailsWrapper.appendChild(dateWrapper);\r\n\r\n anchorElement.appendChild(imageWrapper);\r\n anchorElement.appendChild(detailsWrapper);\r\n\r\n listElement.appendChild(anchorElement);\r\n\r\n list.appendChild(listElement);\r\n // listScroller.style.height = \"auto\"; //\"390px\";\r\n // listScroller.style.maxHeight = \"390px\";\r\n });\r\n } else {\r\n removeClass(nothingFoundWrapper, \"dn\");\r\n removeClass(headerNotificationWrapper, \"active\");\r\n addClass(buttonAllNotifications, \"dn\");\r\n }\r\n}\r\n\r\nfunction hideLoadingWrapper() {\r\n addClass(headerNotificationWrapper.querySelector(\".loading\"), \"dn\");\r\n removeClass(headerNotificationWrapper.querySelector(\".button-all-notifications\"), \"dn\");\r\n}\r\n\r\nfunction showLoadingWrapper() {\r\n removeClass(headerNotificationWrapper.querySelector(\".loading\"), \"dn\");\r\n // addClass(headerNotificationWrapper.querySelector(\".button-all-notifications\"), \"dn\");\r\n}\r\n","import { getUser } from \"@components/header/member\";\r\nimport { INotCompletedAdvert } from \"@interfaces/member\";\r\nimport { removeClass, addClass } from \"@libs/utils\";\r\n\r\nexport default function() {\r\n const user = getUser();\r\n const wrapper = document.getElementById(\r\n \"header-not-completed-advert-wrapper\"\r\n );\r\n if (user.isUserLoggedIn && user.memberData.IndividualMember) {\r\n createNotCompletedAdvertArea(\r\n user.memberData.IndividualMember.NotCompletedAdvert,\r\n wrapper\r\n );\r\n }\r\n}\r\n\r\nfunction createNotCompletedAdvertArea(\r\n advert: INotCompletedAdvert,\r\n wrapper: Element\r\n) {\r\n if (advert) {\r\n addClass(wrapper.parentElement, \"not-completed\");\r\n\r\n const addInformationButton = wrapper.querySelector(\r\n \"#addInformationToNotCompletedAdvertButton\"\r\n );\r\n\r\n // Add info button event dispatcher\r\n addInformationButton.addEventListener(\"click\", () => {\r\n window.location.href = advert.EditUrl;\r\n });\r\n\r\n if (advert.PhotoUrl) {\r\n // Prepare image of advert\r\n const imageWrapper: Element = wrapper.querySelector(\".image-wrapper\");\r\n const image: HTMLImageElement = document.createElement(\"img\");\r\n let rawImagePath: string = advert.PhotoUrl;\r\n rawImagePath = rawImagePath.replace(\"{0}\", 160 + \"x\" + 120);\r\n image.src = rawImagePath;\r\n imageWrapper.appendChild(image);\r\n }\r\n\r\n // Progress bar for not completed advert\r\n const bar = wrapper.querySelector(\r\n \".progress-bar > .outer > .inner\"\r\n ) as HTMLDivElement;\r\n bar.style.width = `${advert.Point.Percentage}%`;\r\n\r\n removeClass(wrapper, \"dn\");\r\n }\r\n}\r\n","import { addClass } from \"@libs/utils\";\r\nimport {\r\n ICreateModalFooterButtonOptions,\r\n ICreateModalOptions\r\n} from \"@interfaces/modal-utils\";\r\n\r\nexport function createNewModalElement(options: ICreateModalOptions): void {\r\n if (options) {\r\n const innerModalData = document.getElementById(options.id)\r\n ? document.getElementById(options.id)\r\n : document.createElement(\"div\");\r\n innerModalData.id = options.id;\r\n\r\n const innerModalHeader = document.createElement(\"div\");\r\n addClass(innerModalHeader, \"modal-header\");\r\n innerModalHeader.innerText = options.title\r\n ? options.title\r\n : options.success\r\n ? \"İşlem Başarılı\"\r\n : \"Hata Oluştu!\";\r\n\r\n innerModalData.innerHTML = \"\";\r\n innerModalData.appendChild(innerModalHeader);\r\n\r\n if (options.message) {\r\n const innerModalContent = document.createElement(\"div\");\r\n addClass(innerModalContent, \"modal-inner-content\");\r\n\r\n innerModalContent.innerHTML = \"

\" + options.message + \"

\";\r\n innerModalData.appendChild(innerModalContent);\r\n }\r\n\r\n if (options.buttons) {\r\n innerModalData.appendChild(\r\n createModalFooter(options.buttons.close, options.buttons.confirm)\r\n );\r\n }\r\n\r\n addClass(innerModalData, \"dn\");\r\n\r\n document.body.style.top = window.pageYOffset + \"px\";\r\n\r\n if (document.getElementById(options.id) === null) {\r\n document.body.appendChild(innerModalData);\r\n }\r\n }\r\n}\r\n\r\nfunction createModalFooter(\r\n close?: ICreateModalFooterButtonOptions,\r\n confirm?: ICreateModalFooterButtonOptions\r\n): Element {\r\n const innerModalFooter = document.createElement(\"div\");\r\n addClass(innerModalFooter, \"modal-footer\");\r\n\r\n if (close && close.show) {\r\n innerModalFooter.appendChild(\r\n createModalButton(\r\n close.text ? close.text : \"Kapat\",\r\n \"btn-black2018\",\r\n close.callback\r\n )\r\n );\r\n }\r\n\r\n if (confirm && confirm.show) {\r\n innerModalFooter.appendChild(\r\n createModalButton(\r\n confirm.text ? confirm.text : \"Tamam\",\r\n \"btn-red-yellow-2018\",\r\n confirm.callback\r\n )\r\n );\r\n }\r\n\r\n return innerModalFooter;\r\n}\r\n\r\nfunction createModalButton(\r\n text: string,\r\n className: string,\r\n callback?: () => any\r\n): Element {\r\n const buttonWrapper = document.createElement(\"div\");\r\n addClass(buttonWrapper, \"button-wrapper\");\r\n\r\n const button = document.createElement(\"div\");\r\n addClass(button, \"btn\");\r\n addClass(button, className);\r\n button.innerText = text;\r\n\r\n buttonWrapper.addEventListener(\"click\", callback, false);\r\n buttonWrapper.appendChild(button);\r\n return buttonWrapper;\r\n}\r\n","import { getUser } from \"@components/header/member\";\r\nimport axios from \"@libs/axios\";\r\nimport { createNewModalElement } from \"@libs/modals\";\r\nimport { ICreateModalOptions } from \"@interfaces/modal-utils\";\r\nimport VanillaModal from \"vanilla-modal\";\r\nimport {\r\n createHeaderTopNotificationBar,\r\n destroyTopHeaderNotificationBar\r\n} from \"./top-notification-bar\";\r\n\r\nexport function bindCheckMailApproveNotification() {\r\n const data = getUser().memberData;\r\n const hasApprovedMail = data.IsMailApproved;\r\n\r\n if (!hasApprovedMail) {\r\n const emailAddress = data.MainUser.Email;\r\n const message =\r\n \"Üyelik işlemlerinizin tamamlanması için \" +\r\n emailAddress +\r\n \" adresinize gönderilen doğrulama linki onaylanmadı! \" +\r\n \"Doğrulama e-postası gelmediyse:\";\r\n\r\n if (!!emailAddress) {\r\n createHeaderTopNotificationBar({\r\n message,\r\n type: \"email\"\r\n }, \"Tekrar Gönder\", () => {\r\n bindResendAnchorClicked(emailAddress);\r\n });\r\n }\r\n }\r\n}\r\n\r\nfunction bindResendAnchorClicked(emailAddress: string) {\r\n axios\r\n .post(\"/authentication/sendActivation\", { email: emailAddress }, null, {\r\n showLoading: true\r\n })\r\n .then((response) => {\r\n import(/* webpackChunkName: \"emailApprovalModal\" */ \"vanilla-modal\").then(\r\n (modals) =>\r\n createNotValidatedEmailModal(\r\n response.Message,\r\n true,\r\n new modals.default()\r\n )\r\n );\r\n })\r\n .catch((error) => {\r\n import(/* webpackChunkName: \"emailApprovalModal\" */ \"vanilla-modal\").then(\r\n (modals) =>\r\n createNotValidatedEmailModal(\r\n error.Message,\r\n false,\r\n new modals.default()\r\n )\r\n );\r\n });\r\n}\r\n\r\nfunction createNotValidatedEmailModal(\r\n message: string,\r\n success: boolean = true,\r\n modal: VanillaModal\r\n): void {\r\n const options: ICreateModalOptions = {\r\n id: \"mail-approval-response\",\r\n message,\r\n success\r\n };\r\n\r\n options.buttons = success\r\n ? { confirm: { show: true, callback: () => modal.destroy() } }\r\n : {\r\n close: {\r\n show: true,\r\n callback: () => {\r\n modal.destroy();\r\n destroyTopHeaderNotificationBar();\r\n }\r\n }\r\n };\r\n\r\n createNewModalElement(options);\r\n modal.open(\"#mail-approval-response\");\r\n}\r\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nexport default arrayEach;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nexport default createBaseFor;\n","import createBaseFor from './_createBaseFor.js';\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nexport default baseFor;\n","import baseFor from './_baseFor.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nexport default baseForOwn;\n","import isArrayLike from './isArrayLike.js';\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nexport default createBaseEach;\n","import baseForOwn from './_baseForOwn.js';\nimport createBaseEach from './_createBaseEach.js';\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nexport default baseEach;\n","import identity from './identity.js';\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : identity;\n}\n\nexport default castFunction;\n","import arrayEach from './_arrayEach.js';\nimport baseEach from './_baseEach.js';\nimport castFunction from './_castFunction.js';\nimport isArray from './isArray.js';\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, castFunction(iteratee));\n}\n\nexport default forEach;\n","import hoverintent from 'hoverintent';\r\nexport default hoverintent;","'use strict';\n\nmodule.exports = function(el, onOver, onOut) {\n var x, y, pX, pY;\n var mouseOver = false;\n var focused = false;\n var h = {},\n state = 0,\n timer = 0;\n\n var options = {\n sensitivity: 7,\n interval: 100,\n timeout: 0,\n handleFocus: false\n };\n\n function delay(el, e) {\n if (timer) timer = clearTimeout(timer);\n state = 0;\n return focused ? undefined : onOut.call(el, e);\n }\n\n function tracker(e) {\n x = e.clientX;\n y = e.clientY;\n }\n\n function compare(el, e) {\n if (timer) timer = clearTimeout(timer);\n if ((Math.abs(pX - x) + Math.abs(pY - y)) < options.sensitivity) {\n state = 1;\n return focused ? undefined : onOver.call(el, e);\n } else {\n pX = x;\n pY = y;\n timer = setTimeout(function() {\n compare(el, e);\n }, options.interval);\n }\n }\n\n // Public methods\n h.options = function(opt) {\n var focusOptionChanged = opt.handleFocus !== options.handleFocus;\n options = Object.assign({}, options, opt);\n if (focusOptionChanged) {\n options.handleFocus ? addFocus() : removeFocus();\n }\n return h;\n };\n\n function dispatchOver(e) {\n mouseOver = true;\n if (timer) timer = clearTimeout(timer);\n el.removeEventListener('mousemove', tracker, false);\n\n if (state !== 1) {\n pX = e.clientX;\n pY = e.clientY;\n\n el.addEventListener('mousemove', tracker, false);\n\n timer = setTimeout(function() {\n compare(el, e);\n }, options.interval);\n }\n\n return this;\n }\n\n function dispatchOut(e) {\n mouseOver = false;\n if (timer) timer = clearTimeout(timer);\n el.removeEventListener('mousemove', tracker, false);\n\n if (state === 1) {\n timer = setTimeout(function() {\n delay(el, e);\n }, options.timeout);\n }\n\n return this;\n }\n\n function dispatchFocus(e) {\n if (!mouseOver) {\n focused = true;\n onOver.call(el, e);\n }\n }\n\n function dispatchBlur(e) {\n if (!mouseOver && focused) {\n focused = false;\n onOut.call(el, e);\n }\n }\n\n function addFocus() {\n el.addEventListener('focus', dispatchFocus, false);\n el.addEventListener('blur', dispatchBlur, false);\n }\n\n function removeFocus() {\n el.removeEventListener('focus', dispatchFocus, false);\n el.removeEventListener('blur', dispatchBlur, false);\n }\n\n h.remove = function() {\n if (!el) return;\n el.removeEventListener('mouseover', dispatchOver, false);\n el.removeEventListener('mouseout', dispatchOut, false);\n removeFocus();\n };\n\n if (el) {\n el.addEventListener('mouseover', dispatchOver, false);\n el.addEventListener('mouseout', dispatchOut, false);\n }\n\n return h;\n};\n","import debounce from './debounce.js';\nimport isObject from './isObject.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nexport default throttle;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nexport default baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nexport default strictIndexOf;\n","import baseFindIndex from './_baseFindIndex.js';\nimport baseIsNaN from './_baseIsNaN.js';\nimport strictIndexOf from './_strictIndexOf.js';\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nexport default baseIndexOf;\n","import baseIndexOf from './_baseIndexOf.js';\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\nfunction charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n}\n\nexport default charsEndIndex;\n","import baseIndexOf from './_baseIndexOf.js';\n\n/**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\nfunction charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n}\n\nexport default charsStartIndex;\n","import baseToString from './_baseToString.js';\nimport castSlice from './_castSlice.js';\nimport charsEndIndex from './_charsEndIndex.js';\nimport charsStartIndex from './_charsStartIndex.js';\nimport stringToArray from './_stringToArray.js';\nimport toString from './toString.js';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim(' abc ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map([' foo ', ' bar '], _.trim);\n * // => ['foo', 'bar']\n */\nfunction trim(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrim, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n chrSymbols = stringToArray(chars),\n start = charsStartIndex(strSymbols, chrSymbols),\n end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n return castSlice(strSymbols, start, end).join('');\n}\n\nexport default trim;\n","import { getCookie, setCookie } from \"../libs/cookie\";\r\nimport { showElement, hideElement } from \"../libs/utils\";\r\nimport { createHeaderTopNotificationBar } from \"@components/header/top-notification-bar\";\r\n\r\nfunction setCookieForHeaderCookieNotif() {\r\n // cookie yaz\r\n setCookie(\"cookieDisclaimer\", 1, 365);\r\n}\r\n\r\n/**\r\n * cookie barina tiklayinca calisacak callback\r\n */\r\nfunction cookieDisclaimerClickCallback() {\r\n setCookieForHeaderCookieNotif();\r\n // sari bari gizle\r\n window.location.href = \"/yardim/cerez-politikasi\";\r\n}\r\n\r\nwindow.addEventListener(\"load\", () => {\r\n // load aninda cookieyi okumaya calis\r\n const cookie = getCookie(\"cookieDisclaimer\");\r\n // cookie yoksa ya da degeri yanlissa\r\n if (!cookie) {\r\n createHeaderTopNotificationBar({\r\n message: \"Size daha iyi hizmet sunmak için çerezler kullanıyoruz. arabam.com`u kullanarak çerezlere izin veriyorsunuz.\",\r\n type: \"cookie\"\r\n }, \"Detaylı Bilgi\", cookieDisclaimerClickCallback, setCookieForHeaderCookieNotif);\r\n }\r\n});\r\n","import axios from \"@libs/axios\";\r\n\r\nimport { IMemberStatus, IMemberInfo, IArabamUserData } from \"@interfaces/member\";\r\n\r\nimport { buildDomTreeForLoggedInMobile, buildDomTreeForGuestUserMobile } from \"./header.mobile\";\r\n\r\nimport { setHeaderFavorites, initMenusForLoggedUser, initMenusForGuestUser } from \"./user-menus\";\r\nimport { getCookie, setCookie } from \"@libs/cookie\";\r\n\r\nimport { bindCheckMailApproveNotification } from \"./member-email-approve\";\r\n\r\nexport const INDEX_ARABAM_USER = \"arabamUser\";\r\nexport const INDEX_IS_USER_LOGGED_IN = \"isUserLoggedIn\";\r\nexport const INDEX_MEMBER_DATA = \"memberData\";\r\nexport const INDEX_MEMBER_STATUS = \"memberStatus\";\r\nexport const INDEX_IS_FETCHING_MEMBER = \"isFetchingMember\";\r\ndeclare var olark: any;\r\nlet userStatus: IMemberStatus = null;\r\nexport let userData: IMemberInfo = null;\r\n\r\nlet memberInfo: any;\r\nexport function getMemberData(): Promise {\r\n return new Promise((resolve, reject) => {\r\n if (memberInfo) {\r\n return resolve(memberInfo);\r\n }\r\n\r\n return memberInfo;\r\n });\r\n}\r\n\r\nconst isMobile: boolean = getConfiguration(\"IsMobile\");\r\n\r\nexport default function (): void {\r\n setUser(INDEX_IS_USER_LOGGED_IN, false);\r\n (window as any)[INDEX_IS_FETCHING_MEMBER] = false;\r\n getStatus().then((promiseResponse: any) => {\r\n if (!!promiseResponse) {\r\n getMemberInfo();\r\n }\r\n });\r\n}\r\n\r\nexport function getStatus(): any {\r\n return axios\r\n .get(\"/info/status\")\r\n .then((response) => {\r\n userStatus = response.Data;\r\n return response;\r\n })\r\n .catch(setUserNotLoggedIn);\r\n}\r\n\r\nexport function getUser(): IArabamUserData {\r\n return (window as any)[INDEX_ARABAM_USER];\r\n}\r\n\r\nexport function setUser(index: string, data: T): void {\r\n if (!(window as any)[INDEX_ARABAM_USER]) {\r\n (window as any)[INDEX_ARABAM_USER] = {};\r\n }\r\n (window as any)[INDEX_ARABAM_USER][index] = data;\r\n}\r\n\r\nexport function getMemberInfo(): void {\r\n memberInfo = axios\r\n .get(`/home/memberInfo?random=${new Date().getTime()}`)\r\n .then((response) => {\r\n userData = response.Data;\r\n if (userData.Type == 1) {\r\n if (!!userData) {\r\n setUserLoggedIn();\r\n }\r\n } else {\r\n initOlark(userData);\r\n axios\r\n .get(`/api/auction-permissions?random=${new Date().getTime()}`)\r\n .then((response) => {\r\n userData.AuctioPermissions = response.Data;\r\n if (!!userData) {\r\n setUserLoggedIn();\r\n }\r\n })\r\n .catch((error) => console.error(\"Error while getting member info from server. Error: \" + error.message));\r\n }\r\n })\r\n .catch((error) => console.error(\"Error while getting member info from server. Error: \" + error.message));\r\n}\r\n\r\nfunction initOlark(userData: any): void {\r\n //\r\n olark(\"api.box.setLocale\", \"tr-TR\");\r\n setTimeout(() => {\r\n olark.configure(\"system.localization\", \"tr-TR\");\r\n }, 500);\r\n\r\n olark.configure(\"locale.offline_survey_name_label\", \"Adınız\");\r\n olark.configure(\"locale.prechat_survey_name_label\", \"Adınız\");\r\n\r\n olark.configure(\"locale.offline_survey_email_label\", \"E-posta\");\r\n olark.configure(\"locale.prechat_survey_email_label\", \"E-posta\");\r\n\r\n olark.configure(\"locale.offline_survey_phone_label\", \"Telefon Numaranız\");\r\n olark.configure(\"locale.prechat_survey_phone_label\", \"Telefon Numaranız\");\r\n\r\n olark.configure(\"locale.offline_survey_next_button_text\", \"İlerle\");\r\n\r\n olark(\"api.visitor.updateEmailAddress\", {\r\n emailAddress: userData.Email\r\n });\r\n olark(\"api.visitor.updateFullName\", {\r\n fullName: userData.Name + \" \" + userData.Surname\r\n });\r\n olark(\"api.visitor.updatePhoneNumber\", {\r\n phoneNumber: userData.FormattedMobilePhone\r\n });\r\n olark.identify(\"8512-479-10-9304\");\r\n olark(\"api.chat.onBeginConversation\", function () {\r\n olark(\"api.chat.sendNotificationToOperator\", {\r\n body: \"Musteri Detay : http://adminv2.arabamd.com/membership/memberdetail?id=\" + userData.Id + \"&tab=ozet\"\r\n });\r\n });\r\n\r\n olark(\"api.chat.onOfflineMessageToOperator\", function (event: any) {\r\n olark(\"api.chat.sendNotificationToOperator\", {\r\n body: \"Musteri Detay : http://adminv2.arabamd.com/membership/memberdetail?id=\" + userData.Id + \"&tab=ozet\"\r\n });\r\n });\r\n}\r\n\r\nexport function getConfiguration(index: string): T {\r\n return (window as any).configuration && (window as any).configuration[index] ? (window as any).configuration[index] : null;\r\n}\r\n\r\nfunction setUserNotLoggedIn(): void {\r\n setUser(INDEX_IS_USER_LOGGED_IN, false);\r\n (window as any)[INDEX_IS_FETCHING_MEMBER] = true;\r\n if (!isMobile) {\r\n setHeaderFavorites();\r\n }\r\n bindAngularStuff(false);\r\n\r\n // Bildirim ve dropdown componentleri için \"misafir\" modu init edilecek\r\n if (isMobile) {\r\n buildDomTreeForGuestUserMobile();\r\n } else {\r\n initMenusForGuestUser();\r\n }\r\n}\r\n// false true false\r\n\r\nfunction bindAngularStuff(isLoggedIn: boolean): void {\r\n const ang = (window as any).angular;\r\n if (!!ang) {\r\n try {\r\n const $html = ang.element(document.body.parentNode as any);\r\n const $rootScope = $html.injector().get(\"$rootScope\");\r\n $rootScope.$apply(() => {\r\n if (isLoggedIn) {\r\n $rootScope.Properties = $rootScope.Properties || {};\r\n $rootScope.Properties.IsUserLoggedIn = true;\r\n $rootScope.Properties.IsEmailRequired = !userData.Email;\r\n $rootScope.Properties.IsMailApproved = userData.IsMailApproved;\r\n $rootScope.Properties.CommercialMember = userData && !!userData.CommercialMember;\r\n\r\n $rootScope.UnreadFavCount = userStatus.FavoritedAdvertCount;\r\n $rootScope.UnreadMessageCount = userStatus.UnreadMessageCount;\r\n $rootScope.UnreadNotificationCount = userStatus.UnReadNotificationCount;\r\n $rootScope.MissedCallCount = userStatus.RoutePhoneMissedCallCount;\r\n } else {\r\n $rootScope.Properties.IsUserLoggedIn = false;\r\n $rootScope.Properties.IsEmailRequired = true;\r\n $rootScope.Properties.IsMailApproved = false;\r\n }\r\n });\r\n } catch (error) {\r\n console.error(error.message);\r\n }\r\n }\r\n}\r\n\r\nfunction setUserLoggedIn(): void {\r\n setUser(INDEX_IS_USER_LOGGED_IN, true);\r\n setUser(INDEX_MEMBER_STATUS, userStatus);\r\n setUser(INDEX_MEMBER_DATA, userData);\r\n (window as any)[INDEX_IS_FETCHING_MEMBER] = true;\r\n bindAngularStuff(true);\r\n bindCheckMailApproveNotification();\r\n\r\n // Kullanıcılar için gerekli olan dropdown, bildirimler init edilecek\r\n if (isMobile) {\r\n buildDomTreeForLoggedInMobile();\r\n } else {\r\n initMenusForLoggedUser();\r\n }\r\n setHeaderFavorites();\r\n if (userData.Type == 2) {\r\n var popupCampaignElement = document.getElementById(\"js-hook-arabam-campaign-popup-container\");\r\n var cookieName = \"mtvCampaignpopup\";\r\n var showPopup = getCookie(cookieName);\r\n var todayDate = new Date();\r\n var showPopupDateTime = new Date('2019-12-31T23:59:59');\r\n if (\r\n false &&\r\n todayDate <= showPopupDateTime &&\r\n popupCampaignElement &&\r\n window.location.href.indexOf(\"/ihale\") > -1\r\n ) {\r\n if (\r\n !showPopup &&\r\n navigator.userAgent.indexOf(\"Google Page Speed Insights\") == -1 &&\r\n navigator.userAgent.indexOf(\"Chrome-Lighthouse\") == -1\r\n ) {\r\n popupCampaignElement.classList.remove(\"dn\");\r\n popupCampaignElement.querySelector(\"img\").addEventListener(\"click\", function (event) {\r\n setCookie(cookieName, \"visited\", 30);\r\n event.preventDefault();\r\n });\r\n popupCampaignElement.querySelector(\".close-button\").addEventListener(\"click\", function (event) {\r\n setCookie(cookieName, \"visited\", 30);\r\n popupCampaignElement.outerHTML = \"\";\r\n event.preventDefault();\r\n });\r\n popupCampaignElement.addEventListener(\"click\", function (event) {\r\n setCookie(cookieName, \"visited\", 30);\r\n popupCampaignElement.outerHTML = \"\";\r\n });\r\n }\r\n }\r\n }\r\n}\r\n","export function getCookie(name: string): any {\r\n const value = \"; \" + document.cookie;\r\n const parts = value.split(\"; \" + name + \"=\");\r\n if (parts.length === 2) {\r\n return parts\r\n .pop()\r\n .split(\";\")\r\n .shift();\r\n }\r\n}\r\n\r\nexport function setCookie(name: string, value: any, days: number) {\r\n let date: any;\r\n let expires: any;\r\n if (days) {\r\n date = new Date();\r\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\r\n expires = \"; expires=\" + date.toGMTString();\r\n } else {\r\n expires = \"\";\r\n }\r\n document.cookie = name + \"=\" + value + expires + \"; path=/\";\r\n}\r\n","import { setDataLayer } from \"@libs/analytics\";\r\nimport { setSegmentifyLoginOps } from \"@libs/segmentify\";\r\nimport Axios from \"@libs/axios\";\r\nimport searchBarComponentInit from \"./searchBox\";\r\nimport memberUtilsInit, { userData } from \"./member\";\r\nimport { getUser, getMemberData } from \"@components/header/member\";\r\nimport { IArabamUserData } from \"@interfaces/member\";\r\nimport { INotificationData } from \"@interfaces/notifications\";\r\nimport { addClass, removeClass } from \"@libs/utils\";\r\nimport \"@components/cookieDisclaimer\";\r\nimport { getCookie, setCookie } from \"@libs/cookie\";\r\nexport * from \"./../home/modals\";\r\nimport { throttle } from \"lodash-es\";\r\n\r\nconst var1ables: any = {};\r\ndeclare var favorited: any;\r\ndeclare var advertId: any;\r\ndeclare var advertTitle: any;\r\ndeclare var FB: any;\r\nlet member: any;\r\nlet NOTIFICATION_SCROLL_COUNT = 0;\r\nlet isLoading = true;\r\nlet NOTIFICATION_BUILT = false;\r\n\r\nexport class EditFavoriteAdvertRequest {\r\n MemberFavoriteListId: number;\r\n AdvertId: number;\r\n Name: string;\r\n}\r\nexport default function () {\r\n /**\r\n * Member utils\r\n * @description Kullanıcı giriş yaptı mı?\r\n * Favoriler, bildirimler burada init edilecek.\r\n * User-dropdown ve user menüleri de burada olacak\r\n */\r\n\r\n var popupCampaignElement = document.getElementById(\"js-hook-arabam-campaign-popup-container\");\r\n var cookieName = \"turboCampaignpopup\";\r\n var showPopup = getCookie(cookieName);\r\n var popupStartDate = new Date(\"2019-11-29T00:00:00\");\r\n var popupEndDate = new Date(\"2019-11-29T23:59:59\");\r\n var currentDate = new Date();\r\n if (\r\n currentDate >= popupStartDate &&\r\n currentDate <= popupEndDate &&\r\n popupCampaignElement &&\r\n window.location.href.indexOf(\"/turbolar\") == -1\r\n ) {\r\n if (\r\n !showPopup &&\r\n navigator.userAgent.indexOf(\"Google Page Speed Insights\") == -1 &&\r\n navigator.userAgent.indexOf(\"Chrome-Lighthouse\") == -1\r\n ) {\r\n popupCampaignElement.classList.remove(\"dn\");\r\n popupCampaignElement.querySelector(\"img\").addEventListener(\"click\", function (event) {\r\n setCookie(cookieName, \"visited\", 30);\r\n window.location.href = \"/turbolar\";\r\n event.preventDefault();\r\n });\r\n popupCampaignElement.querySelector(\".close-button\").addEventListener(\"click\", function (event) {\r\n setCookie(cookieName, \"visited\", 30);\r\n popupCampaignElement.remove();\r\n event.preventDefault();\r\n });\r\n popupCampaignElement.addEventListener(\"click\", function (event) {\r\n setCookie(cookieName, \"visited\", 30);\r\n popupCampaignElement.remove();\r\n });\r\n }\r\n }\r\n\r\n setInitialVariables();\r\n clickHandlers();\r\n dataLayerClickHandlers();\r\n scroll();\r\n setEventListenerToFavorite();\r\n setEventListenerToshare();\r\n closeAllSubMenu();\r\n}\r\n\r\nfunction setEventListenerToFavorite() {\r\n const elem = document.getElementById(\"js-hook-for-header-favorite\");\r\n const newItemElem = document.getElementById(\"js-hook-for-new-fav-item\");\r\n const newItembutton = document.querySelector(\".new-list-button\");\r\n const HeaderButtonOverlay = document.querySelector(\".header-button-overlay-container\");\r\n if (elem) {\r\n elem.addEventListener(\"click\", toggleFav);\r\n } else {\r\n return false;\r\n }\r\n if (newItemElem) {\r\n newItemElem.addEventListener(\"click\", addNewItemToFavList);\r\n }\r\n if (newItembutton) {\r\n newItembutton.addEventListener(\"click\", showAddNewItemToFavList);\r\n }\r\n\r\n if (HeaderButtonOverlay) {\r\n HeaderButtonOverlay.addEventListener(\"click\", hideHeaderOverlay);\r\n }\r\n}\r\nfunction showAddNewItemToFavList() {\r\n const addNewList = document.querySelector(\".add-new-list\");\r\n addNewList.classList.remove(\"dn\");\r\n const newItembutton = document.querySelector(\".new-list-button\");\r\n newItembutton.classList.add(\"dn\");\r\n}\r\n\r\nfunction hideHeaderOverlay() {\r\n const HeaderButtonOverlay = document.querySelector(\".header-button-overlay-container\");\r\n const shareElem = document.querySelector(\".share-container\");\r\n var favListContainer = document.querySelector(\".fav-list-container\");\r\n if (HeaderButtonOverlay) {\r\n HeaderButtonOverlay.classList.add(\"dn\");\r\n }\r\n favListContainer.classList.add(\"dn\");\r\n shareElem.classList.add(\"dn\");\r\n\r\n const favButtonElem = document.getElementById(\"js-hook-for-header-favorite\");\r\n if (favButtonElem) {\r\n favButtonElem.classList.remove(\"active\");\r\n }\r\n\r\n const shareButtonElement = document.getElementById(\"js-hook-for-header-share\");\r\n if (shareButtonElement) {\r\n shareButtonElement.classList.remove(\"active\");\r\n }\r\n}\r\n\r\nfunction showHeaderOverlay(type: any) {\r\n const HeaderButtonOverlay = document.querySelector(\".header-button-overlay-container\");\r\n if (HeaderButtonOverlay) {\r\n HeaderButtonOverlay.classList.remove(\"dn\");\r\n }\r\n if (type == \"fav\") {\r\n const favElem = document.getElementById(\"js-hook-for-header-favorite\");\r\n if (favElem) {\r\n favElem.classList.add(\"active\");\r\n }\r\n } else if (type == \"share\") {\r\n const shareButtonElement = document.getElementById(\"js-hook-for-header-share\");\r\n if (shareButtonElement) {\r\n shareButtonElement.classList.add(\"active\");\r\n }\r\n }\r\n}\r\n\r\nfunction addNewItemToFavList() {\r\n const request = new EditFavoriteAdvertRequest();\r\n const inputElement: any = document.getElementById(\"fav-new-item-name\");\r\n request.Name = inputElement.value;\r\n request.AdvertId = advertId;\r\n if (request.Name.trim().length > 0) {\r\n inputElement.classList.remove(\"empty-error\");\r\n Axios.post(\"/ilan/favori\", request).then((data: any) => {\r\n setDataLayer(\"Ilan Detay\", \"Favorilere Ekle - Yeni Liste Oluştur\", \"Click\", \"gaEvent\");\r\n const favElem = document.getElementById(\"js-hook-for-header-favorite\");\r\n if (favElem) {\r\n favElem.classList.add(\"favorited\");\r\n }\r\n favorited = true;\r\n hideHeaderOverlay();\r\n });\r\n } else {\r\n inputElement.classList.add(\"empty-error\");\r\n }\r\n}\r\n\r\nfunction setEventListenerToshare() {\r\n const shareButtonElement = document.getElementById(\"js-hook-for-header-share\");\r\n const facebookShareButton = document.getElementById(\"js-hook-sahre-in-facebook\");\r\n if (shareButtonElement) {\r\n shareButtonElement.addEventListener(\"click\", sharePageLink);\r\n facebookShareButton.addEventListener(\"click\", shareInFacebook);\r\n }\r\n}\r\n\r\nfunction sharePageLink() {\r\n let newVariable: any;\r\n\r\n newVariable = window.navigator;\r\n\r\n if (newVariable && newVariable.share) {\r\n newVariable\r\n .share({\r\n title: advertTitle,\r\n text: \"arabam.com\",\r\n url: window.location.href\r\n })\r\n .then(() => console.log(\"Successful share\"))\r\n .catch((error: any) => console.log(\"Error sharing\", error));\r\n } else {\r\n const shareElem = document.querySelector(\".share-container\");\r\n if (shareElem) {\r\n showHeaderOverlay(\"share\");\r\n shareElem.classList.remove(\"dn\");\r\n }\r\n }\r\n}\r\n\r\nfunction loadFacebookSDK() {\r\n const promise = new Promise((resolve, reject) => {\r\n // Load the SDK asynchronously\r\n if (!(window as any).FB) {\r\n ((d: any, s: any, id: any) => {\r\n let js: any;\r\n const fjs = d.getElementsByTagName(s)[0];\r\n if (d.getElementById(id)) {\r\n return;\r\n }\r\n js = d.createElement(s);\r\n js.id = id;\r\n js.src = \"https://connect.facebook.net/tr_TR/sdk.js\";\r\n fjs.parentNode.insertBefore(js, fjs);\r\n })(document, \"script\", \"facebook-jssdk\");\r\n\r\n (window as any).fbAsyncInit = () => {\r\n (FB as any).init({\r\n appId: \"19995709208\",\r\n cookie: false, // enable cookies to allow the server to access\r\n // status: false, // the session\r\n // xfbml: true, // parse social plugins on this page\r\n version: \"v3.0\" // use graph api version 2.5\r\n });\r\n resolve(\"done\");\r\n };\r\n } else {\r\n resolve(\"done\");\r\n }\r\n });\r\n\r\n return promise;\r\n}\r\n\r\nfunction shareInFacebook() {\r\n setDataLayer(\"Ilan Detay\", \"Paylaş\", \"facebook\", \"gaEvent\", true);\r\n loadFacebookSDK().then(() => {\r\n // deprecated diyor buna\r\n FB.ui(\r\n {\r\n method: \"feed\",\r\n link: window.location.href,\r\n caption: \"arabam.com\"\r\n } as any,\r\n (response: any) => console.log(\"response\", response)\r\n );\r\n });\r\n}\r\n\r\nfunction toggleFav(event: any) {\r\n //event.preventDefault();\r\n //event.stopPropagation();\r\n\r\n const addNewList = document.querySelector(\".add-new-list\");\r\n addNewList.classList.add(\"dn\");\r\n const newItembutton = document.querySelector(\".new-list-button\");\r\n newItembutton.classList.remove(\"dn\");\r\n\r\n document.getElementById(\"fav-new-item-name\").classList.remove(\"empty-error\");\r\n if (favorited) {\r\n Axios.delete(\"/ilan/favorisil?Id=\" + advertId).then((data: any) => {\r\n favorited = false;\r\n const favElem = document.getElementById(\"js-hook-for-header-favorite\");\r\n if (favElem) {\r\n favElem.classList.remove(\"favorited\");\r\n }\r\n });\r\n } else {\r\n showHeaderOverlay(\"fav\");\r\n var favListElem: any = document.getElementById(\"js-hook-for-header-favorite-list\");\r\n favListElem.innerHTML = \"\";\r\n var favListContainer = document.querySelector(\".fav-list-container\");\r\n favListContainer.classList.remove(\"dn\");\r\n if (favListElem && favListElem.innerHTML.length == 0) {\r\n favListContainer.querySelector(\".fav-list-loading\").classList.remove(\"dn\");\r\n favListElem.classList.add(\"dn\");\r\n Axios.get(`/favoriteadvert/light-lists?random=${new Date().getTime()}`)\r\n .then((response) => {\r\n response.Data.forEach((element: any) => {\r\n const listItem = document.createElement(\"a\");\r\n listItem.href = \"javascript:;\";\r\n listItem.innerHTML = element.Name;\r\n listItem.addEventListener(\"click\", (event: any) => {\r\n addToFav(element.Id, event);\r\n });\r\n favListElem.append(listItem);\r\n });\r\n\r\n setDataLayer(\"Ilan Detay\", \"Favorilere Ekle\", \"Click\", \"gaEvent\", true);\r\n favListContainer.querySelector(\".fav-list-loading\").classList.add(\"dn\");\r\n favListElem.classList.remove(\"dn\");\r\n })\r\n .catch((error) => console.error(\"Error =\" + error.message));\r\n } else {\r\n favListContainer.querySelector(\".fav-list-loading\").classList.add(\"dn\");\r\n favListElem.classList.remove(\"dn\");\r\n }\r\n }\r\n}\r\n\r\nfunction addToFav(id: any, event?: any) {\r\n event.preventDefault();\r\n const request = new EditFavoriteAdvertRequest();\r\n const favListElem = document.getElementById(\"js-hook-for-header-favorite-list\");\r\n var favListContainer = document.querySelector(\".fav-list-container\");\r\n\r\n favListContainer.querySelector(\".fav-list-loading\").classList.remove(\"dn\");\r\n favListElem.classList.add(\"dn\");\r\n\r\n request.MemberFavoriteListId = id;\r\n request.AdvertId = advertId;\r\n Axios.post(\"/ilan/favori\", request).then((data: any) => {\r\n const favElem = document.getElementById(\"js-hook-for-header-favorite\");\r\n if (favElem) {\r\n favElem.classList.add(\"favorited\");\r\n }\r\n hideHeaderOverlay();\r\n\r\n favorited = true;\r\n setDataLayer(\"Ilan Detay\", \"Favorilere Ekle - Yeni Liste Oluştur\", \"Click\", \"gaEvent\");\r\n });\r\n}\r\n\r\nfunction scroll() {\r\n const elem = document.getElementById(\"js-hook-for-visible-shd-navigation\");\r\n const stickyElem = document.getElementById(\"sticky-free-advert\");\r\n window.addEventListener(\"scroll\", (e) => {\r\n if (\r\n (window.pageYOffset || window.scrollY || document.body.scrollTop) + screen.height >=\r\n elem.offsetHeight + stickyElem.offsetHeight\r\n ) {\r\n stickyElem.style.position = \"absolute\";\r\n } else {\r\n stickyElem.style.position = \"fixed\";\r\n }\r\n });\r\n}\r\n\r\nfunction setVar(name: string, val: any) {\r\n var1ables[name] = val;\r\n}\r\n\r\nfunction getVar(name: string): any {\r\n return var1ables[name];\r\n}\r\n\r\nfunction setInitialVariables() {\r\n setVar(\"showNavigation\", true);\r\n // setVar(\"header\", document.getElementById(\"header\"));\r\n // callHashListenerEvents();\r\n}\r\n\r\nfunction clickHandlers() {\r\n /**\r\n * Header logo tıklanması durumunda eğer ilan detayda değilse kullanıcı\r\n * anasayfaya yönlendirilecek.\r\n * TODO: Faz2: Header her sayfada rahatça uygulanabilmeli. Özellikle ilan\r\n * verme ve düzenleme sayfalarında\r\n */\r\n var logoElem = document.getElementById(\"js-hook-for-header-logo-click\");\r\n if (logoElem) {\r\n logoElem.addEventListener(\"click\", onClickHeaderLogo);\r\n }\r\n\r\n var menuElem = document.getElementById(\"js-hook-for-header-mobile-menu\");\r\n if (menuElem) {\r\n menuElem.addEventListener(\"click\", onClickShowHeaderMenu);\r\n bindCloseButtonForHeaderMenu();\r\n }\r\n\r\n document.getElementById(\"js-hook-for-header-logout-btn\").addEventListener(\"click\", onClickHeaderLogout);\r\n\r\n // Header search bar\r\n searchBarComponentInit();\r\n\r\n buildNavigationTogglers();\r\n}\r\n\r\nexport function bindCloseButtonForHeaderMenu() {\r\n document.getElementById(\"js-hook-for-click-close-shd\").addEventListener(\"click\", onCloseRedPopup);\r\n\r\n document.getElementById(\"js-hook-for-click-close-btn-shd\").addEventListener(\"click\", onCloseRedPopup);\r\n\r\n closeAllSubMenu();\r\n}\r\n\r\nexport function onClickShowHeaderMenu() {\r\n // addClass(document.body, \"disable-scrollbar\");\r\n addClass(document.getElementById(\"js-hook-for-header-mobile-menu\"), \"dn\");\r\n removeClass(document.getElementById(\"js-hook-for-click-close-shd\"), \"dn\");\r\n removeClass(document.getElementById(\"close-navigation-menu\"), \"dn\");\r\n removeClass(document.getElementById(\"js-hook-for-shd-wrapper\"), \"dn\");\r\n removeClass(document.getElementById(\"js-hook-for-visible-shd-navigation\"), \"dn\");\r\n addClass(document.getElementById(\"header-notification-bar\"), \"dn\");\r\n scroll();\r\n}\r\n\r\nexport function onCloseRedPopup() {\r\n // removeClass(document.body, \"disable-scrollbar\");\r\n addClass(document.getElementById(\"js-hook-for-click-close-shd\"), \"dn\");\r\n removeClass(document.getElementById(\"js-hook-for-header-mobile-menu\"), \"dn\");\r\n addClass(document.getElementById(\"close-navigation-menu\"), \"dn\");\r\n addClass(document.getElementById(\"js-hook-for-shd-wrapper\"), \"dn\");\r\n removeClass(document.getElementById(\"header-notification-bar\"), \"dn\");\r\n\r\n const notificationWrapper = document.getElementById(\"js-hook-for-visible-shd-notification\");\r\n\r\n if (!!notificationWrapper) {\r\n addClass(notificationWrapper, \"dn\");\r\n }\r\n\r\n addClass(document.getElementById(\"js-hook-for-visible-shd-navigation\"), \"dn\");\r\n\r\n window.removeEventListener(\"scroll\", null);\r\n closeAllSubMenu();\r\n}\r\n\r\nfunction onClickToggleNotificationPopup() {\r\n // addClass(document.body, \"disable-scrollbar\");\r\n let shdWrapper = document.getElementById(\"js-hook-for-shd-wrapper\");\r\n if (!shdWrapper) return;\r\n let isOpen = !shdWrapper.classList.contains(\"dn\");\r\n NOTIFICATION_SCROLL_COUNT = 0;\r\n\r\n if (isOpen) {\r\n addClass(shdWrapper, \"dn\");\r\n addClass(document.getElementById(\"js-hook-for-click-close-shd\"), \"dn\");\r\n removeClass(document.getElementById(\"js-hook-for-header-mobile-menu\"), \"dn\");\r\n addClass(document.getElementById(\"close-navigation-menu\"), \"dn\");\r\n removeClass(document.getElementById(\"js-hook-for-visible-shd-navigation\"), \"dn\");\r\n removeClass(document.getElementById(\"header-notification-bar\"), \"dn\");\r\n clearNotificationList();\r\n } else {\r\n removeClass(shdWrapper, \"dn\");\r\n removeClass(document.getElementById(\"js-hook-for-visible-shd-notification\"), \"dn\");\r\n removeClass(document.getElementById(\"js-hook-for-click-close-shd\"), \"dn\");\r\n addClass(document.getElementById(\"js-hook-for-header-mobile-menu\"), \"dn\");\r\n removeClass(document.getElementById(\"close-navigation-menu\"), \"dn\");\r\n // addClass(document.getElementById(\"js-hook-for-shd-wrapper\"), \"dn\");\r\n addClass(document.getElementById(\"js-hook-for-visible-shd-navigation\"), \"dn\");\r\n addClass(document.getElementById(\"header-notification-bar\"), \"dn\");\r\n getNotifications();\r\n }\r\n}\r\n\r\nfunction clearNotificationList(): void {\r\n // TODO: clear dom\r\n let listEl = document.getElementById(\"js-hook-for-notification-list\");\r\n console.log(\"clearing:\");\r\n\r\n let notificationItems = listEl\r\n ? listEl.querySelectorAll(\".notification-item:not(#js-hook-for-notification-list-last-item)\")\r\n : null;\r\n if (notificationItems) {\r\n for (let index = 0; index < notificationItems.length; index++) {\r\n const element = notificationItems[index];\r\n listEl.removeChild(element);\r\n }\r\n }\r\n}\r\n\r\nfunction onClickHeaderLogo(event?: MouseEvent) {\r\n setDataLayer(\"Header\", \"Logo\", \"Click\", \"gaEvent\", true);\r\n if (!getVar(\"showNavigation\")) {\r\n event.preventDefault();\r\n }\r\n}\r\n\r\nfunction onClickHeaderLogout(event: MouseEvent) {\r\n const domElem: HTMLAnchorElement = event.target as HTMLAnchorElement;\r\n setSegmentifyLoginOps(\"signout\", +domElem.getAttribute(\"data-user-id\"));\r\n document.cookie = \"footerVideoCallInformationDisplay=;expires=Fri, 31 May 2013 00:00:01 GMT;path=/\";\r\n}\r\n\r\nexport function buildDomTreeForGuestUserMobile() {\r\n const headerMobileVisibleLoggedInWrapper = document.getElementById(\"js-hook-for-header-visible-loggedin\");\r\n\r\n if (!!headerMobileVisibleLoggedInWrapper) {\r\n addClass(headerMobileVisibleLoggedInWrapper, \"dn\");\r\n }\r\n\r\n const headerMobileLogoutButtonWrapper = document.getElementById(\"js-hook-for-header-visible-logout-btn\");\r\n\r\n if (!!headerMobileLogoutButtonWrapper) {\r\n addClass(headerMobileLogoutButtonWrapper, \"dn\");\r\n }\r\n headerMobileLogoutButtonWrapper.addEventListener(\"click\", function () {\r\n sessionStorage.clear();\r\n });\r\n\r\n const headerMobileNotificationWrapper = document.getElementById(\"js-hook-for-header-visible-notification\");\r\n\r\n if (!!headerMobileNotificationWrapper) {\r\n addClass(headerMobileNotificationWrapper, \"dn\");\r\n }\r\n\r\n const headerVisibleNotLoggedInWrapper = document.getElementById(\"js-hook-for-header-visible-not-loggedin\");\r\n\r\n if (headerVisibleNotLoggedInWrapper) {\r\n removeClass(headerVisibleNotLoggedInWrapper, \"dn\");\r\n }\r\n\r\n //getFavPlaceholder();\r\n}\r\n\r\nexport function buildDomTreeForLoggedInMobile() {\r\n const userLoginHeader = document.getElementById(\"js-hook-for-header-visible-loggedin\");\r\n\r\n if (!!userLoginHeader) {\r\n removeClass(userLoginHeader, \"dn\");\r\n }\r\n\r\n const guestLoginHeader = document.getElementById(\"js-hook-for-header-visible-not-loggedin\");\r\n\r\n if (!!guestLoginHeader) {\r\n addClass(guestLoginHeader, \"dn\");\r\n }\r\n\r\n const notificationWrapper = document.getElementById(\"js-hook-for-header-visible-notification\");\r\n\r\n if (!!notificationWrapper) {\r\n removeClass(notificationWrapper, \"dn\");\r\n }\r\n\r\n const logoutButton = document.getElementById(\"js-hook-for-header-visible-logout-btn\");\r\n\r\n if (!!logoutButton) {\r\n removeClass(logoutButton, \"dn\");\r\n }\r\n\r\n setVar(\"userData\", getUser());\r\n getNamePlaceholder();\r\n //getFavPlaceholder();\r\n getNotificationPlaceholder();\r\n}\r\n\r\nfunction getNamePlaceholder() {\r\n const userData: IArabamUserData = getVar(\"userData\");\r\n if (!userData) {\r\n return;\r\n }\r\n const namePlaceholderDom = document.getElementById(\"js-hook-for-header-name-placeholder\");\r\n\r\n let nameSurname: string = `${userData.memberData.MainUser.Name.toLocaleUpperCase()} `;\r\n nameSurname += `${userData.memberData.MainUser.SurName.toLocaleUpperCase()}`;\r\n\r\n const frag = document.createDocumentFragment();\r\n const domS = document.createElement(\"span\");\r\n const text = document.createTextNode(nameSurname);\r\n domS.appendChild(text);\r\n frag.appendChild(domS);\r\n namePlaceholderDom.innerHTML = null;\r\n namePlaceholderDom.appendChild(frag);\r\n\r\n const servicesMobile = document.getElementById(\"price-suggestion-services-mobile\") as HTMLAnchorElement;\r\n const buycarMobile = document.getElementById(\"price-suggestion-buycar-mobile\") as HTMLAnchorElement;\r\n const sellcarMobile = document.getElementById(\"price-suggestion-sellcar-mobile\") as HTMLAnchorElement;\r\n userData.memberData.CommercialMember\r\n ? (servicesMobile.href = \"/panelim/arabam-kac-para-premium\")\r\n : (servicesMobile.href = \"/arabam-kac-para\");\r\n userData.memberData.CommercialMember\r\n ? (buycarMobile.href = \"/panelim/arabam-kac-para-premium\")\r\n : (buycarMobile.href = \"/arabam-kac-para\");\r\n userData.memberData.CommercialMember\r\n ? (sellcarMobile.href = \"/panelim/arabam-kac-para-premium\")\r\n : (sellcarMobile.href = \"/arabam-kac-para\");\r\n\r\n const priceSuggestionHomeMobile = document.getElementById(\"price-suggestion-mobile\") as HTMLAnchorElement;\r\n if (priceSuggestionHomeMobile) {\r\n userData.memberData.CommercialMember\r\n ? (priceSuggestionHomeMobile.href = \"/panelim/arabam-kac-para-premium\")\r\n : (priceSuggestionHomeMobile.href = \"/arabam-kac-para\");\r\n }\r\n}\r\n\r\nfunction getFavPlaceholder() {\r\n const userData: IArabamUserData = getVar(\"userData\");\r\n const favBtn = document.getElementById(\"js-hook-for-header-fav-btn\");\r\n\r\n favBtn.addEventListener(\"click\", () => {\r\n setDataLayer(\"Header\", \"Favori\", \"Click\", \"gaEvent\", true);\r\n });\r\n\r\n if (userData && userData.isUserLoggedIn) {\r\n if (!!userData.memberStatus && userData.memberStatus.FavoritedAdvertCount) {\r\n buildFavDom(userData.memberStatus.FavoritedAdvertCount);\r\n bindAngularFavorite(userData.memberStatus.FavoritedAdvertCount);\r\n return;\r\n }\r\n }\r\n\r\n // guest user icin\r\n Axios.get(`/favoriteadvert/count?random=${new Date().getTime()}`)\r\n .then((response) => {\r\n if (!!response.Data || response.Data > 0) {\r\n buildFavDom(response.Data);\r\n }\r\n bindAngularFavorite(response.Data);\r\n })\r\n .catch((error) => console.error(\"Error while getting favorite count: \" + error.message));\r\n}\r\n\r\nfunction bindAngularFavorite(favCount: number): void {\r\n const ang = (window as any).angular;\r\n if (!!ang) {\r\n const $html = ang.element(document.body.parentNode as any);\r\n const $rootScope = $html.injector().get(\"$rootScope\");\r\n $rootScope.$apply(() => {\r\n $rootScope.UnreadFavCount = favCount;\r\n });\r\n }\r\n}\r\n\r\nfunction buildFavDom(favCount: number) {\r\n const favPlaceholderDom = document.getElementById(\"js-hook-for-header-unread-fav-count\");\r\n if (favCount == 0) {\r\n return;\r\n }\r\n const starIcon = favPlaceholderDom.nextElementSibling;\r\n removeClass(favPlaceholderDom, \"dn\");\r\n const frag = document.createDocumentFragment();\r\n const domS = document.createElement(\"span\");\r\n const text = document.createTextNode(\"\" + favCount);\r\n domS.appendChild(text);\r\n frag.appendChild(domS);\r\n favPlaceholderDom.innerHTML = null;\r\n favPlaceholderDom.appendChild(frag);\r\n}\r\n\r\nexport function buildNavigationTogglers() {\r\n const elemList: NodeListOf = document\r\n .getElementById(\"js-hook-for-header-navigation-toggler-wrapper\")\r\n .querySelectorAll(\".js-hook-for-multiple-header-click-toggler\");\r\n const elemArr: [Element] = Array.prototype.slice.call(elemList);\r\n for (let i = 0; i < elemArr.length; i++) {\r\n const element = elemArr[i];\r\n element.addEventListener(\"click\", navigationToggleCallback);\r\n }\r\n}\r\n\r\nfunction navigationToggleCallback(event: MouseEvent) {\r\n let domElem: HTMLElement = event.target as HTMLAnchorElement;\r\n if (domElem.nodeName != \"A\") {\r\n domElem = domElem.parentElement;\r\n }\r\n domElem.nextElementSibling.classList.toggle(\"dn\");\r\n domElem.querySelector(\".js-hook-for-multiple-icon-toggler\").classList.toggle(\"icon-arabam-up-arrow\");\r\n domElem.querySelector(\".js-hook-for-multiple-icon-toggler\").classList.toggle(\"icon-arabam-down-arrow\");\r\n}\r\n\r\nfunction dataLayerClickHandlers() {\r\n const elemList: NodeListOf = document\r\n .getElementById(\"header\")\r\n .querySelectorAll(\".js-hook-for-multiple-header-click-datalayer\");\r\n const elemArr: [Element] = Array.prototype.slice.call(elemList);\r\n for (let i = 0; i < elemArr.length; i++) {\r\n const element = elemArr[i];\r\n element.addEventListener(\"click\", dataLayerClickCallback);\r\n }\r\n}\r\n\r\nfunction getNotificationPlaceholder() {\r\n const notificationWrapper = document.getElementById(\"js-hook-for-header-visible-notification\");\r\n if (notificationWrapper) {\r\n setVar(\"notificationDomEl\", notificationWrapper);\r\n const userData: IArabamUserData = getVar(\"userData\");\r\n const notificationDomEl: HTMLAnchorElement = getVar(\"notificationDomEl\");\r\n if (userData.memberStatus) {\r\n showNotificationsWith(userData.memberStatus.UnReadNotificationCount);\r\n }\r\n notificationDomEl.addEventListener(\"click\", onClickToggleNotificationPopup);\r\n const markAsReadBt = document.querySelector(\".mark-as-read-bt\");\r\n if (markAsReadBt) {\r\n markAsReadBt.addEventListener(\"click\", markAsReadAll, false);\r\n }\r\n }\r\n}\r\n\r\nfunction markAsReadAll(event: MouseEvent): void {\r\n isLoading = true;\r\n showNotificationLoader();\r\n Axios.post(\"/membernotification/markasreadall \").then((response: any) => {\r\n console.log(\"marked as read response\", response);\r\n getNotifications();\r\n updateNotification(0);\r\n clearNotificationList();\r\n isLoading = false;\r\n hideNotificationLoader();\r\n });\r\n}\r\n\r\nfunction showNotificationsWith(quantity: number) {\r\n const notificationDomEl: HTMLAnchorElement = getVar(\"notificationDomEl\");\r\n const notificationIcon = notificationDomEl.querySelector(\".icon-arabam-notification\");\r\n\r\n const frag = document.createDocumentFragment();\r\n const domS = document.createElement(\"span\");\r\n let quantityCalculated = quantity > 99 ? \"99+\" : quantity.toLocaleString();\r\n quantityCalculated = quantity <= 0 ? \"\" : quantityCalculated;\r\n // const text = document.createTextNode(quantityCalculated);\r\n // domS.appendChild(text);\r\n\r\n domS.innerText = quantityCalculated\r\n frag.appendChild(domS);\r\n notificationDomEl.appendChild(frag);\r\n\r\n if (quantity > 0) {\r\n notificationIcon.classList.add(\"has-unread-notification\");\r\n notificationIcon.classList.remove(\"has-no-unread-notification\");\r\n\r\n domS.classList.add(\"notification-count\");\r\n } else {\r\n notificationIcon.classList.remove(\"has-unread-notification\");\r\n notificationIcon.classList.add(\"has-no-unread-notification\");\r\n if (notificationDomEl.querySelector(\".notification-count\")) {\r\n notificationDomEl.querySelector(\".notification-count\").remove();\r\n }\r\n }\r\n}\r\n\r\nfunction updateNotification(count: number) {\r\n let el = document.querySelector(\".notification-count\");\r\n if (el) {\r\n document.querySelector(\".notification-count\").innerHTML = count.toString();\r\n let iconEl = document.querySelector(\".icon-arabam-notification\");\r\n if (iconEl && count <= 0) {\r\n iconEl.classList.remove(\"has-unread-notification\");\r\n iconEl.classList.add(\"has-no-unread-notification\");\r\n document.querySelector(\".notification-count\").innerHTML = \"\";\r\n document.querySelector(\".notification-count\").remove();\r\n } else {\r\n\r\n }\r\n\r\n }\r\n}\r\n\r\nfunction getNotifications() {\r\n isLoading = true;\r\n showNotificationLoader();\r\n const AMOUNT = 5;\r\n Axios.post(\"/membernotification/list\", {\r\n UnReadOnly: false,\r\n take: AMOUNT,\r\n skip: NOTIFICATION_SCROLL_COUNT * AMOUNT\r\n }).then((response) => {\r\n NOTIFICATION_SCROLL_COUNT++;\r\n isLoading = false;\r\n hideNotificationLoader();\r\n updateNotification(response.Data.UnReadCount);\r\n buildNotificationDomElements(response.Data.Documents);\r\n setupScrollEvents();\r\n // addClass(document.getElementById(\"js-hook-for-notification-loading\"), \"dn\");\r\n });\r\n}\r\n\r\nfunction setupScrollEvents() {\r\n let notificationListScroller = document.getElementById(\"notificationListScroller\");\r\n if (notificationListScroller) notificationListScroller.addEventListener(\"scroll\", onScroll);\r\n}\r\n\r\nlet onScroll = throttle(function (event: Event) {\r\n let target = event.target as HTMLElement;\r\n let offsetHeight = target.offsetHeight;\r\n let scrollHeight = target.scrollHeight;\r\n let scrollTop = target.scrollTop;\r\n let yawn = 10;\r\n if (offsetHeight + scrollTop + yawn >= scrollHeight) {\r\n if (!isLoading) getNotifications();\r\n console.log(\"scrolled load here\", NOTIFICATION_SCROLL_COUNT);\r\n }\r\n}, 300);\r\n\r\nfunction showNotificationLoader() {\r\n let loader = document.getElementById(\"notification-loader\");\r\n if (loader) loader.classList.remove(\"dn\");\r\n}\r\n\r\nfunction hideNotificationLoader() {\r\n let loader = document.getElementById(\"notification-loader\");\r\n if (loader) loader.classList.add(\"dn\");\r\n}\r\n\r\nfunction buildNotificationDomElements(docs: any) {\r\n // addClass(document.getElementById(\"js-hook-for-notification-loading\"), \"dn\");\r\n if (!docs || docs.length == 0) {\r\n removeClass(document.getElementById(\"js-hook-for-no-notification-warning\"), \"dn\");\r\n addClass(document.querySelector(\".button-all-notifications\"), \"dn\");\r\n return;\r\n }\r\n if (docs || docs.length > 0) {\r\n removeClass(document.getElementById(\"js-hook-for-notification-list\"), \"dn\");\r\n removeClass(document.querySelector(\".button-all-notifications\"), \"dn\");\r\n }\r\n // const notificationLastItem: HTMLElement = document.getElementById(\"js-hook-for-notification-list-last-item\");\r\n const notificationList: HTMLElement = document.getElementById(\"js-hook-for-notification-list\");\r\n\r\n addClass(document.getElementById(\"js-hook-for-no-notification-warning\"), \"dn\");\r\n for (let i = 0; i < docs.length; i++) {\r\n const notificationObject = docs[i];\r\n const frag = document.createDocumentFragment();\r\n const spanDate = document.createElement(\"span\");\r\n const spanTime = document.createElement(\"span\");\r\n const spanDateTime = document.createElement(\"span\");\r\n const spanBody = document.createElement(\"span\");\r\n const spanBodyDateTime = document.createElement(\"span\");\r\n const domImg = document.createElement(\"img\");\r\n const spanImg = document.createElement(\"span\");\r\n const domA = document.createElement(\"a\");\r\n\r\n const domLi = document.createElement(\"li\");\r\n const textTime = document.createTextNode(notificationObject.CreatedHour);\r\n const textDate = document.createTextNode(notificationObject.CreatedDate);\r\n const textBody = document.createTextNode(notificationObject.Body);\r\n\r\n spanTime.appendChild(textTime);\r\n spanDate.appendChild(textDate);\r\n spanBody.appendChild(textBody);\r\n domImg.src = notificationObject.ImageUrl;\r\n domA.href = notificationObject.WebUrl;\r\n domA.target = \"_self\";\r\n domA.onclick = () => { markAsRead(notificationObject.Id); };\r\n\r\n spanDate.classList.add(\"date\");\r\n spanTime.classList.add(\"time\");\r\n spanDateTime.classList.add(\"hn-date-time\");\r\n spanBody.classList.add(\"hn-body-text\");\r\n spanBodyDateTime.classList.add(\"col-xs-9\");\r\n domImg.classList.add(\"w100\");\r\n spanImg.classList.add(\"col-xs-3\", \"notification-image\");\r\n domA.classList.add(\"hn-link-text\");\r\n domLi.classList.add(\"notification-item\");\r\n if (notificationObject.IsRead) {\r\n domLi.classList.add(\"read\");\r\n }\r\n\r\n spanDateTime.appendChild(spanDate);\r\n spanDateTime.appendChild(spanTime);\r\n spanBodyDateTime.appendChild(spanBody);\r\n spanBodyDateTime.appendChild(spanDateTime);\r\n spanImg.appendChild(domImg);\r\n domA.appendChild(spanImg);\r\n domA.appendChild(spanBodyDateTime);\r\n domLi.appendChild(domA);\r\n frag.appendChild(domLi);\r\n notificationList.appendChild(frag);\r\n }\r\n}\r\n\r\nfunction markAsRead(Id: number): void {\r\n Axios\r\n .post(\"/membernotification/markasread \", { Id });\r\n}\r\n\r\nfunction dataLayerClickCallback(event: MouseEvent) {\r\n const evt: any = event.target;\r\n const dataLayerString: string = evt.getAttribute(\"data-layer\");\r\n const dataLayers: string[] = dataLayerString.split(\",\");\r\n if (!dataLayers) {\r\n return;\r\n }\r\n\r\n setDataLayer(\"Header\", dataLayers[0], dataLayers[1], \"gaEvent\", true);\r\n}\r\n\r\nfunction closeAllSubMenu() {\r\n const elemList: NodeListOf = document.getElementById(\"header\").querySelectorAll(\"li > div\");\r\n for (let i = 0; i < elemList.length; i++) {\r\n const element = elemList[i];\r\n element.classList.add(\"dn\");\r\n }\r\n}\r\n","import { addClass, removeClass, isMobile } from \"@libs/utils\";\r\n\r\nexport function createHeaderTopNotificationBar(\r\n data: any,\r\n anchorText: string = \"Detaylı Bilgi\",\r\n anchorClickCallback?: () => any,\r\n closeClickCallback?: () => any\r\n) {\r\n const notificationBarWrapper = document.getElementById(\"header-notification-bar\");\r\n if (notificationBarWrapper) {\r\n removeClass(notificationBarWrapper, \"opened\");\r\n\r\n createInitHtmlForWrapper(notificationBarWrapper);\r\n\r\n bindHeaderTopNotificationMessage(data.message, notificationBarWrapper.querySelector(\".header-notification-message\"));\r\n\r\n bindHeaderTopNotificationAnchor(anchorText, notificationBarWrapper.querySelector(\"a\"), anchorClickCallback);\r\n\r\n notificationBarWrapper.querySelector(\"#close-header-top-notification-bar\").addEventListener(\"click\", (event) => {\r\n event.preventDefault();\r\n destroyTopHeaderNotificationBar();\r\n if (!!closeClickCallback) {\r\n closeClickCallback();\r\n }\r\n });\r\n\r\n addClass(notificationBarWrapper, \"opened\");\r\n\r\n if (data.type == \"email\") {\r\n addClass(notificationBarWrapper, \"email-yellow-notification\");\r\n }\r\n }\r\n}\r\n\r\nfunction bindHeaderTopNotificationMessage(message: string, messageWrapper: HTMLElement) {\r\n if (message) {\r\n messageWrapper.innerHTML = message;\r\n removeClass(messageWrapper, \"dn\");\r\n } else {\r\n addClass(messageWrapper, \"dn\");\r\n }\r\n}\r\n\r\nfunction bindHeaderTopNotificationAnchor(anchorText: string, anchorElement: HTMLElement, callback: () => any) {\r\n const spanEl = anchorElement.querySelector(\"span\");\r\n spanEl.innerText = anchorText;\r\n spanEl.classList.add(\"header-notification-span\");\r\n\r\n anchorElement.addEventListener(\"click\", (event: MouseEvent) => {\r\n event.preventDefault();\r\n callback();\r\n });\r\n}\r\n\r\nexport function destroyTopHeaderNotificationBar() {\r\n const notificationBarWrapper = document.getElementById(\"header-notification-bar\");\r\n removeClass(notificationBarWrapper, \"opened\");\r\n notificationBarWrapper.innerHTML = \"\";\r\n}\r\n\r\nfunction createInitHtmlForWrapper(wrapper: HTMLElement) {\r\n const row = document.createElement(\"div\");\r\n const rowWrapper = isMobile() ? \"flex1\" : \"row\";\r\n addClass(row, rowWrapper);\r\n\r\n const container = document.createElement(\"div\");\r\n addClass(container, \"container\");\r\n if (isMobile()) {\r\n container.classList.add(\"df\");\r\n }\r\n\r\n const paragraph = document.createElement(\"p\");\r\n addClass(paragraph, \"header-notification-message\");\r\n row.appendChild(paragraph);\r\n\r\n const anchor = document.createElement(\"a\");\r\n\r\n const span = document.createElement(\"span\");\r\n span.innerText = \"Detaylı Bilgi\";\r\n anchor.appendChild(span);\r\n\r\n const nextIcon = document.createElement(\"i\");\r\n addClass(nextIcon, \"icon-arabam-next\");\r\n anchor.appendChild(nextIcon);\r\n\r\n row.appendChild(anchor);\r\n\r\n container.appendChild(row);\r\n\r\n const closeIcon = document.createElement(\"i\");\r\n // addClass(closeIcon, \"icon-arabam-exit\");\r\n closeIcon.innerText = \"X\";\r\n if (isMobile()) {\r\n const spanWrapper = document.createElement(\"span\");\r\n spanWrapper.classList.add(\"pr\", \"fr\", \"p10\", \"db\");\r\n addClass(closeIcon, \"val-middle-unknown\");\r\n spanWrapper.id = \"close-header-top-notification-bar\";\r\n spanWrapper.appendChild(closeIcon);\r\n container.appendChild(spanWrapper);\r\n } else {\r\n closeIcon.id = \"close-header-top-notification-bar\";\r\n row.appendChild(closeIcon);\r\n }\r\n\r\n wrapper.appendChild(container);\r\n}\r\n","import { addToLocalStorage, getFromLocalStorage } from \"@libs/storage\";\r\n\r\nconst storageKey = \"headerLastSearches\";\r\n\r\n/** yeni bir search yapildiginda last searchlere de ekle */\r\nexport function addToLastSearches(suggestion: any) {\r\n try {\r\n const dl: any = (window as any).dataLayer;\r\n if (!!dl && !!suggestion.parentCategory) {\r\n dl.push({\r\n Category: \"Header\",\r\n Action: \"Search Box\",\r\n Label: \"Search Autocomplete Click-\" + suggestion.parentCategory + \"-\" + (suggestion.Description||suggestion.Text),\r\n event: \"gaEvent\",\r\n nonInteraction: true\r\n });\r\n }\r\n const lastSearches: any[] = getFromLocalStorage(storageKey) || [];\r\n if (isNewSearchSuggestionItem(lastSearches, suggestion)) {\r\n lastSearches.unshift(suggestion);\r\n lastSearches.length = lastSearches.length > 3 ? 3 : lastSearches.length;\r\n addToLocalStorage(storageKey, lastSearches);\r\n }\r\n return true;\r\n } catch (error) {\r\n console.error(error);\r\n return false;\r\n }\r\n}\r\n\r\n/** last search datasini storage'dan oku */\r\nexport function getLastSearches(): any[] {\r\n try {\r\n const lastSearches: any[] = getFromLocalStorage(storageKey) || [];\r\n return lastSearches;\r\n } catch (error) {\r\n return null;\r\n }\r\n}\r\n\r\n/** bu suggestion listedekilerden yeni mi */\r\nfunction isNewSearchSuggestionItem(searchList: any[], suggestion: any) {\r\n if (searchList && searchList.length > 0) {\r\n let flag = true;\r\n searchList.map((searchItem: any) => {\r\n if (searchItem.Id == suggestion.Id) {\r\n flag = false;\r\n }\r\n });\r\n return flag;\r\n } else {\r\n return true;\r\n }\r\n}\r\n","import member, { getUser } from \"@components/header/member\";\r\nimport { addClass, removeClass } from \"@libs/utils\";\r\nimport { forEach } from \"lodash-es\";\r\nimport { setDataLayer } from \"@libs/analytics\";\r\nimport { setSegmentifyLoginOps } from \"@libs/segmentify\";\r\nimport { createNotificationData } from \"./notifications\";\r\nimport createInitterForNotCompletedAdvert from \"./notCompletedAdvert\";\r\nimport axios from \"@libs/axios\";\r\nimport hoverintent from \"@libs/hoverintent\";\r\nimport { IMemberStatus } from \"@interfaces/member\";\r\n\r\nconst favoritesWrapper: HTMLElement = document.getElementById(\"header-favorites-wrapper\");\r\n\r\nconst messagesWrapper: HTMLElement = document.getElementById(\"header-messages-wrapper\");\r\n\r\nconst headerGuestNav: HTMLElement = document.getElementById(\"header-non-authenticated-navigator\");\r\n\r\nconst headerAuthNav: HTMLElement = document.getElementById(\"header-authenticated-nav\");\r\n\r\nconst headerUserDropdown = document.getElementById(\"header-user-menu\");\r\nconst headerNotificationWrapper = document.getElementById(\"header-notification-wrapper\");\r\n\r\nconst headerCallsWrapper: HTMLElement = document.getElementById(\"header-calls-wrapper\");\r\n\r\nexport function setHeaderFavorites(): boolean {\r\n if (!favoritesWrapper) {\r\n return;\r\n }\r\n favoritesWrapper.addEventListener(\"click\", () => {\r\n setDataLayer(\"Header\", \"Favori\", \"Click\", \"gaEvent\", true);\r\n window.location.href = \"/favori/ilanlarim\";\r\n });\r\n\r\n const user = getUser();\r\n\r\n if (!!user && user.isUserLoggedIn) {\r\n if (user.memberStatus && user.memberStatus.FavoritedAdvertCount > 0) {\r\n showFavoritesWith(user.memberStatus.FavoritedAdvertCount);\r\n return true;\r\n }\r\n } else {\r\n axios\r\n .get(`/favoriteadvert/count?random=${new Date().getTime()}`)\r\n .then((response) => {\r\n if (!!response.Data || response.Data > 0) {\r\n showFavoritesWith(response.Data);\r\n return true;\r\n }\r\n })\r\n .catch((error) => console.error(\"Error while getting favorite count: \" + error.message));\r\n }\r\n removeClass(favoritesWrapper, \"active\");\r\n return true;\r\n}\r\n\r\nfunction messageResolver(memberStatus: IMemberStatus) {\r\n if (!messagesWrapper) {\r\n return;\r\n }\r\n\r\n removeClass(messagesWrapper, \"dn\");\r\n addClass(messagesWrapper, \"active\");\r\n\r\n const msgCount: number = +memberStatus.UnreadMessageCount;\r\n if (msgCount > 0) {\r\n messagesWrapper.querySelector(\".header-badge > .inner\").textContent = msgCount > 99 ? \"99+\" : \"\" + msgCount;\r\n } else {\r\n messagesWrapper.querySelector(\".header-badge\").classList.add(\"dn\");\r\n }\r\n\r\n messagesWrapper.addEventListener(\"click\", () => {\r\n setDataLayer(\"Header\", \"YeniMesaj\", \"Click\", \"gaEvent\", true);\r\n window.location.href = \"/panelim/mesajlar/gelen\";\r\n });\r\n}\r\n\r\nfunction showFavoritesWith(quantity: number) {\r\n if (!favoritesWrapper) {\r\n return;\r\n }\r\n addClass(favoritesWrapper, \"active\");\r\n\r\n favoritesWrapper.querySelector(\".header-badge > .inner\").textContent = quantity > 99 ? \"99+\" : quantity.toLocaleString();\r\n}\r\n\r\nexport function initMenusForLoggedUser() {\r\n if (headerGuestNav && headerAuthNav && headerNotificationWrapper) {\r\n addClass(headerGuestNav, \"dn\");\r\n removeClass(headerAuthNav, \"dn\");\r\n removeClass(headerNotificationWrapper, \"dn\");\r\n createUserDropdown();\r\n createNotificationData();\r\n checkVisibilityForCallsIcon();\r\n setPriceSuggestionLinks();\r\n }\r\n}\r\n\r\nexport function initMenusForGuestUser() {\r\n removeClass(headerGuestNav, \"dn\");\r\n addClass(headerAuthNav, \"dn\");\r\n addClass(headerNotificationWrapper, \"dn\");\r\n\r\n headerGuestNav.querySelector(\"#header-login-button\").addEventListener(\"click\", () => {\r\n setDataLayer(\"Header\", \"Giriş Yap\", \"Click\", \"gaEvent\", true);\r\n });\r\n\r\n headerGuestNav.querySelector(\"#header-register-button\").addEventListener(\"click\", () => {\r\n setDataLayer(\"Header\", \"Üye Ol\", \"Click\", \"gaEvent\", true);\r\n });\r\n}\r\n\r\nfunction createUserDropdown() {\r\n const user = getUser();\r\n const nameSurname = `${user.memberData.CurrentUser.Name} ${user.memberData.CurrentUser.SurName}`;\r\n headerAuthNav.querySelector(\".circle\").textContent = nameSurname;\r\n\r\n const userMenuDropdown = headerUserDropdown.querySelector(\"ul#user-dropdown-menu-list\");\r\n\r\n bindUserCallHistorySwitchers();\r\n\r\n messageResolver(user.memberStatus);\r\n\r\n if (user.memberStatus && user.memberStatus.UnreadMessageCount > 0) {\r\n const messageCounter = document.querySelector(\"span#header-dropdown-message-counter\");\r\n\r\n messageCounter.textContent = user.memberStatus.UnreadMessageCount.toString();\r\n removeClass(messageCounter, \"dn\");\r\n }\r\n\r\n if (user.memberData.Type == 2 && user.memberData.AuctioPermissions.AuctionStatus != 60) {\r\n const auctionLinkEl = document.getElementById(\"js-hook-for-visible-commercial-auction\");\r\n if (!!auctionLinkEl) {\r\n removeClass(auctionLinkEl, \"dn\");\r\n }\r\n }\r\n\r\n if (user.memberData.Type == 2) {\r\n const commercialPremiumLinkEl = document.getElementById(\"js-hook-for-visible-commercial-premium\");\r\n const insuranceLinkEl = document.getElementById(\"js-hook-for-visible-commercial-insurance\");\r\n if (!!commercialPremiumLinkEl) {\r\n removeClass(commercialPremiumLinkEl, \"dn\");\r\n }\r\n if (insuranceLinkEl) {\r\n removeClass(insuranceLinkEl, \"dn\");\r\n }\r\n }\r\n\r\n bindUserDropdownMenuItemsFor(userMenuDropdown);\r\n bindUserInitialsHoverAction();\r\n\r\n // Not completed advert side for individual members\r\n createInitterForNotCompletedAdvert();\r\n}\r\n\r\nfunction bindUserDropdownMenuItemsFor(parent: Element) {\r\n forEach(parent.querySelectorAll(\"li > a\"), (anchorElement) => {\r\n anchorElement.addEventListener(\"click\", (event: MouseEvent) => {\r\n event.preventDefault();\r\n const target = event.target as Element;\r\n bindAnchorDataLayer(target);\r\n\r\n if (target.parentElement.classList.contains(\"logout-button\")) {\r\n onClickLogoutButton(target);\r\n }\r\n\r\n setTimeout(() => {\r\n window.location.href = target.getAttribute(\"href\");\r\n }, 0);\r\n });\r\n });\r\n}\r\n\r\nfunction bindAnchorDataLayer(element: Element) {\r\n setDataLayer(\"Header\", \"Hesabım\", element.getAttribute(\"data-layer\"), \"gaEvent\", true);\r\n}\r\n\r\nfunction onClickLogoutButton(element: Element) {\r\n setSegmentifyLoginOps(\"signout\", parseInt(element.getAttribute(\"user-id\")));\r\n sessionStorage.removeItem(\"bidToken\");\r\n document.cookie = \"footerVideoCallInformationDisplay=;expires=Fri, 31 May 2013 00:00:01 GMT;path=/\";\r\n}\r\n\r\nfunction bindUserCallHistorySwitchers() {\r\n const user = getUser().memberData;\r\n if (user.CurrentUser.Communication.CallApiCanSeeHistory) {\r\n removeClass(document.getElementById(\"bigorelimCallHistory\"), \"dn\");\r\n } else if (user.Type === 2 && user.CurrentUser.Communication.RoutePhone) {\r\n removeClass(document.getElementById(\"firmCorporateCallHistory\"), \"dn\");\r\n }\r\n}\r\n\r\nfunction bindUserInitialsHoverAction() {\r\n hoverintent(\r\n headerAuthNav,\r\n () => {\r\n const dropdown = headerNotificationWrapper.querySelector(\"div.notification-dropdown\");\r\n const header = document.querySelector(\"body .headerBar\");\r\n removeClass(dropdown, \"opened\");\r\n addClass(headerUserDropdown, \"opened\");\r\n\r\n showOverLay(\"header#header .headerBar\");\r\n },\r\n () => {\r\n removeClass(headerUserDropdown, \"opened\");\r\n hideOverlay();\r\n }\r\n ).options({\r\n timeout: 199,\r\n interval: 199\r\n });\r\n}\r\n\r\nfunction showOverLay(selector: string) {\r\n const overlay = document.querySelector(\"body .overlay-container\");\r\n const headerOverlay = document.querySelector(\"body .header-overlay\");\r\n\r\n addClass(overlay, \"show\");\r\n\r\n if (!!headerOverlay) {\r\n addClass(headerOverlay, \"topOfAllElement\");\r\n addClass(headerOverlay, \"show\");\r\n addClass(headerOverlay, \"t0\");\r\n }\r\n addClass(headerAuthNav, \"zi5\");\r\n}\r\n\r\nfunction hideOverlay() {\r\n const overlay = document.querySelector(\"body .overlay-container\");\r\n const headerOverlay = document.querySelector(\"body .header-overlay\");\r\n removeClass(overlay, \"show\");\r\n if (!!headerOverlay) {\r\n removeClass(headerOverlay, \"show\");\r\n removeClass(headerOverlay, \"topOfAllElement\");\r\n removeClass(headerOverlay, \"t0\");\r\n }\r\n removeClass(headerAuthNav, \"zi5\");\r\n}\r\n\r\nfunction setPriceSuggestionLinks() {\r\n const user = getUser();\r\n if (user) {\r\n const services: HTMLAnchorElement = document.getElementById(\"price-suggestion-services\") as HTMLAnchorElement;\r\n const buycar: HTMLAnchorElement = document.getElementById(\"price-suggestion-buycar\") as HTMLAnchorElement;\r\n const sellcar: HTMLAnchorElement = document.getElementById(\"price-suggestion-sellcar\") as HTMLAnchorElement;\r\n const mainpage: HTMLAnchorElement = document.getElementById(\"price-suggestion\") as HTMLAnchorElement;\r\n user.memberData.CommercialMember\r\n ? (services.href = \"/panelim/arabam-kac-para-premium\")\r\n : (services.href = \"/arabam-kac-para\");\r\n user.memberData.CommercialMember ? (buycar.href = \"/panelim/arabam-kac-para-premium\") : (buycar.href = \"/arabam-kac-para\");\r\n user.memberData.CommercialMember ? (sellcar.href = \"/panelim/arabam-kac-para-premium\") : (sellcar.href = \"/arabam-kac-para\");\r\n if (mainpage) {\r\n user.memberData.CommercialMember\r\n ? (mainpage.href = \"/panelim/arabam-kac-para-premium\")\r\n : (mainpage.href = \"/arabam-kac-para\");\r\n }\r\n }\r\n}\r\n\r\nfunction checkVisibilityForCallsIcon() {\r\n var user = getUser();\r\n if (user.isUserLoggedIn && user.memberData.Type == 2) {\r\n var searchContainer = document.querySelector(\".headerBar .search\");\r\n if (searchContainer) {\r\n searchContainer.classList.add(\"small-width\");\r\n }\r\n if (headerCallsWrapper) {\r\n headerCallsWrapper.classList.remove(\"dn\");\r\n headerCallsWrapper.classList.add(\"active\");\r\n }\r\n\r\n if (user.memberStatus.RoutePhoneMissedCallCount == 0) {\r\n headerCallsWrapper.querySelector(\".header-badge\").classList.add(\"dn\");\r\n return;\r\n }\r\n headerCallsWrapper.querySelector(\".header-badge > .inner\").textContent =\r\n user.memberStatus.RoutePhoneMissedCallCount > 99 ? \"99+\" : user.memberStatus.RoutePhoneMissedCallCount.toString();\r\n }\r\n}\r\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nexport default hasUnicode;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nexport default asciiToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nexport default unicodeToArray;\n","import asciiToArray from './_asciiToArray.js';\nimport hasUnicode from './_hasUnicode.js';\nimport unicodeToArray from './_unicodeToArray.js';\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nexport default stringToArray;\n","import { setDataLayer } from \"@libs/analytics\";\r\nimport searchBarComponentInit from \"./searchBox\";\r\nimport memberUtilsInit from \"./member\";\r\nimport \"@components/cookieDisclaimer\";\r\nimport { addClass, removeClass } from \"@libs/utils\";\r\nimport hoverintent from \"@libs/hoverintent\";\r\nimport { getCookie, setCookie } from \"@libs/cookie\";\r\nlet showNavigation = true;\r\nlet touchDevice = false;\r\n\r\nexport default function() {\r\n /**\r\n * Member utils\r\n * @description Kullanıcı giriş yaptı mı?\r\n * Favoriler, bildirimler burada init edilecek.\r\n * User-dropdown ve user menüleri de burada olacak\r\n */\r\n\r\n var popupCampaignElement = document.getElementById(\r\n \"js-hook-arabam-campaign-popup-container\"\r\n );\r\n var cookieName = \"turboCampaignpopup\"\r\n var showPopup = getCookie(cookieName);\r\n var popupStartDate = new Date('2019-11-29T00:00:00');\r\n var popupEndDate = new Date('2019-11-29T23:59:59');\r\n var currentDate = new Date();\r\n if (\r\n currentDate >= popupStartDate &&\r\n currentDate <= popupEndDate && \r\n popupCampaignElement &&\r\n window.location.href.indexOf(\"/turbolar\") == -1\r\n ) {\r\n if (\r\n !showPopup &&\r\n navigator.userAgent.indexOf(\"Google Page Speed Insights\") == -1 &&\r\n navigator.userAgent.indexOf(\"Chrome-Lighthouse\") == -1\r\n ) {\r\n popupCampaignElement.classList.remove(\"dn\");\r\n popupCampaignElement\r\n .querySelector(\"img\")\r\n .addEventListener(\"click\", function(event) {\r\n setCookie(cookieName, \"visited\", 30);\r\n window.location.href = \"/turbolar\";\r\n event.preventDefault();\r\n });\r\n popupCampaignElement\r\n .querySelector(\".close-button\")\r\n .addEventListener(\"click\", function(event) {\r\n setCookie(cookieName, \"visited\", 30);\r\n popupCampaignElement.outerHTML = \"\";\r\n event.preventDefault();\r\n });\r\n popupCampaignElement.addEventListener(\"click\", function(event) {\r\n setCookie(cookieName, \"visited\", 30);\r\n popupCampaignElement.outerHTML = \"\";\r\n });\r\n }\r\n }\r\n\r\n // ie de assign patlıyordu. çözüm buymuş.\r\n if (typeof Object.assign != \"function\") {\r\n Object.assign = function(target: any) {\r\n \"use strict\";\r\n if (target == null) {\r\n throw new TypeError(\"Cannot convert undefined or null to object\");\r\n }\r\n\r\n target = Object(target);\r\n for (let index = 1; index < arguments.length; index++) {\r\n const source = arguments[index];\r\n if (source != null) {\r\n for (const key in source) {\r\n if (Object.prototype.hasOwnProperty.call(source, key)) {\r\n target[key] = source[key];\r\n }\r\n }\r\n }\r\n }\r\n return target;\r\n };\r\n }\r\n // buraya kadar\r\n\r\n if (\"ontouchstart\" in document.documentElement) {\r\n touchDevice = true;\r\n document\r\n .getElementsByTagName(\"body\")[0]\r\n .setAttribute(\"data-is-touch-device\", \"true\");\r\n }\r\n memberUtilsInit();\r\n\r\n const header = document.querySelector(\"header#header.header-desktop\");\r\n showNavigation = (header.attributes as any).showNavigation.value;\r\n const ie = /Trident.*rv[ :]*11\\./.test(navigator.userAgent);\r\n /**\r\n * Header logo tıklanması durumunda eğer ilan detayda değilse kullanıcı\r\n * anasayfaya yönlendirilecek.\r\n * TODO: Faz2: Header her sayfada rahatça uygulanabilmeli. Özellikle ilan\r\n * verme ve düzenleme sayfalarında\r\n */\r\n const headerLogo = document.querySelector(\"a#arabam-header-logo\");\r\n if (headerLogo != null) {\r\n headerLogo.addEventListener(\"click\", onClickHeaderLogo);\r\n }\r\n // header logout\r\n var logoutButton = document.getElementById(\"logout-button\");\r\n if (logoutButton) {\r\n logoutButton.addEventListener(\"click\", function() {\r\n sessionStorage.clear();\r\n });\r\n }\r\n\r\n // Header search bar\r\n searchBarComponentInit();\r\n if (ie) {\r\n searchBoxFocusIe();\r\n }\r\n\r\n // Ücretsiz ilan ver butonu analitik verileri\r\n bindNewAdvertButtonTriggerEvent();\r\n bindTrinkSatButtonTriggerEvent();\r\n\r\n getAdvertBtnHover();\r\n\r\n const menu = document.querySelector(\"header#header .menu\");\r\n const menuItem = document.querySelectorAll(\r\n \"header#header .menu ul.level1 li.level1\"\r\n );\r\n for (let i = 0, len = menuItem.length; i < len; ++i) {\r\n const menuDomEl: HTMLElement | any = menuItem[i];\r\n if (menuDomEl != null) {\r\n try {\r\n hoverintent(\r\n menuDomEl,\r\n (event: MouseEvent) => {\r\n const notificationDropdown = document.querySelector(\r\n \"header#header #header-notification-wrapper .notification-dropdown\"\r\n );\r\n const targetElem: HTMLElement | any = event.target;\r\n const hoveredEl = document.querySelector(\".hovered-lvl1\");\r\n if (!!hoveredEl) {\r\n document\r\n .querySelector(\".hovered-lvl1\")\r\n .classList.remove(\"hovered-lvl1\");\r\n }\r\n if (notificationDropdown != null) {\r\n notificationDropdown.classList.remove(\"opened\");\r\n }\r\n if (touchDevice) {\r\n const activeMenu = document.querySelector(\r\n \"header#header .menu ul.level1 li.level1.hover\"\r\n );\r\n if (activeMenu != undefined) {\r\n activeMenu.classList.remove(\"hover\");\r\n }\r\n targetElem.classList.add(\"hover\");\r\n }\r\n menuDomEl.classList.add(\"hovered-lvl1\");\r\n showOverLay(menu.clientHeight);\r\n },\r\n () => {\r\n menuDomEl.classList.remove(\"hovered-lvl1\");\r\n }\r\n ).options({\r\n timeout: 199,\r\n interval: 199\r\n });\r\n } catch (error) {\r\n continue;\r\n }\r\n }\r\n }\r\n\r\n if (menu != null) {\r\n hoverintent(\r\n menu,\r\n () => false,\r\n () => {\r\n if (!touchDevice) {\r\n hideOverlay(null);\r\n }\r\n }\r\n ).options({\r\n timeout: 199,\r\n interval: 0\r\n });\r\n }\r\n\r\n const searchBoxInput = document.getElementById(\r\n \"search-suggestion-trigger-input\"\r\n );\r\n if (searchBoxInput) {\r\n searchBoxInput.addEventListener(\"focus\", (event: any) => {\r\n const notificationDropdown = document.querySelector(\r\n \"header#header #header-notification-wrapper .notification-dropdown\"\r\n );\r\n if (notificationDropdown != null) {\r\n notificationDropdown.classList.remove(\"opened\");\r\n }\r\n\r\n // opened\r\n showOverLay(0);\r\n });\r\n }\r\n\r\n const overlay = document.querySelector(\"body .overlay-container\");\r\n if (overlay != null) {\r\n overlay.addEventListener(\"click\", hideOverlay);\r\n }\r\n\r\n const headerOverlay = document.querySelector(\"body .header-overlay\");\r\n if (headerOverlay != null) {\r\n headerOverlay.addEventListener(\"click\", hideOverlay);\r\n }\r\n}\r\n\r\nfunction searchBoxFocusIe() {\r\n const searchBoxInput = document.getElementById(\r\n \"search-suggestion-trigger-input\"\r\n );\r\n\r\n searchBoxInput.addEventListener(\"focus\", (event: any) => {\r\n const notificationDropdown = document.querySelector(\r\n \"header#header #header-notification-wrapper .notification-dropdown\"\r\n );\r\n if (notificationDropdown != null) {\r\n notificationDropdown.classList.remove(\"opened\");\r\n }\r\n\r\n showOverLay(0);\r\n });\r\n const overlay = document.querySelector(\"body .overlay-container\");\r\n overlay.addEventListener(\"click\", hideOverlay);\r\n const headerOverlay = document.querySelector(\"body .header-overlay\");\r\n headerOverlay.addEventListener(\"click\", hideOverlay);\r\n}\r\n\r\nfunction showOverLay(offsetTop: any) {\r\n const overlay = document.querySelector(\"body .overlay-container\");\r\n overlay.classList.add(\"show\");\r\n\r\n const headerOverlay = document.querySelector(\"body .header-overlay\");\r\n headerOverlay.setAttribute(\"style\", \"top:\" + offsetTop + \"px\");\r\n headerOverlay.classList.add(\"show\");\r\n}\r\n\r\nfunction hideOverlay(event: any) {\r\n const overlay = document.querySelector(\"body .overlay-container\");\r\n overlay.classList.remove(\"show\");\r\n const headerOverlay = document.querySelector(\"body .header-overlay\");\r\n headerOverlay.classList.remove(\"show\");\r\n if (document.querySelector(\"#suggestion-wrapper\") != null) {\r\n document.querySelector(\"#suggestion-wrapper\").classList.remove(\"active\");\r\n }\r\n const dropdown = document.querySelector(\r\n \"#header-notification-wrapper div.notification-dropdown\"\r\n );\r\n removeClass(dropdown, \"opened\");\r\n const headerSearchWrapper = document.getElementById(\"header-search-wrapper\");\r\n headerSearchWrapper.setAttribute(\"style\", \"z-index:unset\");\r\n const activeMenu = document.querySelector(\r\n \"header#header .menu ul.level1 li.level1.hover\"\r\n );\r\n if (activeMenu != undefined) {\r\n activeMenu.classList.remove(\"hover\");\r\n }\r\n}\r\n\r\nfunction onClickHeaderLogo(event?: MouseEvent) {\r\n setDataLayer(\"Header\", \"Logo\", \"Click\", \"gaEvent\", true);\r\n if (!showNavigation) {\r\n event.preventDefault();\r\n }\r\n}\r\n\r\nfunction bindNewAdvertButtonTriggerEvent() {\r\n const newAdvertButton = document.getElementById(\"header-get-new-advert\");\r\n if (newAdvertButton != null) {\r\n newAdvertButton.addEventListener(\"click\", (event) => {\r\n event.preventDefault();\r\n\r\n setDataLayer(\r\n window.location.pathname.indexOf(\"/arabam-kac-para\") !== -1\r\n ? \"Aracim-Ne-Kadar-Eder\"\r\n : \"Header\",\r\n \"İlan Ver\",\r\n \"Click\",\r\n \"gaEvent\",\r\n true\r\n );\r\n\r\n setTimeout(() => {\r\n window.location.href = (event.target as HTMLAnchorElement).href;\r\n }, 0);\r\n });\r\n }\r\n}\r\nfunction bindTrinkSatButtonTriggerEvent() {\r\n const newAdvertButton = document.getElementById(\"header-trinksat\");\r\n if (newAdvertButton != null) {\r\n newAdvertButton.addEventListener(\"click\", (event) => {\r\n event.preventDefault();\r\n\r\n setDataLayer(\r\n window.location.pathname.indexOf(\"/arabam-kac-para\") !== -1\r\n ? \"Aracim-Ne-Kadar-Eder\"\r\n : \"Header\",\r\n \"Trink Sat\",\r\n \"Click\",\r\n \"gaEvent\",\r\n true\r\n );\r\n\r\n setTimeout(() => {\r\n window.location.href = (event.target as HTMLAnchorElement).href;\r\n }, 0);\r\n });\r\n }\r\n}\r\n\r\nfunction getAdvertBtnHover() {\r\n const createAdvertBtn = document.getElementById(\r\n \"header-create-new-advert-button\"\r\n );\r\n const advertWrapper = document.getElementById(\"get-advert-wrapper\");\r\n const menu: HTMLElement = document.querySelector(\"div.menu\");\r\n if (createAdvertBtn) {\r\n hoverintent(\r\n createAdvertBtn,\r\n () => {\r\n addClass(advertWrapper, \"opened\");\r\n addClass(createAdvertBtn, \"zi5\");\r\n menu.style.zIndex = \"0\";\r\n showOverLay(0);\r\n },\r\n () => {\r\n removeClass(advertWrapper, \"opened\");\r\n removeClass(createAdvertBtn, \"zi5\");\r\n menu.style.zIndex = \"3\";\r\n hideOverlay(0);\r\n }\r\n ).options({\r\n timeout: 199,\r\n interval: 199\r\n });\r\n }\r\n}\r\n","export function setSegmentifyLoginOps(type: string, userId: number) {\r\n const segmentify: any = (window as any).Segmentify;\r\n if (!segmentify) {\r\n return;\r\n }\r\n const userObj: any = {\r\n username: +userId\r\n };\r\n const loginType: string = \"user:\" + type;\r\n segmentify(loginType, userObj);\r\n}\r\n","/**\r\n * eger tarayicinin local storage destegi varsa objeyi storage'a ekler\r\n * @param key \r\n * @param object \r\n */\r\nexport function addToLocalStorage(key: string, object: any): boolean {\r\n if (localStorageAvailable()) {\r\n localStorage.setItem(key, JSON.stringify(object));\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n}\r\n\r\n/**\r\n * eger tarayicinin local storage destegi varsa objeyi storage'dan getirir\r\n * @param key \r\n * @param object \r\n */\r\nexport function getFromLocalStorage(key: string): any\r\n{\r\n if(localStorageAvailable()){\r\n const object = JSON.parse(localStorage.getItem(key));\r\n return object;\r\n }\r\n else{\r\n return null;\r\n }\r\n}\r\n\r\n/**\r\n * local storage destegi mevcut mu\r\n */\r\nfunction localStorageAvailable() {\r\n const test = \"test\";\r\n try {\r\n localStorage.setItem(test, test);\r\n localStorage.removeItem(test);\r\n return true;\r\n } catch (e) {\r\n return false;\r\n }\r\n}\r\n","import root from './_root.js';\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nexport default now;\n","import isObject from './isObject.js';\nimport now from './now.js';\nimport toNumber from './toNumber.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nexport default debounce;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nexport default baseSlice;\n","import baseSlice from './_baseSlice.js';\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nexport default castSlice;\n"],"sourceRoot":""}