{"version":3,"sources":["../webpack/bootstrap","lib/decode/decode.ts","shared-components lazy /^/.*/.component$/ groupOptions: {} namespace object","lib/settings/get-setting.ts","shared-components/textIcon/TextIcon.component.tsx","shared-components/toggler/Toggler.component.tsx","lib/string-utils/formatString.ts","shared-components/grid/Column.component.tsx","lib/tracking/htmlTags.ts","data-resolver.ts","pages/home/Home.tsx","shared-components/master-page/MasterPage.tsx","Supernova.tsx","lib/detectOsBrowser/detectPolyfill.ts","serviceWorker.ts","index.tsx","shared-components/grid/Row.component.tsx","shared-components/grid/Section.component.tsx","lib/getCmsProps/getCmsProps.ts","lib/detectOsBrowser/DetectOsBrowser.tsx","lib/common-utils/getLanguage.ts","shared-components/skypeCredits/data-connect/useActiveCredit.hook.ts","apis/userServices/useUserServices.hook.tsx","apis/userServices/utils.ts","shared-components/SharedComponent.tsx","shared-components/image/Image.component.tsx","lib/getClassNames/getClassNames.ts","shared-components/iconContent/IconContent.component.tsx","shared-components/userBadge/UserBadge.component.tsx","shared-components/wrapper/Wrapper.component.tsx","shared-components/subscriptions/components/Item.tsx","shared-components/subscriptions/data-connect/useActiveCalling.hook.ts","shared-components/subscriptions/data-connect/utils.ts","shared-components/subscriptions/utils.ts","shared-components/subscriptions/Subscriptions.component.tsx","shared-components/skypeCredits/data-connect/useSwitchState.hook.ts","shared-components/skypeCredits/SkypeCredits.component.tsx","lib/hooks/useSelfCancelInterval.hook.ts","lib/hooks/useSelfCancelLimitInterval.hook.ts","lib/dynamicPlaceholder/dynamicPlaceholder.tsx","shared-components/button/Button.component.tsx","shared-components/alert-message/AlertMessage.tsx","lib/skypeUser/useSkypeUser.ts","shared-components/icon/Icon.component.tsx","lib/hooks/usePartialList.ts","shared-components/text/Text.component.tsx"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","0","exports","module","l","e","promises","Promise","resolve","reject","href","fullhref","p","existingLinkTags","document","getElementsByTagName","dataHref","tag","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","jsonpScriptSrc","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","head","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","decode","isNil","he","map","webpackAsyncContext","req","ids","id","keys","SETTINGS_KEY","paths","TextIcon","props","classes","withLink","icon","iconPosition","children","getCmsProperties","iconProps","ariaHidden","text","textClasses","properties","size","textSize","className","renderTextAndIcon","Toggler","useState","loading","setLoading","onOff","setOnOff","afterConditionContent","defaultContent","passed","isDataLoading","components","useEffect","timer","dynamicPlaceholder","fallback","React","isValidElement","SharedComponent","Map","defaultProps","formatString","source","values","replace","_","Column","width","order","content","roleAttr","ariaLabelText","colSize","isNaN","toString","split","grid","Number","getColSize","styles","flex","maxWidth","msFlex","attrs","assign","role","style","getClassNames","htmlTags","tags","slot","area","defaultResolver","Resolvers","file","x","pageGreenDiscoverFree","windowProperty","supernovaData","resolver","Components","Button","Icon","IconContent","Image","Row","Section","SkypeCredits","Subscriptions","Text","UserBadge","Wrapper","setupBundles","ButtonDropdown","CallerId","Carousel","CarouselItem","Device","DropdownButton","ExportContacts","ExportCallerIdNumbers","LanguageSelector","ManagerAdminSettings","ManagerSettings","PromoBanner","SkypeNumber","Tabs","TextFlag","Home","title","component","MasterPage","alertComponent","getCmsProps","page","init","dataSource","rootId","ReactDOM","render","getElementById","require","enable","withPolyfill","callback","DetectOsBrowser","browser","Boolean","location","hostname","match","navigator","serviceWorker","ready","registration","unregister","LazyWrapper","scroll","once","height","lazyLoad","background","sectionStyles","backgroundImage","backgroundSize","Fragment","getProps","WINDOWS","detectOS","agent","userAgent","os","osVersion","indexOf","iosType","detectIosType","specifyLinux","specifyMacOSVersion","context","getContext","font","measureText","redstone3Width","edgeVersionDetectionResult","RegExp","exec","parseInt","getServicePackVersion","detectBrowser","DOCUMENT_NODE","device","detectDevice","getLanguage","useActiveCredit","useUserServices","isLoading","validResponse","filter","service","userServices","setUserServices","setIsLoading","useSelfCancelLimitInterval","sessionStorage","getItem","JSON","parse","LazyComponentPaths","EmptyComponent","FallbackComponent","item","ResolvedComponent","path","componentPath","lazy","lazyComponent","osBrowser","specified","visibility","visibleFor","env","resolveVisible","visibleForCurEnv","essential","onDemand","Array","isArray","alt","imageType","url","isObject","val","getClassFromObject","classList","join","classNames","stringOfClasses","editIconWidget","link","tooltip","profileImgWidget","fullNameWidget","noDecode","emailWidget","changePasswordWidget","AvatarPlaceholder","useSkypeUser","user","signinName","editProfileUrl","editProfileText","changePasswordUrl","changePasswordText","editProfileTracking","changePasswordTracking","tracking","firstName","defaultTo","lastName","username","trim","getUserFullName","trackingTags","avatarUrl","buttonType","textIcon","ProgressBar","color","getColorClass","Subscription","getCMSProperties","minsLeftTexts","unlimitedText","manage","upgrade","unlimited","left","minutes","manageUrl","upgradeEnabled","upgradeUrl","timeLeft","Calling","isCalling","isPackage","updateRefs","subscriptionsUpgradeThreshold","threshold","usedSomeQuota","some","mapToModel","activeCalling","activeCredit","getUpdateRefs","getSetting","creditCurrency","orderBy","dto","currency","subscription","ends","end","balance","quota","services","reduce","acc","cur","total","available","totalMinutes","availableMinutes","isUnlimited","encodeURIComponent","mapTo","showMoreButton","usePartialList","subscriptions","countRest","toggleList","more","discover","valueMore","valueLess","onClick","discoverUrl","SubscriptionToggle","useActiveCalling","isCallingLoading","isCreditLoading","useSwitchState","needCall","userToken","switchState","setSwitchState","skypeToken","axios","headers","Accept","catch","status","credits","autoRechargeButtonTracking","autoRechargeText","buttonBuyCreditText","buttonSendCreditText","buttonSendCreditTracking","buttonBuyCreditTracking","balanceTracking","rechargeText","rechargeTooltip","switchAriaLabel","underRechargeText","switchOn","credit","balanceFormatted","addCreditButtonProperties","autoRechargeButton","Switch","isOn","disabled","ariaLabel","mapToCredits","SkypeCreditToggle","useSelfCancelInterval","check","onSelfCancel","rest","interval","setInterval","isFulfilled","args","clearInterval","explicitStandByFor","standByCheck","standByFor","checkWithStandBy","DynamicPlaceholder","WComponent","ButtonLink","childrenComponents","globalProps","getButtonProps","Ctx","createContext","Consumer","Alert","action","actionName","close","closeBtnAria","closeBtnTracking","scrollY","isSticky","setSticky","listener","debounce","addEventListener","passive","removeEventListener","sticky","AlertMessage","visible","state","setState","ctxState","open","Provider","defaultUser","emails","firstname","lastname","setUser","token","setToken","setSigninName","profileJson","profile","getUserData","getToken","getSigninName","label","labelPosition","styleIcon","fontSize","lineHeight","decodedTitle","aria-label","aria-hidden","list","startWith","visibleList","updateList","counter","setCounter","next","nextItems","counterRest","textProps","dangerouslySetInnerHTML","__html","constructComponent"],"mappings":"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","file":"js/app.bundle.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t0: 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({}[chunkId]||chunkId) + \".chunk.js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"3\":1,\"4\":1,\"5\":1,\"6\":1,\"7\":1,\"8\":1,\"9\":1,\"10\":1,\"11\":1,\"14\":1,\"15\":1,\"16\":1,\"17\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + ({}[chunkId]||chunkId) + \".chunk.css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"https://qaassetswesteurope.blob.core.windows.net/apollo/latest/supernova/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonpSupernova\"] = window[\"webpackJsonpSupernova\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([245,1]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import he from 'he';\r\nimport isNil from 'lodash/isNil';\r\n\r\nexport default function decode(value?: any) {\r\n if (isNil(value) || typeof value !== 'string') return value;\r\n\r\n return he.decode(value);\r\n}\r\n","var map = {\n\t\"./button/Button.component\": [\n\t\t7\n\t],\n\t\"./buttonDropdown/ButtonDropdownn.component\": [\n\t\t249,\n\t\t9\n\t],\n\t\"./buttonDropdown/buttonDropdown.component\": [\n\t\t250,\n\t\t10\n\t],\n\t\"./caller-id/CallerId.component\": [\n\t\t258,\n\t\t3\n\t],\n\t\"./carousel/Carousel.component\": [\n\t\t251,\n\t\t7\n\t],\n\t\"./carouselItem/CarouselItem.component\": [\n\t\t252,\n\t\t14\n\t],\n\t\"./device/Device.component\": [\n\t\t253,\n\t\t15\n\t],\n\t\"./dropdownButton/DropdownButton.component\": [\n\t\t248,\n\t\t8\n\t],\n\t\"./dropdownButton/DropdownList.component\": [\n\t\t246,\n\t\t22\n\t],\n\t\"./export-caller-id-numbers/ExportCallerIdNumbers.component\": [\n\t\t260,\n\t\t12\n\t],\n\t\"./export-contacts/ExportContacts.component\": [\n\t\t261,\n\t\t13\n\t],\n\t\"./grid/Column.component\": [\n\t\t19\n\t],\n\t\"./grid/Row.component\": [\n\t\t28\n\t],\n\t\"./grid/Section.component\": [\n\t\t29\n\t],\n\t\"./icon/Icon.component\": [\n\t\t8\n\t],\n\t\"./iconContent/IconContent.component\": [\n\t\t60\n\t],\n\t\"./image/Image.component\": [\n\t\t51\n\t],\n\t\"./languageSelector/Languageselector.component\": [\n\t\t254,\n\t\t6\n\t],\n\t\"./manager-admin-settings/ManagerAdminSettings.component\": [\n\t\t262,\n\t\t18\n\t],\n\t\"./manager-settings/ManagerSettings.component\": [\n\t\t263,\n\t\t19\n\t],\n\t\"./promoBanner/PromoBanner.component\": [\n\t\t255,\n\t\t16\n\t],\n\t\"./skype-number/SkypeNumber.component\": [\n\t\t259,\n\t\t4\n\t],\n\t\"./skypeCredits/SkypeCredits.component\": [\n\t\t65\n\t],\n\t\"./subscriptions/Subscriptions.component\": [\n\t\t64\n\t],\n\t\"./tabs/Tabs.component\": [\n\t\t256,\n\t\t11\n\t],\n\t\"./text-flag/TextFlag.component\": [\n\t\t247,\n\t\t5\n\t],\n\t\"./text/Text.component\": [\n\t\t9\n\t],\n\t\"./textIcon/TextIcon.component\": [\n\t\t16\n\t],\n\t\"./toggleSwitch/ToggleSwitch.component\": [\n\t\t257,\n\t\t17\n\t],\n\t\"./toggler/Toggler.component\": [\n\t\t17\n\t],\n\t\"./userBadge/UserBadge.component\": [\n\t\t62\n\t],\n\t\"./wrapper/Wrapper.component\": [\n\t\t63\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 116;\nmodule.exports = webpackAsyncContext;","import get from 'lodash/get';\r\n\r\nconst SETTINGS_KEY = 'SKYPE_SETTINGS';\r\n\r\nexport default function(paths: string[]) {\r\n return get(window, [SETTINGS_KEY, ...paths]);\r\n}\r\n","/**\r\n * 🗄 CMS aware component\r\n */\r\nimport React from 'react';\r\n\r\nimport getCmsProperties from '../../lib/getCmsProps/getCmsProps';\r\n\r\nimport Icon from '../icon/Icon.component';\r\nimport { IconProps } from '../icon/types';\r\nimport Text from '../text/Text.component';\r\nimport { TextProps } from '../text/types';\r\n\r\nimport { TextIconProps } from './types';\r\n\r\nimport './textIcon.scss';\r\n\r\n// UI\r\nfunction renderTextAndIcon(props: TextIconProps) {\r\n const { classes, withLink, icon, iconPosition, children, value } = props;\r\n const { textClasses, textSize } = getCmsProperties(props);\r\n const iconProps: IconProps = {\r\n ariaHidden: true,\r\n icon,\r\n };\r\n\r\n const text: TextProps = {\r\n classes: textClasses,\r\n properties: {\r\n size: textSize,\r\n withLink,\r\n },\r\n value: value || '',\r\n };\r\n\r\n if (iconPosition === 'left' || iconPosition === 'top') {\r\n return (\r\n
\r\n \r\n
\r\n {children || }\r\n
\r\n
\r\n );\r\n } else {\r\n return (\r\n
\r\n
\r\n {children || }\r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default function TextIcon(props: TextIconProps) {\r\n return renderTextAndIcon(props);\r\n}\r\n","import React, { Fragment, useEffect, useState } from 'react';\r\n\r\nimport dynamicPlaceholder from '../../lib/dynamicPlaceholder/dynamicPlaceholder';\r\n\r\nimport SharedComponent from '../SharedComponent';\r\n\r\nexport type TogglerProps = {\r\n isDataLoading: boolean;\r\n passed: boolean | undefined;\r\n afterConditionContent: any;\r\n defaultContent: any;\r\n timer?: number;\r\n fallback?: React.ReactNode;\r\n};\r\n\r\nexport default function Toggler(props: TogglerProps) {\r\n const [loading, setLoading] = useState(true);\r\n const [onOff, setOnOff] = useState(true);\r\n const {\r\n afterConditionContent,\r\n defaultContent,\r\n passed,\r\n isDataLoading,\r\n } = props;\r\n const components = passed ? afterConditionContent : defaultContent;\r\n\r\n useEffect(() => {\r\n const timeout = setTimeout(() => setLoading(false), props.timer);\r\n return () => clearTimeout(timeout);\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!isDataLoading && !loading) setOnOff(false);\r\n }, [isDataLoading, loading]);\r\n\r\n return (\r\n \r\n {onOff ? (\r\n dynamicPlaceholder(props.fallback)\r\n ) : (\r\n \r\n {React.isValidElement(components)\r\n ? components\r\n : SharedComponent.Map(components)}\r\n \r\n )}\r\n \r\n );\r\n}\r\n\r\nToggler.defaultProps = {\r\n timer: 1500,\r\n};\r\n","/**\r\n * @param source string with placeholders in {0} ... {N} format\r\n * @param values values to put in corresponding places\r\n */\r\nconst formatString = (source: string | undefined, ...values: string[]) =>\r\n (source || '').replace(/\\{([0-9]+)\\}/g, (_, i) => values[i]);\r\n\r\nexport default formatString;\r\n","import React, { PropsWithChildren } from 'react';\r\n\r\nimport decode from '../../lib/decode/decode';\r\nimport getClassNames from '../../lib/getClassNames/getClassNames';\r\nimport { BaseWidget, ComponentWithCmsProps } from '../../types';\r\n\r\nimport SharedComponent from '../SharedComponent';\r\n\r\nimport './styles/column.scss';\r\n\r\n/*******************************************************************************************************\r\n * Types\r\n *******************************************************************************************************/\r\n\r\nexport type ColumnWidget = BaseWidget<'Column', never> & {\r\n order?: number;\r\n width?: string | number;\r\n roleAttr?: string;\r\n ariaLabelText?: string;\r\n};\r\n\r\nexport type ColumnProps = ComponentWithCmsProps>;\r\n\r\n/*******************************************************************************************************\r\n * Column Size\r\n *******************************************************************************************************/\r\n\r\nconst getColSize = (size: string | number | undefined) => {\r\n if (!size) return 100;\r\n if (!isNaN(size as number)) return size;\r\n\r\n const [colSize, grid] = size.toString().split('/');\r\n return (Number(colSize) * 100) / Number(grid);\r\n};\r\n\r\n/*******************************************************************************************************\r\n * UI\r\n *******************************************************************************************************/\r\n\r\nexport default function Column(props: ColumnProps) {\r\n const { width, order, children, content, classes, roleAttr, ariaLabelText } = props;\r\n\r\n const colSize = getColSize(width);\r\n const styles = {\r\n flex: `0 0 ${colSize}%`,\r\n maxWidth: colSize + '%',\r\n msFlex: `0 0 ${colSize}%`,\r\n order: order || 1,\r\n };\r\n\r\n const attrs = {};\r\n\r\n if (ariaLabelText) {\r\n Object.assign(attrs, { 'aria-label': decode(ariaLabelText) });\r\n }\r\n\r\n if (roleAttr) {\r\n Object.assign(attrs, { role: roleAttr });\r\n }\r\n\r\n return (\r\n
\r\n {children || SharedComponent.Map(content)}\r\n
\r\n );\r\n}\r\n","export type TagsType = Partial>;\r\n\r\nexport default function htmlTags(tags?: TagsType) {\r\n // Safe return\r\n if (!tags) {\r\n return null;\r\n }\r\n\r\n const { name, id, slot, area } = tags;\r\n return {\r\n 'data-bi-area': area,\r\n 'data-bi-id': id,\r\n 'data-bi-name': name,\r\n 'data-bi-slot': slot,\r\n };\r\n}\r\n","const windowPropertyResolver = () =>\r\n Promise.resolve(window && (window as any).supernovaData);\r\nconst fileResolver = () =>\r\n import('./data/supernova-data').then(x => x.pageGreenDiscoverFree);\r\n\r\nconst defaultResolver = () => Promise.resolve({});\r\n\r\nconst Resolvers = {\r\n file: fileResolver,\r\n windowProperty: windowPropertyResolver,\r\n};\r\n\r\nexport type ResolverType = keyof typeof Resolvers;\r\n\r\nconst resolver = (type: ResolverType = 'windowProperty') =>\r\n (Resolvers[type] || defaultResolver)();\r\n\r\nexport default resolver;\r\n","import React from 'react';\r\nimport getClassNames from '../../lib/getClassNames/getClassNames';\r\n// Import components you want to be served in initial bundle here\r\nimport Button from '../../shared-components/button/Button.component';\r\n// Import components you want to be served in initial bundle her\r\nimport Column from '../../shared-components/grid/Column.component';\r\nimport Row from '../../shared-components/grid/Row.component';\r\nimport Section from '../../shared-components/grid/Section.component';\r\nimport Icon from '../../shared-components/icon/Icon.component';\r\nimport IconContent from '../../shared-components/iconContent/IconContent.component';\r\nimport Image from '../../shared-components/image/Image.component';\r\nimport SharedComponent, { setupBundles } from '../../shared-components/SharedComponent';\r\nimport SkypeCredits from '../../shared-components/skypeCredits/SkypeCredits.component';\r\nimport Subscriptions from '../../shared-components/subscriptions/Subscriptions.component';\r\nimport Text from '../../shared-components/text/Text.component';\r\nimport TextIcon from '../../shared-components/textIcon/TextIcon.component';\r\nimport Toggler from '../../shared-components/toggler/Toggler.component';\r\nimport UserBadge from '../../shared-components/userBadge/UserBadge.component';\r\nimport Wrapper from '../../shared-components/wrapper/Wrapper.component';\r\nimport { Page } from '../../types';\r\nimport './styles/home.scss';\r\n\r\ntype DataType = {\r\n data: Page;\r\n};\r\n\r\n// Put components you want to be served in initial bundle here\r\nconst Components = {\r\n Button,\r\n Column,\r\n Icon,\r\n IconContent,\r\n Image,\r\n Row,\r\n Section,\r\n SkypeCredits,\r\n Subscriptions,\r\n Text,\r\n TextIcon,\r\n Toggler,\r\n UserBadge,\r\n Wrapper,\r\n};\r\n\r\n// Put components you want to be loaded from server on-demand here\r\nconst LazyComponentPaths = {\r\n ButtonDropdown: 'buttonDropdown/buttonDropdown',\r\n CallerId: 'caller-id/CallerId',\r\n Carousel: 'carousel/Carousel',\r\n CarouselItem: 'carouselItem/CarouselItem',\r\n Device: 'device/Device',\r\n DropdownButton: 'dropdownButton/DropdownButton',\r\n ExportContacts: 'export-contacts/ExportContacts',\r\n ExportCallerIdNumbers: 'export-caller-id-numbers/ExportCallerIdNumbers',\r\n LanguageSelector: 'languageSelector/Languageselector',\r\n ManagerAdminSettings: 'manager-admin-settings/ManagerAdminSettings',\r\n ManagerSettings: 'manager-settings/ManagerSettings',\r\n PromoBanner: 'promoBanner/PromoBanner',\r\n SkypeNumber: 'skype-number/SkypeNumber',\r\n Tabs: 'tabs/Tabs',\r\n TextFlag: 'text-flag/TextFlag',\r\n};\r\n\r\n// Setup bundling for particular page\r\nsetupBundles(Components, LazyComponentPaths);\r\n\r\nconst Home = ({ data }: DataType) => (\r\n
\r\n {data && data.content.map((component: any, i: number) => )}\r\n
\r\n);\r\n\r\nexport default Home;\r\n","import React from 'react';\r\nimport getCmsProps from '../../lib/getCmsProps/getCmsProps';\r\nimport Home from '../../pages/home/Home';\r\nimport GlobalAlert from '../alert-message/AlertMessage';\r\n\r\nimport '../../styles/global.scss';\r\nimport { MasterPageWidget } from './types';\r\n\r\nexport default function MasterPage(props: MasterPageWidget) {\r\n const { alertComponent } = getCmsProps(props);\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\n\r\nimport resolve, { ResolverType } from './data-resolver';\r\nimport runOnDev from './lib/debug/runOnDev';\r\nimport MasterPage from './shared-components/master-page/MasterPage';\r\n\r\n/*******************************************************************************************************\r\n * Run only on dev\r\n *******************************************************************************************************/\r\nif (process.env.NODE_ENV === 'development') {\r\n runOnDev(function a11yCheck() {\r\n import('react-a11y').then(a11y => {\r\n // Rules\r\n // https://github.com/reactjs/react-a11y/tree/master/docs/rules\r\n const rules = {\r\n 'aria-role': 'warn',\r\n 'aria-unsupported-elements': 'warn',\r\n 'click-events-have-key-events': 'off',\r\n 'hidden-uses-tabindex': 'warn',\r\n 'img-redundant-alt': ['warn', ['image', 'photo', 'foto', 'bild']],\r\n 'img-uses-alt': 'warn',\r\n 'interactive-supports-focus': 'warn',\r\n 'label-has-for': 'warn',\r\n 'mouse-events-have-key-events': 'warn',\r\n 'no-access-key': 'warn',\r\n 'no-hash-ref': 'warn',\r\n 'no-onchange': 'warn',\r\n 'onclick-uses-role': 'warn',\r\n 'tabindex-no-positive': 'warn',\r\n 'tabindex-uses-button': 'warn',\r\n };\r\n a11y.default(React, ReactDOM, { rules });\r\n });\r\n });\r\n}\r\n\r\n/*******************************************************************************************************\r\n * Supernova Bootstrap\r\n *******************************************************************************************************/\r\n\r\nconst init = (dataSource: ResolverType, rootId: string = 'root') =>\r\n resolve(dataSource).then(data =>\r\n ReactDOM.render(, document.getElementById(rootId))\r\n );\r\n\r\nexport { init };\r\n","/* tslint:disable */\r\n\r\n/**\r\n * Polyfill Support\r\n * this function checks if browser needs polyfill support\r\n * and return only the polyfill needed by the browser\r\n *\r\n * P.S: it needs to run at first thing on your app, before every import\r\n * it will auto detect and require the package.\r\n */\r\n\r\n/*******************************************************************************************************\r\n * Promise\r\n * as the app need at least Promise to start running (code by react-app-polyfill)\r\n *******************************************************************************************************/\r\n\r\nimport DetectOsBrowser from './DetectOsBrowser';\r\n\r\nif (typeof Promise === 'undefined') {\r\n // Rejection tracking prevents a common issue where React gets into an\r\n // inconsistent state due to an error, but it gets swallowed by a Promise,\r\n // and the user has no idea what causes React's erratic future behavior.\r\n require('promise/lib/rejection-tracking').enable();\r\n (window as any).Promise = require('promise/lib/es6-extensions.js');\r\n}\r\n\r\n/*******************************************************************************************************\r\n * Checker\r\n *******************************************************************************************************/\r\n\r\nconst withPolyfill = (callback: () => void) => {\r\n const browser = DetectOsBrowser.browser;\r\n if (browser === 'IE') {\r\n import('../../polyfills').then(callback);\r\n return;\r\n }\r\n\r\n // Skip, no polyfill needed\r\n callback();\r\n};\r\n\r\nexport default withPolyfill;\r\n","/* tslint:disable */\r\n\r\n// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read http://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\ntype Config = {\r\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\r\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\r\n};\r\n\r\nexport function register(config?: Config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(\r\n (process as { env: { [key: string]: string } }).env.PUBLIC_URL,\r\n window.location.href\r\n );\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit http://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl: string, config?: Config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See http://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import { ResolverType } from './data-resolver';\r\nimport runOnDev from './lib/debug/runOnDev';\r\nimport withPolyfill from './lib/detectOsBrowser/detectPolyfill';\r\nimport * as serviceWorker from './serviceWorker';\r\n\r\n/*******************************************************************************************************\r\n * Global Init\r\n *******************************************************************************************************/\r\n\r\nfunction init(dataSource: ResolverType, rootId: string = 'root') {\r\n withPolyfill(() => require('./Supernova').init(dataSource, rootId));\r\n}\r\n\r\n/*******************************************************************************************************\r\n * Auto Init (Dev)\r\n *******************************************************************************************************/\r\nif (process.env.NODE_ENV === 'development') {\r\n runOnDev(function autoInitApp() {\r\n import('./devSkypeSettings').then(settings => {\r\n settings.init();\r\n init('file');\r\n import('./dev-tools/devTools').then(devTools => devTools.init());\r\n });\r\n });\r\n}\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: http://bit.ly/CRA-PWA\r\nserviceWorker.unregister();\r\n\r\nexport { init };\r\n","import React, { PropsWithChildren } from 'react';\r\n\r\nimport getClassNames from '../../lib/getClassNames/getClassNames';\r\nimport { BaseWidget, ComponentWithCmsProps } from '../../types';\r\n\r\nimport SharedComponent from '../SharedComponent';\r\n\r\nimport './styles/row.scss';\r\n\r\n/*******************************************************************************************************\r\n * Types\r\n *******************************************************************************************************/\r\n\r\nexport type RowWidget = BaseWidget<'Row', never>;\r\n\r\nexport type RowProps = ComponentWithCmsProps>;\r\n\r\n/*******************************************************************************************************\r\n * UI\r\n *******************************************************************************************************/\r\n\r\nexport default function Row(props: RowProps) {\r\n return (\r\n
\r\n {props.children || SharedComponent.Map(props.content)}\r\n
\r\n );\r\n}\r\n","import React, { Fragment, PropsWithChildren } from 'react';\r\nimport LazyLoad from 'react-lazyload';\r\n\r\nimport getClassNames from '../../lib/getClassNames/getClassNames';\r\nimport getCmsProps from '../../lib/getCmsProps/getCmsProps';\r\n\r\nimport { BaseWidget, ComponentWithCmsProps } from '../../types';\r\n\r\nimport SharedComponent from '../SharedComponent';\r\n\r\n/*******************************************************************************************************\r\n * Types\r\n *******************************************************************************************************/\r\n\r\nexport type SectionWidget = BaseWidget<\r\n 'Section',\r\n {\r\n background?: string;\r\n }\r\n>;\r\n\r\nexport type SectionProps = ComponentWithCmsProps<\r\n SectionWidget,\r\n PropsWithChildren<{\r\n lazyLoad?: boolean;\r\n }>\r\n>;\r\n\r\n/*******************************************************************************************************\r\n * UI\r\n *******************************************************************************************************/\r\n\r\nconst LazyWrapper = ({ children }: any) => (\r\n \r\n {children}\r\n \r\n);\r\n\r\nexport default function Section(props: SectionProps) {\r\n const { lazyLoad = true } = props;\r\n const { background } = getCmsProps(props);\r\n\r\n const sectionStyles = {\r\n backgroundImage: background ? `url(${background})` : '',\r\n backgroundSize: background ? 'cover' : '',\r\n };\r\n\r\n const Wrapper = lazyLoad ? LazyWrapper : Fragment;\r\n\r\n return (\r\n \r\n \r\n
\r\n {props.children || SharedComponent.Map(props.content)}\r\n
\r\n \r\n
\r\n );\r\n}\r\n","export default function getProps(props: { properties?: T }): T {\r\n // Save Return\r\n if (!props.properties) {\r\n return {} as T;\r\n }\r\n\r\n return props.properties;\r\n}\r\n","// TODO Unify consts?\r\nconst WINDOWS = 'windows';\r\nconst WINDOWS_AU_UNDETECTED = 'windows_au_undetected';\r\nconst WINDOWS_AU_NONE = 'windows_au_none';\r\nconst WINDOWS_SP3 = 'windows_au';\r\nconst WINDOWS_XP = 'windows_xp';\r\nconst WINDOWS_VISTA = 'windows_vista';\r\nconst WINDOWS_7 = 'windows_7';\r\nconst WINDOWS_8 = 'windows_8';\r\n\r\nconst MAC = 'mac';\r\nconst MAC_OS_X_10_9_LOWER = 'mac_os_x_10_9_lower';\r\nconst MAC_OS_X_10_10_HIGHER = 'mac_os_x_10_10_higher';\r\n\r\nconst LINUX = 'linux';\r\nconst LINUX_DEBIAN = 'linux_debian';\r\nconst LINUX_RPM = 'linux_rpm';\r\n\r\nconst ANDROID = 'android';\r\n\r\nconst IOS = 'ios';\r\n\r\nconst BLACKBERRY = 'blackberry';\r\n\r\nconst MOBILE = 'mobile';\r\nconst DESKTOP = 'desktop';\r\nconst IPHONE = 'iphone';\r\nconst IPAD = 'ipad';\r\nconst IPOD = 'ipod';\r\n\r\nconst CHROME = 'chrome';\r\nconst SAFARI = 'safari';\r\n\r\nfunction specifyMacOSVersion(agent: string): DetectableOSVersion | undefined {\r\n if (agent.match(/(Mac OS X 10[_|\\.][0-9]([_|\\.]|\\D))/)) {\r\n return MAC_OS_X_10_9_LOWER;\r\n }\r\n\r\n if (agent.match(/(Mac OS X 10[_|\\.]10)/)) {\r\n return MAC_OS_X_10_10_HIGHER;\r\n }\r\n}\r\n\r\nfunction specifyLinux(agent: string): DetectableOSVersion {\r\n if (agent.indexOf('Debian') !== -1 || agent.indexOf('Ubuntu') !== -1) {\r\n return LINUX_DEBIAN;\r\n } else {\r\n return LINUX_RPM;\r\n }\r\n}\r\n\r\nfunction getServicePackVersion(\r\n agent: string,\r\n browser: string\r\n): DetectableOSVersion {\r\n if (browser === CHROME) {\r\n // Chrome detection\r\n const context: any = document.createElement('canvas').getContext('2d');\r\n context.font = '64px Segoe UI Emoji';\r\n const redstone1Width = context.measureText('\\uD83D\\uDC31\\u200D\\uD83D\\uDC64')\r\n .width;\r\n const redstone2Width = context.measureText('\\ud83d\\udc68\\u200d\\u2695')\r\n .width;\r\n\r\n const redstone3Width = context.measureText('\\uD83E\\uDDDB\\uD83C\\uDFFB')\r\n .width;\r\n if (agent.indexOf('Windows NT') === -1) {\r\n return WINDOWS_AU_UNDETECTED;\r\n } else {\r\n if (redstone3Width <= 90) {\r\n return WINDOWS_SP3;\r\n } else if (redstone2Width <= 90) {\r\n return WINDOWS_AU_NONE;\r\n } else if (redstone1Width <= 90) {\r\n return WINDOWS_AU_NONE;\r\n }\r\n\r\n return WINDOWS_AU_NONE;\r\n }\r\n } else if (browser === 'Edge') {\r\n // Edge detection\r\n const edgeVersionRegex = new RegExp('edge/([0-9]+)', 'gi');\r\n const edgeVersionDetectionResult = edgeVersionRegex.exec(agent);\r\n let edgeVersion = 0;\r\n\r\n if (\r\n edgeVersionDetectionResult === null ||\r\n edgeVersionDetectionResult.length !== 2\r\n ) {\r\n return WINDOWS_AU_UNDETECTED;\r\n } else {\r\n edgeVersion = parseInt(edgeVersionDetectionResult[1], 10);\r\n\r\n if (edgeVersion >= 17.17) {\r\n return WINDOWS_SP3;\r\n }\r\n if (edgeVersion >= 15.15) {\r\n return WINDOWS_AU_NONE;\r\n } else if (edgeVersion > 13) {\r\n return WINDOWS_AU_NONE;\r\n } else {\r\n return WINDOWS_AU_NONE;\r\n }\r\n }\r\n } else {\r\n return WINDOWS_AU_UNDETECTED;\r\n }\r\n}\r\n\r\nfunction detectDevice(): DetectableDeviceType {\r\n const os = detectOS().os;\r\n if (os === WINDOWS || os === MAC || os === LINUX) {\r\n return DESKTOP;\r\n } else {\r\n return MOBILE;\r\n }\r\n}\r\n\r\nfunction detectIosType(agent: string) {\r\n let iosType: DetectableOSVersion = '';\r\n if (agent.match(/iphone/i)) {\r\n iosType = IPHONE;\r\n } else if (agent.match(/ipad/i)) {\r\n iosType = IPAD;\r\n } else if (agent.match(/ipod/i)) {\r\n iosType = IPOD;\r\n }\r\n return iosType;\r\n}\r\n\r\nfunction detectOS(): { os: DetectableOS; osVersion?: DetectableOSVersion } {\r\n const agent = navigator.userAgent;\r\n\r\n let os: DetectableOS = '';\r\n let osVersion: DetectableOSVersion | undefined = '';\r\n\r\n if (agent.indexOf('Android') !== -1) {\r\n os = ANDROID;\r\n } else if (agent.match(/blackberry/i)) {\r\n os = BLACKBERRY;\r\n } else if (\r\n agent.indexOf('iPad') !== -1 ||\r\n agent.indexOf('iPhone') !== -1 ||\r\n agent.indexOf('iPod') !== -1\r\n ) {\r\n os = IOS;\r\n osVersion = detectIosType(agent);\r\n } else if (agent.indexOf('Windows Phone') !== -1) {\r\n os = WINDOWS;\r\n osVersion = 'Windows Phone';\r\n } else if (agent.indexOf('Linux') !== -1 || agent.indexOf('X11') !== -1) {\r\n os = LINUX;\r\n osVersion = specifyLinux(agent);\r\n } else if (\r\n agent.indexOf('Mac OS') !== -1 ||\r\n agent.indexOf('Macintosh') !== -1\r\n ) {\r\n os = MAC;\r\n osVersion = specifyMacOSVersion(agent);\r\n } else if (\r\n agent.indexOf('Windows NT 5.0') !== -1 ||\r\n agent.indexOf('Windows 2000') !== -1\r\n ) {\r\n os = WINDOWS;\r\n osVersion = 'Windows 2000';\r\n } else if (\r\n agent.indexOf('Windows NT 4.0') !== -1 ||\r\n agent.indexOf('WinNT4.0') !== -1 ||\r\n agent.indexOf('WinNT') !== -1\r\n ) {\r\n os = WINDOWS;\r\n osVersion = 'Windows NT 4.0';\r\n } else if (\r\n agent.indexOf('Windows NT 5.1') !== -1 ||\r\n agent.indexOf('Windows XP') !== -1\r\n ) {\r\n os = WINDOWS;\r\n osVersion = WINDOWS_XP;\r\n } else if (agent.indexOf('Windows ME') !== -1) {\r\n os = WINDOWS;\r\n osVersion = 'Windows ME';\r\n } else if (agent.indexOf('Windows NT 5.2') !== -1) {\r\n os = WINDOWS;\r\n osVersion = 'Windows Server 2003';\r\n } else if (agent.indexOf('Windows NT 6.0') !== -1) {\r\n os = WINDOWS;\r\n osVersion = WINDOWS_VISTA;\r\n } else if (agent.indexOf('Windows NT 6.1') !== -1) {\r\n os = WINDOWS;\r\n osVersion = WINDOWS_7;\r\n } else if (\r\n agent.indexOf('Windows NT 6.2') !== -1 ||\r\n agent.indexOf('WOW64') !== -1\r\n ) {\r\n os = WINDOWS;\r\n osVersion = WINDOWS_8;\r\n } else if (\r\n agent.indexOf('Windows 10.0') !== -1 ||\r\n agent.indexOf('Windows NT 10.0') !== -1\r\n ) {\r\n os = WINDOWS;\r\n const browser = detectBrowser();\r\n osVersion = getServicePackVersion(agent, browser);\r\n } else if (\r\n agent.indexOf('Googlebot') !== -1 ||\r\n agent.indexOf('MSNBot') !== -1\r\n ) {\r\n os = 'Search bot';\r\n }\r\n return {\r\n os,\r\n osVersion,\r\n };\r\n}\r\n\r\nfunction detectBrowser(): DetectableBrowser {\r\n const agent = navigator.userAgent;\r\n let browser: DetectableBrowser = '';\r\n\r\n if (\r\n agent.indexOf('Chrome') !== -1 &&\r\n agent.indexOf('Edge') === -1 &&\r\n agent.indexOf('OPR') === -1 &&\r\n agent.indexOf('Opera') === -1\r\n ) {\r\n browser = CHROME;\r\n } else if (agent.indexOf('Firefox') !== -1) {\r\n browser = 'Firefox';\r\n } else if (agent.indexOf('Safari') !== -1 && agent.indexOf('Chrome') === -1) {\r\n browser = SAFARI;\r\n } else if (agent.indexOf('OPR') !== -1 || agent.indexOf('Opera') !== -1) {\r\n browser = 'Opera';\r\n } else if (agent.indexOf('Edge') !== -1) {\r\n browser = 'Edge';\r\n } else if (document.DOCUMENT_NODE || agent.indexOf('MSIE') !== -1) {\r\n browser = 'IE';\r\n }\r\n\r\n return browser;\r\n}\r\n\r\nexport default {\r\n browser: detectBrowser(),\r\n device: detectDevice(),\r\n os: detectOS(),\r\n};\r\n\r\nexport type DetectableBrowser =\r\n | 'chrome' // ??\r\n | 'Firefox'\r\n | 'safari' // ??\r\n | 'Opera'\r\n | 'Edge'\r\n | 'IE'\r\n // TODO Remove\r\n | '';\r\n\r\nexport type DetectableOS =\r\n | 'android'\r\n | 'windows'\r\n | 'blackberry'\r\n | 'ios'\r\n | 'linux'\r\n | 'mac'\r\n | 'Search bot' // ??\r\n // TODO Remove\r\n | '';\r\n\r\nexport type DetectableOSVersion =\r\n | 'Windows Phone'\r\n | 'Windows 2000'\r\n | 'Windows NT 4.0'\r\n | 'windows_xp' // ??\r\n | 'Windows ME'\r\n | 'Windows Server 2003'\r\n | 'windows_vista'\r\n | 'windows_7'\r\n | 'windows_8'\r\n | 'iphone'\r\n | 'ipad'\r\n | 'ipod'\r\n | 'linux_debian'\r\n | 'linux_rpm'\r\n | 'mac_os_x_10_9_lower'\r\n | 'mac_os_x_10_10_higher'\r\n | 'windows_au_undetected'\r\n | 'windows_au'\r\n | 'windows_au_none'\r\n // TODO Remove\r\n | '';\r\n\r\nexport type DetectableDeviceType = 'desktop' | 'mobile';\r\n\r\nexport type Visibility =\r\n | DetectableOS\r\n | DetectableOSVersion\r\n | DetectableBrowser\r\n | DetectableDeviceType\r\n | 'all';\r\n","import get from 'lodash/get';\r\n\r\nconst DEFAULT_LANGUAGE = 'en';\r\n\r\nconst getLanguage = () =>\r\n get(document, ['documentElement', 'lang'], DEFAULT_LANGUAGE);\r\n\r\nexport default getLanguage;\r\n","import useUserServices from '../../../apis/userServices/useUserServices.hook';\r\nimport { validResponse } from '../../../apis/userServices/utils';\r\n\r\nconst getCredit = (source?: any[]) =>\r\n validResponse(source).filter(\r\n (x: { service: string }) => x.service === 'pstn'\r\n );\r\n\r\nexport default function useActiveCredit(): ReturnType {\r\n const [data, isLoading] = useUserServices();\r\n\r\n return [getCredit(data), isLoading];\r\n}\r\n","import { useState } from 'react';\r\n\r\nimport runOnDev from '../../lib/debug/runOnDev';\r\nimport useSelfCancelLimitInterval from '../../lib/hooks/useSelfCancelLimitInterval.hook';\r\n\r\nexport type UserServicesDto = {\r\n service: string;\r\n active: boolean;\r\n end: string;\r\n id: string;\r\n balance: number;\r\n quota: number;\r\n services: UserServicesDto[];\r\n};\r\n\r\nconst USER_SERVICES_SS_KEY = 'userServices';\r\n\r\nif (process.env.NODE_ENV === 'development') {\r\n runOnDev(function putMockResponseToSS() {\r\n window.sessionStorage.clear();\r\n import('./mockUserServices').then(resolve => {\r\n setTimeout(\r\n () =>\r\n sessionStorage.setItem(\r\n USER_SERVICES_SS_KEY,\r\n JSON.stringify(resolve.default())\r\n ),\r\n 2000\r\n );\r\n });\r\n });\r\n}\r\n\r\nconst useUserServices = (): [UserServicesDto[], boolean] => {\r\n const [userServices, setUserServices] = useState([]);\r\n const [isLoading, setIsLoading] = useState(true);\r\n\r\n const checkData = () => sessionStorage.getItem(USER_SERVICES_SS_KEY);\r\n const setData = (data: string) => {\r\n try {\r\n setUserServices(JSON.parse(data));\r\n } catch (e) {\r\n setUserServices([]);\r\n }\r\n setIsLoading(false);\r\n };\r\n\r\n useSelfCancelLimitInterval(() => {\r\n const data = checkData();\r\n return [!!data, [data]];\r\n }, setData);\r\n\r\n return [userServices, isLoading];\r\n};\r\n\r\nexport default useUserServices;\r\n","import { UserServicesDto } from './useUserServices.hook';\r\n\r\n// TODO type\r\nconst getActiveServices = (\r\n serviceGetter: (x: UserServicesDto[]) => Array<{ active: boolean }>,\r\n source: UserServicesDto[]\r\n): any[] => serviceGetter(source).filter(x => x.active);\r\n\r\nconst validResponse = (source?: UserServicesDto[]) =>\r\n !source || source.length < 0 ? [] : source;\r\n\r\nexport { getActiveServices, validResponse };\r\n","import React, { lazy, Suspense } from 'react';\r\nimport DetectOsBrowser, {\r\n DetectableBrowser,\r\n DetectableDeviceType,\r\n DetectableOS,\r\n DetectableOSVersion,\r\n Visibility,\r\n} from '../lib/detectOsBrowser/DetectOsBrowser';\r\n\r\nimport { Widget } from '../types';\r\n\r\n/*******************************************************************************************************\r\n * Types\r\n *******************************************************************************************************/\r\n\r\ntype Props = {\r\n component: Widget;\r\n className?: string;\r\n key?: number | string;\r\n};\r\n\r\n// Put components you want to be served in initial bundle here\r\nlet Components: any = {};\r\n// Put components you want to be loaded from server on-demand here\r\nlet LazyComponentPaths: any = {};\r\n\r\n/*******************************************************************************************************\r\n * Default component to be rendered\r\n *******************************************************************************************************/\r\n\r\nconst EmptyComponent = (props: any) => (\r\n

\r\n 🐱‍👤 {props.type || 'Undefined Component Type'} is not\r\n available in Supernova\r\n

\r\n);\r\n\r\nconst FallbackComponent = () =>
;\r\n\r\n/*******************************************************************************************************\r\n * Resolver\r\n *******************************************************************************************************/\r\n\r\nconst lazyComponent = (path: any) => {\r\n const componentPath = LazyComponentPaths[path];\r\n return componentPath\r\n ? lazy(() => import(`./${componentPath}.component`))\r\n : null;\r\n};\r\n\r\nfunction resolve(item: Widget) {\r\n const ResolvedComponent: any =\r\n Components[item.type] || lazyComponent(item.type) || EmptyComponent;\r\n\r\n return (\r\n }>\r\n \r\n \r\n );\r\n}\r\n\r\n/*******************************************************************************************************\r\n * Visibility\r\n *******************************************************************************************************/\r\n\r\nconst osBrowser = { ...DetectOsBrowser };\r\n\r\nfunction specified(visibility?: Visibility[]): visibility is Visibility[] {\r\n return !!visibility && visibility.length > 0;\r\n}\r\n\r\nfunction visibleForAll(visibility?: Visibility[]) {\r\n return !specified(visibility) || visibility.indexOf('all') !== -1;\r\n}\r\n\r\nfunction visibleFor(env: string | undefined, source: string[]) {\r\n return !!env && source.indexOf(env) !== -1;\r\n}\r\n\r\nfunction visibleForCurEnv(\r\n env: {\r\n browser: DetectableBrowser;\r\n device: DetectableDeviceType;\r\n os: { os: DetectableOS; osVersion?: DetectableOSVersion };\r\n },\r\n visibility: Visibility[] | undefined\r\n) {\r\n return (\r\n specified(visibility) &&\r\n (visibleFor(env.browser, visibility) ||\r\n visibleFor(env.device, visibility) ||\r\n visibleFor(env.os.os, visibility) ||\r\n visibleFor(env.os.osVersion, visibility))\r\n );\r\n}\r\n\r\nfunction resolveVisible(item: Widget) {\r\n if (!item) {\r\n return null;\r\n }\r\n\r\n item.osBrowser = { ...osBrowser };\r\n\r\n if (\r\n visibleForAll(item.visibility) ||\r\n visibleForCurEnv(osBrowser, item.visibility)\r\n ) {\r\n return resolve(item);\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\n/*******************************************************************************************************\r\n * HOC\r\n *******************************************************************************************************/\r\n\r\nconst SharedComponent = (props: Props) => resolveVisible(props.component);\r\n\r\n/*******************************************************************************************************\r\n * Map Helper Generator (map array of widgets)\r\n *******************************************************************************************************/\r\n\r\nSharedComponent.Map = (components: any) => {\r\n const resolveComponents =\r\n components &&\r\n Array.isArray(components) &&\r\n components.map((item: any, key: number) => (\r\n \r\n ));\r\n return resolveComponents || null;\r\n};\r\n\r\n/*******************************************************************************************************\r\n * Bundle Setup\r\n *******************************************************************************************************/\r\n\r\n// TODO Type\r\n// Singleton\r\nexport function setupBundles(essential: any, onDemand: any) {\r\n Components = essential;\r\n LazyComponentPaths = onDemand;\r\n}\r\n\r\nexport default SharedComponent;\r\n","/**\r\n * 🗄 CMS aware component\r\n */\r\nimport React from 'react';\r\nimport LazyLoad from 'react-lazyload';\r\n\r\nimport getClassNames from '../../lib/getClassNames/getClassNames';\r\n\r\nimport './image.scss';\r\nimport { ImageProps } from './types';\r\n\r\n// UI\r\nexport default function Image(props: ImageProps) {\r\n const { alt, height = 200 } = props;\r\n\r\n // Accessibility\r\n // The `alt` prop cannot be empty string if role=\"presentation\" is not set.\r\n const role = !alt ? 'presentation' : undefined;\r\n\r\n return (\r\n \r\n {props.imageType === 'background' && (\r\n \r\n )}\r\n {props.imageType !== 'background' && (\r\n \r\n {alt}\r\n \r\n )}\r\n
\r\n );\r\n}\r\n","/*******************************************************************************************************\r\n * Helpers\r\n *******************************************************************************************************/\r\n\r\nconst isObject = (val: object) => typeof val === 'object';\r\n\r\n/*******************************************************************************************************\r\n * Get Class inside Object\r\n *******************************************************************************************************/\r\n\r\nconst getClassFromObject = (classList: any): string => {\r\n const classKeys: string[] = Object.keys(classList);\r\n const classes: string[] = [];\r\n\r\n for (const className of classKeys) {\r\n if (classList[className]) classes.push(className);\r\n }\r\n return classes.join(' ');\r\n};\r\n\r\n/*******************************************************************************************************\r\n * Get Class\r\n *******************************************************************************************************/\r\n\r\nexport default function getClassNames(...classes: any): string {\r\n const classNames = [];\r\n for (const className of classes) {\r\n // Object with ClassNames\r\n if (isObject(className)) {\r\n const stringOfClasses = getClassFromObject(className);\r\n classNames.push(stringOfClasses);\r\n }\r\n // String ClassNames\r\n else if (className !== null && className !== undefined) {\r\n classNames.push(className);\r\n }\r\n }\r\n\r\n return classNames.join(' ');\r\n}\r\n","import React from 'react';\r\n\r\nimport { BaseWidget, ComponentWithCmsProps, Widget } from '../../types';\r\n\r\nimport decode from '../../lib/decode/decode';\r\nimport Icon from '../icon/Icon.component';\r\nimport SharedComponent from '../SharedComponent';\r\nimport Text from '../text/Text.component';\r\n\r\nimport './iconContent.scss';\r\n\r\nexport type IconContentWidget = BaseWidget<'IconContent', never> & {\r\n icon: string;\r\n title: string;\r\n content: Widget[];\r\n roleAttr?: string;\r\n ariaLabelText?: string;\r\n};\r\n\r\ntype IconContentProps = ComponentWithCmsProps;\r\n\r\nexport default function IconContent(props: IconContentProps) {\r\n const attrs = {};\r\n\r\n if (props.ariaLabelText) {\r\n Object.assign(attrs, { 'aria-label': decode(props.ariaLabelText) });\r\n }\r\n\r\n if (props.roleAttr) {\r\n Object.assign(attrs, { role: props.roleAttr });\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n
{SharedComponent.Map(props.content)}
\r\n
\r\n );\r\n}\r\n","import defaultTo from 'lodash/defaultTo';\r\nimport get from 'lodash/get';\r\nimport head from 'lodash/head';\r\nimport isNil from 'lodash/isNil';\r\nimport React from 'react';\r\n\r\nimport decode from '../../lib/decode/decode';\r\nimport getCmsProps from '../../lib/getCmsProps/getCmsProps';\r\nimport { UserProfileType } from '../../lib/skypeUser/types';\r\nimport useSkypeUser from '../../lib/skypeUser/useSkypeUser';\r\nimport trackingTags from '../../lib/tracking/htmlTags';\r\n\r\nimport Button from '../button/Button.component';\r\nimport Icon from '../icon/Icon.component';\r\nimport { IconWidget } from '../icon/types';\r\nimport { ImageWidget } from '../image/types';\r\nimport SharedComponent from '../SharedComponent';\r\nimport { TextWidget } from '../text/types';\r\nimport { TextIconWidget } from '../textIcon/types';\r\n\r\nimport { UserBadgeProps } from './types';\r\n\r\nimport './userBadge.scss';\r\n\r\n/*******************************************************************************************************\r\n * Content\r\n *******************************************************************************************************/\r\n\r\nconst editIconWidget: IconWidget = {\r\n classes: 'user-badge-icon edit',\r\n icon: '',\r\n link: '',\r\n properties: {},\r\n title: '',\r\n type: 'Icon',\r\n tooltip: true,\r\n};\r\n\r\nconst profileImgWidget: ImageWidget = {\r\n alt: '',\r\n classes: 'user-badge-profile-image round',\r\n imageType: 'background',\r\n type: 'Image',\r\n url: '',\r\n};\r\n\r\nconst fullNameWidget: TextWidget = {\r\n classes: 'user-badge-full-name fontSizeH2',\r\n noDecode: true,\r\n properties: { size: 'p' },\r\n type: 'Text',\r\n value: '',\r\n};\r\n\r\nconst emailWidget: TextWidget = {\r\n classes: 'user-badge-email',\r\n properties: {},\r\n type: 'Text',\r\n value: '',\r\n};\r\n\r\nconst changePasswordWidget: TextIconWidget = {\r\n classes: 'user-badge-change-password lock',\r\n icon: '',\r\n iconPosition: 'left',\r\n type: 'TextIcon',\r\n value: '',\r\n withLink: false,\r\n};\r\n\r\n/*******************************************************************************************************\r\n * UI Elements\r\n *******************************************************************************************************/\r\n\r\nconst AvatarPlaceholder = () => (\r\n
\r\n \r\n
\r\n);\r\n\r\n/*******************************************************************************************************\r\n * UI Container\r\n *******************************************************************************************************/\r\n\r\nfunction getUserFullName(user: UserProfileType, signinName: string | null) {\r\n const firstName = defaultTo(get(user, 'firstname'), '');\r\n const lastName = defaultTo(get(user, 'lastname'), '');\r\n const username = defaultTo(get(user, 'username'), '');\r\n\r\n if (firstName === '' && lastName === '') {\r\n if (!isNil(signinName) && signinName !== '') return `${signinName}`;\r\n\r\n return username;\r\n }\r\n\r\n return `${firstName} ${lastName}`.trim();\r\n}\r\n\r\nexport default function UserBadge(props: UserBadgeProps) {\r\n const { user, signinName } = useSkypeUser();\r\n\r\n const {\r\n editProfileUrl,\r\n editProfileText,\r\n changePasswordUrl,\r\n changePasswordText,\r\n editProfileTracking,\r\n changePasswordTracking,\r\n } = getCmsProps(props);\r\n\r\n // Edit\r\n editIconWidget.link = editProfileUrl;\r\n editIconWidget.title = editProfileText;\r\n editIconWidget.properties!.tracking = editProfileTracking;\r\n\r\n // Profile\r\n profileImgWidget.url = get(user, 'avatarUrl');\r\n\r\n // Name & Email\r\n fullNameWidget.value = getUserFullName(user, signinName);\r\n emailWidget.value = head(get(user, 'emails')) || '';\r\n\r\n // Change Password Link\r\n changePasswordWidget.value = changePasswordUrl ? (\r\n \r\n {decode(changePasswordText)}\r\n \r\n ) : null;\r\n return (\r\n
\r\n \r\n {user.avatarUrl ? : }\r\n \r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n","import React, { PropsWithChildren } from 'react';\r\nimport getClassNames from '../../lib/getClassNames/getClassNames';\r\nimport { BaseWidget, ComponentWithCmsProps } from '../../types';\r\nimport SharedComponent from '../SharedComponent';\r\n\r\n/*******************************************************************************************************\r\n * Types\r\n *******************************************************************************************************/\r\n\r\nexport type WrapperWidget = BaseWidget<'Wrapper'> & {\r\n style?: any;\r\n};\r\n\r\nexport type WrapperProps = ComponentWithCmsProps<\r\n WrapperWidget,\r\n PropsWithChildren<{}>\r\n>;\r\n\r\n/*******************************************************************************************************\r\n * UI\r\n *******************************************************************************************************/\r\n\r\nexport default function Wrapper(props: WrapperProps) {\r\n return (\r\n \r\n {props.children ? props.children : SharedComponent.Map(props.content)}\r\n \r\n );\r\n}\r\n","import React from 'react';\r\n\r\nimport getCMSProperties from '../../../lib/getCmsProps/getCmsProps';\r\n\r\nimport Button from '../../button/Button.component';\r\nimport Column from '../../grid/Column.component';\r\nimport Text from '../../text/Text.component';\r\nimport TextIcon from '../../textIcon/TextIcon.component';\r\n\r\nimport { SubscriptionData, SubscriptionsProps } from '../types';\r\n\r\n/*******************************************************************************************************\r\n * Types\r\n *******************************************************************************************************/\r\n\r\n/*******************************************************************************************************\r\n * Content\r\n *******************************************************************************************************/\r\n\r\nconst textIcon = {\r\n icon: '',\r\n iconPosition: 'left',\r\n withLink: false,\r\n};\r\n\r\n/*******************************************************************************************************\r\n * Helpers\r\n *******************************************************************************************************/\r\n\r\nfunction getColorClass(width: any) {\r\n if (width < 30) {\r\n return 'progress-red';\r\n } else if (width < 75) {\r\n return 'progress-yellow';\r\n } else {\r\n return 'progress-green';\r\n }\r\n}\r\n\r\n/*******************************************************************************************************\r\n * UI components\r\n *******************************************************************************************************/\r\n\r\n/* As the first Stage it will be hidden */\r\nconst OptionalExpires = ({ ends, expiresText }: any) => (\r\n \r\n);\r\n\r\nconst ProgressBar = ({ width }: any) => {\r\n // Color\r\n const color = getColorClass(width);\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\n/*******************************************************************************************************\r\n * UI Container\r\n *******************************************************************************************************/\r\n\r\nexport default function Subscription(\r\n props: SubscriptionsProps & { item: SubscriptionData } & { slot: number }\r\n) {\r\n const { minsLeftTexts, unlimitedText, manage, upgrade } = getCMSProperties(\r\n props\r\n );\r\n const {\r\n unlimited,\r\n left,\r\n minutes,\r\n icon,\r\n name,\r\n manageUrl,\r\n upgradeEnabled,\r\n upgradeUrl,\r\n } = props.item;\r\n\r\n // Bar\r\n const width = unlimited ? 100 : Number((left / minutes) * 100);\r\n\r\n // TimeLeft\r\n const timeLeft = unlimited\r\n ? unlimitedText\r\n : `${minsLeftTexts.replace('{MINUTES}', `${left}`)}`;\r\n return (\r\n
  • \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n {upgradeEnabled && (\r\n \r\n \r\n \r\n )}\r\n
    \r\n
    \r\n
  • \r\n );\r\n}\r\n","import useUserServices, {\r\n UserServicesDto,\r\n} from '../../../apis/userServices/useUserServices.hook';\r\nimport { validResponse } from '../../../apis/userServices/utils';\r\n\r\nconst Calling = ['plan', 'package', 'minute_plan'];\r\n\r\nconst isCalling = (x: UserServicesDto) =>\r\n x && Calling.indexOf(x.service) !== -1;\r\n\r\nconst getCalling = (source: UserServicesDto[]) =>\r\n validResponse(source).filter(isCalling);\r\n\r\nexport default function useActiveCalling(): ReturnType {\r\n const [data, isLoading] = useUserServices();\r\n\r\n return [getCalling(data), isLoading];\r\n}\r\n","const isPackage = (x: { service: string }) => x && x.service === 'package';\r\nconst hasNestedServices = (x: { services: any[] }) => x && x.services;\r\n\r\nexport { isPackage, hasNestedServices };\r\n","import get from 'lodash/get';\r\nimport head from 'lodash/head';\r\nimport isNil from 'lodash/isNil';\r\nimport orderBy from 'lodash/orderBy';\r\nimport property from 'lodash/property';\r\n\r\nimport { UserServicesDto } from '../../apis/userServices/useUserServices.hook';\r\nimport getSetting from '../../lib/settings/get-setting';\r\nimport formatString from '../../lib/string-utils/formatString';\r\n\r\nimport { hasNestedServices, isPackage } from './data-connect/utils';\r\nimport { SubscriptionData } from './types';\r\n\r\nconst getUpdateRefs = (activeCalling: UserServicesDto[]) =>\r\n activeCalling\r\n .map(\r\n property(['tracking', 'upgradeRef'])\r\n )\r\n .filter(x => x);\r\n\r\nconst isUnlimited = (x: SubscriptionData) => x && !x.minutes;\r\n\r\nconst usedSomeQuota = (data: SubscriptionData, threshold: number) =>\r\n !isNil(data.minutes) &&\r\n !isNil(data.left) &&\r\n data.minutes * threshold >= data.left;\r\n\r\nconst upgradeEnabled = (\r\n data: SubscriptionData,\r\n updateRefs: string[],\r\n subscriptionsUpgradeThreshold: number\r\n) =>\r\n usedSomeQuota(data, subscriptionsUpgradeThreshold) &&\r\n !updateRefs.some(x => data.id === x);\r\n\r\nfunction mapTo(\r\n dto: UserServicesDto,\r\n updateRefs: string[],\r\n subscriptionsUpgradeThreshold: number,\r\n currency: string | undefined,\r\n manageUrl: string | undefined,\r\n upgradeUrl: string | undefined\r\n) {\r\n const subscription: Partial = {\r\n ends: dto.end,\r\n id: dto.id,\r\n manageUrl: formatString(\r\n manageUrl,\r\n // TODO Make sure this logic is true\r\n dto.id\r\n .split('.')\r\n .slice(1)\r\n .join('.')\r\n ),\r\n name: get(dto, ['data', 'nameFormatted']),\r\n };\r\n\r\n // Calculate minutes/left (logic copied from S4L client)\r\n if (isPackage(dto) && (dto.balance || dto.balance === 0)) {\r\n subscription.minutes = dto.quota;\r\n subscription.left = dto.balance;\r\n } else if (hasNestedServices(dto)) {\r\n const { totalMinutes, availableMinutes } = dto.services\r\n .filter(isPackage)\r\n .reduce(\r\n (\r\n acc: {\r\n totalMinutes: number | undefined;\r\n availableMinutes: number | undefined;\r\n },\r\n cur\r\n ) => {\r\n const total = parseInt(`${cur.quota}`, 10);\r\n const available = parseInt(`${cur.balance}`, 10);\r\n\r\n if (!isNaN(total) && !isNaN(available)) {\r\n acc.totalMinutes = (acc.totalMinutes || 0) + total;\r\n acc.availableMinutes = (acc.availableMinutes || 0) + available;\r\n }\r\n\r\n return acc;\r\n },\r\n { totalMinutes: undefined, availableMinutes: undefined }\r\n );\r\n\r\n subscription.minutes = totalMinutes;\r\n subscription.left = availableMinutes;\r\n }\r\n\r\n subscription.unlimited = isUnlimited(subscription as any);\r\n subscription.upgradeEnabled = upgradeEnabled(\r\n subscription as SubscriptionData,\r\n updateRefs || [],\r\n subscriptionsUpgradeThreshold || 0.1\r\n );\r\n\r\n // Not sure about currency: can it ever be undefined?\r\n if (subscription.upgradeEnabled && currency) {\r\n subscription.upgradeUrl = formatString(\r\n upgradeUrl || '',\r\n currency,\r\n encodeURIComponent(get(dto, ['data', 'href'], ''))\r\n );\r\n }\r\n\r\n return subscription as SubscriptionData;\r\n}\r\n\r\nconst mapToModel = (\r\n activeCalling: UserServicesDto[],\r\n activeCredit: UserServicesDto[],\r\n manageUrl: string,\r\n upgradeUrl: string\r\n) => {\r\n const updateRefs = getUpdateRefs(activeCalling);\r\n\r\n const threshold = getSetting([\r\n 'settings',\r\n 'commerce',\r\n 'subscriptionsUpgradeThreshold',\r\n ]);\r\n\r\n const creditCurrency = get(head(activeCredit), ['attributes', 'currency']);\r\n\r\n return orderBy(\r\n activeCalling.map(x =>\r\n mapTo(x, updateRefs, threshold, creditCurrency, manageUrl, upgradeUrl)\r\n ),\r\n ['upgradeEnabled'],\r\n ['desc']\r\n );\r\n};\r\n\r\nexport default mapToModel;\r\n","/**\r\n * 🗄 CMS aware component\r\n */\r\nimport get from 'lodash/get';\r\nimport React from 'react';\r\n\r\nimport getLanguage from '../../lib/common-utils/getLanguage';\r\nimport getCMSProperties from '../../lib/getCmsProps/getCmsProps';\r\nimport usePartialList from '../../lib/hooks/usePartialList';\r\nimport getSetting from '../../lib/settings/get-setting';\r\nimport formatString from '../../lib/string-utils/formatString';\r\n\r\nimport Button from '../button/Button.component';\r\nimport { ButtonProps } from '../button/types';\r\nimport useActiveCredit from '../skypeCredits/data-connect/useActiveCredit.hook';\r\nimport Text from '../text/Text.component';\r\nimport { TextProps } from '../text/types';\r\nimport Toggler from '../toggler/Toggler.component';\r\n\r\nimport SubscriptionItem from './components/Item';\r\nimport useActiveCalling from './data-connect/useActiveCalling.hook';\r\nimport {\r\n SubscriptionData,\r\n SubscriptionsProps,\r\n SubscriptionsToggleProps,\r\n} from './types';\r\nimport mapToModel from './utils';\r\n\r\nimport './subscriptions.scss';\r\n\r\n/*******************************************************************************************************\r\n * Content\r\n *******************************************************************************************************/\r\n\r\nconst showMoreButton: Partial = {\r\n classes: 'supernova-link',\r\n properties: {\r\n buttonType: 'link',\r\n size: 'small',\r\n },\r\n};\r\n\r\n/*******************************************************************************************************\r\n * UI components\r\n *******************************************************************************************************/\r\n\r\nfunction Subscriptions(\r\n props: SubscriptionsProps & { subscriptions: SubscriptionData[] }\r\n) {\r\n const [subscriptions, countRest, toggleList] = usePartialList(\r\n props.subscriptions.map(x => ({ ...x })),\r\n 1\r\n );\r\n const { title, more = {} as any, discover = {} as any } = getCMSProperties(\r\n props\r\n );\r\n\r\n // ShowMore\r\n showMoreButton.value =\r\n countRest > 0 ? `${more.valueMore} (${countRest})` : more.valueLess;\r\n showMoreButton.onClick = toggleList;\r\n showMoreButton.properties!.tracking = more.tracking;\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n
      \r\n {subscriptions.map((item, i) => (\r\n \r\n ))}\r\n
    \r\n\r\n {props.subscriptions.length > 1 && (\r\n
    \r\n
    \r\n )}\r\n
    \r\n\r\n {discover && (\r\n \r\n )}\r\n
    \r\n );\r\n}\r\n\r\nSubscriptions.defaultProps = {\r\n subscriptions: [],\r\n};\r\n\r\n/*******************************************************************************************************\r\n * UI Container\r\n *******************************************************************************************************/\r\n\r\nconst SubscriptionToggle = (props: SubscriptionsToggleProps) => {\r\n const [activeCalling, isCallingLoading] = useActiveCalling();\r\n const [activeCredit, isCreditLoading] = useActiveCredit();\r\n\r\n const { manage, upgrade } = getCMSProperties(props);\r\n const subscriptions = mapToModel(\r\n activeCalling,\r\n activeCredit,\r\n get(manage, 'manageUrl'),\r\n get(upgrade, 'upgradeUrl')\r\n );\r\n\r\n return (\r\n 0}\r\n defaultContent={props.defaultContent}\r\n afterConditionContent={\r\n \r\n }\r\n />\r\n );\r\n};\r\n\r\nexport default SubscriptionToggle;\r\n","// https://docs.skype.net/endpoints/wallet/contracts/atu/GET_application_json_1.0/\r\n// https://qaapi.skype.net/wallet/contracts/atu - get the most relevant ATU contract\r\nimport axios from 'axios';\r\nimport { useEffect, useState } from 'react';\r\n\r\nimport getSetting from '../../../lib/settings/get-setting';\r\n\r\n/*******************************************************************************************************\r\n * Types\r\n *******************************************************************************************************/\r\ntype ContractDTO = {\r\n id: number;\r\n paymentInstrument: { href: string };\r\n status: 'ACTIVE' | 'CANCELLED' | 'SUSPENDED' | undefined;\r\n};\r\n\r\nfunction callAPI(skypeToken: string) {\r\n return (\r\n axios\r\n .get(getSetting(['settings', 'api', 'contracts']), {\r\n headers: {\r\n Accept: 'application/json; ver=1.0',\r\n 'X-Skypetoken': skypeToken,\r\n },\r\n })\r\n .then(x => x.data)\r\n // TODO process error\r\n .catch(() => ({}))\r\n );\r\n}\r\n\r\nfunction useSwitchState(\r\n needCall: boolean,\r\n userToken: string\r\n): [\r\n boolean | undefined,\r\n React.Dispatch>\r\n] {\r\n const [switchState, setSwitchState] = useState();\r\n\r\n useEffect(() => {\r\n if (needCall) {\r\n callAPI(userToken).then((x: ContractDTO) => {\r\n setSwitchState(x.status === 'ACTIVE');\r\n });\r\n }\r\n }, [needCall]);\r\n\r\n return [switchState, setSwitchState];\r\n}\r\n\r\nexport default useSwitchState;\r\n","/**\r\n * 🗄 CMS aware component\r\n */\r\nimport { Switch } from '@skype/bew-components/dist/Switch/Switch';\r\nimport get from 'lodash/get';\r\nimport isNil from 'lodash/isNil';\r\nimport React from 'react';\r\n\r\nimport getLanguage from '../../lib/common-utils/getLanguage';\r\nimport getCmsProps from '../../lib/getCmsProps/getCmsProps';\r\nimport getSetting from '../../lib/settings/get-setting';\r\nimport formatString from '../../lib/string-utils/formatString';\r\nimport Button from '../button/Button.component';\r\nimport { ButtonProps } from '../button/types';\r\nimport Row from '../grid/Row.component';\r\nimport Icon from '../icon/Icon.component';\r\nimport Text from '../text/Text.component';\r\nimport Toggler from '../toggler/Toggler.component';\r\nimport useActiveCredit from './data-connect/useActiveCredit.hook';\r\nimport useSwitchState from './data-connect/useSwitchState.hook';\r\nimport { SkypeCreditProps, SkypeCreditToggleProps } from './types';\r\n\r\nimport './skypeCredits.scss';\r\n\r\n/*******************************************************************************************************\r\n * UI\r\n *******************************************************************************************************/\r\n\r\nconst SkypeCredits = (\r\n props: SkypeCreditProps & {\r\n credits: {\r\n balanceFormatted: any;\r\n currency: any;\r\n }[];\r\n }\r\n) => {\r\n const { credits } = props;\r\n const {\r\n autoRechargeButtonTracking,\r\n autoRechargeText,\r\n buttonBuyCreditText,\r\n buttonSendCreditText,\r\n buttonSendCreditTracking,\r\n buttonBuyCreditTracking,\r\n balanceTracking,\r\n rechargeText,\r\n rechargeTooltip,\r\n title,\r\n switchAriaLabel,\r\n underRechargeText,\r\n } = getCmsProps(props);\r\n\r\n const skypeToken = JSON.parse(sessionStorage.getItem('skypeToken') || '{}');\r\n const [switchOn] = useSwitchState(credits.length > 0, skypeToken!);\r\n\r\n // TODO can be multiple?\r\n const credit = get(credits, '0', { balanceFormatted: '', currency: '' });\r\n\r\n const addCreditButtonProperties = {\r\n link: formatString(getSetting(['settings', 'api', 'buyCredit']), getLanguage(), get(credit, ['currency'])),\r\n };\r\n\r\n const autoRechargeButton = {\r\n classes: 'skype-credits-auto-recharge-button',\r\n properties: {\r\n buttonType: 'link',\r\n link: getSetting(['settings', 'api', 'autoRechargeUrl']),\r\n title: get(autoRechargeText, switchOn ? 'disabled' : 'enabled'),\r\n tracking: autoRechargeButtonTracking,\r\n },\r\n role: 'link',\r\n 'aria-disabled': switchOn ? 'false' : 'true',\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n

    {credit.balanceFormatted}

    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n {!isNil(switchOn) && (\r\n \r\n )}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n \r\n \r\n\r\n \r\n \r\n
    \r\n );\r\n};\r\n\r\nSkypeCredits.defaultProps = {\r\n credits: [],\r\n};\r\n/*******************************************************************************************************\r\n * Map Credits\r\n *******************************************************************************************************/\r\n\r\nconst mapToCredits = (dto: any) => ({\r\n balanceFormatted: dto.balanceFormatted,\r\n currency: get(dto, ['attributes', 'currency']),\r\n});\r\n\r\n/*******************************************************************************************************\r\n * UI Container\r\n *******************************************************************************************************/\r\n\r\nconst SkypeCreditToggle = (props: SkypeCreditToggleProps) => {\r\n const [activeCredit, isLoading] = useActiveCredit();\r\n const credits = activeCredit.map(mapToCredits);\r\n\r\n return (\r\n 0}\r\n defaultContent={props.defaultContent}\r\n afterConditionContent={}\r\n />\r\n );\r\n};\r\n\r\nexport default SkypeCreditToggle;\r\n","import { useEffect } from 'react';\r\n\r\nconst intervalStep = 500;\r\n\r\nfunction useSelfCancelInterval(\r\n check: () => [boolean, any[] | undefined],\r\n onSelfCancel: (...data: any[]) => void\r\n) {\r\n useEffect(() => {\r\n // If data has loaded, no need to wait\r\n const [fulfilled, ...rest] = check();\r\n if (fulfilled) {\r\n onSelfCancel.apply(null, rest);\r\n return;\r\n }\r\n\r\n const interval = setInterval(() => {\r\n const [isFulfilled, ...args] = check();\r\n if (isFulfilled) {\r\n onSelfCancel.apply(null, args);\r\n clearInterval(interval);\r\n }\r\n }, intervalStep);\r\n\r\n // Cleaning\r\n return () => {\r\n clearInterval(interval);\r\n };\r\n }, []); // Run effect only once\r\n}\r\n\r\nexport default useSelfCancelInterval;\r\nexport { intervalStep };\r\n","import getSetting from '../settings/get-setting';\r\nimport useSelfCancelInterval, {\r\n intervalStep,\r\n} from './useSelfCancelInterval.hook';\r\n\r\nfunction checkWithStandBy(\r\n check: () => [boolean, any[]],\r\n explicitStandByFor?: number\r\n): () => [boolean, any[] | undefined] {\r\n let acc = -intervalStep;\r\n const standByFor =\r\n explicitStandByFor || getSetting(['settings', 'api', 'standByFor']) || 1000;\r\n\r\n return () => {\r\n acc += intervalStep;\r\n if (acc >= standByFor) {\r\n return [true, undefined];\r\n } else {\r\n return check();\r\n }\r\n };\r\n}\r\n\r\nfunction useSelfCancelLimitInterval(\r\n check: () => [boolean, any[]],\r\n onSelfCancel: (data?: any) => void,\r\n explicitStandByFor?: number\r\n) {\r\n const standByCheck = checkWithStandBy(check, explicitStandByFor);\r\n useSelfCancelInterval(standByCheck, onSelfCancel);\r\n}\r\n\r\nexport default useSelfCancelLimitInterval;\r\n","import React from 'react';\r\nimport './dynamicPlaceholder.scss';\r\n\r\nconst DynamicPlaceholder = (WComponent: any) => {\r\n if (WComponent) {\r\n const Element = React.createElement(\r\n 'div',\r\n { className: 'supernova-dynamic-placeholder' },\r\n React.createElement(WComponent)\r\n );\r\n return Element;\r\n }\r\n};\r\n\r\nexport default DynamicPlaceholder;\r\n","/**\r\n * 🗄 CMS aware component\r\n */\r\nimport React, { Fragment } from 'react';\r\n\r\nimport decode from '../../lib/decode/decode';\r\nimport getClassNames from '../../lib/getClassNames/getClassNames';\r\nimport getCMSProperties from '../../lib/getCmsProps/getCmsProps';\r\nimport trackingTags from '../../lib/tracking/htmlTags';\r\n\r\nimport Icon from '../icon/Icon.component';\r\n\r\nimport { ButtonElementAccessibilityAttr, ButtonProps, ButtonType } from './types';\r\n\r\nimport './button.scss';\r\n\r\n/*******************************************************************************************************\r\n * Types\r\n *******************************************************************************************************/\r\n\r\n// Button Element Types\r\ntype ButtonElementProps = {\r\n role?: string;\r\n type: string;\r\n className: string;\r\n title?: string;\r\n href?: string;\r\n onClick?: () => void | any;\r\n};\r\n\r\n/*******************************************************************************************************\r\n * Helper\r\n *******************************************************************************************************/\r\n\r\n// Get Style\r\nconst getStyleType = (type: ButtonType): string | undefined => {\r\n if (type === 'primary') return 'btn primaryCta';\r\n if (type === 'secondary') return 'btn secondaryCta';\r\n if (type === 'outline') return 'btn outlinedCta';\r\n if (type === 'link') return 'linkCta';\r\n if (type === 'alert') return 'btn alertCta';\r\n};\r\n\r\n// Get Button Props\r\nconst getButtonProps = (props: ButtonProps): ButtonElementProps => {\r\n const { title, link, tracking, buttonType, size } = getCMSProperties(props);\r\n\r\n // Global Props\r\n const globalProps: ButtonElementProps & ButtonElementAccessibilityAttr = {\r\n ...trackingTags(tracking),\r\n className: getClassNames(getStyleType(buttonType), {\r\n [`btn-${size}`]: size,\r\n }),\r\n title,\r\n type: 'button',\r\n 'aria-disabled': props['aria-disabled'],\r\n };\r\n\r\n // Link Props\r\n if (link) return { ...globalProps, href: link, role: props.role || 'button' };\r\n\r\n // Button Props\r\n return { ...globalProps, onClick: props.onClick };\r\n};\r\n\r\n/*******************************************************************************************************\r\n * UI\r\n *******************************************************************************************************/\r\n\r\n// UI Button & Link\r\nfunction ButtonLink(props: ButtonProps) {\r\n const { icon, value } = props;\r\n const { link } = getCMSProperties(props);\r\n\r\n const childrenComponents = props.children || (\r\n \r\n {decode(value)}\r\n {icon && }\r\n \r\n );\r\n\r\n return React.createElement(link ? 'a' : 'button', getButtonProps(props), childrenComponents);\r\n}\r\n\r\n// UI Dropdown Button\r\nfunction DropdownButton(props: ButtonProps) {\r\n const { value, icon, classes, onClick } = props;\r\n const { link } = getCMSProperties(props);\r\n return (\r\n \r\n );\r\n}\r\n\r\n/*******************************************************************************************************\r\n * Container\r\n *******************************************************************************************************/\r\n\r\nexport default function Button(props: ButtonProps) {\r\n const { classes } = props;\r\n const { buttonType } = getCMSProperties(props);\r\n return (\r\n
    \r\n {buttonType === 'dropdown' ? : }\r\n
    \r\n );\r\n}\r\n","import debounce from 'lodash/debounce';\r\nimport React, { useEffect, useState } from 'react';\r\nimport getClassNames from '../../lib/getClassNames/getClassNames';\r\nimport Button from '../button/Button.component';\r\nimport Section from '../grid/Section.component';\r\nimport Icon from '../icon/Icon.component';\r\nimport TextIcon from '../textIcon/TextIcon.component';\r\n\r\nimport './alertmessage.scss';\r\nimport { AlertMsgCmsProps, AlertState } from './types';\r\n\r\n/*******************************************************************************************************\r\n * Ctx\r\n *******************************************************************************************************/\r\n\r\nexport const Ctx = React.createContext({});\r\nexport const { Consumer } = Ctx;\r\n\r\n/*******************************************************************************************************\r\n * UI\r\n *******************************************************************************************************/\r\n\r\ntype AlertProps = AlertMsgCmsProps & AlertState & { close: any };\r\n\r\nfunction Alert({\r\n message,\r\n action,\r\n actionName,\r\n close,\r\n closeBtnAria,\r\n closeBtnTracking,\r\n}: AlertProps) {\r\n const [isSticky, setSticky] = useState(window.scrollY > 70);\r\n\r\n useEffect(() => {\r\n const listener = debounce(() => setSticky(window.scrollY > 70), 100);\r\n window.addEventListener('scroll', listener, { passive: true });\r\n return () => window.removeEventListener('scroll', listener);\r\n }, [isSticky]);\r\n return (\r\n \r\n
    \r\n \r\n
    \r\n {action && (\r\n \r\n )}\r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n );\r\n}\r\n\r\n/*******************************************************************************************************\r\n * Container\r\n *******************************************************************************************************/\r\n\r\nexport default function AlertMessage(props: AlertMsgCmsProps) {\r\n const [state, setState] = useState({\r\n message: '',\r\n type: 'alert',\r\n visible: false,\r\n });\r\n\r\n // Actions\r\n const close = () => setState({ ...state, visible: false });\r\n const open = ({ message, action, actionName }: AlertState) =>\r\n setState({ ...state, visible: true, message, action, actionName });\r\n\r\n const ctxState = { close, open };\r\n return (\r\n \r\n {state.visible && }\r\n {props.children}\r\n \r\n );\r\n}\r\n","import { useEffect, useState } from 'react';\r\nimport runOnDev from '../debug/runOnDev';\r\nimport { createFakeToken, createFakeUser } from './skypeUserMock';\r\nimport { UserProfileType, UserTokenType } from './types';\r\n\r\n// TODO Default comes from Apollo side. Beware of changing.\r\nconst DEFAULT_AVATAR = 'DEFAULT_AVATAR';\r\n\r\nif (process.env.NODE_ENV === 'development') {\r\n runOnDev(createFakeUser);\r\n runOnDev(createFakeToken);\r\n}\r\n// Creates fake user for debug/develop purpose\r\n\r\nconst defaultUser: UserProfileType = {\r\n avatarUrl: '',\r\n emails: [],\r\n firstname: '',\r\n lastname: '',\r\n username: '',\r\n};\r\n\r\n/*******************************************************************************************************\r\n * Get Data\r\n *******************************************************************************************************/\r\n\r\nfunction getUserData(): UserProfileType {\r\n try {\r\n const profileJson = sessionStorage.getItem('profile');\r\n if (profileJson) {\r\n const profile = JSON.parse(profileJson);\r\n const { avatarUrl } = profile;\r\n profile.avatarUrl = avatarUrl === DEFAULT_AVATAR ? null : avatarUrl;\r\n return profile;\r\n }\r\n return defaultUser;\r\n } catch (e) {\r\n return defaultUser;\r\n }\r\n}\r\n\r\nfunction getToken(): UserTokenType | null {\r\n try {\r\n const token = sessionStorage.getItem('skypeToken');\r\n return token ? JSON.parse(token) : null;\r\n } catch (e) {\r\n return null;\r\n }\r\n}\r\n\r\nfunction getSigninName(): string | null {\r\n try {\r\n const signinName = sessionStorage.getItem('signinName');\r\n return signinName ? JSON.parse(signinName) : null;\r\n } catch (e) {\r\n return null;\r\n }\r\n}\r\n\r\n/*******************************************************************************************************\r\n * Hook\r\n *******************************************************************************************************/\r\n\r\nexport default function useSkypeUser(): {\r\n user: UserProfileType;\r\n token: UserTokenType | null;\r\n signinName: string | null;\r\n} {\r\n const [user, setUser] = useState(defaultUser);\r\n const [token, setToken] = useState(null);\r\n const [signinName, setSigninName] = useState(null);\r\n\r\n useEffect(() => {\r\n setUser(getUserData());\r\n setToken(getToken());\r\n setSigninName(getSigninName());\r\n }, []);\r\n\r\n return { user, token, signinName };\r\n}\r\n","/**\r\n * 🗄 CMS aware component\r\n */\r\nimport React from 'react';\r\n\r\nimport decode from '../../lib/decode/decode';\r\nimport getClassNames from '../../lib/getClassNames/getClassNames';\r\nimport getCmsProps from '../../lib/getCmsProps/getCmsProps';\r\nimport trackingTags from '../../lib/tracking/htmlTags';\r\n\r\nimport { IconProps } from './types';\r\n\r\nimport './icon.scss';\r\n\r\n/*******************************************************************************************************\r\n * UI\r\n *******************************************************************************************************/\r\n\r\nexport default function Icon(props: IconProps) {\r\n const { ariaHidden, title, tooltip } = props;\r\n const { size, label, labelPosition, tracking } = getCmsProps(props);\r\n const styleIcon = { fontSize: size, lineHeight: 2 };\r\n\r\n const decodedTitle = decode(title);\r\n\r\n return (\r\n
    \r\n {label && (labelPosition === 'left' || labelPosition === 'top') && {label}}\r\n {props.link && (\r\n <>\r\n \r\n {props.icon}\r\n \r\n {tooltip && {decodedTitle}}\r\n \r\n )}\r\n {!props.link && (\r\n \r\n {props.icon}\r\n \r\n )}\r\n {label && (labelPosition === 'right' || labelPosition === 'bottom' || !labelPosition) && {label}}\r\n
    \r\n );\r\n}\r\n\r\nIcon.defaultProps = {\r\n ariaHidden: false,\r\n};\r\n","import { useState } from 'react';\r\n\r\n/*******************************************************************************************************\r\n * Type\r\n *******************************************************************************************************/\r\n\r\ntype UsePartialList = [T[], number, ({}: any) => void];\r\n\r\n/*******************************************************************************************************\r\n * Hook\r\n *******************************************************************************************************/\r\n\r\nexport default function usePartialList(\r\n list: T[] = [],\r\n startWith: number = 0\r\n): UsePartialList {\r\n const [visibleList, updateList] = useState(list.slice(0, startWith));\r\n const [counter, setCounter] = useState(startWith);\r\n\r\n const toggleList = ({ next }: any, callback?: () => void) => {\r\n // Reverse (once all the items are visible it will hide)\r\n if (counter === list.length) {\r\n updateList(list.slice(0, startWith));\r\n setCounter(startWith);\r\n }\r\n\r\n // Show All Items, if 'next' is null\r\n else if (!next) {\r\n setCounter(list.length);\r\n updateList(list);\r\n } else {\r\n // Show only selected number of items\r\n const nextItems = counter + next;\r\n updateList(list.slice(0, nextItems));\r\n setCounter(nextItems);\r\n }\r\n\r\n if (callback && typeof callback === 'function') {\r\n callback();\r\n }\r\n };\r\n\r\n // Counter\r\n const counterRest = list.length - visibleList.length;\r\n\r\n return [visibleList, counterRest, toggleList];\r\n}\r\n","/**\r\n * 🗄 CMS aware component\r\n */\r\nimport React, { Fragment } from 'react';\r\n\r\nimport decode from '../../lib/decode/decode';\r\nimport getCmsProperties from '../../lib/getCmsProps/getCmsProps';\r\n\r\nimport { TextProps } from './types';\r\n\r\n/*******************************************************************************************************\r\n * UI\r\n *******************************************************************************************************/\r\n\r\nfunction constructComponent(props: TextProps) {\r\n const { value, classes, noDecode } = props;\r\n const { withLink, size } = getCmsProperties(props);\r\n const textProps = {\r\n className: classes,\r\n };\r\n\r\n if (withLink) {\r\n return React.createElement(size || 'p', {\r\n ...textProps,\r\n dangerouslySetInnerHTML: {\r\n __html: decode(value),\r\n },\r\n });\r\n }\r\n return React.createElement(\r\n size || 'p',\r\n textProps,\r\n noDecode ? value : decode(value)\r\n );\r\n}\r\n\r\nexport default function Text(props: TextProps) {\r\n return {constructComponent(props)};\r\n}\r\n"],"sourceRoot":""}