{"version":3,"file":"assets/js/chunks/177.b8485d829e4d7ca4ec8b.js","mappings":"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","sources":["webpack://frontend-setup/./src/components/atoms/map-label/map-label.tsx","webpack://frontend-setup/./src/utilities/api-utilities/get-extended-area-map-data.ts","webpack://frontend-setup/./src/utilities/api-utilities/should-draw-polygon.ts","webpack://frontend-setup/./src/utilities/gtm-map.ts"],"sourcesContent":["import { h } from '@atomify/jsx';\n\nconst MapLabel = ({\n title,\n subtitle,\n classes,\n}: {\n title?: string;\n subtitle?: string | Text;\n classes?: string;\n}) => (\n
\n {title &&
{title}
}\n {subtitle &&
{subtitle}
}\n
\n);\n\nexport { MapLabel };\n","import { MapDataItem } from '@bpd-library/types';\nimport {\n ExtendedApartmentBuilding,\n ExtendedAreaProject,\n ExtendedConstructionNumber,\n ExtendedDistrict,\n ExtendedProjectPhase,\n ExtendedPropertyType,\n} from '@bpd-library/utilities';\n\nconst getExtendedAreaMapData = ({\n constructionNumbers,\n propertyTypes,\n projectPhases,\n apartmentBuildings,\n districts,\n areaProject,\n}: {\n constructionNumbers?: ExtendedConstructionNumber[];\n propertyTypes?: ExtendedPropertyType[];\n projectPhases?: ExtendedProjectPhase[];\n apartmentBuildings?: ExtendedApartmentBuilding[];\n districts?: ExtendedDistrict[];\n areaProject?: ExtendedAreaProject;\n}): MapDataItem[] => {\n const extractMapData = (arr: { mapDataItems?: MapDataItem[] }[]) =>\n arr\n .filter(({ mapDataItems }) => !!mapDataItems?.length)\n .map(({ mapDataItems }) => mapDataItems!)\n .reduce((mapData, items) => [...mapData, ...items], []);\n\n const mapData: MapDataItem[] = [];\n\n if (constructionNumbers) mapData.push(...extractMapData(constructionNumbers));\n if (propertyTypes) mapData.push(...extractMapData(propertyTypes));\n if (projectPhases) mapData.push(...extractMapData(projectPhases));\n if (apartmentBuildings) mapData.push(...extractMapData(apartmentBuildings));\n if (districts) mapData.push(...extractMapData(districts));\n if (areaProject) mapData.push(...extractMapData([areaProject]));\n\n return mapData;\n};\n\nexport default getExtendedAreaMapData;\n","import {\n ExtendedConstructionNumber,\n ExtendedProjectPhase,\n ExtendedPropertyType,\n getApiObjectCoordinates,\n isApartment,\n} from '@bpd-library/utilities';\n\n/**\n * @description Checks if an object of the following types should be drawn on the map.\n * @export\n * @param {(ExtendedConstructionNumber | ExtendedPropertyType | ExtendedProjectPhase)} object\n * @return {boolean}\n */\nexport default function shouldDrawPolygon(\n object: ExtendedConstructionNumber | ExtendedPropertyType | ExtendedProjectPhase,\n options?: Record,\n): boolean {\n switch (object.objectType) {\n case 'constructionNumber':\n return shouldDrawConstructionNumber(object);\n case 'propertyType':\n return shouldDrawPropertyType(object);\n case 'projectPhase':\n return shouldDrawProjectPhase(object, options);\n }\n}\n\nfunction shouldDrawConstructionNumber(constructionNumber: ExtendedConstructionNumber): boolean {\n const isApartmentBuilding = isApartment({ constructionNumber });\n const hasCoordinates = !!getApiObjectCoordinates(constructionNumber);\n\n return !isApartmentBuilding && hasCoordinates;\n}\n\nfunction shouldDrawPropertyType(propertyType: ExtendedPropertyType): boolean {\n const hasApartmentBuilding = !!propertyType.apartmentBuildings?.length;\n const constructionNumberIsDrawn = !!propertyType.constructionNumbers?.find(\n shouldDrawConstructionNumber,\n );\n const hasCoordinates = !!getApiObjectCoordinates(propertyType);\n\n return !constructionNumberIsDrawn && hasCoordinates && !hasApartmentBuilding;\n}\n\nfunction shouldDrawProjectPhase(\n projectPhase: ExtendedProjectPhase,\n options?: { alwaysShowSoldProjectPolygons?: boolean },\n): boolean {\n const propertyTypeIsDrawn = !!projectPhase.propertyTypes?.find(shouldDrawPropertyType);\n const constructionNumberIsDrawn = !!projectPhase.constructionNumbers?.find(\n shouldDrawConstructionNumber,\n );\n const hasCoordinates = !!getApiObjectCoordinates(projectPhase);\n const showSold = !!options?.alwaysShowSoldProjectPolygons && projectPhase.status === 'Sold';\n\n return ((!propertyTypeIsDrawn && !constructionNumberIsDrawn) || showSold) && hasCoordinates;\n}\n","import { ExtendedApiObject } from '@bpd-library/utilities';\n\nimport { GTMPush } from './gtm';\n\nexport interface GTMMapboxObject {\n area_id?: string | null;\n area_name?: string | null;\n project_id?: string | null;\n project_name?: string | null;\n wijk_id?: string | null;\n id?: string | null;\n status?: string | null;\n}\n\nexport type PolygonDimensionality = '2D' | '3D';\n\nconst defaultProperties = {\n event: 'Map Interaction',\n eventCategory: 'Map',\n eventAction: 'Polygon interaction',\n};\n\nexport const handleGTMPolygonInteraction = async (\n apiObject?: ExtendedApiObject,\n dimensionality: PolygonDimensionality = '2D',\n) => {\n if (!apiObject) return;\n\n const { areaProjectName } = window.__ENVIRONMENT_DETAILS__;\n\n switch (apiObject.objectType) {\n case 'areaProject':\n GTMPush({\n ...defaultProperties,\n dimensionality,\n eventLabel: `${areaProjectName}`,\n polygonCategory: apiObject.objectType,\n });\n\n break;\n case 'district':\n GTMPush({\n ...defaultProperties,\n dimensionality,\n eventLabel: `${areaProjectName} - ${apiObject.name}`,\n polygonCategory: apiObject.objectType,\n });\n\n break;\n case 'apartmentBuilding':\n GTMPush({\n ...defaultProperties,\n dimensionality,\n eventLabel: apiObject.displayName,\n polygonCategory: apiObject.objectType,\n mapboxHouse: {\n area_id: apiObject.areaProjectId,\n area_name: apiObject.projectPhase?.areaProjectName,\n project_id: apiObject.projectPhaseId,\n project_name: apiObject.projectPhaseName,\n wijk_id: apiObject.projectPhase?.districtId,\n id: apiObject.id,\n status: apiObject.status,\n },\n });\n\n break;\n case 'constructionNumber':\n GTMPush({\n ...defaultProperties,\n dimensionality,\n eventLabel: `${apiObject.propertyTypeName} ${apiObject.identifier}`,\n polygonCategory: apiObject.objectType,\n mapboxHouse: {\n area_id: apiObject.areaProjectId,\n area_name: apiObject.projectPhase?.areaProjectName,\n project_id: apiObject.projectPhaseId,\n project_name: apiObject.projectPhaseName,\n wijk_id: apiObject.projectPhase?.districtId,\n id: apiObject.id,\n status: apiObject.status,\n },\n });\n\n break;\n case 'propertyType':\n GTMPush({\n ...defaultProperties,\n dimensionality,\n eventLabel: apiObject.name,\n polygonCategory: apiObject.houseType,\n mapboxHouse: {\n area_id: apiObject.areaProjectId,\n area_name: apiObject.projectPhase?.areaProjectName,\n project_id: apiObject.projectPhaseId,\n project_name: apiObject.projectPhaseName,\n wijk_id: apiObject.projectPhase?.districtId,\n id: apiObject.id,\n status: apiObject.status,\n },\n });\n\n break;\n }\n};\n"],"names":["MapLabel","title","subtitle","classes","class","constructionNumbers","propertyTypes","projectPhases","apartmentBuildings","districts","areaProject","extractMapData","arr","filter","mapDataItems","length","map","reduce","mapData","items","push","shouldDrawPolygon","object","options","objectType","shouldDrawConstructionNumber","shouldDrawPropertyType","shouldDrawProjectPhase","projectPhase","propertyTypeIsDrawn","find","constructionNumberIsDrawn","hasCoordinates","getApiObjectCoordinates","showSold","alwaysShowSoldProjectPolygons","status","constructionNumber","isApartmentBuilding","isApartment","propertyType","hasApartmentBuilding","defaultProperties","event","eventCategory","eventAction","handleGTMPolygonInteraction","async","apiObject","dimensionality","areaProjectName","window","__ENVIRONMENT_DETAILS__","eventLabel","polygonCategory","name","displayName","mapboxHouse","area_id","areaProjectId","area_name","project_id","projectPhaseId","project_name","projectPhaseName","wijk_id","districtId","id","propertyTypeName","identifier","houseType"],"sourceRoot":""}