{"version":3,"sources":["layouts/OverlayBoxLayout/OverlayBoxLayout.tsx","screens/Complex/Complex.tsx","App.tsx","screens/Complex/index.tsx","utils/helpers.ts","components/UiWrapper/UiWrapper.tsx","webpack:///D:/a/1/s/index.css?38bd","index.css","webpack:///D:/a/1/s/utils/fonts.css?483a","utils/fonts.css","assets/fonts/OpenSans/OpenSans-Light.ttf","assets/fonts/OpenSans/OpenSans-LightItalic.ttf","assets/fonts/OpenSans/OpenSans-Regular.ttf","assets/fonts/OpenSans/OpenSans-Italic.ttf","assets/fonts/OpenSans/OpenSans-Bold.ttf","assets/fonts/OpenSans/OpenSans-BoldItalic.ttf","assets/fonts/OpenSans/OpenSans-ExtraBold.ttf","assets/fonts/OpenSans/OpenSans-ExtraBoldItalic.ttf","assets/fonts/RobotoSlab-Light.ttf","assets/fonts/RobotoSlab-Bold.ttf","assets/fonts/Raleway-Light.ttf","utils/utils.ts","contexts/ResponsiveContext/ResponsiveContext.tsx","contexts/KeyholeListingContext/KeyholeListingContext.tsx"],"names":["styles","StyleSheet","create","overlay","minWidth","position","right","top","overlaySm","bottom","wrapper","paddingRight","wrapperSm","alignItems","OverlayBoxLayout","centered","children","dims","onLayout","onOverlayLayout","overlayContent","overlayStyle","style","props","React","wrapperDims","setWrapperDims","handleOnLayout","e","nativeEvent","layout","View","width","theme","breakpoints","md","justifyContent","undefined","parsedUrl","URL","window","location","href","parsedParams","URLSearchParams","search","boxTitle","fontStyle","fontWeight","textTransform","contactText","color","fontSize","depositWrapper","flexDirection","depositWrapperXs","detail","link","textDecorationLine","inner","maxWidth","marginHorizontal","marker","height","transform","translateX","translateY","markerSm","text","textWrapper","paddingHorizontal","Complex","useResponsiveContext","fetchComplex","useKeyholeListingContext","initialComplexListing","complex","setComplex","textWrapperDims","setTextWrapperDims","overlayLayoutDims","setOverlayLayoutDims","depositOverlayDims","setDepositOverlayDims","mounted","a","async","id","get","nativeID","Platform","OS","isEmptyStr","data-complex-name","name","data-complex-city","city","data-complex-zipcode","zipcode","data-complex-short-desc","shortDescription","offset","backgroundContent","lat","long","bootstrapURLKeys","key","process","defaultCenter","Number","lng","defaultZoom","options","draggable","draggableCursor","fullscreenControl","zoomControl","clickableIcons","featureType","stylers","visibility","yesIWantToUseGoogleMapApiInternals","themeStyles","colors","green","paddingBottom","type","minimumDeposit","toLocaleString","maximumDeposit","noLine","marginVertical","minimumPrepaid","maximumPrepaid","red","currency","currencyWeight","currencyOpacity","price","minimumMonthlyFee","size","subText","suffix","getNonDecimalEnding","opacity","minimumSignupFee","title","zIndex","desc","descStyle","detailsProps","data","getComplexDetails","detailStyle","backgroundColor","tagline","areaName","taglineStyle","titleStyle","url","target","prettifyUrl","description","contactName","contactPhoneNumber","contactEmail","companyUrl","companyShortDescription","logo","logoUrl","companyName","smoothBlack","green1","App","require","numberOfRentals","toNonDecimalLocaleString","minimumRent","UiWrapper","setDims","calcHeight","onResize","api","content","__esModule","default","module","i","exports","locals","___CSS_LOADER_API_IMPORT___","push","___CSS_LOADER_GET_URL_IMPORT___","___CSS_LOADER_URL_IMPORT_0___","___CSS_LOADER_URL_IMPORT_1___","___CSS_LOADER_URL_IMPORT_2___","___CSS_LOADER_URL_IMPORT_3___","___CSS_LOADER_URL_IMPORT_4___","___CSS_LOADER_URL_IMPORT_5___","___CSS_LOADER_URL_IMPORT_6___","___CSS_LOADER_URL_IMPORT_7___","___CSS_LOADER_URL_IMPORT_8___","___CSS_LOADER_URL_IMPORT_9___","___CSS_LOADER_URL_IMPORT_10___","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_REPLACEMENT_1___","___CSS_LOADER_URL_REPLACEMENT_2___","___CSS_LOADER_URL_REPLACEMENT_3___","___CSS_LOADER_URL_REPLACEMENT_4___","___CSS_LOADER_URL_REPLACEMENT_5___","___CSS_LOADER_URL_REPLACEMENT_6___","___CSS_LOADER_URL_REPLACEMENT_7___","___CSS_LOADER_URL_REPLACEMENT_8___","___CSS_LOADER_URL_REPLACEMENT_9___","___CSS_LOADER_URL_REPLACEMENT_10___","replace","removeUrlProtocol","str","locale","number","isInteger","Intl","NumberFormat","maximumFractionDigits","format","resources","request","cancel","config","cached","cacheKey","params","toString","axios","CancelToken","source","cancelToken","token","res","result","isCancel","makeRequestCreator","dimensions","Dimensions","ResponsiveContext","ResponsiveProvider","Provider","value","KeyholeListingContext","fetchComplexes","KeyholeListingProvider","method","withCredentials","response","merge","endpoint"],"mappings":"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","file":"static/js/app.fccce8f0.chunk.js","sourcesContent":["import { theme } from '@bit/jimmijoensson.keyhole.components.keyhole-theme'\r\nimport * as React from 'react'\r\nimport { LayoutChangeEvent, LayoutRectangle, ScaledSize, StyleSheet, View, ViewProps, ViewStyle } from 'react-native'\r\n\r\n\r\nexport interface OverlayBoxLayoutProps extends ViewProps {\r\n centered?: boolean\r\n children: React.ReactNode\r\n dims: ScaledSize\r\n onOverlayLayout?: ViewProps['onLayout']\r\n overlayContent: React.ReactNode\r\n overlayStyle?: ViewProps['style']\r\n}\r\n\r\nconst OverlayBoxLayout = ({\r\n centered,\r\n children,\r\n dims,\r\n onLayout,\r\n onOverlayLayout,\r\n overlayContent,\r\n overlayStyle,\r\n style,\r\n ...props\r\n}: OverlayBoxLayoutProps) => {\r\n const [wrapperDims, setWrapperDims] = React.useState()\r\n\r\n const handleOnLayout = React.useCallback((e: LayoutChangeEvent) => {\r\n setWrapperDims(e.nativeEvent.layout)\r\n if (onLayout) onLayout(e)\r\n }, [])\r\n\r\n\treturn (\r\n\t\t theme.breakpoints.md ? styles.wrapper : styles.wrapperSm,\r\n {\r\n justifyContent: centered ? 'center' : undefined,\r\n },\r\n style,\r\n ]} \r\n {...props}\r\n >\r\n {children}\r\n theme.breakpoints.md ? styles.overlay : styles.overlaySm,\r\n (wrapperDims && dims.width < theme.breakpoints.md) \r\n ? {\r\n width: wrapperDims.width - 16,\r\n }\r\n : undefined,\r\n centered ? { top: undefined } : undefined,\r\n overlayStyle\r\n ]}\r\n >\r\n {overlayContent}\r\n \r\n\t\t\r\n\t)\r\n}\r\n\r\nexport interface OverlayBoxLayoutStyles {\r\n overlay: ViewStyle\r\n overlaySm: ViewStyle\r\n wrapper: ViewStyle\r\n wrapperSm: ViewStyle\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n overlay: {\r\n minWidth: 300,\r\n position: 'absolute',\r\n right: 0,\r\n top: 56,\r\n\r\n },\r\n overlaySm: {\r\n position: 'relative',\r\n bottom: 16,\r\n },\r\n wrapper: {\r\n position: 'relative',\r\n paddingRight: 72,\r\n },\r\n wrapperSm: {\r\n alignItems: 'center',\r\n position: 'relative',\r\n },\r\n})\r\n\r\nexport default OverlayBoxLayout","import * as React from 'react'\r\nimport { LayoutRectangle, Platform, StyleSheet, TextStyle, View, ViewProps, ViewStyle } from 'react-native'\r\nimport BackgroundLayout from '@bit/jimmijoensson.keyhole.layouts.background-layout'\r\nimport InfoCard from '@bit/jimmijoensson.keyhole.components.info-card'\r\nimport Divider from '@bit/jimmijoensson.keyhole.components.divider'\r\nimport Paragraph from '@bit/jimmijoensson.keyhole.paragraph'\r\nimport { theme, themeStyles } from '@bit/jimmijoensson.keyhole.components.keyhole-theme'\r\nimport Card from '@bit/jimmijoensson.keyhole.components.card'\r\nimport Heading from '@bit/jimmijoensson.keyhole.components.heading'\r\nimport Price from '@bit/jimmijoensson.keyhole.components.price'\r\nimport BuildingIcon from '@bit/jimmijoensson.keyhole.icons.building-icon'\r\nimport { useKeyholeListingContext } from '../../contexts/KeyholeListingContext/KeyholeListingContext'\r\nimport { ComplexListing, initialComplexListing } from '@bit/jimmijoensson.keyhole.interfaces.complex-listing-interface'\r\nimport { getNonDecimalEnding, isEmptyStr, prettifyUrl } from '../../utils/utils'\r\nimport { getComplexDetails } from '../../utils/helpers'\r\nimport { useResponsiveContext } from '../../contexts/ResponsiveContext/ResponsiveContext'\r\nimport OverlayBoxLayout from '../../layouts/OverlayBoxLayout'\r\nimport GoogleMapReact from 'google-map-react'\r\nimport Marker from '@bit/jimmijoensson.keyhole.components.marker'\r\n\r\nlet parsedUrl = new URL(window.location.href)\r\nlet parsedParams = new URLSearchParams(parsedUrl.search)\r\n\r\nexport interface ComplexProps extends ViewProps {\r\n //Props goes here\r\n}\r\n\r\nconst Complex = ({\r\n ...props\r\n}: ComplexProps) => {\r\n const { dims } = useResponsiveContext()\r\n const { fetchComplex } = useKeyholeListingContext()\r\n const [complex, setComplex] = React.useState(initialComplexListing)\r\n const [textWrapperDims, setTextWrapperDims] = React.useState()\r\n const [overlayLayoutDims, setOverlayLayoutDims] = React.useState()\r\n const [depositOverlayDims, setDepositOverlayDims] = React.useState()\r\n\r\n const mounted = React.useCallback(async () => {\r\n const id = parsedParams.get('id')\r\n if (id) {\r\n try {\r\n setComplex(await fetchComplex(id))\r\n } catch (error) {\r\n throw error\r\n }\r\n } else {}\r\n }, [fetchComplex])\r\n\r\n React.useEffect(() => {\r\n mounted()\r\n }, [mounted])\r\n\r\n\treturn (\r\n\t\t\r\n {Platform.OS === 'web' && !isEmptyStr(complex.id) && (\r\n \r\n )}\r\n \r\n {(complex.lat && complex.long && (\r\n \r\n theme.breakpoints.md ? styles.marker : styles.markerSm]}\r\n >\r\n \r\n \r\n \r\n )) || undefined }\r\n \r\n }\r\n >\r\n theme.breakpoints.md ? 144 : undefined\r\n }\r\n ]}\r\n >\r\n setOverlayLayoutDims(e.nativeEvent.layout)}\r\n onOverlayLayout={e => setDepositOverlayDims(e.nativeEvent.layout)}\r\n overlayContent={\r\n \r\n <>\r\n \r\n Indskud\r\n \r\n Depositum:\r\n {complex.minimumDeposit.toLocaleString('da-dk')} - {complex.maximumDeposit.toLocaleString('da-dk')} DKK\r\n \r\n Forudbetalt leje:\r\n {complex.minimumPrepaid.toLocaleString('da-dk')} - {complex.maximumPrepaid.toLocaleString('da-dk')} DKK\r\n \r\n \r\n Keyhole deposit\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n style={{ zIndex: 2 }}\r\n >\r\n \r\n \r\n theme.breakpoints.md ? 40 : 20}}/>\r\n setTextWrapperDims(e.nativeEvent.layout)}\r\n style={styles.textWrapper}\r\n >\r\n {!isEmptyStr(complex.url) &&\r\n <>\r\n \r\n \r\n {prettifyUrl(complex.url)}\r\n \r\n \r\n \r\n }\r\n {!isEmptyStr(complex.description) &&\r\n <>\r\n \r\n theme.breakpoints.md &&\r\n dims.width < 1024\r\n ? overlayLayoutDims.width - depositOverlayDims.width - 32 - 24\r\n : 560\r\n }\r\n ]}\r\n >\r\n {complex.description}\r\n \r\n \r\n }\r\n \r\n \r\n \r\n <>\r\n \r\n Kontakt\r\n \r\n {complex.contactName}\r\n \r\n {!isEmptyStr(complex.contactPhoneNumber) && (\r\n <>\r\n \r\n \r\n +45 {complex.contactPhoneNumber}\r\n \r\n \r\n \r\n )}\r\n {!isEmptyStr(complex.contactEmail) && (\r\n <>\r\n \r\n \r\n \r\n {complex.contactEmail}\r\n \r\n \r\n \r\n )}\r\n {!isEmptyStr(complex.companyUrl) && (\r\n <>\r\n \r\n \r\n \r\n {prettifyUrl(complex.companyUrl)}\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n }\r\n >\r\n \r\n \r\n \r\n \r\n\t\t\r\n\t)\r\n}\r\n\r\nexport interface ComplexStyles {\r\n boxTitle: TextStyle\r\n contactText: TextStyle\r\n depositWrapper: ViewStyle\r\n depositWrapperXs: ViewStyle\r\n detail: TextStyle\r\n link: TextStyle\r\n inner: ViewStyle\r\n marker: ViewStyle\r\n markerSm: ViewStyle\r\n text: TextStyle\r\n textWrapper: TextStyle\r\n wrapper: ViewStyle\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n boxTitle: {\r\n fontStyle: 'italic',\r\n fontWeight: '800',\r\n textTransform: 'uppercase',\r\n },\r\n contactText: {\r\n color: '#fff',\r\n fontSize: 16,\r\n fontStyle: 'italic',\r\n fontWeight: '800',\r\n },\r\n depositWrapper: {\r\n alignItems: 'flex-end',\r\n flexDirection: 'row',\r\n },\r\n depositWrapperXs: {},\r\n detail: {\r\n fontSize: 16,\r\n fontStyle: 'italic',\r\n fontWeight: '400',\r\n },\r\n link: {\r\n textDecorationLine: 'underline',\r\n },\r\n inner: {\r\n maxWidth: 1280,\r\n marginHorizontal: 'auto',\r\n width: '100%',\r\n },\r\n marker: {\r\n height: 176,\r\n transform: [\r\n {translateX: -88},\r\n {translateY: -88}\r\n ],\r\n width: 176,\r\n },\r\n markerSm: {\r\n height: 132,\r\n transform: [\r\n {translateX: -66},\r\n {translateY: -66}\r\n ],\r\n width: 132,\r\n },\r\n text: {\r\n fontSize: 16,\r\n },\r\n textWrapper: {\r\n paddingHorizontal: 24,\r\n },\r\n wrapper: {\r\n // Styles go here\r\n },\r\n})\r\n\r\nexport default Complex","import './index.css'\r\nimport React from 'react';\r\n/*<--plop-react-provider-imports-->*/\r\nimport { ResponsiveProvider } from './contexts/ResponsiveContext/ResponsiveContext'\r\nimport KeyholeThemeProvider from '@bit/jimmijoensson.keyhole.components.keyhole-theme-provider'\r\nimport Complex from './screens/Complex'\r\nimport { KeyholeListingProvider } from './contexts/KeyholeListingContext/KeyholeListingContext'\r\nimport UiWrapper from './components/UiWrapper'\r\n\r\nif (process.env.REACT_APP_ENV === 'dev') {\r\n require('./utils/fonts.css')\r\n}\r\n\r\nexport default function App() {\r\n\r\n return (\r\n \r\n {/*<--plop-react-provider-start-->*/}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {/*<--plop-react-provider-end-->*/}\r\n \r\n \r\n )\r\n}\r\n","export { default } from './Complex';\r\nexport type { ComplexProps } from './Complex';","import { ComplexListing, ComplexListingMinimal } from '@bit/jimmijoensson.keyhole.interfaces.complex-listing-interface'\r\nimport { toNonDecimalLocaleString } from './utils'\r\n\r\nexport const getComplexDetails = (complex: ComplexListingMinimal | ComplexListing) => [`${complex.numberOfRentals} lejemål`, `Husleje fra DKK. ${toNonDecimalLocaleString(complex.minimumRent, 'da-DK')}`]\r\n\r\nexport const getShapeUrl = (index: number) => [\r\n 'https://uploads-ssl.webflow.com/5e13379748d7ea83a0e997e3/5e14fe619a07bd677eeef484_light.svg',\r\n 'https://uploads-ssl.webflow.com/5e13379748d7ea83a0e997e3/5e16fb62ef00e7bbda6cca5d_hole%20k.svg',\r\n 'https://uploads-ssl.webflow.com/5e13379748d7ea83a0e997e3/5e164eda496c013a873303d1_Vectorsad.svg',\r\n 'https://uploads-ssl.webflow.com/5e13379748d7ea83a0e997e3/5e14863f2c28778935bf480e_Keyhole-Graphic-K.svg',\r\n][index % 4]\r\n","import * as React from 'react'\r\nimport ResponsiveUi, { ResponsiveUiProps } from '@bit/jimmijoensson.keyhole.responsive-ui'\r\nimport { useResponsiveContext } from '../../contexts/ResponsiveContext/ResponsiveContext'\r\n\r\n\r\nexport interface UiWrapperProps extends Omit {}\r\n\r\nconst UiWrapper = ({\r\n ...props\r\n}: UiWrapperProps) => {\r\n const { setDims } = useResponsiveContext()\r\n\r\n\treturn (\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default UiWrapper","var api = require(\"!./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!./node_modules/css-loader/dist/cjs.js!./index.css\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"#root input {\\r\\n outline: none;\\r\\n}\\r\\n\\r\\n.gm-style a {\\r\\n display: none !important;\\r\\n}\\r\\n\\r\\n.gmnoprint {\\r\\n display: none;\\r\\n}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var api = require(\"!../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../node_modules/css-loader/dist/cjs.js!./fonts.css\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_GET_URL_IMPORT___ = require(\"../node_modules/css-loader/dist/runtime/getUrl.js\");\nvar ___CSS_LOADER_URL_IMPORT_0___ = require(\"../assets/fonts/OpenSans/OpenSans-Light.ttf\");\nvar ___CSS_LOADER_URL_IMPORT_1___ = require(\"../assets/fonts/OpenSans/OpenSans-LightItalic.ttf\");\nvar ___CSS_LOADER_URL_IMPORT_2___ = require(\"../assets/fonts/OpenSans/OpenSans-Regular.ttf\");\nvar ___CSS_LOADER_URL_IMPORT_3___ = require(\"../assets/fonts/OpenSans/OpenSans-Italic.ttf\");\nvar ___CSS_LOADER_URL_IMPORT_4___ = require(\"../assets/fonts/OpenSans/OpenSans-Bold.ttf\");\nvar ___CSS_LOADER_URL_IMPORT_5___ = require(\"../assets/fonts/OpenSans/OpenSans-BoldItalic.ttf\");\nvar ___CSS_LOADER_URL_IMPORT_6___ = require(\"../assets/fonts/OpenSans/OpenSans-ExtraBold.ttf\");\nvar ___CSS_LOADER_URL_IMPORT_7___ = require(\"../assets/fonts/OpenSans/OpenSans-ExtraBoldItalic.ttf\");\nvar ___CSS_LOADER_URL_IMPORT_8___ = require(\"../assets/fonts/RobotoSlab-Light.ttf\");\nvar ___CSS_LOADER_URL_IMPORT_9___ = require(\"../assets/fonts/RobotoSlab-Bold.ttf\");\nvar ___CSS_LOADER_URL_IMPORT_10___ = require(\"../assets/fonts/Raleway-Light.ttf\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\nvar ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___);\nvar ___CSS_LOADER_URL_REPLACEMENT_5___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_5___);\nvar ___CSS_LOADER_URL_REPLACEMENT_6___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_6___);\nvar ___CSS_LOADER_URL_REPLACEMENT_7___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___);\nvar ___CSS_LOADER_URL_REPLACEMENT_8___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_8___);\nvar ___CSS_LOADER_URL_REPLACEMENT_9___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_9___);\nvar ___CSS_LOADER_URL_REPLACEMENT_10___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_10___);\n// Module\nexports.push([module.id, \"@font-face {\\r\\n font-family: 'OpenSans';\\r\\n font-weight: 300;\\r\\n src: local('OpenSans'), url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \") format('truetype');\\r\\n}\\r\\n\\r\\n@font-face {\\r\\n font-family: 'OpenSans';\\r\\n font-weight: 300;\\r\\n font-style: italic;\\r\\n src: local('OpenSans'), url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \") format('truetype');\\r\\n}\\r\\n\\r\\n@font-face {\\r\\n font-family: 'OpenSans';\\r\\n font-weight: 400;\\r\\n src: local('OpenSans'), url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \") format('truetype');\\r\\n}\\r\\n\\r\\n@font-face {\\r\\n font-family: 'OpenSans';\\r\\n font-style: italic;\\r\\n font-weight: 400;\\r\\n src: local('OpenSans'), url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \") format('truetype');\\r\\n}\\r\\n\\r\\n@font-face {\\r\\n font-family: 'OpenSans';\\r\\n font-weight: 700;\\r\\n src: local('OpenSans'), url(\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \") format('truetype');\\r\\n}\\r\\n\\r\\n@font-face {\\r\\n font-family: 'OpenSans';\\r\\n font-style: italic;\\r\\n font-weight: 700;\\r\\n src: local('OpenSans'), url(\" + ___CSS_LOADER_URL_REPLACEMENT_5___ + \") format('truetype');\\r\\n}\\r\\n\\r\\n@font-face {\\r\\n font-family: 'OpenSans';\\r\\n font-weight: 800;\\r\\n src: local('OpenSans'), url(\" + ___CSS_LOADER_URL_REPLACEMENT_6___ + \") format('truetype');\\r\\n}\\r\\n\\r\\n@font-face {\\r\\n font-family: 'OpenSans';\\r\\n font-style: italic;\\r\\n font-weight: 800;\\r\\n src: local('OpenSans'), url(\" + ___CSS_LOADER_URL_REPLACEMENT_7___ + \") format('truetype');\\r\\n}\\r\\n\\r\\n@font-face {\\r\\n font-family: 'RobotoSlab';\\r\\n font-weight: 300;\\r\\n src: local('RobotoSlab'), url(\" + ___CSS_LOADER_URL_REPLACEMENT_8___ + \") format('truetype');\\r\\n}\\r\\n\\r\\n@font-face {\\r\\n font-family: 'RobotoSlab';\\r\\n font-weight: 700;\\r\\n src: local('RobotoSlab'), url(\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \") format('truetype');\\r\\n}\\r\\n\\r\\n@font-face {\\r\\n font-family: 'Raleway';\\r\\n font-weight: 300;\\r\\n src: local('Raleway'), url(\" + ___CSS_LOADER_URL_REPLACEMENT_10___ + \") format('truetype');\\r\\n}\", \"\"]);\n// Exports\nmodule.exports = exports;\n","module.exports = __webpack_public_path__ + \"./fonts/OpenSans-Light.ttf\";","module.exports = __webpack_public_path__ + \"./fonts/OpenSans-LightItalic.ttf\";","module.exports = __webpack_public_path__ + \"./fonts/OpenSans-Regular.ttf\";","module.exports = __webpack_public_path__ + \"./fonts/OpenSans-Italic.ttf\";","module.exports = __webpack_public_path__ + \"./fonts/OpenSans-Bold.ttf\";","module.exports = __webpack_public_path__ + \"./fonts/OpenSans-BoldItalic.ttf\";","module.exports = __webpack_public_path__ + \"./fonts/OpenSans-ExtraBold.ttf\";","module.exports = __webpack_public_path__ + \"./fonts/OpenSans-ExtraBoldItalic.ttf\";","module.exports = __webpack_public_path__ + \"./fonts/RobotoSlab-Light.ttf\";","module.exports = __webpack_public_path__ + \"./fonts/RobotoSlab-Bold.ttf\";","module.exports = __webpack_public_path__ + \"./fonts/Raleway-Light.ttf\";","import axios, { AxiosRequestConfig } from 'axios'\r\nimport { get } from 'lodash'\r\nimport {\r\n getPaginationParams,\r\n GetParamsInterface,\r\n PaginationInterface,\r\n} from '@bit/jimmijoensson.keyhole.interfaces.paginated-response-interface'\r\n\r\nexport const setAsyncTimeout = async (ms: number) => {\r\n return new Promise(resolve => {\r\n setTimeout(resolve, ms)\r\n })\r\n}\r\n\r\nexport const removeUrlProtocol = (a: string) => a.replace(/(^\\w+:|^)\\/\\//, '')\r\n\r\nexport const prettifyUrl = (a: string) => removeUrlProtocol(a).replace(/\\/\\s*$/, '')\r\n\r\nexport const isStringifyEqual = (a: any, b: any) => JSON.stringify(a) === JSON.stringify(b)\r\n\r\nexport const isEmptyStr = (str?: string | null) =>\r\n str === '00000000-0000-0000-0000-000000000000' ||\r\n str === '' ||\r\n str === null ||\r\n str === undefined ||\r\n str === '1970-01-01T00:00:00Z'\r\n\r\nexport const openInNewTab = (url: string) => {\r\n const win = window.open(url, '_blank')\r\n if (win !== null) win.focus()\r\n}\r\n\r\nexport const capitalize = (s: string) => {\r\n if (typeof s !== 'string') return ''\r\n return s.charAt(0).toUpperCase() + s.slice(1)\r\n}\r\n\r\nexport const sortBy = (\r\n array: any,\r\n property: string,\r\n dataType: 'date' | 'string',\r\n order: 'asc' | 'desc',\r\n prioritizeString?: string\r\n) => {\r\n let sortedArray\r\n if (dataType === 'date') {\r\n sortedArray = array.sort((a: any, b: any) => {\r\n a = new Date(get(a, property))\r\n b = new Date(get(b, property))\r\n return (order === 'asc' && a - b) || (order === 'desc' && b - a) || -1\r\n })\r\n } else {\r\n const collator = new Intl.Collator('da-DK', { numeric: true, sensitivity: 'base' })\r\n sortedArray = array.sort((a: any, b: any) => {\r\n const aProperty = get(a, property)\r\n const bProperty = get(b, property)\r\n return collator.compare(\r\n prioritizeString === aProperty ? '' : aProperty,\r\n prioritizeString === bProperty ? '' : bProperty\r\n )\r\n })\r\n sortedArray = order === 'asc' ? sortedArray : sortedArray.reverse()\r\n }\r\n\r\n return sortedArray\r\n}\r\n\r\nexport const getObjectKeys = (obj: O) => Object.keys(obj) as Array\r\n\r\nexport const uuid = () => {\r\n const url = URL.createObjectURL(new Blob())\r\n const [id] = url\r\n .toString()\r\n .split('/')\r\n .reverse()\r\n URL.revokeObjectURL(url)\r\n return id\r\n}\r\n\r\nexport const addDifferenceToValue = (oldVal: number, newVal: number, valToIncrease: number) =>\r\n valToIncrease + (newVal - oldVal)\r\n\r\nexport const reOrder = (order: 'asc' | 'desc' | undefined) => (order === 'asc' ? 'desc' : 'asc')\r\n\r\nexport const nextPaginatedParams = (pagination: PaginationInterface) =>\r\n ({\r\n ...getPaginationParams(pagination),\r\n offset:\r\n pagination.offset !== undefined && pagination.limit !== undefined\r\n ? pagination.offset + pagination.limit\r\n : 0,\r\n } as GetParamsInterface)\r\n\r\nexport const sortParams: any = (\r\n orderBy: PaginationInterface['orderBy'],\r\n params: PaginationInterface\r\n) => ({\r\n ...params,\r\n offset: 0,\r\n order: params.orderBy === orderBy ? reOrder(params.order) : 'asc',\r\n orderBy: orderBy,\r\n})\r\n\r\nexport interface DaysRange {\r\n amount: number\r\n title?: string\r\n}\r\n\r\nexport const setAsyncData = async (\r\n setter: React.Dispatch>,\r\n getter: () => Promise\r\n) => {\r\n setter(await getter())\r\n}\r\n\r\nexport const getNonDecimalEnding = (locale?: string, number?: number) => {\r\n if (number && !Number.isInteger(number)) return ''\r\n switch (locale) {\r\n case 'da-DK':\r\n return ',-'\r\n\r\n default:\r\n return '.-'\r\n }\r\n}\r\n\r\nexport const toNonDecimalLocaleString = (\r\n number: number,\r\n locale?: string | undefined,\r\n options?: Intl.NumberFormatOptions | undefined\r\n) => {\r\n const isInteger = Number.isInteger(number)\r\n return new Intl.NumberFormat(locale, { maximumFractionDigits: 2, ...options }).format(number) + (\r\n isInteger\r\n ? getNonDecimalEnding(locale)\r\n : ''\r\n )\r\n}\r\n\r\nexport const pickObjProps = (obj: any, fields: K[]) =>\r\n fields.reduce(\r\n (acc, k: any) => ({ ...acc, ...(obj.hasOwnProperty(k) && { [k]: obj[k] }) }),\r\n {}\r\n ) as T\r\n\r\nconst resources: any = {}\r\n\r\nexport const makeRequestCreator = () => {\r\n let cancel: any\r\n\r\n return async (config: AxiosRequestConfig, cached?: boolean) => {\r\n if (cancel && cached) {\r\n // Cancel the previous request before making a new request\r\n cancel.cancel()\r\n }\r\n const cacheKey = config.url + new URLSearchParams(config.params).toString()\r\n // Create a new CancelToken\r\n cancel = axios.CancelToken.source()\r\n try {\r\n if (cached && resources[cacheKey]) {\r\n // Return result if it exists\r\n return resources[cacheKey]\r\n }\r\n const res = await axios({\r\n ...config,\r\n cancelToken: cancel.token,\r\n })\r\n\r\n const result = res.data\r\n // Store response\r\n resources[cacheKey] = result\r\n\r\n return result\r\n } catch (error) {\r\n if (axios.isCancel(error)) {\r\n // Handle if request was cancelled\r\n } else {\r\n // Handle usual errors\r\n throw error\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport const request = makeRequestCreator()\r\n","import * as React from 'react'\r\nimport { Dimensions, ScaledSize } from 'react-native'\r\n\r\nconst dimensions = Dimensions.get('window')\r\n\r\ninterface ResponsiveContextInterface {\r\n dims: ScaledSize\r\n setDims: React.Dispatch>\r\n}\r\n\r\nexport const ResponsiveContext = React.createContext({\r\n dims: dimensions,\r\n setDims: () => {},\r\n})\r\n\r\nexport const ResponsiveProvider: React.FunctionComponent<{}> = props => {\r\n // State variables\r\n const [dims, setDims] = React.useState(dimensions)\r\n\r\n // Callbacks and functions\r\n\r\n // useEffects\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n )\r\n}\r\n\r\nexport const useResponsiveContext = () => React.useContext(ResponsiveContext)\r\n","import * as React from 'react'\r\nimport axios from 'axios'\r\nimport { merge } from 'lodash'\r\nimport { ComplexListing, ComplexListingMinimal, initialComplexListing } from '@bit/jimmijoensson.keyhole.interfaces.complex-listing-interface'\r\nimport { FetchProps, PaginatedResponseInterface } from '@bit/jimmijoensson.keyhole.interfaces.paginated-response-interface'\r\nimport { request } from '../../utils/utils'\r\n\r\ninterface KeyholeListingContextInterface {\r\n fetchComplex: (id: string) => Promise\r\n fetchComplexes: (props: FetchProps) => Promise\r\n}\r\n\r\nexport const KeyholeListingContext = React.createContext({\r\n fetchComplex: async () => initialComplexListing,\r\n fetchComplexes: async () => {},\r\n})\r\n\r\nexport const KeyholeListingProvider: React.FunctionComponent<{}> = props => {\r\n // State variables\r\n\r\n //Depricated\r\n // Callbacks and functions\r\n const fetchComplexes = async ({ endpoint = '/webflow/complexes', params, cached }: FetchProps) => {\r\n try {\r\n const response: PaginatedResponseInterface = await request(\r\n {\r\n params: params,\r\n method: 'get',\r\n url: process.env.REACT_APP_API_URL + endpoint,\r\n withCredentials: true,\r\n },\r\n cached\r\n )\r\n if (response) {\r\n return response\r\n }\r\n return\r\n } catch (error) {\r\n throw error\r\n }\r\n }\r\n\r\n const fetchComplex = async (id: string) => {\r\n try {\r\n let response = await axios({\r\n method: 'get',\r\n url: process.env.REACT_APP_API_URL + `/webflow/complexes/${id}`,\r\n withCredentials: true,\r\n })\r\n const complex: ComplexListing = merge({}, initialComplexListing, response.data)\r\n return complex\r\n } catch (e) {\r\n throw e\r\n }\r\n }\r\n\r\n // useEffects\r\n React.useEffect(() => {\r\n //fetchComplexes({endpoint: '/api/webflow/complexes'})\r\n }, [])\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n )\r\n}\r\n\r\nexport const useKeyholeListingContext = () => React.useContext(KeyholeListingContext)\r\n"],"sourceRoot":""}