{"version":3,"file":"js/downloadpage.js","mappings":"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4D,QAAS,CACPC,OAAQ,EACRC,SAAU,WACVI,IAAK,OACLjC,MAAO,MACPgC,MAAO,GAETD,SAAU,CACRH,OAAQ,EACRC,SAAU,WACVS,KAAM,M,uxBC+IEE,GAjDkBC,EAAG,CACnC,GAAM,UACN,GAAM,UACN,GAAM,WACN,GAAM,UACN,GAAM,SACN,GAAM,iBACN,GAAM,UACN,GAAM,UACN,GAAM,UACN,GAAM,SACN,GAAM,UACN,GAAM,SACN,GAAM,UACN,GAAM,UACN,GAAM,QACN,GAAM,SACN,GAAM,YACN,GAAM,aACN,GAAM,QACN,GAAM,cACN,GAAM,SACN,GAAM,WACN,GAAM,UACN,GAAM,WACN,GAAM,WACN,GAAM,QACN,GAAM,SACN,GAAM,cACN,GAAM,iBACN,GAAM,UACN,GAAM,UACN,GAAM,UACN,GAAM,UACN,GAAM,yBACN,GAAM,gBACN,GAAM,UACN,GAAM,YACN,GAAM,UACN,GAAM,cACN,GAAM,SACN,GAAM,gBACN,GAAM,YACN,GAAM,UACN,GAAM,SACN,GAAM,aACN,GAAM,SACN,GAAM,qBACN,GAAM,aACN,GAAM,UAAQ,KACR,eAAaD,GAAAC,EACnB,KAAM,UAAQD,GAAAC,EACd,KAAM,WAASD,GAAAC,EAAA,KACT,kBAAgBD,GAAAC,EACtB,KAAM,sBAt+BD,I,WC1DD,GAAkB,CACtB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAGW,GAAW,IACtB,IAAI,EAAQ,EACZ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","sources":["webpack://pcloud-site/webpack/runtime/chunk loaded","webpack://pcloud-site/./src/lib/move.js","webpack://pcloud-site/./src/lib/componentMount.js","webpack://pcloud-site/./src/components/DownloadPage/StyledComponents.js","webpack://pcloud-site/./src/lib/utils.js","webpack://pcloud-site/../../src/base83.ts","webpack://pcloud-site/../../src/utils.ts","webpack://pcloud-site/../../src/error.ts","webpack://pcloud-site/../../src/decode.ts","webpack://pcloud-site/../../src/BlurhashCanvas.tsx","webpack://pcloud-site/../../src/Blurhash.tsx","webpack://pcloud-site/./src/components/LazyImg/index.js","webpack://pcloud-site/./src/components/DownloadPage/MobileApps.js","webpack://pcloud-site/./src/components/DownloadPage/DesktopApps.js","webpack://pcloud-site/./src/svg/chrome.svg","webpack://pcloud-site/./src/svg/opera.svg","webpack://pcloud-site/./src/svg/firefox.svg","webpack://pcloud-site/./src/svg/edge.svg","webpack://pcloud-site/./src/svg/brave.svg","webpack://pcloud-site/./src/components/DownloadPage/AddOn.js","webpack://pcloud-site/./src/components/Tabs.js","webpack://pcloud-site/./src/svg/windows.svg","webpack://pcloud-site/./src/svg/macos.svg","webpack://pcloud-site/./src/svg/linux.svg","webpack://pcloud-site/./src/svg/ios.svg","webpack://pcloud-site/./src/svg/android.svg","webpack://pcloud-site/./src/svg/psave.svg","webpack://pcloud-site/./src/components/DownloadPage/DownloadPage.js","webpack://pcloud-site/./src/exports/downloadpage.js","webpack://pcloud-site/./node_modules/clsx/dist/clsx.m.js","webpack://pcloud-site/./node_modules/lodash/_Symbol.js","webpack://pcloud-site/./node_modules/lodash/_arrayMap.js","webpack://pcloud-site/./node_modules/lodash/_arrayPush.js","webpack://pcloud-site/./node_modules/lodash/_baseFlatten.js","webpack://pcloud-site/./node_modules/lodash/_baseGetTag.js","webpack://pcloud-site/./node_modules/lodash/_baseIsArguments.js","webpack://pcloud-site/./node_modules/lodash/_baseIsRegExp.js","webpack://pcloud-site/./node_modules/lodash/_baseToString.js","webpack://pcloud-site/./node_modules/lodash/_baseUnary.js","webpack://pcloud-site/./node_modules/lodash/_freeGlobal.js","webpack://pcloud-site/./node_modules/lodash/_getRawTag.js","webpack://pcloud-site/./node_modules/lodash/_isFlattenable.js","webpack://pcloud-site/./node_modules/lodash/_nodeUtil.js","webpack://pcloud-site/./node_modules/lodash/_objectToString.js","webpack://pcloud-site/./node_modules/lodash/_root.js","webpack://pcloud-site/./node_modules/lodash/escapeRegExp.js","webpack://pcloud-site/./node_modules/lodash/flatten.js","webpack://pcloud-site/./node_modules/lodash/isArguments.js","webpack://pcloud-site/./node_modules/lodash/isArray.js","webpack://pcloud-site/./node_modules/lodash/isObjectLike.js","webpack://pcloud-site/./node_modules/lodash/isRegExp.js","webpack://pcloud-site/./node_modules/lodash/isString.js","webpack://pcloud-site/./node_modules/lodash/isSymbol.js","webpack://pcloud-site/./node_modules/lodash/toString.js","webpack://pcloud-site/./node_modules/shallowequal/index.js","webpack://pcloud-site/external window \"jQuery\"","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/array/from.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/array/is-array.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/object/assign.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/object/define-properties.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/object/define-property.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptor.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptors.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-symbols.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/object/keys.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/parse-float.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/parse-int.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/symbol.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js","webpack://pcloud-site/./node_modules/@babel/runtime-corejs2/core-js/symbol/to-primitive.js","webpack://pcloud-site/./node_modules/classnames/index.js","webpack://pcloud-site/./node_modules/@floating-ui/core/dist/floating-ui.core.mjs","webpack://pcloud-site/./node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","webpack://pcloud-site/./node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","webpack://pcloud-site/./node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","webpack://pcloud-site/./node_modules/tslib/tslib.es6.mjs","webpack://pcloud-site/webpack/bootstrap","webpack://pcloud-site/webpack/runtime/amd options","webpack://pcloud-site/webpack/runtime/compat get default export","webpack://pcloud-site/webpack/runtime/define property getters","webpack://pcloud-site/webpack/runtime/global","webpack://pcloud-site/webpack/runtime/hasOwnProperty shorthand","webpack://pcloud-site/webpack/runtime/make namespace object","webpack://pcloud-site/webpack/runtime/node module decorator","webpack://pcloud-site/webpack/runtime/jsonp chunk loading","webpack://pcloud-site/webpack/runtime/nonce","webpack://pcloud-site/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","const _move = (obj, _attachList) => {\n for (var n in obj) {\n if (obj.hasOwnProperty(n)) {\n for (var k = 0; k < _attachList.length; ++k) {\n if (_attachList[k].list.indexOf(n) != -1) {\n _attachList[k].attach[n] = obj[n];\n }\n }\n }\n }\n}\n\nexport default _move;","// @flow\n\nimport * as React from \"react\";\nimport { createRoot } from 'react-dom/client';\n\nconst usedReactRoots = {};\n\nconst getExistingOrNewRoot = (element: HTMLElement) => {\n // Existing ID or create new unique ID.\n const reactRootId = element.dataset.reactRootId || Math.random().toString(16).slice(2);\n let root = usedReactRoots[reactRootId] || null;\n\n if (root === null) {\n // Save the generated new ID to the element to be reused if we change the props and call this again.\n element.dataset.reactRootId = reactRootId;\n root = createRoot(element);\n }\n\n // Cache the root.\n usedReactRoots[reactRootId] = root;\n\n return {reactRootId , root};\n}\n\nconst componentMount = (render: (props: {}) => React.Node) => (element: HTMLElement, props: {}) => {\n if (!element) {\n return null;\n }\n\n const {reactRootId, root} = getExistingOrNewRoot(element);\n root.render(render(props));\n\n return () => {\n root.unmount();\n delete usedReactRoots[reactRootId];\n };\n};\n\nexport function componentRender(element: HTMLElement, render: React.Element) {\n const {reactRootId, root} = getExistingOrNewRoot(element);\n root.render(render);\n\n return () => {\n root.unmount();\n delete usedReactRoots[reactRootId];\n };\n}\n\nexport default componentMount;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { hiDPI } from \"polished\";\n\nexport const PageContent = styled.div`\n font-family: \"Roboto\", sans-serif;\n\n @media (max-width: 768px) {\n box-sizing: border-box;\n padding-top: 20px;\n }\n`;\n\n// export const AlignContainer = styled.div`\n// @media (max-width: 768px) {\n// padding: 0px 20px;\n// }\n// `;\n\nexport const Header = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n min-height: 630px;\n padding: 70px 0px;\n margin-bottom: 96px;\n position: relative;\n\n @media (max-width: 768px) {\n min-height: 0px;\n padding: 0px;\n display: block;\n margin-bottom: 0px;\n }\n`;\n\nexport const DesktopHeader = styled(Header)`\n flex-direction: column;\n text-align: center;\n`;\n\nexport const PageTitle = styled.h1`\n font-size: 60px;\n font-weight: bold;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.18;\n letter-spacing: -1.2px;\n text-align: left;\n color: #000000;\n margin-bottom: 24px;\n padding-left: 0px;\n max-width: 100%;\n\n @media (max-width: 768px) {\n font-size: 33px;\n font-weight: bold;\n font-stretch: normal;\n font-style: normal;\n letter-spacing: -0.4px;\n text-align: center;\n color: #000000;\n margin-bottom: 26px;\n padding: 0px 30px;\n box-sizing: border-box;\n }\n`\n\nexport const PageDescription = styled.p`\n font-size: 28px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.36;\n letter-spacing: -0.42px;\n text-align: left;\n color: #000000;\n margin-bottom: 43px;\n\n @media (max-width: 768px) {\n font-size: 16px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.37;\n letter-spacing: -0.2px;\n text-align: center;\n color: #000000;\n padding: 0px 30px;\n box-sizing: border-box;\n }\n`;\n\nexport const DesktopPageDescription = styled(PageDescription)`\n text-align: center;\n`;\n\nexport const Box = styled.div`\n display: inline-block;\n /* width: 50%; */\n order: ${({ order }) => order ? order : 0};\n width: 100%;\n transition: all 300ms ease-in-out;\n position: relative;\n z-index: 1;\n\n &.imagebox-android {\n @media (max-width: 1180px) and (min-width: 769px) {\n right: -25% !important;\n }\n }\n\n @media (max-width: 768px) {\n order: 0;\n width: 100%;\n }\n`;\n\nexport const ButtonContainer = styled.div`\n margin: 0 auto;\n text-align: inherit;\n\n @media (max-width: 768px) {\n text-align: center;\n }\n\n &.desktop-header-buttons {\n margin-bottom: 30px;\n }\n`;\n\nexport const ImageWrapper = styled.div``;\n\nexport const MidTitle = styled.h2`\n font-size: 46px;\n font-weight: bold;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.17;\n letter-spacing: -0.92px;\n text-align: center;\n color: #2a2a2a;\n\n @media (max-width: 768px) {\n font-size: 27px;\n font-weight: bold;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.25;\n letter-spacing: -0.2px;\n text-align: center;\n color: #000000;\n margin: 70px 0px 10px 0px;\n padding: 0px 30px;\n box-sizing: border-box;\n }\n`;\n\nexport const DesktopMidTitle = styled(MidTitle)`\n margin-bottom: 130px;\n`;\n\nexport const ImageAlignWrapper = styled.div`\n @media (max-width: 768px) {\n padding: 0px 30px;\n box-sizing: border-box;\n }\n`;\n\nexport const Section = styled.div`\n display: flex;\n height: ${({ height }) => height ? height : \"auto\"};\n align-items: center;\n justify-content: space-between;\n padding: 80px 0px;\n position: relative;\n\n &.desktop-section {\n height: 839px;\n\n @media (max-width: 768px) {\n height: auto;\n }\n\n .desktop-section-textbox {\n z-index: 1;\n position: absolute;\n top: 75px;\n width: 46%;\n right: 0;\n\n @media (max-width: 768px) {\n position: static;\n width: 100%;\n text-align: center;\n }\n }\n\n .desktop-section-imagebox {\n z-index: 0;\n position: absolute;\n left: 0;\n\n @media (max-width: 768px) {\n position: static;\n width: 100%;\n }\n }\n }\n\n @media (max-width: 768px) {\n padding: 30px 0px;\n text-align: ${({ align }) => align === \"center\" ? \"center\" : \"left\"};\n flex-direction: column;\n }\n`;\n\nexport const BoxWrapper = styled.div`\n display: flex;\n align-items: stretch;\n justify-content: space-between;\n margin-bottom: 20px;\n\n &::last-of-type {\n margin-bottom: 0px;\n }\n\n @media (max-width: 768px) {\n align-items: center;\n justify-content: center;\n flex-direction: column;\n }\n`;\n\nexport const DesktopBox = styled.div`\n order: ${({ order }) => order ? order : 0};\n width: ${({ size }) => size === \"x1\" ? \"34.5%\" : \"63.6%\"};\n background-color: #f8f8f8;\n padding: ${({ size }) => size === \"x1\" ? \"40px\" : \"0px\"};\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n justify-content: center;\n\n @media (max-width: 768px) {\n width: 100%;\n order: 0;\n margin-bottom: 0px;\n text-align: left;\n padding: 20px 0px 0px;\n background-color: transparent;\n }\n`;\n\nexport const SectionIcon = styled.div`\n display: inline-block;\n background-repeat: no-repeat;\n width: 56px;\n height: 56px;\n background-size: 56px 56px;\n background-position: center;\n margin-bottom: 43px;\n\n @media (max-width: 768px) {\n margin-bottom: 20px;\n width: 42px;\n height: 42px;\n background-size: 42px 42px;\n }\n`;\n\nconst saveIconImg = (typeof cdnPath !== 'undefined' ? cdnPath : '/') + (window.devicePixelRatio > 1.5 ? 'images/download_page/save-desktop@2x.png' : 'images/download_page/save-desktop.png');\nconst saveIconImgMobile = (typeof cdnPath !== 'undefined' ? cdnPath : '/') + (window.devicePixelRatio > 1.5 ? 'images/download_page/save@2x.png' : 'images/download_page/save.png');\nexport const SaveIcon = styled(SectionIcon)`\n background-image: url(${saveIconImg});\n\n @media (max-width: 768px) {\n background-image: url(${saveIconImgMobile});\n }\n`;\n\nconst shareIconImg = (typeof cdnPath !== 'undefined' ? cdnPath : '/') + (window.devicePixelRatio > 1.5 ? 'images/download_page/share-desktop@2x.png' : 'images/download_page/share-desktop.png');\nconst shareIconImgMobile = (typeof cdnPath !== 'undefined' ? cdnPath : '/') + (window.devicePixelRatio > 1.5 ? 'images/download_page/share@2x.png' : 'images/download_page/share.png');\nexport const ShareIcon = styled(SectionIcon)`\n background-image: url(${shareIconImg});\n\n @media (max-width: 768px) {\n background-image: url(${shareIconImgMobile});\n }\n`;\n\nconst protectIconImg = (typeof cdnPath !== 'undefined' ? cdnPath : '/') + (window.devicePixelRatio > 1.5 ? 'images/download_page/protect@2x.png' : 'images/download_page/protect-desktop.png');\nexport const ProtectIcon = styled(SectionIcon)`\n background-image: url(${protectIconImg});\n`;\n\nexport const SectionTitle = styled.h3`\n font-size: 32px;\n font-weight: bold;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.19;\n letter-spacing: -0.8px;\n text-align: left;\n color: #2a2a2a;\n padding-left: 0px;\n max-width: 100%;\n margin: 0px;\n margin-bottom: 19px;\n max-width: 650px;\n width: 100%;\n transition: all 300ms ease-in-out;\n\n @media (max-width: 768px) {\n font-size: 21px;\n font-weight: bold;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.2;\n letter-spacing: -0.64px;\n color: #000000;\n margin-bottom: 12px;\n padding-left: 0px;\n padding: 0px 30px;\n box-sizing: border-box;\n max-width: 100%;\n text-align: inherit;\n }\n\n @media (max-width: 1080px) and (min-width: 769px) {\n max-width: 420px;\n }\n`;\n\nexport const SectionDescription = styled.p`\n font-size: 20px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.5;\n letter-spacing: normal;\n text-align: left;\n color: #2a2a2a;\n max-width: 650px;\n\n transition: all 300ms ease-in-out;\n\n @media (max-width: 768px) {\n font-size: 16px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.33;\n letter-spacing: normal;\n color: #000000;\n margin-bottom: 30px;\n padding: 0px 30px;\n box-sizing: border-box;\n max-width: 100%;\n text-align: inherit;\n }\n\n @media (max-width: 1080px) and (min-width: 769px) {\n max-width: 420px;\n }\n`;\n\nexport const RequireText = styled.p`\n font-size: 13px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.15;\n letter-spacing: 0.13px;\n text-align: left;\n color: #888888;\n\n @media (max-width: 768px) {\n font-size: 14px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.2;\n letter-spacing: 0.4px;\n text-align: left;\n color: #888888;\n margin-bottom: 30px;\n padding: 0px 30px;\n box-sizing: border-box;\n text-align: center;\n }\n`;\n\nexport const DesktopRequireText = styled(RequireText)`\n margin-bottom: 18px;\n text-align: center;\n\n a {\n text-decoration: none;\n }\n`;\n\nexport const MainImageIOS = styled.img`\n width: 530px;\n height: 630px;\n\n @media (max-width: 768px) {\n width: auto;\n height: 401px;\n display: block;\n margin: 0 auto;\n }\n @media (max-width: 425px) {\n width: 100%;\n height: auto;\n }\n`;\n\nexport const FirstImageIOS = styled.img`\n width: 636px;\n height: 769px;\n\n transition: all 300ms ease-in-out;\n\n @media (max-width: 1180px) and (min-width: 769px) {\n height: auto;\n width: 100%;\n position: absolute;\n top: 0;\n right: 40px;\n }\n\n @media (max-width: 768px) {\n width: auto;\n height: 401px;\n display: block;\n margin: 0 auto;\n }\n`;\n\nexport const SecondImageIOS = styled.img`\n height: 766px;\n width: 740px;\n \n @media (max-width: 768px) {\n width: auto;\n height: 345px;\n display: block;\n margin: 0 auto;\n }\n @media (max-width: 425px) {\n width: 100%;\n height: auto;\n display: block;\n margin: 0 auto;\n }\n`;\n\nexport const ThirdImageIOS = styled.img`\n height: 839px;\n width: 937px;\n transition: all 300ms ease-in-out;\n\n @media (max-width: 768px) {\n height: 279px;\n width: auto;\n display: block;\n margin: 0 auto;\n }\n\n @media (max-width: 425px) {\n width: 100%;\n height: auto;\n display: block;\n margin: 0 auto;\n }\n\n @media (max-width: 1180px) and (min-width: 1000px) {\n position: relative;\n left: calc(100vw - 1180px);\n }\n\n @media (max-width: 1000px) and (min-width: 769px) {\n position: relative;\n left: calc(100vw - 1000px);\n }\n`;\n\nexport const DownloadButtonIOS = styled.img`\n display: inline-block;\n width: ${({ width }) => width || \"200px\"};\n height: ${({ height }) => height || \"60px\"};\n margin-bottom: 8px;\n`;\n\nexport const MainImageAndroid = styled.img`\n width: 1089px;\n height: 820px;\n\n @media (max-width: 768px) {\n width: auto;\n height: 401px;\n display: block;\n margin: 0 auto;\n }\n @media (max-width: 425px) {\n width: 100%;\n height: auto;\n }\n`;\n\nexport const FirstImageAndroid = styled.img`\n width: 636px;\n height: 769px;\n\n transition: all 300ms ease-in-out;\n\n @media (max-width: 1180px) and (min-width: 769px) {\n height: auto;\n width: 100%;\n position: absolute;\n top: 0;\n right: 40px;\n }\n\n @media (max-width: 768px) {\n width: auto;\n height: 401px;\n display: block;\n margin: 0 auto;\n }\n`;\n\nexport const SecondImageAndroid = styled.img`\n width: 998px;\n height: 660px;\n\n @media (max-width: 768px) {\n width: auto;\n height: 320px;\n display: block;\n margin: 0 auto;\n }\n @media (max-width: 425px) {\n width: 100%;\n height: auto;\n display: block;\n margin: 0 auto;\n }\n`;\n\nexport const ThirdImageAndroid = styled.img`\n width: 827px;\n height: 460px;\n transition: all 300ms ease-in-out;\n\n @media (max-width: 768px) {\n height: 395px;\n width: auto;\n display: block;\n margin: 0 auto;\n }\n \n @media (max-width: 425px) {\n width: 100%;\n height: auto;\n display: block;\n margin: 0 auto;\n }\n\n @media (max-width: 1180px) and (min-width: 1000px) {\n position: relative;\n left: calc(100vw - 1180px);\n }\n\n @media (max-width: 1000px) and (min-width: 769px) {\n position: relative;\n left: calc(100vw - 1000px);\n }\n`;\n\nexport const DownloadButtonAndroid = styled.img`\n display: inline-block;\n width: ${({ width }) => width || \"200px\"};\n height: ${({ height }) => height || \"60px\"};\n margin-bottom: 8px;\n`;\n\nexport const MainImageMac = styled.img`\n width: calc(100vw - 15px);\n height: auto;\n max-width: 1380px;\n margin-top: 22px;\n`;\n\nexport const FirstImageMac = styled.img`\n width: 100%;\n max-width: 750px;\n`;\n\nexport const DesktopSectionImage = styled.img`\n width: 100%;\n max-width: 750px;\n`;\n\nexport const ThirdImageMac = styled.img`\n height: 839px;\n width: 937px;\n transition: all 250ms ease-in-out;\n\n transition: all 250ms ease-in-out;\n\n @media (max-width: 768px) {\n height: 380px;\n width: auto;\n display: block;\n margin: 0 auto;\n }\n\n @media (max-width: 425px) {\n width: 100%;\n height: auto;\n display: block;\n margin: 0 auto;\n }\n\n @media (max-width: 1180px) and (min-width: 1000px) {\n position: relative;\n left: calc(100vw - 1180px);\n }\n\n @media (max-width: 1000px) and (min-width: 769px) {\n position: relative;\n left: calc(100vw - 1000px);\n }\n`;\n\nexport const MainImageLinux = styled.img`\n width: calc(100vw - 15px);\n height: auto;\n max-width: 1296px;\n margin-top: 22px;\n`;\n\nexport const ThirdImageLinux = styled.img`\n height: 839px;\n width: 937px;\n\n transition: all 250ms ease-in-out;\n\n @media (max-width: 768px) {\n height: 380px;\n width: auto;\n display: block;\n margin: 0 auto;\n }\n\n @media (max-width: 425px) {\n width: 100%;\n height: auto;\n display: block;\n margin: 0 auto;\n }\n\n @media (max-width: 1180px) and (min-width: 1000px) {\n position: relative;\n left: calc(100vw - 1180px);\n }\n\n @media (max-width: 1000px) and (min-width: 769px) {\n position: relative;\n left: calc(100vw - 1000px);\n }\n`;\n\nexport const MainImageWin = styled.img`\n width: calc(100vw - 15px);\n height: auto;\n max-width: 1420px;\n margin-top: 22px;\n`;\n\nexport const ThirdImageWin = styled.img`\n height: 839px;\n width: 937px;\n\n transition: all 250ms ease-in-out;\n\n @media (max-width: 768px) {\n height: 380px;\n width: auto;\n display: block;\n margin: 0 auto;\n }\n\n @media (max-width: 425px) {\n width: 100%;\n height: auto;\n display: block;\n margin: 0 auto;\n }\n\n @media (max-width: 1180px) and (min-width: 1000px) {\n position: relative;\n left: calc(100vw - 1180px);\n }\n\n @media (max-width: 1000px) and (min-width: 769px) {\n position: relative;\n left: calc(100vw - 1000px);\n }\n`;\n\nexport const MainImageAddon = styled.img`\n width: calc(100vw - 15px);\n height: auto;\n margin-top: 22px;\n max-width: 1440px;\n`;\n\nexport const ExtensionWrapper = styled.div`\n display: flex;\n align-items: center;\n margin-bottom: 20px;\n justify-content: center;\n`;\n\nexport const ExtensionLink = styled.a`\n width: 130px;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n text-decoration: none;\n`\n\nexport const ExtensionLinkText = styled.div`\n font-size: 13px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.15;\n letter-spacing: 0.13px;\n text-align: center;\n color: #17bed0;\n margin-top: 12px;\n text-decoration: none;\n`\n\nexport const FooterSection = styled(Section)`\n flex-direction: column;\n justify-content: center;\n padding: 80px 0px 150px 0px;\n text-align: center;\n\n ${RequireText} {\n text-align: center;\n }\n\n @media (max-width: 768px) {\n &.desktop-footer-section {\n padding-bottom: 110px;\n }\n }\n`;\n\nexport const FooterTitle = styled.h3`\n font-size: 28px;\n font-weight: bold;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.18;\n letter-spacing: -0.42px;\n text-align: center;\n color: #2a2a2a;\n padding: 0px;\n margin-bottom: 33px;\n text-align: center;\n`;\n\nexport const Link = styled.a`\n font-size: 28px;\n font-weight: normal;\n font-stretch: normal;\n font-style: normal;\n line-height: 1.43;\n letter-spacing: -0.56px;\n text-align: center;\n color: #17bed0;\n text-decoration: none;\n\n @media (max-width: 768px) {\n font-size: 16px;\n }\n`;\n\nexport const CUSTOM_STYLES = {\n android: {\n headerSection: {\n height: \"760px\",\n textBox: {\n zIndex: 1,\n position: \"absolute\",\n maxWidth: \"55%\"\n },\n imageBox: {\n zIndex: -1,\n position: \"absolute\",\n right: \"-400px\",\n top: \"80px\"\n }\n },\n\n firstSection: {\n height: \"769px\",\n textBox: {\n position: \"relative\",\n bottom: \"50px\"\n },\n imageBox: {\n position: \"relative\",\n height: \"100%\"\n }\n },\n\n secondSection: {\n height: \"660px\",\n textBox: {\n zIndex: 1,\n maxWidth: \"36%\"\n },\n imageBox: {\n zIndex: 0,\n position: \"absolute\",\n right: \"-180px\",\n }\n },\n\n thirdSection: {\n height: \"460px\",\n\n imageBox: {\n zIndex: 0,\n position: \"absolute\",\n left: \"-193px\",\n },\n\n textBox: {\n position: \"absolute\",\n right: \"0px\",\n maxWidth: \"30%\",\n zIndex: 1\n }\n }\n },\n\n ios: {\n headerSection: {\n height: \"760px\",\n textBox: {\n zIndex: 1,\n position: \"absolute\",\n maxWidth: \"55%\"\n },\n imageBox: {\n zIndex: -1,\n position: \"absolute\",\n right: \"-55%\",\n top: \"80px\"\n }\n },\n\n firstSection: {\n height: \"671px\",\n imageBox: {\n position: \"relative\",\n height: \"100%\"\n }\n },\n\n secondSection: {\n height: \"766px\",\n textBox: {\n zIndex: 1,\n position: \"absolute\",\n top: \"267px\"\n },\n imageBox: {\n zIndex: 0,\n position: \"absolute\",\n right: 0,\n width: \"auto\"\n }\n },\n\n thirdSection: {\n height: \"839px\",\n textBox: {\n zIndex: 1,\n position: \"absolute\",\n top: \"75px\",\n width: \"46%\",\n right: 0\n },\n imageBox: {\n zIndex: 0,\n position: \"absolute\",\n left: 0\n }\n }\n }\n}","//@flow\n\nimport {\n DiscountType,\n Userinfo,\n PlanIDType,\n Subscription\n} from \"../lib/types/dataTypes.components\";\n\n// import {\n// ADD_STORAGE_1COUNT_PLAN_ID, \n// ADD_STORAGE_4COUNT_PLAN_ID,\n// MB_PER_STORAGE_COUNT\n// } from \"./plansInfo\";\n\nimport {\n rcookie,\n setcookie,\n hrefSearch\n} from \"@pcloud/web-utilities/dist/lib/utils\";\nimport { __ } from \"@pcloud/web-utilities/dist/lib/langManager\";\nimport { renderQuota } from \"@pcloud/web-utilities/dist/plans/utils.plans\";\n\nimport {\n PREMIUM_PLAN_ID,\n PREMIUM_PLUS_PLAN_ID,\n CUSTOM4TB_PLAN_ID,\n FAMILY2TB_PLAN_ID,\n FAMILY_CUSTOM_PLAN_ID,\n FAMILY_CUSTOM_2COUNT_PLAN_ID,\n FAMILY_CUSTOM_5COUNT_PLAN_ID,\n FAMILY_ADD_1COUNT_PLAN_ID,\n FAMILY_ADD_2COUNT_PLAN_ID,\n FAMILY_ADD_5COUNT_PLAN_ID,\n CUSTOM_PLAN_ID,\n ADD_STORAGE_1COUNT_PLAN_ID,\n ADD_STORAGE_4COUNT_PLAN_ID,\n ADD_STORAGE_8COUNT_PLAN_ID,\n ADD_STORAGE_12COUNT_PLAN_ID,\n ADD_STORAGE_20COUNT_PLAN_ID,\n CUSTOM_20COUNT_PLAN_ID,\n CRYPTO_PLAN_ID,\n EFH_PLAN_ID,\n ADDITIONAL_TRAFFIC_ID,\n MAX_CUSTOM_STORAGE_COUNT,\n MAX_FAMILY_STORAGE_COUNT,\n PASS_PREMIUM_PLAN_ID,\n PASS_FAMILY_PLAN_ID,\n} from \"@pcloud/web-utilities/dist/plans/constants.plans\";\n\nexport {\n rcookie,\n setcookie,\n hrefSearch,\n __,\n renderQuota\n};\n\nexport const removeHrefSearch = (params: Array, forceRefresh?: boolean) => {\n if (params && typeof params == 'string') {\n params = [params];\n }\n\n if (params && params.length && location.search.length) {\n var currentQueriesArr = location.search.substring(1).split('&');\n var currentQueriesMap = {};\n var finalQueriesArr = [];\n var finalURL;\n\n // Create object map with all current search queries\n for (var i in currentQueriesArr) {\n currentQueriesMap[currentQueriesArr[i].split('=').shift()] = currentQueriesArr[i].split('=').pop();\n }\n\n // Delete requested queries\n for (var i in params) {\n if (params[i].split('=').shift() in currentQueriesMap) {\n delete currentQueriesMap[params[i].split('=').shift()];\n }\n }\n\n if (Object.keys(currentQueriesMap).length) {\n for (var i in currentQueriesMap) {\n finalQueriesArr.push(i + '=' + currentQueriesMap[i]);\n }\n\n finalURL = location.origin + location.pathname + '?' + finalQueriesArr.join('&');\n } else {\n finalURL = location.origin + location.pathname;\n }\n\n if (forceRefresh) {\n location = finalURL;\n } else {\n window.history.pushState({}, null, finalURL);\n }\n }\n};\n\nexport const addHrefSearch = (params: Array | string, forceRefresh: boolean, newLocationUrl?: string) => {\n if (!params) {\n return;\n }\n\n let finalURL;\n\n if (typeof params == 'string') {\n params = [params];\n }\n\n if (location.search.length) {\n let oldQueriesArr = location.search.substring(1).split('&');\n let oldQueriesMap = {};\n let givenQueriesMap = {};\n let finalQueriesMap = {};\n let finalQueriesArr = [];\n\n // Create object map with all current search queries\n for (let i in oldQueriesArr) {\n oldQueriesMap[oldQueriesArr[i].split('=').shift()] = oldQueriesArr[i].split('=').pop();\n }\n\n for (let i in params) {\n givenQueriesMap[params[i].split('=').shift()] = params[i].split('=').pop();\n\n // Delete queries which will be duplicated in the end and remove them\n if (params[i].split('=').shift() in oldQueriesMap) {\n delete oldQueriesMap[params[i].split('=').shift()];\n }\n }\n\n finalQueriesMap = Object.assign(oldQueriesMap, givenQueriesMap);\n\n for (let i in finalQueriesMap) {\n finalQueriesArr.push(i + '=' + finalQueriesMap[i]);\n }\n\n finalURL = (newLocationUrl ? newLocationUrl : (location.origin + location.pathname)) + '?' + finalQueriesArr.join('&');\n\n } else {\n // Directly append newly provided params\n finalURL = (newLocationUrl ? newLocationUrl : location.href) + '?' + params.join('&');\n }\n\n if (forceRefresh) {\n location = finalURL;\n } else {\n if (!window.history.state || window.history.state.page != finalURL) {\n window.history.pushState({ \"page\": finalURL }, null, finalURL);\n }\n }\n};\n\nexport const saveToSessionstorage = (label: string, value: any) => {\n if (\n typeof Storage === \"undefined\" ||\n typeof sessionStorage === \"undefined\" ||\n sessionStorage === null\n ) {\n setcookie(label, value, 0);\n } else {\n sessionStorage.setItem(label, value);\n }\n};\n\nexport const signToCurrency = {\n \"$\": \"USD\",\n \"€\": \"EUR\",\n \"₤\": \"GBP\",\n \"BGN\": \"BGN\"\n};\n\nexport const currencyMap = {\n 'USD': '$',\n 'EUR': '€',\n 'GBP': '₤',\n // Used for Vivacom plans only\n 'BGN': 'BGN'\n};\n\nconst _repl = (str: string, repl: {} = {}) => {\n str = _properSpaces(str);\n\n if (!obLength(repl)) {\n return str;\n }\n\n for (var n in repl) {\n str = str.replace(new RegExp(\"%\" + n + \"%\", \"g\"), repl[n]);\n }\n\n return str;\n};\n\nconst _properSpaces = str => {\n return str.split(String.fromCharCode(160)).join(\" \");\n};\n\nexport const obLength = (obj: {}) => {\n var size = 0,\n key;\n for (key in obj) {\n if (obj.hasOwnProperty(key)) {\n size++;\n }\n }\n return size;\n};\n\ntype getDisabledPlanReasonParams = {\n user: Userinfo,\n forPlan: PlanIDType,\n forPeriod: \"trial\" | \"month\" | \"year\" | \"lifetime\",\n downgradeAllowed?: boolean,\n add500GBAllowed?: boolean,\n trafficCount?: number,\n maxCustomStorageCount?: number\n};\n\nexport const getDisabledPlanReason = ({\n user = {},\n forPlan,\n forPeriod,\n downgradeAllowed,\n add500GBAllowed,\n trafficCount,\n canAddStorage,\n maxCustomStorageCount = MAX_CUSTOM_STORAGE_COUNT,\n maxFamilyStorageCount = MAX_FAMILY_STORAGE_COUNT\n}: getDisabledPlanReasonParams) => {\n if (!user || !forPlan || !forPeriod) {\n return \"\";\n }\n\n const {\n business,\n lastsubscription,\n cryptolifetime,\n plan,\n premium,\n premiumlifetime,\n premiumexpires,\n cryptosubscription,\n efh,\n planparams,\n additionaltraffic,\n additionaltrafficlifetime,\n family,\n passmanagerdata,\n usepassmanagertrial: isfreetrialused\n } = user;\n\n const hasUserInfo = Object.keys(user).length > 0\n let islifetime;\n let isfreetrialactive;\n let passplan;\n let passpremiumexpire;\n let passFamily;\n\n if (passmanagerdata) {\n islifetime = passmanagerdata.islifetime\n isfreetrialactive = passmanagerdata.isfreetrialactive;\n passplan = passmanagerdata.plan;\n passpremiumexpire = passmanagerdata.premiumexpires;\n passFamily = passmanagerdata.family;\n }\n\n if (hasUserInfo) {\n // const {\n // islifetime,\n // istrial: isfreetrialactive,\n // plan: passplan,\n // planexpires: passpremiumexpire\n // } = passmanagerdata\n\n if (business) {\n return (\"business\");\n } else {\n let hasStorageSubscription = premium && !premiumlifetime;\n let hasCryptoSubscription = cryptosubscription;\n let hasSubscriptionPeriod = false;\n let isCanceled = lastsubscription && lastsubscription.status === \"canceled\";\n let incStorage = 0;\n if (!isCanceled && lastsubscription) {\n hasSubscriptionPeriod = lastsubscription.period;\n }\n\n const isCustomPlanId = forPlan === ADD_STORAGE_1COUNT_PLAN_ID || forPlan === ADD_STORAGE_4COUNT_PLAN_ID || forPlan === ADD_STORAGE_8COUNT_PLAN_ID || forPlan === ADD_STORAGE_12COUNT_PLAN_ID || forPlan === ADD_STORAGE_20COUNT_PLAN_ID || forPlan === CUSTOM_20COUNT_PLAN_ID;\n const isFamilyPlanId = forPlan === FAMILY_ADD_1COUNT_PLAN_ID || forPlan === FAMILY_ADD_2COUNT_PLAN_ID || forPlan === FAMILY_ADD_5COUNT_PLAN_ID || forPlan === FAMILY_CUSTOM_2COUNT_PLAN_ID || forPlan === FAMILY_CUSTOM_5COUNT_PLAN_ID;\n\n if (isCustomPlanId || isFamilyPlanId) {\n const parts = forPlan.split(\"_\");\n incStorage = Number(parts[1]);\n forPlan = Number(parts[0]);\n }\n\n if ((!lastsubscription || (hasSubscriptionPeriod && lastsubscription.products.indexOf(forPlan) === -1) && !downgradeAllowed) && forPeriod != \"lifetime\") {\n if (hasStorageSubscription && plan) {\n if (plan == forPlan && hasStorageSubscription == forPeriod) {\n return (\"current_plan\");\n } else if (plan > forPlan) {\n return (\"lower_plan\");\n }\n } else if (efh && forPlan === EFH_PLAN_ID) {\n return (\"current_plan\");\n } else if (additionaltraffic && forPlan == ADDITIONAL_TRAFFIC_ID) {\n if (!additionaltrafficlifetime && planparams.additionaltraffic == trafficCount) {\n return (\"current_plan\");\n } else if (planparams.additionaltraffic > trafficCount) {\n return (\"traffic_downgrade_restriction\");\n }\n }\n } else if (!lastsubscription && forPeriod === \"lifetime\" && hasStorageSubscription && plan && plan > forPlan) {\n return (\"lower_plan\");\n } else if (plan && hasStorageSubscription && hasSubscriptionPeriod && lastsubscription.products.indexOf(plan) === -1 && forPeriod != \"lifetime\" && !downgradeAllowed) {\n if (forPlan == plan) {\n return (\"current_plan\");\n } else if (plan > forPlan) {\n return (\"lower_plan\");\n }\n }\n\n // Buying Crypto\n if (forPlan == CRYPTO_PLAN_ID) {\n if (cryptolifetime) {\n return (\"crypto_lifetime\");\n } else if (hasSubscriptionPeriod && !hasCryptoSubscription) {\n if (hasCryptoSubscription == \"month\" && forPeriod == \"month\") {\n return (\"current_plan\");\n } else if (hasSubscriptionPeriod == \"year\" && forPeriod == \"month\") {\n return (\"lower_period\");\n }\n } else if (\n hasCryptoSubscription &&\n hasSubscriptionPeriod &&\n isCanceled == false\n ) {\n if (hasSubscriptionPeriod == \"month\" && forPeriod == \"month\") {\n return (\"current_plan\");\n } else if (hasSubscriptionPeriod == \"year\") {\n if (forPeriod == \"month\") {\n return (\"lower_period\");\n } else if (forPeriod == \"year\") {\n return (\"current_plan\");\n }\n }\n }\n } else if (forPlan == EFH_PLAN_ID) {\n if (efh) {\n if (hasSubscriptionPeriod == forPeriod) {\n return (\"current_plan\");\n } else if (hasSubscriptionPeriod == \"year\") {\n if (forPeriod == \"month\") {\n return (\"lower_period\");\n }\n }\n }\n // Buying Traffic\n } else if (forPlan == ADDITIONAL_TRAFFIC_ID) {\n if (plan === CUSTOM4TB_PLAN_ID) {\n return (\"custom_subscription\");\n } else if (forPeriod === \"lifetime\" && !premiumlifetime) {\n return \"traffic_lifetime_restriction\";\n } else if (plan == FAMILY2TB_PLAN_ID || plan == FAMILY_CUSTOM_PLAN_ID) {\n return \"custom_subscription\";\n } else if (forPeriod !== \"lifetime\" && additionaltrafficlifetime) {\n return \"traffic_lifetime_restriction_subs\";\n } else if (forPeriod === \"month\" && hasSubscriptionPeriod == \"year\" && (!downgradeAllowed || lastsubscription.billingprovider === 11)) {\n return (\"traffic_downgrade_restriction\");\n } else if (additionaltraffic && !additionaltrafficlifetime && (forPeriod === \"month\" || forPeriod === \"year\") && planparams.additionaltraffic == trafficCount && forPeriod === hasSubscriptionPeriod) {\n return (\"current_plan\");\n } else if (additionaltrafficlifetime && forPeriod === \"lifetime\" && planparams.additionaltraffic == trafficCount) {\n return (\"current_plan\");\n } else if (additionaltraffic && planparams.additionaltraffic > trafficCount && ((forPeriod === hasSubscriptionPeriod && !downgradeAllowed) || (forPeriod === \"lifetime\" && additionaltrafficlifetime))) {\n return (\"traffic_lifetime_restriction_subs\");\n }\n // Buying Pass\n } else if (forPlan == PASS_PREMIUM_PLAN_ID) {\n if ((isfreetrialactive && forPeriod === \"trial\") || (islifetime && forPeriod === \"lifetime\" && passplan === 1)) {\n return (\"current_plan\");\n } else if (passmanagerdata && forPeriod === \"free\") {\n return (\"current_active_plan\");\n } else if (isfreetrialused && forPeriod === 'trial') {\n return \"plan_upgrade_restrictions\";\n } else if ((islifetime && forPeriod != \"lifetime\") || passplan === 2) {\n return (\"custom_subscription\");\n // } else if (!emailverified) {\n // return (\"verify_email\")\n } else if (lastsubscription && !isCanceled) {\n if (lastsubscription.planid) {\n let activePlanId = lastsubscription.planid;\n let activePlanPeriod = lastsubscription.period;\n if (activePlanId === forPlan) {\n if (activePlanPeriod === forPeriod) {\n return \"current_plan\";\n } else if (activePlanPeriod === 'month' && (forPeriod === 'trial' || forPeriod === 'free')) {\n return \"plan_upgrade_restrictions\";\n } else if (activePlanPeriod === 'year' && (forPeriod === 'trial' || forPeriod === 'free' || forPeriod === 'month')) {\n return \"plan_upgrade_restrictions\";\n }\n }\n\n } else if (lastsubscription.products) {\n let products = lastsubscription.products;\n let activePlanPeriod = lastsubscription.period;\n if (products.indexOf(PASS_PREMIUM_PLAN_ID) !== -1) {\n if (activePlanPeriod === forPeriod) {\n return \"current_plan\";\n } else if (activePlanPeriod === 'month' && (forPeriod === 'trial' || forPeriod === 'free')) {\n return \"plan_upgrade_restrictions\";\n } else if (activePlanPeriod === 'year' && (forPeriod === 'trial' || forPeriod === 'free' || forPeriod === 'month')) {\n return \"plan_upgrade_restrictions\";\n }\n }\n }\n } else if ((!lastsubscription || (lastsubscription && isCanceled)) && passplan == 1 && !isfreetrialactive) {\n if (islifetime || (!islifetime && forPeriod != \"lifetime\")) {\n return \"plan_upgrade_restrictions\";\n }\n }\n\n // Active Pass Lifetime plan = disable any other Pass Plans.\n if (!isfreetrialactive && (passplan === 1 || passplan === 2) && islifetime) {\n return \"plan_upgrade_restrictions\";\n }\n } else if (forPlan == PASS_FAMILY_PLAN_ID) {\n if (passplan === 2 && passFamily && !passFamily.owner) {\n return \"custom_subscription\";\n };\n\n if ((isfreetrialactive && forPeriod === \"trial\") || (islifetime && forPeriod === \"lifetime\" && passplan === 2)) {\n return \"current_plan\";\n }\n\n if (lastsubscription && !isCanceled) {\n let activePlanPeriod = lastsubscription.period;\n\n if (activePlanPeriod === 'year' && forPeriod === 'month') {\n return \"plan_upgrade_restrictions\";\n }\n\n if (lastsubscription.planid) {\n let activePlanId = lastsubscription.planid;\n\n if (activePlanId === forPlan && activePlanPeriod === forPeriod) {\n return \"current_plan\";\n }\n } else if (lastsubscription.products) {\n let products = lastsubscription.products;\n\n if (products.indexOf(forPlan) !== -1 && activePlanPeriod === forPeriod) {\n return \"current_plan\";\n }\n }\n }\n\n // Active Pass Lifetime plan = disable any other Pass Plans.\n if (!isfreetrialactive && (passplan === 1 || passplan === 2) && islifetime) {\n return \"plan_upgrade_restrictions\";\n }\n\n // Buying Storage\n } else {\n if (plan == PREMIUM_PLAN_ID || plan == PREMIUM_PLUS_PLAN_ID || plan == CUSTOM4TB_PLAN_ID) {\n if (premiumlifetime) {\n if (plan == CUSTOM4TB_PLAN_ID && typeof planparams != 'undefined' && planparams.storage > 1 && canAddStorage) {\n return (\"custom_plan_upgrade_exceeded\");\n } else if (forPlan == CUSTOM_PLAN_ID && canAddStorage) {\n if ((incStorage == maxCustomStorageCount && (plan == PREMIUM_PLAN_ID || plan == CUSTOM4TB_PLAN_ID)) || (incStorage > maxCustomStorageCount && plan == PREMIUM_PLAN_ID)) {\n return (\"plan_upgrade_restrictions\");\n } else if (incStorage == 1 && !add500GBAllowed) {\n return ((plan == PREMIUM_PLUS_PLAN_ID || plan == CUSTOM4TB_PLAN_ID) ? \"plan_upgrade_restrictions\" : \"custom_plan_upgrade_restrictions\");\n }\n } else if (forPlan <= plan || forPlan == FAMILY2TB_PLAN_ID || forPlan == FAMILY_CUSTOM_PLAN_ID || (forPlan == CUSTOM_PLAN_ID && !canAddStorage)) {\n return (\"storage_lifetime\");\n }\n } else if (hasSubscriptionPeriod && isCanceled == false) {\n if (forPeriod == \"lifetime\") {\n if (forPlan < plan) {\n return (\"lower_plan\");\n }\n } else if (hasSubscriptionPeriod == \"month\") {\n if (forPeriod == \"month\") {\n if (forPlan < plan && !downgradeAllowed) {\n return (\"lower_plan\");\n } else if (forPlan == plan) {\n return (\"current_plan\");\n }\n } else if (\n (forPeriod == \"year\" && forPlan < plan) ||\n (forPlan < plan && premiumexpires)\n ) {\n return (\"lower_plan\");\n }\n } else if (hasSubscriptionPeriod == \"year\") {\n if (forPeriod == \"month\" && !downgradeAllowed) {\n return (\"lower_period\");\n } else {\n if (forPlan < plan && !downgradeAllowed) {\n return (\"lower_plan\");\n } else if (forPlan == plan) {\n if (!downgradeAllowed || hasSubscriptionPeriod == forPeriod) {\n return (\"current_plan\");\n }\n }\n }\n }\n } else if (isCanceled == false) {\n if (forPlan < plan) {\n return (\"lower_plan\");\n } else if (forPlan <= plan && premiumexpires) {\n let now = new Date();\n let expires = new Date(premiumexpires);\n //Get 1 day in milliseconds\n let oneDay = 1000 * 60 * 60 * 24;\n let daysLeft = Number(expires) - Number(now) / oneDay;\n\n let monthlyTabisActive = forPeriod === \"month\";\n let annualTabisActive = forPeriod === \"year\";\n\n if (daysLeft > 10 && (annualTabisActive || monthlyTabisActive)) {\n return (\"lower_period\");\n }\n }\n }\n } else if (plan == CUSTOM_PLAN_ID) {\n if (typeof planparams != 'undefined' && planparams.storage >= maxCustomStorageCount && forPlan == CUSTOM_PLAN_ID && canAddStorage) {\n return (\"custom_plan_upgrade_exceeded\");\n } else if (typeof planparams != 'undefined' && ((planparams.storage + incStorage) > maxCustomStorageCount) && forPlan == CUSTOM_PLAN_ID && canAddStorage) {\n return (\"plan_upgrade_restrictions\");\n } else if (forPlan == CUSTOM_PLAN_ID && incStorage == 1 && !add500GBAllowed) {\n if (typeof planparams != 'undefined' && planparams.storage <= 3) {\n return (\"custom_plan_upgrade_restrictions\");\n } else {\n return (\"plan_upgrade_restrictions\");\n }\n } else if (forPlan < plan || (!canAddStorage && forPlan == CUSTOM_PLAN_ID)) {\n return (\"storage_lifetime\");\n } else if (forPeriod === \"year\" || forPeriod === \"month\") {\n return (\"storage_lifetime\");\n }\n } else if ((plan == FAMILY2TB_PLAN_ID || plan == FAMILY_CUSTOM_PLAN_ID) && forPlan !== FAMILY_CUSTOM_PLAN_ID) {\n return (\"family\");\n } else if (forPlan == FAMILY_CUSTOM_PLAN_ID || forPlan == FAMILY2TB_PLAN_ID) {\n if ((plan == FAMILY_CUSTOM_PLAN_ID || plan == FAMILY2TB_PLAN_ID) && family && !family.owner) {\n return \"family\";\n } else if (plan == FAMILY_CUSTOM_PLAN_ID && typeof planparams != 'undefined') {\n if (planparams.storage >= maxFamilyStorageCount && canAddStorage) {\n return (\"custom_plan_upgrade_exceeded\");\n } else if (((planparams.storage + incStorage) > maxFamilyStorageCount) && canAddStorage) {\n return (\"plan_upgrade_restrictions\");\n }\n }\n } else {\n if (forPlan == CUSTOM_PLAN_ID && incStorage > maxCustomStorageCount) {\n return (\"plan_upgrade_restrictions\");\n }\n }\n }\n }\n }\n};\n\nexport const preventEnteringNumbers = (event) => {\n const key = event.which || event.keyCode || event.charCode;\n const pressedCharacter = String.fromCharCode(key);\n\n if (!(/[a-zA-Z '-]/).test(pressedCharacter)) {\n event.preventDefault();\n }\n}\n\ntype creditCardValidation = {\n name: string,\n range: string,\n valid_length: Array\n}\n\nexport const findCardType = (cardNumber: string): creditCardValidation => {\n const creditCardValidations = [\n {\n name: \"amex\",\n range: \"34, 37\",\n valid_length: [\"15\"]\n },\n {\n name: \"diners\",\n range: \"301, 302, 303, 304, 305, 36\",\n valid_length: [\"16\"]\n },\n {\n name: \"jcb\",\n range: \"352, 353, 354, 355, 356, 357, 358\",\n valid_length: [\"16\"]\n },\n {\n name: \"visa\",\n range: \"4\",\n valid_length: [\"19\", \"18\", \"17\", \"16\", \"15\", \"14\", \"13\"]\n },\n {\n name: \"mastercard\",\n range: \"50, 51, 52, 53, 54, 55, 222\",\n valid_length: [\"16\"]\n },\n {\n name: \"discover\",\n range: \"6011, 622, 644, 645, 646, 647, 648, 649\",\n valid_length: [\"16\"]\n }\n ];\n\n return creditCardValidations.find((cardTemplate: creditCardValidation): (creditCardValidation | false) => {\n let isThereAMatch = cardTemplate.range.split(\", \").some((range: string) => {\n const rangeLength = range.length;\n return range === cardNumber.slice(0, rangeLength);\n });\n return isThereAMatch;\n });\n}\n\nexport const getExpiryDatePeriod = (expiryDate: string, period: string): string => {\n const periods = {\n month: Number(expiryDate.split(\"/\")[0]),\n year: Number(expiryDate.split(\"/\")[1])\n }\n\n if (periods.year > 2000 && periods.year < 2100) {\n periods.year -= 2000;\n }\n\n return periods[period];\n}\n\nexport const validateExpiryDate = (expiryDate: string): boolean => {\n const month = getExpiryDatePeriod(expiryDate, \"month\");\n const year = getExpiryDatePeriod(expiryDate, \"year\");\n const currentYear = new Date().getFullYear() - 2000;\n const currentMonth = new Date().getMonth() + 1;\n\n const validateExpression =\n month <= 12 &&\n ((month > 0 && year > currentYear) || (month >= currentMonth && year == currentYear)) &&\n year <= 40;\n\n return validateExpression;\n};\n\n\nexport const getDeviceID = () => {\n if (!window.localStorage.getItem(\"deviceid\") && !rcookie(\"deviceid\")) {\n return rcookie(\"deviceid\");\n } else if (rcookie(\"deviceid\")) {\n if (window.localStorage.getItem(\"deviceid\")) {\n window.localStorage.removeItem(\"deviceid\");\n }\n return rcookie(\"deviceid\");\n } else if (window.localStorage.getItem(\"deviceid\")) {\n setcookie(\"deviceid\", window.localStorage.getItem(\"deviceid\"), 365);\n window.localStorage.removeItem(\"deviceid\");\n return rcookie(\"deviceid\");\n }\n};\n\nexport const getCurrency = ({ auth, callback = () => { } }: { auth: string, callback: () => void }) => {\n const params = {};\n let getCurrencyTries = 0;\n\n if (getCurrencyTries >= 5) {\n onSuccess(\"$\");\n return;\n }\n\n if (auth) {\n params[\"auth\"] = $.cookie(\"pcauth\");\n }\n\n if (rcookie(\"forcecurrency\")) {\n params[\"currency\"] = $.cookie(\"forcecurrency\");\n }\n\n if (rcookie(\"forcecountry\")) {\n params[\"country\"] = $.cookie(\"forcecountry\");\n }\n\n const onSuccess = (currency) => {\n if (typeof Storage !== \"undefined\" && currencyMap[currency]) {\n sessionStorage.setItem(\"pclCurrency\", currencyMap[currency]);\n }\n\n callback(currency);\n };\n\n const getCurrencyApiCall = () => {\n getCurrencyTries++;\n const onError = () => {\n setTimeout(() => {\n getCurrencyApiCall();\n }, 300);\n };\n\n pCloudGlobals.apiMethod && pCloudGlobals.apiMethod(\n \"getcurrency\",\n params,\n (data) => {\n if (data.currency) {\n onSuccess(data.currency);\n } else {\n onError();\n }\n },\n {\n errorCallback: onError\n }\n );\n };\n\n getCurrencyApiCall();\n};\n\nexport const areArraysEqual = (array1: Array, array2: Array): boolean => {\n if (!array1 || !array2) {\n return false;\n }\n\n if (array1.length !== array2.length) {\n return false;\n }\n\n for (let index1 = 0; index1 < array1.length; index1++) {\n const e1 = array1[index1];\n const e2 = array2[index1];\n\n if (Array.isArray(e1) && Array.isArray(e2)) {\n compareArrays(e1, e2);\n } else if (e1 !== e2) {\n return false;\n }\n }\n\n return true;\n}\n\nexport const formatMS = (milliseconds: number, type: \"day\" | \"hour\" | \"minute\" | \"second\"): number => {\n const typeMap = {\n \"day\": { \"divider\": 86400000, \"modulo\": milliseconds + 1 },\n \"hour\": { \"divider\": 3600000, \"modulo\": 24 },\n \"minute\": { \"divider\": 60000, \"modulo\": 60 },\n \"second\": { \"divider\": 1000, \"modulo\": 60 }\n };\n\n if (!(type in typeMap)) {\n console.error(\"Invalid duration type: \" + type);\n\n return 0;\n }\n\n return parseInt((milliseconds / typeMap[type].divider) % typeMap[type].modulo);\n};\n\nexport const msToTime = (duration: number, showHours = true): string => {\n let seconds = parseInt((duration / 1000) % 60);\n let minutes = parseInt((duration / 60000) % 60);\n let hours = parseInt((duration / 3600000) % 24);\n\n hours = hours < 10 ? '0' + hours : hours;\n minutes = minutes < 10 ? '0' + minutes : minutes;\n seconds = seconds < 10 ? '0' + seconds : seconds;\n\n return (showHours ? hours + ':' : '') + minutes + ':' + seconds;\n};\n\nexport const cleanFloat = (number: number): number => {\n let value = Number(number);\n let decimal = value % 1 == 0 ? 0 : 2;\n let result = Number(value.toFixed(decimal));\n\n if (result % 1 == 0) {\n decimal = 0;\n }\n\n return Number(value.toFixed(decimal));\n};\n\nexport const browserVersion = (userAgent, regex) => {\n return userAgent.match(regex) ? userAgent.match(regex)[2] : null;\n}\n\nexport const detectBrowser = (version) => {\n const userAgent = navigator.userAgent;\n let browser = \"unkown\";\n // Detect browser name\n browser = (/ucbrowser/i).test(userAgent) ? 'UCBrowser' : browser;\n browser = (/edg/i).test(userAgent) ? 'Edge' : browser;\n browser = (/googlebot/i).test(userAgent) ? 'GoogleBot' : browser;\n browser = (/chromium/i).test(userAgent) ? 'Chromium' : browser;\n browser = (/firefox|fxios/i).test(userAgent) && !(/seamonkey/i).test(userAgent) ? 'Firefox' : browser;\n browser = (/; msie|trident/i).test(userAgent) && !(/ucbrowser/i).test(userAgent) ? 'IE' : browser;\n browser = (/chrome|crios/i).test(userAgent) && !(/opr|opera|chromium|edg|ucbrowser|googlebot/i).test(userAgent) ? 'Chrome' : browser;;\n browser = (/safari/i).test(userAgent) && !(/chromium|edg|ucbrowser|chrome|crios|opr|opera|fxios|firefox/i).test(userAgent) ? 'Safari' : browser;\n browser = (/opr|opera/i).test(userAgent) ? 'Opera' : browser;\n browser = navigator.brave ? \"Brave\" : browser;\n\n if (version) {\n switch (browser) {\n case 'UCBrowser': return `${browser}/${browserVersion(userAgent, /(ucbrowser)\\/([\\d\\.]+)/i)}`;\n case 'Edge': return `${browser}/${browserVersion(userAgent, /(edge|edga|edgios|edg)\\/([\\d\\.]+)/i)}`;\n case 'GoogleBot': return `${browser}/${browserVersion(userAgent, /(googlebot)\\/([\\d\\.]+)/i)}`;\n case 'Chromium': return `${browser}/${browserVersion(userAgent, /(chromium)\\/([\\d\\.]+)/i)}`;\n case 'Firefox': return `${browser}/${browserVersion(userAgent, /(firefox|fxios)\\/([\\d\\.]+)/i)}`;\n case 'Chrome': return `${browser}/${browserVersion(userAgent, /(chrome|crios)\\/([\\d\\.]+)/i)}`;\n case 'Safari': return `${browser}/${browserVersion(userAgent, /(safari)\\/([\\d\\.]+)/i)}`;\n case 'Opera': return `${browser}/${browserVersion(userAgent, /(opera|opr)\\/([\\d\\.]+)/i)}`;\n case 'IE': const version = browserVersion(userAgent, /(trident)\\/([\\d\\.]+)/i);\n // IE version is mapped using trident version \n // IE/8.0 = Trident/4.0, IE/9.0 = Trident/5.0\n return version ? `${browser}/${parseFloat(version) + 4.0}` : `${browser}/7.0`;\n default: return `unknown/0.0.0.0`;\n }\n }\n\n return browser;\n}\n\nexport const isValidEmailAddress = (email: string): boolean => {\n const pattern = new RegExp(/^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\t\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/);\n return pattern.test(email);\n};\n\nexport const apiCall = (method, params, onSuccess, onError, opts) => {\n const dfd = jQuery.Deferred();\n opts = {\n errorCallback: (data) => {\n dfd.reject(data);\n if (typeof onError === 'function') {\n onError(data);\n }\n },\n ...opts\n }\n\n pCloudGlobals.apiMethod(\n method,\n params,\n (data) => {\n if (typeof onSuccess === 'function') {\n onSuccess(data);\n }\n dfd.resolve(data);\n },\n opts\n );\n\n return dfd.promise();\n};\n\nexport const apiCallPost = (method, params, onSuccess, onError, opts) => {\n const dfd = jQuery.Deferred();\n opts = {\n type: \"POST\",\n errorCallback: (data) => {\n dfd.reject(data);\n if (typeof onError === 'function') {\n onError(data);\n }\n },\n ...opts\n }\n\n pCloudGlobals.apiMethod(\n method,\n params,\n (data) => {\n dfd.resolve(data);\n if (typeof onSuccess === 'function') {\n onSuccess(data);\n }\n },\n opts\n );\n\n return dfd.promise();\n};\n\nexport const detectIsMobile = () => {\n return /Mobile|mini|Fennec|Android|iP(od|hone)/.test(navigator.appVersion);\n};\n\nexport const onMouseOut = (event, callback) => {\n const e = event ? event : window.event;\n // If this is an autocomplete element.\n if (e.target && e.target.tagName && e.target.tagName.toLowerCase() == \"input\") {\n return;\n }\n\n // Get the current viewport width.\n const vpWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n\n // If the current mouse X position is within 50px of the right edge of the viewport, return.\n if (e.clientX >= (vpWidth - 50)) {\n return;\n }\n\n // If the current mouse Y position is not within 50px of the top edge of the viewport, return.\n if (e.clientY >= 50) {\n return;\n }\n\n // Fixes mozila problem where event is getting triggered on rigth click. -83 seems to be a constant value for clientY in that case.\n if (e.clientY === -83) {\n return;\n }\n\n // Reliable, works on mouse exiting window and user switching active program\n const from = e.relatedTarget || e.toElement;\n\n // User is exiting window\n if (!from && callback) {\n callback();\n }\n}\n\nexport const isInternetExplorer = () => {\n return !!document.documentMode;\n}\n\nexport const scrollToTop = () => {\n window.scrollTo(0);\n};\n\nexport const bytesToSize = (bytes) => {\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];\n if (bytes == 0) return null;\n const i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));\n if (i == 0) return bytes + ' ' + sizes[i];\n return (bytes / Math.pow(1024, i)).toFixed(0) + ' ' + sizes[i];\n};\n\nexport const setTitleByCodeUrl = (codeUrl, setTitle, setRegisterTitle, setLoginTitle) => {\n if (codeUrl) {\n if (codeUrl == 'DROPBOX2PCLOUD') {\n setTitle('Special for Dropbox users - press submit and enjoy 3 months of Premium 500 GB for Free');\n } else if (codeUrl == 'HUBIC2PCLOUD') {\n setTitle('Special for hubiC users - press submit and enjoy 3 months of Premium 500 GB for Free');\n } else if (codeUrl == 'APPO') {\n setTitle('Special for\"APPO\" members - register now and enjoy 3 months of Premium 500 GB for Free');\n } else if (codeUrl == 'BIRTHDAY4U') {\n setTitle(__(\"PromoPage_birthday_text\"));\n } else if (codeUrl == 'PCLOUDMUSIC') {\n setTitle(__(\"pCloud_Music_coupon_submit\").replace(\"%url_promo%\", codeUrl));\n setRegisterTitle(__(\"pCloud_Music_coupon_register\").replace(\"%url_promo%\", codeUrl));\n setLoginTitle(__(\"pCloud_Music_coupon_login\").replace(\"%url_promo%\", codeUrl));\n } else if (codeUrl == 'BDAY3MONTHS') {\n setTitle(__(\"pm_coupon_submit\").replace(\"%url_promo%\", codeUrl).replace(\"%months%\", 3));\n setRegisterTitle(__(\"pm_coupon_register\").replace(\"%url_promo%\", codeUrl).replace(\"%months%\", 3));\n setLoginTitle(__(\"pm_coupon_login\").replace(\"%url_promo%\", codeUrl).replace(\"%months%\", 3));\n } else if (codeUrl == 'PM6MONTHS' || codeUrl == \"INT6MONTHS\"|| codeUrl == \"LFS6MONTHS\") {\n setTitle(__(\"pm_coupon_submit\").replace(\"%url_promo%\", codeUrl).replace(\"%months%\", 6));\n setRegisterTitle(__(\"pm_coupon_register\").replace(\"%url_promo%\", codeUrl).replace(\"%months%\", 6));\n setLoginTitle(__(\"pm_coupon_login\").replace(\"%url_promo%\", codeUrl).replace(\"%months%\", 6));\n } else {\n setTitle(__(\"promo_submit_with_url\").replace(\"%url_promo%\", codeUrl));\n setRegisterTitle(__(\"Register for Free and enter your promo code. It will become effective immediately!\"));\n setLoginTitle(__(\"Enter your promo code upon Login and it will become effective immediately.\"));\n }\n }\n else {\n setTitle(__('Have a promo code? Enter it below.'));\n setRegisterTitle(__(\"Register for Free and enter your promo code. It will become effective immediately!\"));\n setLoginTitle(__(\"Enter your promo code upon Login and it will become effective immediately.\"));\n }\n};\n\nexport const getMonthsFromCode = (code) => {\n if (!code) {\n return \"\"\n };\n\n const indexPosition = code.indexOf(\"MONTHS\");\n let monthsCountIndex;\n\n if (indexPosition === -1) {\n return \"\";\n }\n\n if (indexPosition > 0) {\n monthsCountIndex = indexPosition - 1;\n } else {\n monthsCountIndex = indexPosition + 7;\n }\n\n if (!isNaN(code[monthsCountIndex])) {\n return code[monthsCountIndex]\n }\n\n return \"\";\n};\n\nexport const getLanguage = () => {\n return currentLang || $.cookie('set_lang') || $.cookie('lang') || 'en'\n}\n\nexport const countriesInEuropeList = {\n \"AT\": \"Austria\",\n \"BE\": \"Belgium\",\n \"BG\": \"Bulgaria\",\n \"HR\": \"Croatia\",\n \"CY\": \"Cyprus\",\n \"CZ\": \"Czech Republic\",\n \"DK\": \"Denmark\",\n \"EE\": \"Estonia\",\n \"FI\": \"Finland\",\n \"FR\": \"France\",\n \"DE\": \"Germany\",\n \"GR\": \"Greece\",\n \"HU\": \"Hungary\",\n \"IE\": \"Ireland\",\n \"IT\": \"Italy\",\n \"LV\": \"Latvia\",\n \"LT\": \"Lithuania\",\n \"LU\": \"Luxembourg\",\n \"MT\": \"Malta\",\n \"NL\": \"Netherlands\",\n \"PL\": \"Poland\",\n \"PT\": \"Portugal\",\n \"RO\": \"Romania\",\n \"SK\": \"Slovakia\",\n \"SI\": \"Slovenia\",\n \"ES\": \"Spain\",\n \"SE\": \"Sweden\",\n \"CH\": \"Switzerland\",\n \"GB\": \"United Kingdom\",\n \"AL\": \"Albania\",\n \"AD\": \"Andorra\",\n \"AM\": \"Armenia\",\n \"BY\": \"Belarus\",\n \"BA\": \"Bosnia and Herzegovina\",\n \"FO\": \"Faroe Islands\",\n \"GE\": \"Georgia\",\n \"GI\": \"Gibraltar\",\n \"IS\": \"Iceland\",\n \"IM\": \"Isle of Man\",\n \"XK\": \"Kosovo\",\n \"LI\": \"Liechtenstein\",\n \"MK\": \"Macedonia\",\n \"MD\": \"Moldova\",\n \"MC\": \"Monaco\",\n \"ME\": \"Montenegro\",\n \"NO\": \"Norway\",\n \"RU\": \"Russian Federation\",\n \"SM\": \"San Marino\",\n \"RS\": \"Serbia\",\n \"CH\": \"Switzerland\",\n \"TR\": \"Turkey\",\n \"UA\": \"Ukraine\",\n \"GB\": \"United Kingdom\",\n \"VA\": \"Vatican City State\"\n};\n\nexport const isCountryInEurope = (countryCodeToNameMap, country) => {\n return countryCodeToNameMap[country];\n};\n\nexport const encodeQueryData = (data) => {\n const ret = [];\n\n for (let d in data) {\n ret.push(encodeURIComponent(d) + '=' + encodeURIComponent(data[d]));\n }\n\n return ret.join('&');\n};\n\nexport const calculateDiscountPercent = (price, oldPrice) => Math.floor((1 - (price/oldPrice)) * 100);\n\nexport const convertDateToDDMMMYY = (date: string, shortMonthName = true, dayMonthSeparator = \" \", monthYearSeparator = \" \") => {\n const monthNames = [\n \"jan\",\n \"feb\",\n \"mar\",\n \"apr\",\n \"may\",\n \"jun\",\n \"jul\",\n \"aug\",\n \"sep\",\n \"oct\",\n \"nov\",\n \"dec\"\n ];\n const dateObj = new Date(date);\n const day = dateObj.getDate();\n const month = monthNames[dateObj.getMonth()];\n const monthKey = \"month_\" + (!shortMonthName ? \"full_\" : \"\") + month;\n const year = dateObj.getFullYear();\n\n return day + dayMonthSeparator + __(monthKey) + monthYearSeparator + year;\n};\n\nexport const daysDiff = (dateTo: string, dateFrom: string = null) => {\n const dateFromObj = dateFrom !== null && dateFrom !== \"\" ? new Date(dateFrom) : new Date();\n const dateToObj = new Date(dateTo);\n\n // Change hours and minutes to be from the start of the day.\n dateFromObj.setHours(0,0,0,0);\n dateToObj.setHours(0,0,0,0);\n return (dateToObj.getTime() - dateFromObj.getTime() + ((dateFromObj.getTimezoneOffset() - dateToObj.getTimezoneOffset()) * 60 * 1000)) / (1000 * 3600 * 24);\n};","const digitCharacters = [\n \"0\",\n \"1\",\n \"2\",\n \"3\",\n \"4\",\n \"5\",\n \"6\",\n \"7\",\n \"8\",\n \"9\",\n \"A\",\n \"B\",\n \"C\",\n \"D\",\n \"E\",\n \"F\",\n \"G\",\n \"H\",\n \"I\",\n \"J\",\n \"K\",\n \"L\",\n \"M\",\n \"N\",\n \"O\",\n \"P\",\n \"Q\",\n \"R\",\n \"S\",\n \"T\",\n \"U\",\n \"V\",\n \"W\",\n \"X\",\n \"Y\",\n \"Z\",\n \"a\",\n \"b\",\n \"c\",\n \"d\",\n \"e\",\n \"f\",\n \"g\",\n \"h\",\n \"i\",\n \"j\",\n \"k\",\n \"l\",\n \"m\",\n \"n\",\n \"o\",\n \"p\",\n \"q\",\n \"r\",\n \"s\",\n \"t\",\n \"u\",\n \"v\",\n \"w\",\n \"x\",\n \"y\",\n \"z\",\n \"#\",\n \"$\",\n \"%\",\n \"*\",\n \"+\",\n \",\",\n \"-\",\n \".\",\n \":\",\n \";\",\n \"=\",\n \"?\",\n \"@\",\n \"[\",\n \"]\",\n \"^\",\n \"_\",\n \"{\",\n \"|\",\n \"}\",\n \"~\",\n];\n\nexport const decode83 = (str: String) => {\n let value = 0;\n for (let i = 0; i < str.length; i++) {\n const c = str[i];\n const digit = digitCharacters.indexOf(c);\n value = value * 83 + digit;\n }\n return value;\n};\n\nexport const encode83 = (n: number, length: number): string => {\n var result = \"\";\n for (let i = 1; i <= length; i++) {\n let digit = (Math.floor(n) / Math.pow(83, length - i)) % 83;\n result += digitCharacters[Math.floor(digit)];\n }\n return result;\n};\n","export const sRGBToLinear = (value: number) => {\n let v = value / 255;\n if (v <= 0.04045) {\n return v / 12.92;\n } else {\n return Math.pow((v + 0.055) / 1.055, 2.4);\n }\n};\n\nexport const linearTosRGB = (value: number) => {\n let v = Math.max(0, Math.min(1, value));\n if (v <= 0.0031308) {\n return Math.trunc(v * 12.92 * 255 + 0.5);\n } else {\n return Math.trunc((1.055 * Math.pow(v, 1 / 2.4) - 0.055) * 255 + 0.5);\n }\n};\n\nexport const sign = (n: number) => (n < 0 ? -1 : 1);\n\nexport const signPow = (val: number, exp: number) =>\n sign(val) * Math.pow(Math.abs(val), exp);\n","export class ValidationError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"ValidationError\";\n this.message = message;\n }\n}\n","import { decode83 } from \"./base83\";\nimport { sRGBToLinear, signPow, linearTosRGB } from \"./utils\";\nimport { ValidationError } from \"./error\";\n\n/**\n * Returns an error message if invalid or undefined if valid\n * @param blurhash\n */\nconst validateBlurhash = (blurhash: string) => {\n if (!blurhash || blurhash.length < 6) {\n throw new ValidationError(\n \"The blurhash string must be at least 6 characters\"\n );\n }\n\n const sizeFlag = decode83(blurhash[0]);\n const numY = Math.floor(sizeFlag / 9) + 1;\n const numX = (sizeFlag % 9) + 1;\n\n if (blurhash.length !== 4 + 2 * numX * numY) {\n throw new ValidationError(\n `blurhash length mismatch: length is ${\n blurhash.length\n } but it should be ${4 + 2 * numX * numY}`\n );\n }\n};\n\nexport const isBlurhashValid = (\n blurhash: string\n): { result: boolean; errorReason?: string } => {\n try {\n validateBlurhash(blurhash);\n } catch (error) {\n return { result: false, errorReason: error.message };\n }\n\n return { result: true };\n};\n\nconst decodeDC = (value: number) => {\n const intR = value >> 16;\n const intG = (value >> 8) & 255;\n const intB = value & 255;\n return [sRGBToLinear(intR), sRGBToLinear(intG), sRGBToLinear(intB)];\n};\n\nconst decodeAC = (value: number, maximumValue: number) => {\n const quantR = Math.floor(value / (19 * 19));\n const quantG = Math.floor(value / 19) % 19;\n const quantB = value % 19;\n\n const rgb = [\n signPow((quantR - 9) / 9, 2.0) * maximumValue,\n signPow((quantG - 9) / 9, 2.0) * maximumValue,\n signPow((quantB - 9) / 9, 2.0) * maximumValue,\n ];\n\n return rgb;\n};\n\nconst decode = (\n blurhash: string,\n width: number,\n height: number,\n punch?: number\n) => {\n validateBlurhash(blurhash);\n\n punch = punch | 1;\n\n const sizeFlag = decode83(blurhash[0]);\n const numY = Math.floor(sizeFlag / 9) + 1;\n const numX = (sizeFlag % 9) + 1;\n\n const quantisedMaximumValue = decode83(blurhash[1]);\n const maximumValue = (quantisedMaximumValue + 1) / 166;\n\n const colors = new Array(numX * numY);\n\n for (let i = 0; i < colors.length; i++) {\n if (i === 0) {\n const value = decode83(blurhash.substring(2, 6));\n colors[i] = decodeDC(value);\n } else {\n const value = decode83(blurhash.substring(4 + i * 2, 6 + i * 2));\n colors[i] = decodeAC(value, maximumValue * punch);\n }\n }\n\n const bytesPerRow = width * 4;\n const pixels = new Uint8ClampedArray(bytesPerRow * height);\n\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n let r = 0;\n let g = 0;\n let b = 0;\n\n for (let j = 0; j < numY; j++) {\n for (let i = 0; i < numX; i++) {\n const basis =\n Math.cos((Math.PI * x * i) / width) *\n Math.cos((Math.PI * y * j) / height);\n let color = colors[i + j * numX];\n r += color[0] * basis;\n g += color[1] * basis;\n b += color[2] * basis;\n }\n }\n\n let intR = linearTosRGB(r);\n let intG = linearTosRGB(g);\n let intB = linearTosRGB(b);\n\n pixels[4 * x + 0 + y * bytesPerRow] = intR;\n pixels[4 * x + 1 + y * bytesPerRow] = intG;\n pixels[4 * x + 2 + y * bytesPerRow] = intB;\n pixels[4 * x + 3 + y * bytesPerRow] = 255; // alpha\n }\n }\n return pixels;\n};\n\nexport default decode;\n","import * as React from 'react';\nimport { decode } from 'blurhash';\n\nexport type Props = React.CanvasHTMLAttributes & {\n hash: string;\n height?: number;\n punch?: number;\n width?: number;\n};\n\nexport default class BlurhashCanvas extends React.PureComponent {\n static defaultProps = {\n height: 128,\n width: 128,\n };\n\n canvas: HTMLCanvasElement = null;\n\n componentDidUpdate() {\n this.draw();\n }\n\n handleRef = (canvas: HTMLCanvasElement) => {\n this.canvas = canvas;\n this.draw();\n };\n\n draw = () => {\n const { hash, height, punch, width } = this.props;\n\n if (this.canvas) {\n const pixels = decode(hash, width, height, punch);\n\n const ctx = this.canvas.getContext('2d');\n const imageData = ctx.createImageData(width, height);\n imageData.data.set(pixels);\n ctx.putImageData(imageData, 0, 0);\n }\n };\n\n render() {\n const { hash, height, width, ...rest } = this.props;\n\n return ;\n }\n}\n","import * as React from 'react';\n\nimport BlurhashCanvas from './BlurhashCanvas';\n\ntype Props = React.HTMLAttributes & {\n hash: string;\n /** CSS height, default: 128 */\n height?: number | string | 'auto';\n punch?: number;\n resolutionX?: number;\n resolutionY?: number;\n style?: React.CSSProperties;\n /** CSS width, default: 128 */\n width?: number | string | 'auto';\n};\n\nconst canvasStyle: React.CSSProperties = {\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n width: '100%',\n height: '100%',\n};\n\nexport default class Blurhash extends React.PureComponent {\n static defaultProps = {\n height: 128,\n width: 128,\n resolutionX: 32,\n resolutionY: 32,\n };\n\n componentDidUpdate() {\n if (this.props.resolutionX <= 0) {\n throw new Error('resolutionX must be larger than zero');\n }\n\n if (this.props.resolutionY <= 0) {\n throw new Error('resolutionY must be larger than zero');\n }\n }\n\n render() {\n const { hash, height, width, punch, resolutionX, resolutionY, style, ...rest } = this.props;\n\n return (\n \n \n \n );\n }\n}\n","import React, {useState, useRef, useEffect} from 'react';\nimport styled, {keyframes} from \"styled-components\";\nimport {BlurhashCanvas} from \"react-blurhash\";\n\ntype Props = {\n src: string,\n hash: string,\n rules?: string,\n animated?: boolean,\n};\n\nconst CDN_PATH = (typeof cdnPath !== 'undefined' ? cdnPath : '/');\n\nexport default function LazyImg({\n src,\n hash,\n rules = null,\n animated = false\n}: Props) {\n const imgRef = useRef();\n const [imgIsLoaded, setImgIsLoaded] = useState(false);\n const [activeHash, setActiveHash] = useState(hash);\n\n useEffect(() => {\n if (imgRef.current.complete) {\n setImgIsLoaded(true);\n } else {\n setImgIsLoaded(false);\n }\n setActiveHash(hash);\n }, [hash]);\n\n const onLoaded = () => {\n setImgIsLoaded(true);\n };\n\n return (\n \n {!imgIsLoaded && (\n \n )}\n \n {hash && }\n \n );\n}\n\nconst overlayLoading = keyframes`\n 0% {\n opacity: 0.2;\n }\n\n 50% {\n opacity: 0.6;\n }\n\n 100% {\n opacity: 0.2;\n }\n`;\n\nconst LazyWrapper = styled.div`\n position: relative;\n &.loading {\n display: inline-block;\n min-width: 100px;\n min-height: 100px;\n border-radius: 30px;\n overflow: hidden;\n\n mask-image:\n linear-gradient( 90deg,transparent,#fff 5%,#fff 95%, transparent 100% ),\n linear-gradient( 180deg,transparent,#fff 5%,#fff 95%, transparent 100% )\n ;\n mask-size: 100%;\n mask-position: center;\n mask-repeat:no-repeat;\n mask-composite: intersect;\n }\n &.loaded canvas {\n transition: ${({$animated}) => $animated ? 'opacity .5s linear' : 'none'};\n opacity: ${({$imgIsLoaded}) => !$imgIsLoaded ? 1 : 0};\n }\n`;\n\nconst LoadingOverlay = styled.div`\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n z-index: 2;\n background: #fff;\n animation: ${overlayLoading} 2s infinite;\n`;\n\nconst ImgElement = styled.img`\n transition: ${({$animated}) => $animated ? 'opacity .5s linear' : 'none'};\n opacity: ${({$imgIsLoaded}) => $imgIsLoaded ? 1 : 0};\n position: relative;\n height: 100%;\n width: 100%;\n z-index: 2;\n ${({$rules}) => $rules ? $rules : null}\n`;","//@flow\n\nimport React, { useState, useEffect } from \"react\";\n\nimport * as Style from \"./StyledComponents\";\nimport { __ } from \"../../lib/utils\";\nimport {\n APP_STORE_APP_URL,\n PLAY_STORE_APP_URL,\n OS_NAMES\n} from \"@pcloud/web-utilities/dist/config/constants\";\nimport LazyImg from \"../LazyImg\";\n\ntype Props = {\n os: \"android\" | \"ios\"\n};\n\nconst CDN_PATH = (typeof cdnPath !== 'undefined' ? cdnPath : '/');\n\nconst MobileApps = ({ os }: Props) => {\n const IS_RETINA = window.devicePixelRatio > 1;\n const [isMobile, setIsMobile] = useState(window.innerWidth <= 768)\n\n const CONTENT = {\n android: {\n downloadButton: ,\n downloadLink: PLAY_STORE_APP_URL,\n requiresText: __(\"minimum_supported_version_android\"),\n mainImage: {\n src: CDN_PATH+\"images/download_page/android/main\" + (IS_RETINA ? \"@2x\" : \"\" ) + \".jpg\",\n rules: Style.MainImageAndroid.componentStyle.rules,\n hash: 'LISPeBWB~Wt7tRxaaeM{M{jZxuWo'\n },\n firstImage: {\n src: CDN_PATH+\"images/download_page/android/first\" + (IS_RETINA ? \"@2x\" : \"\" ) + \".jpg\",\n rules: Style.FirstImageAndroid.componentStyle.rules,\n hash: 'LMPGsw00xu~qxu-;9FIAn%.8xvM{'\n },\n secondImage: {\n src: CDN_PATH+\"images/download_page/android/second\" + (IS_RETINA ? \"@2x\" : \"\" ) + \".jpg\",\n rules: Style.SecondImageAndroid.componentStyle.rules,\n hash: 'LTQmL_^+~qE1soIo-;WB-pbcIUe.'\n },\n thirdImage: {\n src: CDN_PATH+\"images/download_page/android/third\" + (IS_RETINA ? \"@2x\" : \"\" ) + \".jpg\",\n rules: Style.ThirdImageAndroid.componentStyle.rules,\n hash: 'L8P%bJ00~C_2XS%N_3Rj00?v~pt8'\n },\n clickEvent: \"Google Play\",\n },\n ios: {\n downloadButton: ,\n downloadLink: APP_STORE_APP_URL,\n mainImage: {\n src: CDN_PATH+\"images/download_page/ios/main\" + (IS_RETINA ? \"@2x\" : \"\" ) + \".jpg\",\n rules: Style.MainImageIOS.componentStyle.rules,\n hash: 'LEQ].+?a-qIVx]~qIB-;9FIVtQxt'\n },\n firstImage: {\n src: CDN_PATH+\"images/download_page/ios/first\" + (IS_RETINA ? \"@2x\" : \"\" ) + \".jpg\",\n rules: Style.FirstImageIOS.componentStyle.rules,\n hash: 'LIP?,akC-;o0~q4nD%9FD%ofxaof'\n },\n secondImage: {\n src: CDN_PATH+\"images/download_page/ios/second\" + (IS_RETINA ? \"@2x\" : \"\" ) + \".jpg\",\n rules: Style.SecondImageIOS.componentStyle.rules,\n hash: 'LWQmCs~qIUWUt7-;RjM{RjM{oLWC'\n },\n thirdImage: {\n src: CDN_PATH+\"images/download_page/ios/third\" + (IS_RETINA ? \"@2x\" : \"\" ) + \".jpg\",\n rules: Style.ThirdImageIOS.componentStyle.rules,\n hash: 'LqM7x{9F-;xu-;NFofxu~q%Maxxu'\n },\n clickEvent: \"AppStore\",\n }\n }\n\n const PAGE_TITLE = __(\"pcloud_for_device\", \"pCloud for %device%\").replace(\"%device%\", OS_NAMES[os] || \"\");\n const CURRENT_OS_CONTENT = CONTENT[os];\n let CURRENT_OS_STYLES = Style.CUSTOM_STYLES[os];\n const BACKUP_TITLE = __(\"backup_landing_title\").replace(\"%device%\", (\"PC \" + __(\"or\") + \" Mac\"));\n\n useEffect(() => {\n window.onresize = () => {\n const newIsMobile = window.innerWidth <= 768;\n if (newIsMobile != isMobile) {\n setIsMobile(newIsMobile);\n }\n };\n }, [isMobile])\n\n useEffect(() => {\n window.dispatchEvent(new Event('resize'));\n }, [os]);\n\n const renderDownloadButton = () => {\n return (\n \n {CURRENT_OS_CONTENT.downloadButton}\n {CURRENT_OS_CONTENT.requiresText}\n \n )\n }\n\n if (!CURRENT_OS_CONTENT) {\n return null;\n }\n\n if (isMobile) {\n CURRENT_OS_STYLES = {};\n }\n\n return (\n \n \n \n {PAGE_TITLE}\n {__(\"always_have_space_for_more_with_auto_upload_and_share_with_others\")}\n {renderDownloadButton()}\n \n \n \n \n \n {__(\"apps_page_midtitle\")}\n \n \n \n {BACKUP_TITLE}\n {__(\"backup_landing_subtitle\")}\n \n \n \n \n \n \n \n \n {__(\"share_and_collaborate\")}\n {__(\"EU_homepage_benefit_text6\")}\n \n \n \n \n \n \n \n \n {__(\"unbreakable_military_securness\")}\n \n {__(\"apps_encrypt_sensitive_files\") + \" \" + __(\"apps_crypto_support_devices\")}\n \n \n \n \n \n \n \n {__(\"apps_download_mobile_app\")}\n {renderDownloadButton()}\n \n \n );\n};\n\nexport default MobileApps;","//@flow\n\nimport React from \"react\";\nimport reactStringReplace from \"react-string-replace\";\nimport Componentify from \"react-componentify\";\n\nimport * as Style from \"./StyledComponents\";\nimport { __ } from \"../../lib/utils\";\nimport { OS_NAMES, BACKUP_DEVICES } from \"@pcloud/web-utilities/dist/config/constants\";\nimport DownloadDriveButton from \"@pcloud/web-utilities/dist/resources/components/DownloadDriveButton\";\nimport { linkConverter } from \"@pcloud/web-utilities/dist/lib/componentifyConverters\";\nimport LazyImg from \"../LazyImg\";\n\ntype Props = {\n os: \"mac\" | \"linux\" | \"windows\"\n};\n\nconst CDN_PATH = (typeof cdnPath !== 'undefined' ? cdnPath : '/');\n\nconst DesktopApps = ({ os }: Props) => {\n const IS_RETINA = window.devicePixelRatio > 1;\n\n const LINUX_CLI_LINK = reactStringReplace(\n __('Also available as a %CLI version%'),\n /(%CLI version%)/g,\n (match, i) => (\n \n {__('CLI version')}\n \n )\n );\n const CONTENT = {\n mac: {\n pageDescription: __(\"extend_mac_available_space_with_up_to_2tb\") + \". \" + __(\"use_your_files_in_the_cloud_as_if_they_are_local\"),\n requiresText: __(\"minimum_supported_version_mac\"),\n mainImage: {\n src: CDN_PATH+\"images/download_page/mac/main\" + (IS_RETINA ? \"@2x\" : \"\" ) + \".jpg\",\n rules: Style.MainImageMac.componentStyle.rules,\n hash: 'LDPZx{M|-osl?wNGROs,00R*?Hfi'\n },\n firstImage: {\n src: CDN_PATH+\"images/download_page/mac/first\" + (IS_RETINA ? \"@2x\" : \"\" ) + \".png\",\n rules: Style.DesktopSectionImage.componentStyle.rules,\n hash: 'L3S6Y=4TiH00tQbX~B01vxnP0g,-'\n },\n secondImage: {\n src: CDN_PATH+\"images/download_page/mac/second\" + (IS_RETINA ? \"@2x\" : \"\" ) + \".png\",\n rules: Style.DesktopSectionImage.componentStyle.rules,\n hash: 'L7P?:iD%00M|fiWBj[j@00M{~qWA'\n },\n thirdImage: {\n src: CDN_PATH+\"images/download_page/mac/third\" + (IS_RETINA ? \"@2x\" : \"\" ) + \".jpg\",\n rules: Style.ThirdImageMac.componentStyle.rules,\n hash: 'LqM7x{9F-;xu-;NFofxu~q%Maxxu'\n },\n },\n windows: {\n pageDescription: __(\"extend_pc_available_space_with_up_to_2tb\") + \". \" + __(\"use_your_files_in_the_cloud_as_if_they_are_local\"),\n requiresText: __(\"minimum_supported_version_windows\"),\n mainImage: {\n src: CDN_PATH+\"images/download_page/windows/main\" + (IS_RETINA ? \"@2x\" : \"\" ) + \".jpg\",\n rules: Style.MainImageWin.componentStyle.rules,\n hash: 'LeOzMbt7-;of~qWBIVoM00V@t7bH'\n },\n firstImage: {\n src: CDN_PATH+\"images/download_page/windows/first\" + (IS_RETINA ? \"@2x\" : \"\" ) + \".png\",\n rules: Style.DesktopSectionImage.componentStyle.rules,\n hash: 'L4R:NV}_D*0J4pW9R*Nz4YD}xu-?'\n },\n secondImage: {\n src: CDN_PATH+\"images/download_page/windows/second\" + (IS_RETINA ? \"@2x\" : \"\" ) + \".png\",\n rules: Style.DesktopSectionImage.componentStyle.rules,\n hash: 'L2Q,L2NK00xt00V@IURk00V?~qM|'\n },\n thirdImage: {\n src: CDN_PATH+\"images/download_page/windows/third\" + (IS_RETINA ? \"@2x\" : \"\" ) + \".jpg\",\n rules: Style.ThirdImageWin.componentStyle.rules,\n hash: 'LjMQ*JD%_3t7~qM{WBt7?vxuWBxu'\n },\n },\n linux: {\n pageDescription: {__(\"use_your_files_in_the_cloud_as_if_they_are_local\")}
{LINUX_CLI_LINK}
,\n requiresText: __(\"minimum_supported_version_linux\"),\n mainImage: {\n src: CDN_PATH+\"images/download_page/linux/main\" + (IS_RETINA ? \"@2x\" : \"\" ) + \".jpg\",\n rules: Style.MainImageLinux.componentStyle.rules,\n hash: 'LGM7or4nD*IU~pWBR*WB00%M-;t7'\n },\n firstImage: {\n src: CDN_PATH+\"images/download_page/linux/first\" + (IS_RETINA ? \"@2x\" : \"\" ) + \".png\",\n rules: Style.DesktopSectionImage.componentStyle.rules,\n hash: 'L4Q].+YkMx8w00]PjZKP004-xu?c'\n },\n secondImage: {\n src: CDN_PATH+\"images/download_page/linux/second\" + (IS_RETINA ? \"@2x\" : \"\" ) + \".png\",\n rules: Style.DesktopSectionImage.componentStyle.rules,\n hash: 'L6Q9}~%MMx$$00WWD%Xn00I;~WMx'\n },\n thirdImage: {\n src: CDN_PATH+\"images/download_page/linux/third\" + (IS_RETINA ? \"@2x\" : \"\" ) + \".jpg\",\n rules: Style.ThirdImageLinux.componentStyle.rules,\n hash: 'LiMQ*JD%?bay~qM{WBt7_3%3of%M'\n },\n }\n }\n\n const PAGE_TITLE = __(\"pcloud_for_device\", \"pCloud for %device%\").replace(\"%device%\", OS_NAMES[os] || \"\");\n const CURRENT_OS_CONTENT = CONTENT[os];\n let CURRENT_OS_STYLES = Style.CUSTOM_STYLES[os] || {};\n const BACKUP_TITLE = __(\"backup_landing_title\").replace(\"%device%\", BACKUP_DEVICES[os] || (\"PC \" + __(\"or\") + \" Mac\"));\n\n const renderDownloadButton = (className) => {\n return (\n \n \n \n \n \n \n )\n }\n\n if (!CURRENT_OS_CONTENT) {\n return null;\n }\n\n return (\n \n \n {PAGE_TITLE}\n {CURRENT_OS_CONTENT.pageDescription}\n {renderDownloadButton(\"desktop-header-buttons\")}\n \n \n {__(\"apps_page_midtitle\")}\n \n \n \n \n \n {BACKUP_TITLE}\n {__(\"backup_landing_subtitle\")}\n \n \n \n \n \n \n \n \n \n \n {__(\"share_and_collaborate\")}\n {__(\"EU_homepage_benefit_text6\")}\n \n \n \n \n \n \n \n \n {__(\"unbreakable_military_securness\")}\n \n {__(\"apps_encrypt_sensitive_files\") + \" \" + __(\"apps_crypto_support_devices\")}\n \n \n \n \n \n \n \n {__(\"backup_landing_download\")}\n {renderDownloadButton()}\n \n \n );\n};\n\nexport default DesktopApps;","var _defs, _path, _path2, _path3, _path4, _path5;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgChrome(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 48,\n height: 48.001\n }, props), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"chrome_svg__a\",\n x1: 0.5,\n x2: 0.5,\n y1: 0.007,\n y2: 0.97,\n gradientUnits: \"objectBoundingBox\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#86bbe5\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#116cb3\"\n })))), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#e53029\",\n d: \"M23.938 0a24.6 24.6 0 0121.649 13.56H22.734s-4.316-.142-8 5.085a10.651 10.651 0 00-.919 8.9c-1.84-3.107-9.764-16.879-9.764-16.879S9.646.569 23.938 0z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fdd900\",\n d: \"M44.851 36.046a24.593 24.593 0 01-22.592 11.932l11.43-19.754s2.281-3.66-.413-9.454c-1.369-2.012-5.071-4.135-9.568-5.259 3.616-.036 21.834.016 21.834.016s5.966 9.882-.691 22.519z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#66b44b\",\n d: \"M3.123 36.141a24.5 24.5 0 01.945-25.5L15.492 30.4s2.034 3.8 8.408 4.37a10.7 10.7 0 008.181-3.652C30.304 34.265 22.315 48 22.315 48s-11.557.215-19.192-11.859z\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M13.171 24.2a10.707 10.707 0 1110.708 10.685A10.7 10.7 0 0113.171 24.2z\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"url(#chrome_svg__a)\",\n d: \"M14.94 24.2a8.915 8.915 0 118.916 8.9 8.907 8.907 0 01-8.916-8.9z\",\n transform: \"translate(.023)\"\n })));\n}\nexport default SvgChrome;","var _defs, _path, _path2;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgOpera(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 48.002,\n height: 48.002\n }, props), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"opera_svg__a\",\n x1: 0.5,\n x2: 0.5,\n y1: 0.016,\n y2: 0.985,\n gradientUnits: \"objectBoundingBox\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.3,\n stopColor: \"#ff1b2d\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.438,\n stopColor: \"#fa1a2c\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.594,\n stopColor: \"#ed1528\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.758,\n stopColor: \"#d60e21\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.927,\n stopColor: \"#b70519\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#a70014\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"opera_svg__b\",\n x1: 0.5,\n x2: 0.5,\n y1: 0.009,\n y2: 0.995,\n gradientUnits: \"objectBoundingBox\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#9c0000\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.7,\n stopColor: \"#ff4b4b\"\n })))), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"url(#opera_svg__a)\",\n d: \"M16.107 37.52a20.821 20.821 0 01-4.481-12.957v-1.125a20.934 20.934 0 014.481-12.957c3.45-4.463 8.513-6.469 14.232-6.469 3.525 0 6.844.244 9.657 2.119A23.749 23.749 0 0024.095 0H24a24.005 24.005 0 00-1.144 47.983c.376.017.77.017 1.144.017a23.845 23.845 0 0016-6.111c-2.813 1.875-5.944 1.95-9.469 1.95-5.7.019-10.988-1.838-14.419-6.319z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"url(#opera_svg__b)\",\n d: \"M85.9 24.213a10.71 10.71 0 018.157-4.163c6.994 0 12.657 7.913 12.657 17.7s-5.663 17.7-12.657 17.7a10.8 10.8 0 01-8.157-4.161 18.084 18.084 0 0014.269 7.311 17.272 17.272 0 009.619-2.944 24.028 24.028 0 000-35.814 17.227 17.227 0 00-9.619-2.944A17.975 17.975 0 0085.9 24.213z\",\n transform: \"translate(-69.793 -13.731)\"\n })));\n}\nexport default SvgOpera;","var _defs, _g;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgFirefox(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 48,\n height: 48\n }, props), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"radialGradient\", {\n id: \"firefox_svg__b\",\n cx: 0.826,\n cy: 0.111,\n r: 1.289,\n gradientTransform: \"matrix(.788 0 0 .958 .173 .005)\",\n gradientUnits: \"objectBoundingBox\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.129,\n stopColor: \"#ffbd4f\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.186,\n stopColor: \"#ffac31\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.247,\n stopColor: \"#ff9d17\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.283,\n stopColor: \"#ff980e\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.403,\n stopColor: \"#ff563b\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.467,\n stopColor: \"#ff3750\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.71,\n stopColor: \"#f5156c\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.782,\n stopColor: \"#eb0878\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.86,\n stopColor: \"#e50080\"\n })), /*#__PURE__*/React.createElement(\"radialGradient\", {\n id: \"firefox_svg__c\",\n cx: -28.75,\n cy: 2.872,\n r: 1.325,\n gradientTransform: \"matrix(.788 0 0 -.968 -2.216 28.165)\",\n gradientUnits: \"objectBoundingBox\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.3,\n stopColor: \"#960e18\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.351,\n stopColor: \"#b11927\",\n stopOpacity: 0.741\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.435,\n stopColor: \"#db293d\",\n stopOpacity: 0.341\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.497,\n stopColor: \"#f5334b\",\n stopOpacity: 0.094\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.53,\n stopColor: \"#ff3750\",\n stopOpacity: 0\n })), /*#__PURE__*/React.createElement(\"radialGradient\", {\n id: \"firefox_svg__d\",\n cx: 0.463,\n cy: 0.194,\n r: 1.285,\n gradientTransform: \"matrix(1.643 0 0 .958 -.287 .008)\",\n gradientUnits: \"objectBoundingBox\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.132,\n stopColor: \"#fff44f\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.252,\n stopColor: \"#ffdc3e\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.506,\n stopColor: \"#ff9d12\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.526,\n stopColor: \"#ff980e\"\n })), /*#__PURE__*/React.createElement(\"radialGradient\", {\n id: \"firefox_svg__e\",\n cx: 0.273,\n cy: 0.997,\n r: 1.215,\n gradientTransform: \"matrix(1.057 0 0 .958 -.016 .041)\",\n gradientUnits: \"objectBoundingBox\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.353,\n stopColor: \"#3a8ee6\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.472,\n stopColor: \"#5c79f0\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.669,\n stopColor: \"#9059ff\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#c139e6\"\n })), /*#__PURE__*/React.createElement(\"radialGradient\", {\n id: \"firefox_svg__f\",\n cx: 0.499,\n cy: 0.529,\n r: 0.65,\n gradientTransform: \"matrix(1.057 0 0 .958 -.028 .022)\",\n gradientUnits: \"objectBoundingBox\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.12,\n stopColor: \"#9059ff\",\n stopOpacity: 0.2\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.194,\n stopColor: \"#8e54f9\",\n stopOpacity: 0.31\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.323,\n stopColor: \"#8c4ff3\",\n stopOpacity: 0.502\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.624,\n stopColor: \"#7716a8\",\n stopOpacity: 0.451\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.975,\n stopColor: \"#6e008b\",\n stopOpacity: 0.6\n })), /*#__PURE__*/React.createElement(\"radialGradient\", {\n id: \"firefox_svg__g\",\n cx: 1.212,\n cy: -0.189,\n r: 1.518,\n gradientTransform: \"matrix(.966 0 0 .958 .043 -.008)\",\n gradientUnits: \"objectBoundingBox\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#ffe226\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.121,\n stopColor: \"#ffdb27\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.295,\n stopColor: \"#ffc82a\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.502,\n stopColor: \"#ffa930\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.732,\n stopColor: \"#ff7e37\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.792,\n stopColor: \"#ff7139\"\n })), /*#__PURE__*/React.createElement(\"radialGradient\", {\n id: \"firefox_svg__h\",\n cx: 0.794,\n cy: 0.032,\n r: 1.465,\n gradientTransform: \"matrix(.815 0 0 .958 .144 .001)\",\n gradientUnits: \"objectBoundingBox\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.113,\n stopColor: \"#fff44f\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.456,\n stopColor: \"#ff980e\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.622,\n stopColor: \"#ff5634\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.716,\n stopColor: \"#ff3647\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.904,\n stopColor: \"#e31587\"\n })), /*#__PURE__*/React.createElement(\"radialGradient\", {\n id: \"firefox_svg__i\",\n cx: 0.291,\n cy: 0.175,\n r: 1.69,\n gradientTransform: \"matrix(2.033 0 0 .958 -.275 .007)\",\n gradientUnits: \"objectBoundingBox\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#fff44f\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.06,\n stopColor: \"#ffe847\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.168,\n stopColor: \"#ffc830\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.304,\n stopColor: \"#ff980e\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.356,\n stopColor: \"#ff8b16\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.455,\n stopColor: \"#ff672a\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.57,\n stopColor: \"#ff3647\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.737,\n stopColor: \"#e31587\"\n })), /*#__PURE__*/React.createElement(\"radialGradient\", {\n id: \"firefox_svg__j\",\n cx: 0.552,\n cy: -0.098,\n r: 1.91,\n gradientTransform: \"matrix(.944 0 0 .958 .03 -.004)\",\n gradientUnits: \"objectBoundingBox\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.137,\n stopColor: \"#fff44f\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.48,\n stopColor: \"#ff980e\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.592,\n stopColor: \"#ff5634\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.655,\n stopColor: \"#ff3647\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.904,\n stopColor: \"#e31587\"\n })), /*#__PURE__*/React.createElement(\"radialGradient\", {\n id: \"firefox_svg__k\",\n cx: 1.018,\n cy: 0.189,\n r: 1.695,\n gradientTransform: \"matrix(.873 0 0 .958 .129 .008)\",\n gradientUnits: \"objectBoundingBox\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.094,\n stopColor: \"#fff44f\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.231,\n stopColor: \"#ffe141\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.509,\n stopColor: \"#ffaf1e\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.626,\n stopColor: \"#ff980e\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"firefox_svg__a\",\n x1: 0.144,\n y1: 0.797,\n x2: 0.928,\n y2: 0.203,\n gradientUnits: \"objectBoundingBox\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.048,\n stopColor: \"#fff44f\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.111,\n stopColor: \"#ffe847\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.225,\n stopColor: \"#ffc830\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.368,\n stopColor: \"#ff980e\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.401,\n stopColor: \"#ff8b16\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.462,\n stopColor: \"#ff672a\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.534,\n stopColor: \"#ff3647\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.705,\n stopColor: \"#e31587\"\n })))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n \"data-name\": \"mozilla 28\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 8110\",\n d: \"M46.311 16.072c-1-2.4-3.2-5.091-4.8-5.89a22.018 22.018 0 012.4 7.088c-2.7-6.589-7.3-9.184-11.1-14.974l-.6-.9a.756.756 0 01-.2-.4 3.542 3.542 0 01-.4-.9.1.1 0 00-.1-.1 17.311 17.311 0 00-8.341 13.063 11.5 11.5 0 00-6.382 2.479c-.2-.2-.58-.468-.78-.668a10.983 10.983 0 01-.1-5.69 17.566 17.566 0 00-5.8 4.293c-1-1.2-.9-4.991-.8-5.79a5.585 5.585 0 00-.8.5 21.1 21.1 0 00-2.3 1.9 17.813 17.813 0 00-2.2 2.6A19.843 19.843 0 00.8 19.766v.2c0 .2-.2 1.2-.2 1.5v.1c-.2 1.1-.3 2.1-.4 3.195v.1c-.3 12.578 10.3 22.961 23.606 23.06 11.9.1 22.005-8.086 23.906-19.267 0-.3.1-.6.1-.9a23.236 23.236 0 00-1.501-11.682zM18.6 34.241c.1.1.2.1.3.2-.1-.1-.2-.1-.3-.2zM43.911 17.27z\",\n transform: \"translate(0 .082)\",\n fill: \"url(#firefox_svg__a)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 8111\",\n d: \"M46.311 16.09c-1-2.4-3.2-5.091-4.8-5.89a22.018 22.018 0 012.4 7.088 20.3 20.3 0 01-.7 15.673 20.8 20.8 0 01-19.9 11.281C11.9 43.842 2.3 35.956.2 25.274a10.236 10.236 0 01.2-3.893 18.586 18.586 0 00-.4 3.194v.1c-.1 12.778 10.5 23.16 23.806 23.26 11.9.1 22.005-8.086 23.906-19.267 0-.3.1-.6.1-.9a23.236 23.236 0 00-1.501-11.678z\",\n transform: \"translate(0 .064)\",\n fill: \"url(#firefox_svg__b)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 8112\",\n d: \"M46.311 16.09c-1-2.4-3.2-5.091-4.8-5.89a22.018 22.018 0 012.4 7.088 20.3 20.3 0 01-.7 15.673 20.8 20.8 0 01-19.9 11.281C11.9 43.842 2.3 35.956.2 25.274a10.236 10.236 0 01.2-3.893 18.586 18.586 0 00-.4 3.194v.1c-.1 12.778 10.5 23.16 23.806 23.26 11.9.1 22.005-8.086 23.906-19.267 0-.3.1-.6.1-.9a23.236 23.236 0 00-1.501-11.678z\",\n transform: \"translate(0 .064)\",\n fill: \"url(#firefox_svg__c)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 8113\",\n d: \"M34.6 18.768c.1 0 .1.1.2.1a15.081 15.081 0 00-2.2-2.8C25.1 8.885 30.6.4 31.6 0l-.116-.081A17.339 17.339 0 0023.144 13h.977A12.126 12.126 0 0134.6 18.768z\",\n transform: \"translate(.006 .082)\",\n fill: \"url(#firefox_svg__d)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 8114\",\n d: \"M24.1 20.287c0 .6-2.2 2.6-2.9 2.6-6.8 0-7.9 3.993-7.9 3.993a9.519 9.519 0 005.7 7.583c.1.1.3.1.4.2.2.1.5.2.7.3a16.994 16.994 0 003.1.6c12 .5 14.3-13.876 5.7-17.969a8.064 8.064 0 015.8 1.4A12.358 12.358 0 0024.2 13h-.8a12.2 12.2 0 00-6.6 2.5 16.766 16.766 0 011.6 1.5c1.5 1.491 5.7 3.088 5.7 3.287z\",\n transform: \"translate(.003 .06)\",\n fill: \"url(#firefox_svg__e)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 8115\",\n d: \"M24.1 20.1c0 .6-2.127 2.77-2.827 2.77-6.8 0-7.975 4-7.975 4A9.519 9.519 0 0019 34.463c.1.1.3.1.4.2.2.1.5.2.7.3a16.994 16.994 0 003.1.6c12 .5 14.3-13.876 5.7-17.969a8.064 8.064 0 015.8 1.4A11.988 11.988 0 0024.2 13h-.8a12.2 12.2 0 00-6.6 2.5 16.766 16.766 0 011.6 1.5c1.5 1.491 5.7 2.9 5.7 3.1z\",\n transform: \"translate(.003 .06)\",\n fill: \"url(#firefox_svg__f)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 8116\",\n d: \"M15.5 14.591a2.187 2.187 0 01.5.3 10.983 10.983 0 01-.1-5.69 17.566 17.566 0 00-5.8 4.293c.1.098 3.6-.001 5.4 1.097z\",\n transform: \"translate(.002 .066)\",\n fill: \"url(#firefox_svg__g)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 8117\",\n d: \"M.2 25.27c2.1 10.681 11.7 18.668 23.106 18.967a20.8 20.8 0 0019.9-11.281 19.326 19.326 0 00.573-15.994c.9 5.391-1.873 10.9-6.274 14.4-8.6 6.788-16.9 4.093-18.5 2.995-.1-.1-.2-.1-.3-.2-5-2.3-7.1-6.788-6.7-10.582a6.211 6.211 0 01-5.7-3.494 9.19 9.19 0 018.8-.3 11.728 11.728 0 009 .3c0-.2-4.2-1.8-5.8-3.394-.9-.8-1.3-1.2-1.7-1.5-.2-.2-.4-.3-.6-.5a2.187 2.187 0 00-.5-.3c-1.8-1.1-5.2-1-5.4-1-1-1.2-.9-4.991-.8-5.79-.3.3-.6.4-.8.6a21.1 21.1 0 00-2.3 1.9 28.451 28.451 0 00-2.3 2.6A19.843 19.843 0 00.7 19.779s-.9 3.594-.5 5.491z\",\n transform: \"translate(0 .069)\",\n fill: \"url(#firefox_svg__h)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 8118\",\n d: \"M32.5 16.072a11.809 11.809 0 012.2 2.8c.1.1.3.2.4.3 5.4 4.892 2.6 11.68 2.4 12.179 4.4-3.494 7.3-8.785 6.4-14.076-2.7-6.589-7.267-9.262-11.068-15.052l-.6-.9a.756.756 0 01-.2-.4 3.542 3.542 0 01-.4-.9.1.1 0 00-.1-.1C30.536.321 25 8.885 32.5 16.072z\",\n transform: \"translate(.007 .082)\",\n fill: \"url(#firefox_svg__i)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 8119\",\n d: \"M35.1 19.2a1.38 1.38 0 00-.4-.3l-.1-.1a9.19 9.19 0 00-5.843-1.257c8.6 4.193 6.343 18.427-5.66 17.828a7.994 7.994 0 01-3.065-.609c-.2-.1-1.036-.389-1.136-.489v.093c1.7 1.1 10.079 3.807 18.681-2.981.304-.301 2.928-7.296-2.477-12.185z\",\n transform: \"translate(.005 .052)\",\n fill: \"url(#firefox_svg__j)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n \"data-name\": \"Path 8120\",\n d: \"M13.244 26.887s1.191-3.834 8.034-3.834c.7 0 3.062-2.053 2.84-2.811A12.876 12.876 0 0115.056 20a9.567 9.567 0 00-8.856.3 6.318 6.318 0 005.736 3.494c-.4 3.793 1.61 8.186 6.742 10.582.1.1.2.1.3.2a10.435 10.435 0 01-5.734-7.689z\",\n transform: \"translate(.002 -.105)\",\n fill: \"url(#firefox_svg__k)\"\n }))));\n}\nexport default SvgFirefox;","var _linearGradient, _path, _radialGradient, _path2, _linearGradient2, _path3, _radialGradient2, _path4, _radialGradient3, _path5, _radialGradient4, _path6;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgEdge(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 48 48\"\n }, props), _linearGradient || (_linearGradient = /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"edge_svg__a\",\n gradientUnits: \"userSpaceOnUse\",\n x1: 15.621,\n y1: 272.106,\n x2: 49.049,\n y2: 272.106,\n gradientTransform: \"translate(-4.63 -238.92)\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#0c59a4\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#114a8b\"\n }))), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"url(#edge_svg__a)\",\n d: \"M43.305 35.719c-.64.335-1.3.63-1.976.883a19.097 19.097 0 01-6.731 1.211c-8.872 0-16.6-6.102-16.6-13.932a5.903 5.903 0 013.08-5.12c-8.024.337-10.087 8.698-10.087 13.597 0 13.85 12.766 15.254 15.517 15.254 1.483 0 3.72-.431 5.062-.855l.246-.082a24.06 24.06 0 0012.487-9.898.75.75 0 00-.998-1.058z\"\n })), _radialGradient || (_radialGradient = /*#__PURE__*/React.createElement(\"radialGradient\", {\n id: \"edge_svg__b\",\n cx: 73.126,\n cy: 361.125,\n r: 145.481,\n gradientTransform: \"matrix(.1229 0 0 .1168 20.47 -8.71)\",\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.72,\n stopOpacity: 0\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.95,\n stopOpacity: 0.53\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1\n }))), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.35,\n fill: \"url(#edge_svg__b)\",\n d: \"M43.305 35.719c-.64.335-1.3.63-1.976.883a19.097 19.097 0 01-6.731 1.211c-8.872 0-16.6-6.102-16.6-13.932a5.903 5.903 0 013.08-5.12c-8.024.337-10.087 8.698-10.087 13.597 0 13.85 12.766 15.254 15.517 15.254 1.483 0 3.72-.431 5.062-.855l.246-.082a24.06 24.06 0 0012.487-9.898.75.75 0 00-.998-1.058z\"\n })), _linearGradient2 || (_linearGradient2 = /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"edge_svg__c\",\n gradientUnits: \"userSpaceOnUse\",\n x1: 33.259,\n y1: 257.618,\n x2: 12.376,\n y2: 280.364,\n gradientTransform: \"translate(-4.63 -238.92)\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#1b9de2\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.16,\n stopColor: \"#1595df\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.67,\n stopColor: \"#0680d7\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#0078d4\"\n }))), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"url(#edge_svg__c)\",\n d: \"M19.805 45.257a14.85 14.85 0 01-4.263-4c-4.928-6.75-3.449-16.217 3.302-21.144a15.201 15.201 0 012.235-1.352c.585-.276 1.584-.774 2.914-.75a6.068 6.068 0 014.817 2.437 5.97 5.97 0 011.192 3.498c0-.039 4.586-14.922-14.999-14.922-8.231 0-14.999 7.81-14.999 14.661a24.408 24.408 0 002.27 10.498c5.167 11.022 17.77 16.43 29.319 12.581a14.17 14.17 0 01-11.771-1.5l-.017-.007z\"\n })), _radialGradient2 || (_radialGradient2 = /*#__PURE__*/React.createElement(\"radialGradient\", {\n id: \"edge_svg__d\",\n cx: -707.966,\n cy: 352.254,\n r: 218.481,\n gradientTransform: \"matrix(.0184 -.1217 .0983 .0147 -8.368 -54.03)\",\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.76,\n stopOpacity: 0\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.95,\n stopOpacity: 0.5\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1\n }))), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.41,\n fill: \"url(#edge_svg__d)\",\n d: \"M19.805 45.257a14.85 14.85 0 01-4.263-4c-4.928-6.75-3.449-16.217 3.302-21.144a15.201 15.201 0 012.235-1.352c.585-.276 1.584-.774 2.914-.75a6.068 6.068 0 014.817 2.437 5.97 5.97 0 011.192 3.498c0-.039 4.586-14.922-14.999-14.922-8.231 0-14.999 7.81-14.999 14.661a24.408 24.408 0 002.27 10.498c5.167 11.022 17.77 16.43 29.319 12.581a14.17 14.17 0 01-11.771-1.5l-.017-.007z\"\n })), _radialGradient3 || (_radialGradient3 = /*#__PURE__*/React.createElement(\"radialGradient\", {\n id: \"edge_svg__e\",\n cx: -35.841,\n cy: -328.228,\n r: 308.762,\n gradientTransform: \"matrix(-.0049 .1229 -.2618 -.0098 -81.282 10.06)\",\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#35c1f1\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.11,\n stopColor: \"#34c1ed\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.23,\n stopColor: \"#2fc2df\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.31,\n stopColor: \"#2bc3d2\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.67,\n stopColor: \"#36c752\"\n }))), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"url(#edge_svg__e)\",\n d: \"M28.542 27.906c-.152.197-.619.469-.619 1.061 0 .489.319.96.885 1.355 2.696 1.875 7.779 1.627 7.792 1.627a11.166 11.166 0 005.675-1.565 11.505 11.505 0 005.705-9.913c.049-4.201-1.5-6.994-2.126-8.231C41.882 4.469 33.306 0 23.981 0 10.857-.001.167 10.538-.018 23.658c.09-6.85 6.9-12.382 14.999-12.382.656 0 4.398.064 7.875 1.888 3.064 1.608 4.668 3.551 5.784 5.476 1.159 2 1.365 4.527 1.365 5.534s-.514 2.498-1.463 3.732z\"\n })), _radialGradient4 || (_radialGradient4 = /*#__PURE__*/React.createElement(\"radialGradient\", {\n id: \"edge_svg__f\",\n cx: 292.736,\n cy: -472.812,\n r: 148.471,\n gradientTransform: \"matrix(.0344 .118 -.0959 .0283 -10.415 -6.663)\",\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#66eb6e\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#66eb6e\",\n stopOpacity: 0\n }))), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"url(#edge_svg__f)\",\n d: \"M28.542 27.906c-.152.197-.619.469-.619 1.061 0 .489.319.96.885 1.355 2.696 1.875 7.779 1.627 7.792 1.627a11.166 11.166 0 005.675-1.565 11.505 11.505 0 005.705-9.913c.049-4.201-1.5-6.994-2.126-8.231C41.882 4.469 33.306 0 23.981 0 10.857-.001.167 10.538-.018 23.658c.09-6.85 6.9-12.382 14.999-12.382.656 0 4.398.064 7.875 1.888 3.064 1.608 4.668 3.551 5.784 5.476 1.159 2 1.365 4.527 1.365 5.534s-.514 2.498-1.463 3.732z\"\n })));\n}\nexport default SvgEdge;","var _style, _linearGradient, _path, _path2, _path3;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgBrave(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n id: \"brave_svg__Layer_1\",\n x: 0,\n y: 0,\n viewBox: \"0 0 48 48\",\n xmlSpace: \"preserve\"\n }, props), _style || (_style = /*#__PURE__*/React.createElement(\"style\", null, \".brave_svg__st1{fill:#fff}\")), _linearGradient || (_linearGradient = /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"brave_svg__SVGID_1_\",\n gradientUnits: \"userSpaceOnUse\",\n x1: 171.37,\n y1: -103.25,\n x2: 213.37,\n y2: -103.25,\n gradientTransform: \"matrix(1 0 0 -1 -168.37 -79.25)\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#f1562b\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.3,\n stopColor: \"#f1542b\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.41,\n stopColor: \"#f04d2a\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.49,\n stopColor: \"#ef4229\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.5,\n stopColor: \"#ef4029\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.56,\n stopColor: \"#e83e28\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.67,\n stopColor: \"#e13c26\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#df3c26\"\n }))), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45 15.5l-1.5-4 1.1-2.3c.1-.3.1-.6-.2-.9l-2.9-2.8c-1.3-1.2-3.1-1.7-4.8-1.1l-.8.3L31.5 0H24l-7.5.1-4.4 4.7-.8-.3c-1.7-.6-3.6-.2-4.8 1.1l-3 2.8c-.1.2-.2.5-.1.7l1.1 2.4-1.5 4 1 3.6 4.5 16.5c.5 1.9 1.7 3.6 3.3 4.7 0 0 5.4 3.7 10.7 7.1.9.7 2.1.7 3 0 6-3.8 10.7-7.1 10.7-7.1 1.6-1.1 2.8-2.8 3.3-4.7L44 19.2l1-3.7z\",\n fill: \"url(#brave_svg__SVGID_1_)\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"brave_svg__st1\",\n d: \"M25.2 29.8l-.9-.3h-.5l-.9.3-1.3.5c-.4.2-1.1.5-1.5.7l-2.4 1.2c-.2.1-.4.3-.3.6 0 .1.1.2.2.3l2.1 1.5c.4.3 1 .7 1.3 1l.6.5c.3.3.9.8 1.2 1.1l.6.5c.4.3.9.3 1.2 0l.6-.5 1.2-1.1.6-.5c.3-.3.9-.7 1.3-1l2.1-1.5c.2-.1.3-.4.2-.6-.1-.1-.2-.2-.3-.2L28.1 31c-.4-.2-1.1-.5-1.5-.7l-1.4-.5z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"brave_svg__st1\",\n d: \"M40.3 16.4l.1-.2c0-.3 0-.6-.1-.9-.2-.5-.5-1-.8-1.4l-1.4-2c-.3-.4-.7-1-1-1.3l-1.9-2.3c-.2-.2-.4-.4-.5-.6 0 0-.4.1-.8.1l-2.8.5-1.2.2c-.4 0-.8 0-1.2-.2l-2.2-.7-1.6-.4h-1.4l-1.6.4-2.2.7c-.4.1-.8.2-1.2.2l-1.2-.2-2.8-.5c-.4-.1-.8-.2-.8-.1-.5.3-.7.5-.9.7L11 10.6c-.3.3-.7.9-1 1.3l-1.4 2c-.2.4-.4.7-.6 1.1-.1.4-.2.8-.2 1.3l.1.2c0 .1.1.3.1.4.3.3.8.9 1.1 1.2l4.8 5c.3.4.4.9.2 1.3l-.8 1.8c-.2.5-.2 1 0 1.5l.2.4c.3.7.7 1.3 1.3 1.8l.8.6c.4.3.9.3 1.4.2l2.7-1.3c.5-.2 1-.5 1.4-.9l2.2-1.9c.4-.3.4-.8.1-1.2l-4.9-3.2c-.4-.3-.5-.8-.3-1.2l1.9-3.5c.2-.4.3-.9.1-1.4-.2-.4-.6-.8-1.1-.9L13 13.1c-.4-.2-.4-.3 0-.4l3.5-.3c.5 0 1.1 0 1.6.1l3 .8c.4.1.7.6.6 1l-1.2 6.3c-.1.4-.1.7-.1 1.1 0 .2.5.3.9.4l1.8.4c.5.1 1.1.1 1.6 0l1.7-.4c.4-.1.8-.3.9-.5 0-.4 0-.7-.1-1.1L26 14.2c-.1-.4.2-.9.6-1l3-.8c.5-.1 1.1-.2 1.6-.1l3.5.3c.5 0 .5.2.1.4l-5.9 2.2c-.5.2-.8.5-1.1.9-.2.5-.1.9.1 1.4l1.9 3.5c.2.4.1.9-.3 1.2l-4.9 3.2c-.3.3-.3.9 0 1.2l2.2 1.9c.4.3.9.6 1.4.9l2.7 1.3c.5.2 1 .1 1.4-.2l.8-.6c.6-.5 1-1.1 1.3-1.8l.2-.4c.2-.5.1-1 0-1.5l-.6-1.8c-.2-.5-.1-1 .2-1.3l4.8-5c.3-.3.8-.9 1.1-1.2.1-.2.1-.3.2-.5z\"\n })));\n}\nexport default SvgBrave;","//@flow\n\nimport React from \"react\";\n\nimport * as Style from \"./StyledComponents\";\nimport { __, rcookie } from \"../../lib/utils\";\nimport ChromeIcon from '../../svg/chrome.svg';\nimport OperaIcon from '../../svg/opera.svg';\nimport FirefoxIcon from '../../svg/firefox.svg';\nimport EdgeIcon from '../../svg/edge.svg';\nimport BraveIcon from '../../svg/brave.svg'\nimport {\n EXTENSION_CHROME,\n EXTENSION_OPERA,\n EXTENSION_FIREFOX,\n EXTENSION_EDGE,\n EXTENSION_BRAVE,\n} from \"@pcloud/web-utilities/dist/config/constants\";\nimport LazyImg from \"../LazyImg\";\n\n\nconst CDN_PATH = (typeof cdnPath !== 'undefined' ? cdnPath : '/');\n\nconst AddOn = () => {\n const IS_RETINA = window.devicePixelRatio > 1;\n const renderDownloadButton = () => {\n return (\n \n \n \n Google Chrome\n \n \n \n Mozilla Firefox\n \n \n \n Opera\n \n \n \n Microsoft Edge\n \n \n \n Brave\n \n \n )\n }\n\n return (\n \n \n {__(\"pCloud Browser extension\")}\n {__(\"with_pcloud_save_is_ease_to_save_all_in_pcloud\")}\n {renderDownloadButton()}\n \n \n \n );\n};\n\nexport default AddOn;\n","//@flow\n\nimport React, { useEffect } from \"react\";\nimport styled from \"styled-components\";\nimport { Tooltip as ReactTooltip } from \"react-tooltip\";\n\nimport { COLORS } from \"@pcloud/web-utilities/dist/config/constants\";\nimport { ColorType } from \"../lib/types/dataTypes.components\";\n\ntype TabType = {\n tabId: string | number,\n tabTitle?: string,\n clickAction: (tabId: string | number) => void,\n disabled?: boolean,\n TabIcon?: any,\n tabIconActive?: any,\n tooltip?: string,\n testId?: string,\n tabAttributeId?: string\n};\n\ntype TabsProps = {\n color: ColorType,\n tabs: Array,\n activeTab: string | number,\n theme?: \"light\" | \"dark\",\n uppercase?: boolean,\n iconFill?: string,\n iconActiveFill?: string,\n};\n\nconst Tabs = ({ color, tabs, activeTab, theme, uppercase = true, iconFill = \"#2a2a2a\", iconActiveFill = \"#2a2a2a\" }: TabsProps) => {\n const tabsMap = {};\n const tabWidth = 100 / tabs.length;\n\n const renderTabs = () => {\n const tabsComponents = tabs.map(\n (tab, index) => {\n const { tabId, tabTitle, clickAction, disabled, TabIcon, tabIconActive, tooltip, testId = \"\", tabAttributeId = \"\" } = tab;\n tabsMap[tabId] = {index: index, tab: tab};\n const isActiveTab = tabId === activeTab;\n const renderTabIcon = () => {\n if (!TabIcon) {\n return null;\n }\n\n return (\n \n \n \n );\n };\n\n return (\n (!disabled ? clickAction(tabId) : null)}\n key={tabId}\n id={tabAttributeId}\n disabled={disabled}\n theme={theme}\n color={color}\n className={isActiveTab ? \"active tab-holder\" : \"tab-holder\"}\n uppercase={uppercase}\n tabTitle={tabTitle}\n data-testid={testId}\n activeFill={iconActiveFill}\n >\n {renderTabIcon()}\n {tabTitle ? tabTitle : null}\n \n );\n }\n );\n\n return tabsComponents;\n };\n\n return (\n \n {renderTabs()}\n \n \n \n );\n};\n\nexport default Tabs;\n\nconst TabsWrapper = styled.div`\n border-bottom: 1px solid #eee;\n border-color: ${({ theme }) => {\n if (theme === \"dark\") {\n return \"rgba(255,255,255,0.13)\";\n } else {\n return \"#eee\";\n }\n }};\n margin: 0 auto;\n margin-bottom: 20px;\n position: relative;\n\n .tabs-tooltip {\n padding: 10px 20px;\n max-width: 250px;\n border-radius: 6px;\n font-size: 12px;\n line-height: 1.35;\n font-weight: 400;\n text-align: center;\n }\n`;\n\nconst Tab = styled.div`\n width: ${props => props.width || 50}%;\n display: inline-block;\n padding: ${props => (props.tabTitle ? \"0px 0px 12px 0px\" : \"0px\")};\n text-align: center;\n font-size: 13px;\n font-family: \"Roboto\", sans-serif;\n color: ${({ theme }) => {\n if (theme === \"dark\") {\n return \"#999999\";\n } else {\n return \"#222222\";\n }\n }};\n ${({ uppercase }) => (uppercase ? \"text-transform: uppercase\" : \"font-size: 15px\")};\n cursor: ${props => (props.disabled ? \"default\" : \"pointer\")};\n transition: all 0.25s ease-in-out;\n position: relative;\n\n &.active {\n font-weight: bold;\n cursor: default;\n color: ${({ theme, color }) => {\n if (theme === \"dark\" && color && COLORS[color]) {\n return COLORS[color].mainColor;\n } else {\n return \"#222222\";\n }\n }};\n }\n\n .tab-icon {\n transition: all 0.25s ease-in-out;\n\n &.active {\n fill: ${props => (props.activeFill)};\n }\n }\n\n ${props =>\n props.disabled\n ? `\n &::after {\n content: \"\";\n position: absolute;\n top: 0px;\n left: 0px;\n display: inline-block;\n width: 100%;\n height: 100%;\n }\n `\n : ``};\n\n @media (max-width: 768px) {\n padding: 0px 0px 20px 0px;\n }\n`;\n\nconst ActiveLine = styled.div`\n width: ${props => props.width || 50}%;\n position: absolute;\n bottom: -1px;\n height: 2px;\n background: ${props => (props.color ? COLORS[props.color].mainColor : \"#17bed0\")};\n transition: left 0.25s ease-in-out;\n left: ${props => props.tab * props.width}%;\n`;\n\nconst TabIconWrapper = styled.div`\n text-align: center;\n margin-bottom: 8px;\n`;\n","var _style, _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgWindows(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 19,\n height: 21\n }, props), _style || (_style = /*#__PURE__*/React.createElement(\"style\", null)), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9 19.12v-8.087h10V21zm-9-2.1v-5.987h8v7.836zm9-7.053v-7.93L19 0v9.967zm-9 0V4.106l8-1.755v7.616z\"\n })));\n}\nexport default SvgWindows;","var _style, _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgMacos(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 22,\n height: 22\n }, props), _style || (_style = /*#__PURE__*/React.createElement(\"style\", null)), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11 22A11 11 0 013.222 3.222a11 11 0 1115.556 15.556A10.928 10.928 0 0111 22zm.834-7.806c.039 1.182 1.011 1.916 2.536 1.916 1.585 0 2.57-.769 2.57-2.008 0-.963-.562-1.514-1.823-1.785l-.77-.162c-.736-.169-1.037-.395-1.037-.778 0-.468.44-.782 1.094-.782.673 0 1.135.338 1.178.861h1.243C16.8 10.3 15.853 9.549 14.4 9.549c-1.428 0-2.425.8-2.425 1.942 0 .928.587 1.524 1.744 1.771l.826.18c.769.173 1.068.4 1.068.814 0 .473-.49.8-1.192.8s-1.249-.356-1.309-.866zM8.16 9.549a2.947 2.947 0 00-3.06 3.283 2.944 2.944 0 003.06 3.278 2.944 2.944 0 003.059-3.278A2.947 2.947 0 008.16 9.549zm6.36-4.163a1.193 1.193 0 00-1.208 1.33 1.185 1.185 0 001.213 1.334 1.037 1.037 0 001.111-.918h-.508a.567.567 0 01-.6.476c-.42 0-.681-.342-.681-.892s.266-.891.677-.891a.585.585 0 01.6.491h.5a1.034 1.034 0 00-1.104-.93zm-2.744.429c.323 0 .516.171.516.457v.2l-.7.042c-.606.034-.954.311-.954.759a.782.782 0 00.854.774.914.914 0 00.811-.466h.012V8h.506V6.231c0-.513-.4-.845-1.021-.845-.6 0-1.029.324-1.059.806h.5a.492.492 0 01.535-.377zm-2.668.025a.461.461 0 01.49.522V8h.529V6.235a.79.79 0 00-.84-.847.831.831 0 00-.8.5h-.012a.706.706 0 00-.718-.5.756.756 0 00-.73.476h-.012v-.432h-.5V8h.525V6.413a.537.537 0 01.535-.573.45.45 0 01.486.483V8h.517V6.4a.52.52 0 01.53-.56zM8.16 15c-1.035 0-1.7-.85-1.7-2.166s.669-2.175 1.7-2.175 1.7.854 1.7 2.175S9.194 15 8.16 15zm3.474-7.372c-.285 0-.469-.146-.469-.371s.18-.359.493-.381l.633-.04v.2a.619.619 0 01-.657.591z\"\n })));\n}\nexport default SvgMacos;","var _style, _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgLinux(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 19,\n height: 22\n }, props), _style || (_style = /*#__PURE__*/React.createElement(\"style\", null)), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.998 18.435a.9.9 0 00-.588-.771c-.652-.264-.931-.615-.9-1.138a1.735 1.735 0 00-.489-1.235 5.3 5.3 0 000-2.834 24.424 24.424 0 00-3.05-4.92 4.186 4.186 0 01-.6-2.519 7.583 7.583 0 00-.571-3.067A3.21 3.21 0 009.743 0a4.21 4.21 0 00-2.32.7c-1.333.91-1.156 2.892-1.04 4.2.016.18.031.349.04.494a6.432 6.432 0 01-.08 2.172 8.9 8.9 0 01-.665.923 28.09 28.09 0 00-.986 1.337 10.414 10.414 0 00-.924 2.135 10.171 10.171 0 01-.584 1.446 1.949 1.949 0 00-.193 1.479 1.523 1.523 0 00-.493.617c-.2.418-.6.643-1.437.8a1.109 1.109 0 00-.788.475 1.334 1.334 0 00.008 1.077 1.658 1.658 0 01-.112 1.214 19.09 19.09 0 00-.127.391.7.7 0 00.075.616c.316.478 1.238.646 2.187.757a8.5 8.5 0 011.787.507 8.459 8.459 0 001.748.5 2.008 2.008 0 00.247.016 1.455 1.455 0 001.33-.772 14.944 14.944 0 012.4-.28 10.525 10.525 0 012.383.242 1.9 1.9 0 00.718.774 1.758 1.758 0 00.808.18 1.96 1.96 0 001.42-.58 12.739 12.739 0 012.575-1.627c.2-.105.381-.2.543-.293a1.2 1.2 0 00.735-1.065zm-8.607-15.5a.926.926 0 01.835.995.848.848 0 11-1.67 0 .926.926 0 01.835-.994zM8.906 5.378a7.854 7.854 0 01.964.34c.152.06.284.112.377.145a.9.9 0 01.462.273c-.007.031-.022.044-.185.128-.082.042-.185.1-.313.172l-.086.051a7.962 7.962 0 01-1.369.718c-.149.02-.24-.037-.447-.176-.047-.031-.1-.065-.149-.1a1.742 1.742 0 01-.639-.612c.121-.093.422-.325.577-.463a1.669 1.669 0 01.783-.481zM7.765 3.249a.782.782 0 01.71.838.72.72 0 11-1.421 0 .782.782 0 01.711-.838zM6.6 20.158a1.39 1.39 0 01-.577.706.6.6 0 01-.128.012 8.269 8.269 0 01-2.243-.7l-.087-.036a7.178 7.178 0 00-1.387-.306 4.574 4.574 0 01-1.075-.239c-.076-.084.012-.359.09-.6a3.866 3.866 0 00.146-.543 1.954 1.954 0 00-.05-.742.968.968 0 01-.034-.426c.022-.094.494-.2.7-.239a2.732 2.732 0 00.768-.239 1.541 1.541 0 00.523-.694 1.077 1.077 0 01.292-.433.062.062 0 01.034-.008c.206 0 .639.429.888.812.063.1.18.291.316.515a16.445 16.445 0 001.25 1.9c.256.271.678.802.574 1.26zm6.019-4.688a18.146 18.146 0 00-.1 2.164A4.352 4.352 0 019.983 19.2a11.081 11.081 0 01-1.56.122 5.329 5.329 0 01-.77-.047l-.694-.785a.831.831 0 00.475-.924c-.062-.43-.621-.856-1.269-1.35a4.463 4.463 0 01-1.3-1.249 3.729 3.729 0 01.4-2.929 7.391 7.391 0 00.605-1.443 5.16 5.16 0 01.632-1.427 3.62 3.62 0 00.757-1.816 2.3 2.3 0 001.353.727.806.806 0 00.217-.029 7.341 7.341 0 001.3-.645 5.562 5.562 0 011.1-.547 30.212 30.212 0 012.405 5.918 6.2 6.2 0 01-.09 2.257 1.7 1.7 0 00-.225-.016c-.525 0-.664.283-.7.453zm5.275 3.076a6.362 6.362 0 01-.872.484 7.636 7.636 0 00-1.756 1.07 2.4 2.4 0 01-1.34.829.356.356 0 01-.107-.015c-.353-.109-.644-.613-.488-1.332a10.57 10.57 0 00.324-2.322 13.221 13.221 0 00-.031-.42 3.821 3.821 0 01-.021-.771l.022-.008a1.3 1.3 0 00.618 1.239 1.381 1.381 0 00.55.105 2.259 2.259 0 001.395-.508 2.512 2.512 0 00.354-.46.549.549 0 01.024.217 1.546 1.546 0 00.676 1.4l.068.035c.165.086.6.314.612.422a.1.1 0 01-.028.035z\"\n })));\n}\nexport default SvgLinux;","var _style, _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgIos(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 19.135,\n height: 23.002\n }, props), _style || (_style = /*#__PURE__*/React.createElement(\"style\", null)), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n stroke: \"rgba(0,0,0,0)\",\n strokeMiterlimit: 10,\n d: \"M.5 12.523c0-4.375 2.743-6.67 5.315-6.67 1.672 0 2.97.961 3.839.961.746 0 2.131-1.022 3.934-1.022a4.931 4.931 0 014.324 2.2 4.777 4.777 0 00-2.388 4.168 4.9 4.9 0 002.976 4.478s-2.079 5.832-4.888 5.832c-1.29 0-2.293-.866-3.652-.866-1.385 0-2.76.9-3.655.9C3.74 22.502.5 16.97.5 12.523zM9.47 5.56a4.074 4.074 0 01.962-3.143A4.732 4.732 0 0113.9.502a4.686 4.686 0 01-1.141 3.517 3.92 3.92 0 01-3 1.559 1.887 1.887 0 01-.289-.018z\"\n })));\n}\nexport default SvgIos;","var _style, _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgAndroid(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 18,\n height: 22\n }, props), _style || (_style = /*#__PURE__*/React.createElement(\"style\", null)), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11 21v-2.882H7V21a1 1 0 01-2 0v-2.882H4a1 1 0 01-1-1V7.44h12v9.679a1 1 0 01-1 1h-1V21a1 1 0 01-2 0zm5-6.8V8.44a1 1 0 112 0v5.765a1 1 0 11-2 0zm-16 0V8.44a1 1 0 012 0v5.765a1 1 0 01-2 0zm14.916-7.73H3.082A5.788 5.788 0 015.1 3.011l.047-.039L3.817.728A.478.478 0 014 .066a.508.508 0 01.683.177l1.29 2.169a6.157 6.157 0 016.054 0l1.29-2.169A.508.508 0 0114 .066a.478.478 0 01.183.662l-1.335 2.244.047.039a5.783 5.783 0 012.021 3.459z\"\n })));\n}\nexport default SvgAndroid;","var _style, _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nfunction SvgPsave(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 22,\n height: 22\n }, props), _style || (_style = /*#__PURE__*/React.createElement(\"style\", null)), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11 22A11 11 0 013.222 3.222a11 11 0 1115.556 15.556A10.925 10.925 0 0111 22zm0-20a9 9 0 109 9 9.01 9.01 0 00-9-9zm0 17a8 8 0 118-8 8.009 8.009 0 01-8 8zM9 7a1 1 0 00-1 1v6.5a1 1 0 002 0V13h2a3 3 0 100-6zm3 4h-2V9h2a1 1 0 010 2z\"\n })));\n}\nexport default SvgPsave;","import React, { useEffect, useState } from \"react\";\nimport styled from \"styled-components\";\nimport { TransitionGroup, CSSTransition } from \"react-transition-group\";\n\nimport MobileApps from \"./MobileApps\";\nimport DesktopApps from \"./DesktopApps\";\nimport AddOn from \"./AddOn\";\nimport Tabs from \"../Tabs\";\nimport { detectBrowser, detectIsMobile, hrefSearch } from \"../../lib/utils\";\nimport { detectOS } from \"@pcloud/web-utilities/dist/lib/utils\";\n\nimport WindowsIcon from '../../svg/windows.svg';\nimport MacosIcon from '../../svg/macos.svg';\nimport LinuxIcon from '../../svg/linux.svg';\nimport IosIcon from '../../svg/ios.svg';\nimport AndroidIcon from '../../svg/android.svg';\nimport PSaveIcon from '../../svg/psave.svg';\n\nconst DownloadPage = () => {\n const clientOS = detectOS(false, true);\n const [selectedOS, setSelectedOS] = useState(clientOS);\n const viewsOrder = [\"windows\", \"mac\", \"linux\", \"ios\", \"android\", \"psave\"];\n const isMobile = detectIsMobile();\n\n const TABS_DEFAULT = [\n {\n tabId: \"windows\",\n tabTitle: __(\"Windows\", \"Windows\"),\n clickAction: setSelectedOS,\n TabIcon: WindowsIcon\n },\n {\n tabId: \"mac\",\n tabTitle: __(\"MacOS\", \"MacOS\"),\n clickAction: setSelectedOS,\n TabIcon: MacosIcon\n },\n {\n tabId: \"linux\",\n tabTitle: __(\"Linux\", \"Linux\"),\n clickAction: setSelectedOS,\n TabIcon: LinuxIcon\n },\n {\n tabId: \"ios\",\n tabTitle: __(\"iOS\", \"iOS\"),\n clickAction: setSelectedOS,\n TabIcon: IosIcon\n },\n {\n tabId: \"android\",\n tabTitle: __(\"Android\", \"Android\"),\n clickAction: setSelectedOS,\n TabIcon: AndroidIcon\n },\n {\n tabId: \"psave\",\n tabTitle: __(\"Add-on\", \"Add-on\"),\n clickAction: setSelectedOS,\n TabIcon: PSaveIcon\n },\n ]\n\n const MOBILE_OS = [\"android\", 'ios'];\n const DESKTOP_OS = [\"windows\", \"mac\", \"linux\"];\n const EXTENSIONS = [\"psave\"];\n\n useEffect(() => {\n const urlOS = hrefSearch(\"show\");\n let OS = clientOS;\n \n if (urlOS) {\n if (viewsOrder.indexOf(urlOS) !== -1 && OS !== urlOS) {\n OS = urlOS;\n } else if (urlOS === \"app\") {\n if (clientOS === \"mac\") {\n OS = \"ios\"\n } else {\n OS = \"android\";\n }\n }\n }\n\n setSelectedOS(OS);\n }, [])\n\n const renderContent = () => {\n if (MOBILE_OS.indexOf(selectedOS) != -1) {\n return \n } else if (DESKTOP_OS.indexOf(selectedOS) != -1) {\n return \n } else if (EXTENSIONS.indexOf(selectedOS) != -1) {\n return \n }\n }\n\n return (\n \n {isMobile ? null : (\n \n \n \n \n \n )}\n\n \n {renderContent()}\n \n \n )\n}\n\nexport default DownloadPage;\n\nconst Wrapper = styled.div``;\n\nconst OuterLines = styled.div`\n border-bottom: 1px solid #eee;\n`;\n\nconst TabsWrapper = styled.div`\n width: 100%;\n max-width: 700px;\n margin: 0 auto;\n margin-bottom: -1px;\n padding-top: 20px;\n\n .tabs {\n margin-bottom: 0px;\n }\n`;\n\nconst AlignContainer = styled.div`\n max-width: 1260px;\n padding: 0px 40px;\n box-sizing: border-box;\n margin: 0 auto;\n /* overflow-x: hidden; */\n\n @media (max-width: 768px) {\n padding: 0px;\n }\n\n .slide-right-enter {\n opacity: 0;\n transform: translate3d(-200px, 0, 0);\n }\n .slide-left-enter {\n opacity: 0;\n transform: translate3d(200px, 0, 0);\n }\n .slide-right-exit,\n .slide-right-enter-active,\n .slide-left-exit,\n .slide-left-enter-active {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n .slide-right-exit-active {\n opacity: 0;\n transform: translate3d(200px, 0, 0);\n }\n .slide-left-exit-active {\n opacity: 0;\n transform: translate3d(-200px, 0, 0);\n }\n .slide-right-enter-active,\n .slide-right-exit-active,\n .slide-left-enter-active,\n .slide-left-exit-active {\n /* transition: all 300ms ease-in-out; */\n }\n`;\n\nconst MockupAnimation = styled.div`\n transition: all 300ms ease-in-out;\n /* position: absolute; */\n /* width: 100%; */\n\n /* div {\n display: block;\n width: 800px;\n height: 320px;\n background-color: #f4fcfd;\n border-radius: 8px;\n border: 1px solid #bcecf1;\n margin: 0 auto;\n margin-top: 40px;\n } */\n`;","import React from \"react\";\n\nimport _move from \"../lib/move\";\nimport componentMount from \"../lib/componentMount\"\nimport DownloadPage from \"../components/DownloadPage/DownloadPage\";\n\nconst _attachList = [\n {\n attach: self,\n list: [\n //components\n \"DownloadPage\",\n ]\n }\n]\n\nconst prepComponents = {\n DownloadPage: componentMount(props => ),\n};\n\n_move(prepComponents, _attachList);","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar regexpTag = '[object RegExp]';\n\n/**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\nfunction baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n}\n\nmodule.exports = baseIsRegExp;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var toString = require('./toString');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n/**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\nfunction escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n}\n\nmodule.exports = escapeRegExp;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseIsRegExp = require('./_baseIsRegExp'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsRegExp = nodeUtil && nodeUtil.isRegExp;\n\n/**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\nvar isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\nmodule.exports = isRegExp;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n","module.exports = window[\"jQuery\"];","module.exports = require(\"core-js/library/fn/array/from\");","module.exports = require(\"core-js/library/fn/array/is-array\");","module.exports = require(\"core-js/library/fn/object/assign\");","module.exports = require(\"core-js/library/fn/object/define-properties\");","module.exports = require(\"core-js/library/fn/object/define-property\");","module.exports = require(\"core-js/library/fn/object/get-own-property-descriptor\");","module.exports = require(\"core-js/library/fn/object/get-own-property-descriptors\");","module.exports = require(\"core-js/library/fn/object/get-own-property-symbols\");","module.exports = require(\"core-js/library/fn/object/keys\");","module.exports = require(\"core-js/library/fn/parse-float\");","module.exports = require(\"core-js/library/fn/parse-int\");","module.exports = require(\"core-js/library/fn/symbol\");","module.exports = require(\"core-js/library/fn/symbol/iterator\");","module.exports = require(\"core-js/library/fn/symbol/to-primitive\");","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n var _state$middlewareData, _state$middlewareData2;\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","import { rectToClientRect, detectOverflow as detectOverflow$1, offset as offset$1, autoPlacement as autoPlacement$1, shift as shift$1, flip as flip$1, size as size$1, hide as hide$1, arrow as arrow$1, inline as inline$1, limitShift as limitShift$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = getFrameElement(currentWin);\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\n// If has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll, ignoreScrollbarX) {\n if (ignoreScrollbarX === void 0) {\n ignoreScrollbarX = false;\n }\n const htmlRect = documentElement.getBoundingClientRect();\n const x = htmlRect.left + scroll.scrollLeft - (ignoreScrollbarX ? 0 :\n // RTL scrollbar.\n getWindowScrollBarX(documentElement, htmlRect));\n const y = htmlRect.top + scroll.scrollTop;\n return {\n x,\n y\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll, true) : createCoords(0);\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y,\n width: clippingAncestor.width,\n height: clippingAncestor.height\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n // If the scrollbar appears on the left (e.g. RTL systems). Use\n // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n\n // Firefox returns the element as the offsetParent if it's non-static,\n // while Chrome and Safari return the element. The element must\n // be used to perform the correct calculations even if the element is\n // non-static.\n if (getDocumentElement(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const elementRectForRootMargin = element.getBoundingClientRect();\n const {\n left,\n top,\n width,\n height\n } = elementRectForRootMargin;\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n // It's possible that even though the ratio is reported as 1, the\n // element is not actually fully within the IntersectionObserver's root\n // area anymore. This can happen under performance constraints. This may\n // be a bug in the browser's IntersectionObserver implementation. To\n // work around this, we compare the element's bounding rect now with\n // what it was at the time we created the IntersectionObserver. If they\n // are not equal then the element moved, so we refresh.\n refresh();\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle