@blaze-cms/plugin-google-maps-fe 0.123.0-alpha.8 → 0.123.1-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/CHANGELOG.md +243 -832
  2. package/lib/GoogleMaps/GoogleMaps.js +68 -40
  3. package/lib/GoogleMaps/GoogleMaps.js.map +1 -1
  4. package/lib/GoogleMaps/GoogleMapsFactory.js +8 -4
  5. package/lib/GoogleMaps/GoogleMapsFactory.js.map +1 -1
  6. package/lib/GoogleMaps/GoogleMapsRender.js +24 -41
  7. package/lib/GoogleMaps/GoogleMapsRender.js.map +1 -1
  8. package/lib/GoogleMaps/helpers/add-zoom-listener.js +3 -50
  9. package/lib/GoogleMaps/helpers/add-zoom-listener.js.map +1 -1
  10. package/lib/GoogleMaps/helpers/build-map-shapes.js +97 -0
  11. package/lib/GoogleMaps/helpers/build-map-shapes.js.map +1 -0
  12. package/lib/GoogleMaps/helpers/build-query.js +24 -14
  13. package/lib/GoogleMaps/helpers/build-query.js.map +1 -1
  14. package/lib/GoogleMaps/helpers/build-shapes-configs.js +196 -0
  15. package/lib/GoogleMaps/helpers/build-shapes-configs.js.map +1 -0
  16. package/lib/GoogleMaps/helpers/get-center-coordinates.js +49 -0
  17. package/lib/GoogleMaps/helpers/get-center-coordinates.js.map +1 -0
  18. package/lib/GoogleMaps/helpers/get-image-ids.js +16 -14
  19. package/lib/GoogleMaps/helpers/get-image-ids.js.map +1 -1
  20. package/lib/GoogleMaps/helpers/index.js +21 -5
  21. package/lib/GoogleMaps/helpers/index.js.map +1 -1
  22. package/lib/GoogleMaps/helpers/set-shapes.js +213 -200
  23. package/lib/GoogleMaps/helpers/set-shapes.js.map +1 -1
  24. package/lib/GoogleMaps/hooks/use-get-images.js +3 -2
  25. package/lib/GoogleMaps/hooks/use-get-images.js.map +1 -1
  26. package/lib/GoogleMaps/queries.js +22 -4
  27. package/lib/GoogleMaps/queries.js.map +1 -1
  28. package/lib-es/GoogleMaps/GoogleMaps.js +51 -25
  29. package/lib-es/GoogleMaps/GoogleMaps.js.map +1 -1
  30. package/lib-es/GoogleMaps/GoogleMapsFactory.js +10 -6
  31. package/lib-es/GoogleMaps/GoogleMapsFactory.js.map +1 -1
  32. package/lib-es/GoogleMaps/GoogleMapsRender.js +24 -32
  33. package/lib-es/GoogleMaps/GoogleMapsRender.js.map +1 -1
  34. package/lib-es/GoogleMaps/helpers/add-zoom-listener.js +3 -23
  35. package/lib-es/GoogleMaps/helpers/add-zoom-listener.js.map +1 -1
  36. package/lib-es/GoogleMaps/helpers/build-map-shapes.js +86 -0
  37. package/lib-es/GoogleMaps/helpers/build-map-shapes.js.map +1 -0
  38. package/lib-es/GoogleMaps/helpers/build-query.js +17 -8
  39. package/lib-es/GoogleMaps/helpers/build-query.js.map +1 -1
  40. package/lib-es/GoogleMaps/helpers/build-shapes-configs.js +134 -0
  41. package/lib-es/GoogleMaps/helpers/build-shapes-configs.js.map +1 -0
  42. package/lib-es/GoogleMaps/helpers/get-center-coordinates.js +31 -0
  43. package/lib-es/GoogleMaps/helpers/get-center-coordinates.js.map +1 -0
  44. package/lib-es/GoogleMaps/helpers/get-image-ids.js +9 -14
  45. package/lib-es/GoogleMaps/helpers/get-image-ids.js.map +1 -1
  46. package/lib-es/GoogleMaps/helpers/index.js +4 -2
  47. package/lib-es/GoogleMaps/helpers/index.js.map +1 -1
  48. package/lib-es/GoogleMaps/helpers/set-shapes.js +80 -125
  49. package/lib-es/GoogleMaps/helpers/set-shapes.js.map +1 -1
  50. package/lib-es/GoogleMaps/hooks/use-get-images.js +4 -3
  51. package/lib-es/GoogleMaps/hooks/use-get-images.js.map +1 -1
  52. package/lib-es/GoogleMaps/queries.js +23 -2
  53. package/lib-es/GoogleMaps/queries.js.map +1 -1
  54. package/package.json +4 -4
  55. package/src/GoogleMaps/GoogleMaps.js +40 -27
  56. package/src/GoogleMaps/GoogleMapsFactory.js +11 -4
  57. package/src/GoogleMaps/GoogleMapsRender.js +22 -21
  58. package/src/GoogleMaps/helpers/add-zoom-listener.js +3 -22
  59. package/src/GoogleMaps/helpers/build-map-shapes.js +70 -0
  60. package/src/GoogleMaps/helpers/build-query.js +25 -10
  61. package/src/GoogleMaps/helpers/build-shapes-configs.js +110 -0
  62. package/src/GoogleMaps/helpers/get-center-coordinates.js +24 -0
  63. package/src/GoogleMaps/helpers/get-image-ids.js +6 -15
  64. package/src/GoogleMaps/helpers/index.js +12 -2
  65. package/src/GoogleMaps/helpers/set-shapes.js +87 -123
  66. package/src/GoogleMaps/hooks/use-get-images.js +4 -3
  67. package/src/GoogleMaps/queries.js +30 -3
  68. package/lib/GoogleMaps/helpers/set-entity-configs.js +0 -144
  69. package/lib/GoogleMaps/helpers/set-entity-configs.js.map +0 -1
  70. package/lib-es/GoogleMaps/helpers/set-entity-configs.js +0 -94
  71. package/lib-es/GoogleMaps/helpers/set-entity-configs.js.map +0 -1
  72. package/src/GoogleMaps/helpers/set-entity-configs.js +0 -84
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/GoogleMaps/helpers/set-shapes.js"],"names":["React","isNumber","ReactDOMServer","Link","buildPropsToDisplayWithContent","summaryComponents","getClassModifiers","getPath","MARKER","POLYLINE","POLYGON","RECTANGLE","CIRCLE","COLOR","CLICK","HEADING_LARGE","LIST","shapesArray","infoWindowArray","clearShapes","length","forEach","shape","setMap","closeInfoWindows","infoWindow","close","addShapeListeners","map","router","entityData","imageData","shapeInstance","displayItems","entity","enableInfoPane","dataSummaries","url","getEntityUrl","window","google","maps","InfoWindow","content","addListener","event","renderToString","InfoWindowContent","setContent","setPosition","latLng","open","push","setStyleOptions","strokeColor","strokeOpacity","strokeWeight","fillColor","fillOpacity","styleSettings","Object","keys","reduce","acc","key","settingValue","shouldValueBeNumber","includes","hasValuePassedCondition","areRectangleBoundsNumbers","bounds","every","bound","isPositionCorrect","lat","lng","entityId","entityRecord","filter","id","getImageUrl","imageId","image","getFiles","getIconUrl","entityRecordData","summariesWithContent","dataSummary","elementTitle","type","propsToDisplay","otherProps","isTypeHeading","summaryPropsWithContent","modifier","SummaryComponent","getDataSummaryComponent","component","shouldShowImage","getImageElement","imageUrl","data","imageElement","altText","setMarker","latitude","longitude","label","markerWidth","markerHeight","iconUrl","icon","scaledSize","Size","marker","Marker","position","title","setPolyline","paths","path","polyline","Polyline","geodesic","setPolygon","unParsedPaths","polygon","Polygon","setRectangle","northBound","southBound","eastBound","westBound","rectangle","Rectangle","north","south","east","west","setCircle","radius","circle","Circle","center","setShapes","shapes","mapZoom","getZoom","shapeType","minZoom","maxZoom"],"mappings":"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","sourcesContent":["import React from 'react';\nimport isNumber from 'lodash.isnumber';\nimport ReactDOMServer from 'react-dom/server';\nimport { Link } from '@blaze-cms/nextjs-components';\nimport {\n buildPropsToDisplayWithContent,\n summaryComponents,\n getClassModifiers\n} from '@blaze-cms/react-page-builder';\nimport getPath from './get-path';\nimport {\n MARKER,\n POLYLINE,\n POLYGON,\n RECTANGLE,\n CIRCLE,\n COLOR,\n CLICK,\n HEADING_LARGE,\n LIST\n} from '../../constants';\n\nconst shapesArray = [];\nconst infoWindowArray = [];\n\nconst clearShapes = () => {\n if (shapesArray.length) {\n shapesArray.forEach(shape => shape.setMap(null));\n shapesArray.length = 0;\n }\n};\n\nconst closeInfoWindows = () => {\n if (infoWindowArray.length) {\n infoWindowArray.forEach(infoWindow => infoWindow.close());\n infoWindowArray.length = 0;\n }\n};\n\nconst addShapeListeners = (map, router, shape, entityData, imageData, shapeInstance) => {\n const { displayItems, entity, enableInfoPane = false, dataSummaries = [] } = shape;\n\n const url = getEntityUrl(displayItems, entity, entityData);\n\n if (enableInfoPane) {\n const infoWindow = new window.google.maps.InfoWindow({\n content: ''\n });\n\n shapeInstance.addListener(CLICK, event => {\n closeInfoWindows();\n const content = ReactDOMServer.renderToString(\n InfoWindowContent(entityData, imageData, displayItems, dataSummaries, url)\n );\n infoWindow.setContent(content);\n infoWindow.setPosition(event.latLng);\n infoWindow.open(map, shapeInstance);\n infoWindowArray.push(infoWindow);\n });\n } else if (url) {\n shapeInstance.addListener(CLICK, () => {\n router.push(url);\n });\n }\n};\n\nconst setStyleOptions = shape => {\n const { strokeColor, strokeOpacity, strokeWeight, fillColor, fillOpacity } = shape;\n const styleSettings = { strokeColor, fillColor, strokeOpacity, strokeWeight, fillOpacity };\n\n return {\n ...Object.keys(styleSettings).reduce((acc, key) => {\n const settingValue = styleSettings[key];\n const shouldValueBeNumber = !key.includes(COLOR);\n const hasValuePassedCondition = shouldValueBeNumber ? isNumber(settingValue) : settingValue;\n if (hasValuePassedCondition) acc[key] = settingValue;\n return acc;\n }, {})\n };\n};\n\nconst areRectangleBoundsNumbers = bounds => bounds.every(bound => isNumber(bound));\n\nconst isPositionCorrect = (lat, lng) => isNumber(lat) && isNumber(lng);\n\nconst getEntityUrl = (displayItems, entity, entityData) => {\n let url = '';\n\n if (entity && displayItems) {\n const [entityId] = displayItems;\n const [entityRecord] = entityData.filter(({ id }) => id === entityId);\n if (entityRecord) {\n ({ url = '' } = entityRecord);\n }\n }\n\n return url;\n};\n\nconst getImageUrl = (imageData, imageId) => {\n const [image] = imageData.getFiles.filter(({ id }) => id === imageId);\n if (image) return image.url;\n\n return '';\n};\n\nconst getIconUrl = (shape, imageData) => {\n const { imageId } = shape;\n\n if (!imageData.getFiles) return '';\n\n return imageId ? getImageUrl(imageData, imageId) : '';\n};\n\nconst InfoWindowContent = (entityData, imageData, displayItems, dataSummaries, url) => {\n const [entityId] = displayItems;\n const [entityRecordData] = entityData.filter(({ id }) => id === entityId);\n\n const summariesWithContent = dataSummaries.map(dataSummary => {\n const { elementTitle, type, propsToDisplay, ...otherProps } = dataSummary;\n const isTypeHeading = type === HEADING_LARGE;\n const summaryPropsWithContent = buildPropsToDisplayWithContent(\n entityRecordData,\n propsToDisplay\n );\n const modifier = getClassModifiers(LIST, otherProps);\n const SummaryComponent = summaryComponents[type];\n if (!summaryPropsWithContent.length) {\n return null;\n }\n\n const getDataSummaryComponent = () => {\n const component = (\n <SummaryComponent\n key={type}\n modifier={modifier}\n elementTitle={elementTitle}\n summaryPropsWithContent={summaryPropsWithContent}\n />\n );\n\n if (isTypeHeading && url) return <Link href={url}>{component}</Link>;\n\n return component;\n };\n\n return getDataSummaryComponent();\n });\n\n let image = {};\n const { imageId } = entityRecordData || {};\n if (imageId) [image] = imageData.getFiles.filter(({ id }) => id === imageId);\n const shouldShowImage = image && image.url;\n\n const getImageElement = () => {\n const { url: imageUrl, data } = image;\n const imageElement = (\n <img className=\"info__window\" src={imageUrl} alt={data && data.altText ? data.altText : ''} />\n );\n\n if (url) return <Link href={url}>{imageElement}</Link>;\n\n return imageElement;\n };\n\n return (\n <>\n {shouldShowImage && getImageElement()}\n {summariesWithContent}\n </>\n );\n};\n\nconst setMarker = (map, router, shape, data, imageData) => {\n const { latitude, longitude, entity, label = '', markerWidth = 50, markerHeight = 50 } = shape;\n if (isPositionCorrect(latitude, longitude)) {\n const entityData = entity ? data[entity] || [] : [];\n\n const iconUrl = getIconUrl(shape, imageData);\n\n const icon = iconUrl\n ? {\n url: iconUrl,\n scaledSize: new window.google.maps.Size(markerWidth || 50, markerHeight || 50)\n }\n : {};\n\n const marker = new window.google.maps.Marker({\n position: { lat: latitude, lng: longitude },\n map,\n icon,\n title: label || ''\n });\n\n addShapeListeners(map, router, shape, entityData, imageData, marker);\n\n shapesArray.push(marker);\n\n marker.setMap(map);\n }\n};\n\nconst setPolyline = (map, router, shape, data, imageData) => {\n const { paths, entity } = shape;\n const path = getPath(paths);\n\n if (path.length) {\n const entityData = entity ? data[entity] || [] : [];\n const polyline = new window.google.maps.Polyline({\n path,\n geodesic: true,\n ...setStyleOptions(shape)\n });\n\n addShapeListeners(map, router, shape, entityData, imageData, polyline);\n\n shapesArray.push(polyline);\n\n polyline.setMap(map);\n }\n};\n\nconst setPolygon = (map, router, shape, data, imageData) => {\n const { paths: unParsedPaths, entity } = shape;\n const paths = getPath(unParsedPaths);\n\n if (paths.length) {\n const entityData = entity ? data[entity] || [] : [];\n const polygon = new window.google.maps.Polygon({\n paths,\n ...setStyleOptions(shape)\n });\n\n addShapeListeners(map, router, shape, entityData, imageData, polygon);\n\n shapesArray.push(polygon);\n\n polygon.setMap(map);\n }\n};\n\nconst setRectangle = (map, router, shape, data, imageData) => {\n const { northBound, southBound, eastBound, westBound, entity } = shape;\n if (areRectangleBoundsNumbers([northBound, southBound, eastBound, westBound])) {\n const entityData = entity ? data[entity] || [] : [];\n const rectangle = new window.google.maps.Rectangle({\n ...setStyleOptions(shape),\n map,\n bounds: {\n north: northBound,\n south: southBound,\n east: eastBound,\n west: westBound\n }\n });\n\n addShapeListeners(map, router, shape, entityData, imageData, rectangle);\n\n shapesArray.push(rectangle);\n\n rectangle.setMap(map);\n }\n};\n\nconst setCircle = (map, router, shape, data, imageData) => {\n const { latitude, longitude, radius, entity } = shape;\n if (isPositionCorrect(latitude, longitude) && isNumber(radius)) {\n const entityData = entity ? data[entity] || [] : [];\n const circle = new window.google.maps.Circle({\n ...setStyleOptions(shape),\n map,\n center: { lat: latitude, lng: longitude },\n radius\n });\n\n addShapeListeners(map, router, shape, entityData, imageData, circle);\n\n shapesArray.push(circle);\n\n circle.setMap(map);\n }\n};\n\nconst setShapes = (map, router, shapes, data, imageData) => {\n const mapZoom = map.getZoom();\n clearShapes();\n\n if (shapes.length) {\n shapes.forEach(shape => {\n const { type: shapeType, minZoom, maxZoom } = shape;\n\n if (mapZoom >= minZoom && mapZoom <= maxZoom) {\n switch (shapeType) {\n case MARKER: {\n setMarker(map, router, shape, data, imageData);\n break;\n }\n case POLYLINE: {\n setPolyline(map, router, shape, data, imageData);\n break;\n }\n case POLYGON: {\n setPolygon(map, router, shape, data, imageData);\n break;\n }\n case RECTANGLE: {\n setRectangle(map, router, shape, data, imageData);\n break;\n }\n case CIRCLE: {\n setCircle(map, router, shape, data, imageData);\n break;\n }\n default:\n break;\n }\n }\n });\n }\n};\n\nexport default setShapes;\n"],"file":"set-shapes.js"}
1
+ {"version":3,"sources":["../../../src/GoogleMaps/helpers/set-shapes.js"],"names":["React","isNumber","ReactDOMServer","Link","buildPropsToDisplayWithContent","summaryComponents","getClassModifiers","getPath","MARKER","POLYLINE","POLYGON","RECTANGLE","CIRCLE","COLOR","CLICK","HEADING_LARGE","LIST","shapesArray","infoWindowArray","clearShapes","length","forEach","shape","setMap","closeInfoWindows","infoWindow","close","addShapeListeners","map","router","imageData","shapeInstance","enableInfoPane","dataSummaries","url","shapeData","window","google","maps","InfoWindow","content","addListener","event","renderToString","infoWindowContent","setContent","setPosition","latLng","open","push","setStyleOptions","strokeColor","strokeOpacity","strokeWeight","fillColor","fillOpacity","styleSettings","Object","keys","reduce","acc","key","settingValue","shouldValueBeNumber","includes","hasValuePassedCondition","areRectangleBoundsNumbers","bounds","every","bound","isPositionCorrect","lat","lng","getIconUrl","imageId","image","find","id","summariesWithContent","Promise","all","dataSummary","elementTitle","type","propsToDisplay","otherProps","isTypeHeading","summaryPropsWithContent","modifier","SummaryComponent","render","preload","getDataSummaryComponent","component","shouldShowImage","getImageElement","imageUrl","data","imageElement","altText","setMarker","label","markerWidth","markerHeight","latitude","longitude","iconUrl","icon","scaledSize","Size","marker","Marker","position","title","setPolyline","paths","path","polyline","Polyline","geodesic","setPolygon","unParsedPaths","polygon","Polygon","setRectangle","northBound","southBound","eastBound","westBound","rectangle","Rectangle","north","south","east","west","setCircle","radius","circle","Circle","center","setShapes","shapes","mapZoom","getZoom","minZoom","maxZoom"],"mappings":"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","sourcesContent":["import React from 'react';\nimport isNumber from 'lodash.isnumber';\nimport ReactDOMServer from 'react-dom/server';\nimport { Link } from '@blaze-cms/nextjs-components';\nimport {\n buildPropsToDisplayWithContent,\n summaryComponents,\n getClassModifiers\n} from '@blaze-cms/react-page-builder';\nimport getPath from './get-path';\nimport {\n MARKER,\n POLYLINE,\n POLYGON,\n RECTANGLE,\n CIRCLE,\n COLOR,\n CLICK,\n HEADING_LARGE,\n LIST\n} from '../../constants';\n\nconst shapesArray = [];\nconst infoWindowArray = [];\n\nconst clearShapes = () => {\n if (shapesArray.length) {\n shapesArray.forEach(shape => shape.setMap(null));\n shapesArray.length = 0;\n }\n};\n\nconst closeInfoWindows = () => {\n if (infoWindowArray.length) {\n infoWindowArray.forEach(infoWindow => infoWindow.close());\n infoWindowArray.length = 0;\n }\n};\n\nconst addShapeListeners = (map, router, shape, imageData, shapeInstance) => {\n const { enableInfoPane = false, dataSummaries = [], url, shapeData } = shape;\n\n if (enableInfoPane) {\n const infoWindow = new window.google.maps.InfoWindow({\n content: ''\n });\n\n shapeInstance.addListener(CLICK, async event => {\n closeInfoWindows();\n const content = ReactDOMServer.renderToString(\n await infoWindowContent(imageData, dataSummaries, url, shapeData)\n );\n infoWindow.setContent(content);\n infoWindow.setPosition(event.latLng);\n infoWindow.open(map, shapeInstance);\n infoWindowArray.push(infoWindow);\n });\n } else if (url) {\n shapeInstance.addListener(CLICK, () => {\n router.push(url);\n });\n }\n};\n\nconst setStyleOptions = shape => {\n const { strokeColor, strokeOpacity, strokeWeight, fillColor, fillOpacity } = shape;\n const styleSettings = { strokeColor, fillColor, strokeOpacity, strokeWeight, fillOpacity };\n\n return {\n ...Object.keys(styleSettings).reduce((acc, key) => {\n const settingValue = styleSettings[key];\n const shouldValueBeNumber = !key.includes(COLOR);\n const hasValuePassedCondition = shouldValueBeNumber ? isNumber(settingValue) : settingValue;\n if (hasValuePassedCondition) acc[key] = settingValue;\n return acc;\n }, {})\n };\n};\n\nconst areRectangleBoundsNumbers = bounds => bounds.every(bound => isNumber(bound));\n\nconst isPositionCorrect = (lat, lng) => isNumber(lat) && isNumber(lng);\n\nconst getIconUrl = (imageId, imageData) => {\n if (!imageId) return '';\n const image = imageData.find(({ id }) => id === imageId);\n if (!image || !image.url) return '';\n\n return image.url;\n};\n\nconst infoWindowContent = async (imageData, dataSummaries, url, shapeData) => {\n const summariesWithContent = await Promise.all(\n dataSummaries.map(async dataSummary => {\n const { elementTitle, type, propsToDisplay, ...otherProps } = dataSummary;\n const isTypeHeading = type === HEADING_LARGE;\n const summaryPropsWithContent = buildPropsToDisplayWithContent(shapeData, propsToDisplay);\n const modifier = getClassModifiers(LIST, otherProps);\n const SummaryComponent = summaryComponents[type];\n await SummaryComponent.render.preload(); // preload dynamic nextjs component\n\n if (!summaryPropsWithContent.length) return null;\n\n const getDataSummaryComponent = () => {\n const component = (\n <SummaryComponent\n key={type}\n modifier={modifier}\n elementTitle={elementTitle}\n summaryPropsWithContent={summaryPropsWithContent}\n />\n );\n\n if (isTypeHeading && url) return <Link href={url}>{component}</Link>;\n\n return component;\n };\n\n return getDataSummaryComponent();\n })\n );\n const { imageId } = shapeData || {};\n const image = imageData.find(({ id }) => id === imageId);\n const shouldShowImage = image && image.url;\n\n const getImageElement = () => {\n const { url: imageUrl, data } = image;\n const imageElement = (\n <img className=\"info__window\" src={imageUrl} alt={data && data.altText ? data.altText : ''} />\n );\n\n if (url) return <Link href={url}>{imageElement}</Link>;\n\n return imageElement;\n };\n\n return (\n <>\n {shouldShowImage && getImageElement()}\n {summariesWithContent}\n </>\n );\n};\n\nconst setMarker = (map, router, shape, imageData) => {\n const { label = '', markerWidth = 50, markerHeight = 50, latitude, longitude, imageId } = shape;\n\n if (isPositionCorrect(latitude, longitude)) {\n const iconUrl = getIconUrl(imageId, imageData);\n\n const icon = iconUrl\n ? {\n url: iconUrl,\n scaledSize: new window.google.maps.Size(markerWidth || 50, markerHeight || 50)\n }\n : {};\n\n const marker = new window.google.maps.Marker({\n position: { lat: latitude, lng: longitude },\n map,\n icon,\n title: label || ''\n });\n\n addShapeListeners(map, router, shape, imageData, marker);\n\n shapesArray.push(marker);\n\n marker.setMap(map);\n }\n};\n\nconst setPolyline = (map, router, shape, imageData) => {\n const { paths } = shape;\n const path = getPath(paths);\n\n if (path.length) {\n const polyline = new window.google.maps.Polyline({\n path,\n geodesic: true,\n ...setStyleOptions(shape)\n });\n\n addShapeListeners(map, router, shape, imageData, polyline);\n\n shapesArray.push(polyline);\n\n polyline.setMap(map);\n }\n};\n\nconst setPolygon = (map, router, shape, imageData) => {\n const { paths: unParsedPaths } = shape;\n const paths = getPath(unParsedPaths);\n\n if (paths.length) {\n const polygon = new window.google.maps.Polygon({\n paths,\n ...setStyleOptions(shape)\n });\n\n addShapeListeners(map, router, shape, imageData, polygon);\n\n shapesArray.push(polygon);\n\n polygon.setMap(map);\n }\n};\n\nconst setRectangle = (map, router, shape, imageData) => {\n const { northBound, southBound, eastBound, westBound } = shape;\n if (areRectangleBoundsNumbers([northBound, southBound, eastBound, westBound])) {\n const rectangle = new window.google.maps.Rectangle({\n ...setStyleOptions(shape),\n map,\n bounds: {\n north: northBound,\n south: southBound,\n east: eastBound,\n west: westBound\n }\n });\n\n addShapeListeners(map, router, shape, imageData, rectangle);\n\n shapesArray.push(rectangle);\n\n rectangle.setMap(map);\n }\n};\n\nconst setCircle = (map, router, shape, imageData) => {\n const { latitude, longitude, radius } = shape;\n if (isPositionCorrect(latitude, longitude) && isNumber(radius)) {\n const circle = new window.google.maps.Circle({\n ...setStyleOptions(shape),\n map,\n center: { lat: latitude, lng: longitude },\n radius\n });\n\n addShapeListeners(map, router, shape, imageData, circle);\n\n shapesArray.push(circle);\n\n circle.setMap(map);\n }\n};\n\nconst setShapes = (map, router, shapes, imageData) => {\n const mapZoom = map.getZoom();\n clearShapes();\n\n shapes.forEach(shape => {\n const { type, minZoom, maxZoom } = shape;\n\n if (mapZoom >= minZoom && mapZoom <= maxZoom) {\n switch (type) {\n case MARKER: {\n setMarker(map, router, shape, imageData);\n break;\n }\n case POLYLINE: {\n setPolyline(map, router, shape, imageData);\n break;\n }\n case POLYGON: {\n setPolygon(map, router, shape, imageData);\n break;\n }\n case RECTANGLE: {\n setRectangle(map, router, shape, imageData);\n break;\n }\n case CIRCLE: {\n setCircle(map, router, shape, imageData);\n break;\n }\n default:\n break;\n }\n }\n });\n};\n\nexport default setShapes;\n"],"file":"set-shapes.js"}
@@ -1,9 +1,9 @@
1
1
  import { useQuery } from '@apollo/client';
2
- import { generateQuery, generateQueryString } from '../queries';
2
+ import { generateWhereQuery, generateQueryString } from '../queries';
3
3
 
4
4
  const useGetImages = imageIds => {
5
5
  const queryName = 'getFiles';
6
- const action = generateQuery(generateQueryString(queryName, queryName, 'id url data'));
6
+ const action = generateWhereQuery(generateQueryString(queryName, queryName, 'id url data'));
7
7
  const {
8
8
  data = {},
9
9
  loading,
@@ -15,7 +15,8 @@ const useGetImages = imageIds => {
15
15
  _in: imageIds
16
16
  }
17
17
  }
18
- }
18
+ },
19
+ skip: !imageIds || !imageIds.length
19
20
  });
20
21
  return {
21
22
  data,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/GoogleMaps/hooks/use-get-images.js"],"names":["useQuery","generateQuery","generateQueryString","useGetImages","imageIds","queryName","action","data","loading","error","variables","where","id","_in"],"mappings":"AAAA,SAASA,QAAT,QAAyB,gBAAzB;AACA,SAASC,aAAT,EAAwBC,mBAAxB,QAAmD,YAAnD;;AAEA,MAAMC,YAAY,GAAGC,QAAQ,IAAI;AAC/B,QAAMC,SAAS,GAAG,UAAlB;AACA,QAAMC,MAAM,GAAGL,aAAa,CAACC,mBAAmB,CAACG,SAAD,EAAYA,SAAZ,EAAuB,aAAvB,CAApB,CAA5B;AACA,QAAM;AAAEE,IAAAA,IAAI,GAAG,EAAT;AAAaC,IAAAA,OAAb;AAAsBC,IAAAA;AAAtB,MAAgCT,QAAQ,CAACM,MAAD,EAAS;AACrDI,IAAAA,SAAS,EAAE;AAAEC,MAAAA,KAAK,EAAE;AAAEC,QAAAA,EAAE,EAAE;AAAEC,UAAAA,GAAG,EAAET;AAAP;AAAN;AAAT;AAD0C,GAAT,CAA9C;AAGA,SAAO;AAAEG,IAAAA,IAAF;AAAQC,IAAAA,OAAR;AAAiBC,IAAAA;AAAjB,GAAP;AACD,CAPD;;AASA,eAAeN,YAAf","sourcesContent":["import { useQuery } from '@apollo/client';\nimport { generateQuery, generateQueryString } from '../queries';\n\nconst useGetImages = imageIds => {\n const queryName = 'getFiles';\n const action = generateQuery(generateQueryString(queryName, queryName, 'id url data'));\n const { data = {}, loading, error } = useQuery(action, {\n variables: { where: { id: { _in: imageIds } } }\n });\n return { data, loading, error };\n};\n\nexport default useGetImages;\n"],"file":"use-get-images.js"}
1
+ {"version":3,"sources":["../../../src/GoogleMaps/hooks/use-get-images.js"],"names":["useQuery","generateWhereQuery","generateQueryString","useGetImages","imageIds","queryName","action","data","loading","error","variables","where","id","_in","skip","length"],"mappings":"AAAA,SAASA,QAAT,QAAyB,gBAAzB;AACA,SAASC,kBAAT,EAA6BC,mBAA7B,QAAwD,YAAxD;;AAEA,MAAMC,YAAY,GAAGC,QAAQ,IAAI;AAC/B,QAAMC,SAAS,GAAG,UAAlB;AACA,QAAMC,MAAM,GAAGL,kBAAkB,CAACC,mBAAmB,CAACG,SAAD,EAAYA,SAAZ,EAAuB,aAAvB,CAApB,CAAjC;AACA,QAAM;AAAEE,IAAAA,IAAI,GAAG,EAAT;AAAaC,IAAAA,OAAb;AAAsBC,IAAAA;AAAtB,MAAgCT,QAAQ,CAACM,MAAD,EAAS;AACrDI,IAAAA,SAAS,EAAE;AAAEC,MAAAA,KAAK,EAAE;AAAEC,QAAAA,EAAE,EAAE;AAAEC,UAAAA,GAAG,EAAET;AAAP;AAAN;AAAT,KAD0C;AAErDU,IAAAA,IAAI,EAAE,CAACV,QAAD,IAAa,CAACA,QAAQ,CAACW;AAFwB,GAAT,CAA9C;AAIA,SAAO;AAAER,IAAAA,IAAF;AAAQC,IAAAA,OAAR;AAAiBC,IAAAA;AAAjB,GAAP;AACD,CARD;;AAUA,eAAeN,YAAf","sourcesContent":["import { useQuery } from '@apollo/client';\nimport { generateWhereQuery, generateQueryString } from '../queries';\n\nconst useGetImages = imageIds => {\n const queryName = 'getFiles';\n const action = generateWhereQuery(generateQueryString(queryName, queryName, 'id url data'));\n const { data = {}, loading, error } = useQuery(action, {\n variables: { where: { id: { _in: imageIds } } },\n skip: !imageIds || !imageIds.length\n });\n return { data, loading, error };\n};\n\nexport default useGetImages;\n"],"file":"use-get-images.js"}
@@ -11,6 +11,12 @@ const GET_ENTITY_SCHEMAS = gql`
11
11
  `;
12
12
 
13
13
  const generateQuery = queryString => gql`
14
+ query getEntityData {
15
+ ${queryString}
16
+ }
17
+ `;
18
+
19
+ const generateWhereQuery = queryString => gql`
14
20
  query getEntityData($where: JSON){
15
21
  ${queryString}
16
22
  }
@@ -19,9 +25,24 @@ const generateQuery = queryString => gql`
19
25
  const generateQueryString = (action, query, props) => `
20
26
  ${query}: ${action}(where: $where){
21
27
  ${props}
22
- __typename
23
28
  }
24
29
  `;
25
30
 
26
- export { GET_ENTITY_SCHEMAS, generateQuery, generateQueryString };
31
+ const generateIdsQuery = (query, props, action, ids) => `
32
+ ${query}: ${action}(where: { id: { _in: ${JSON.stringify(ids)} } }){
33
+ ${props}
34
+ }
35
+ `;
36
+
37
+ const generateFiltersQuery = (query, props, rawQUery, filterQueryKey) => `
38
+ ${query}: searchPublishedContent(rawQueryStringified: ${JSON.stringify(rawQUery)}){
39
+ results {
40
+ ...on ${filterQueryKey} {
41
+ ${props}
42
+ }
43
+ }
44
+ }
45
+ `;
46
+
47
+ export { GET_ENTITY_SCHEMAS, generateQuery, generateQueryString, generateIdsQuery, generateFiltersQuery, generateWhereQuery };
27
48
  //# sourceMappingURL=queries.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/GoogleMaps/queries.js"],"names":["gql","GET_ENTITY_SCHEMAS","generateQuery","queryString","generateQueryString","action","query","props"],"mappings":"AAAA,SAASA,GAAT,QAAoB,gBAApB;AAEA,MAAMC,kBAAkB,GAAGD,GAAI;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CATA;;AAWA,MAAME,aAAa,GAAGC,WAAW,IAAIH,GAAI;AACzC;AACA,MAAMG,WAAY;AAClB;AACA,CAJA;;AAMA,MAAMC,mBAAmB,GAAG,CAACC,MAAD,EAASC,KAAT,EAAgBC,KAAhB,KAA2B;AACvD,IAAID,KAAM,KAAID,MAAO;AACrB,MAAME,KAAM;AACZ;AACA;AACA,CALA;;AAOA,SAASN,kBAAT,EAA6BC,aAA7B,EAA4CE,mBAA5C","sourcesContent":["import { gql } from '@apollo/client';\n\nconst GET_ENTITY_SCHEMAS = gql`\n query getEntitySchemas($identifier: String) {\n getEntitySchemas(identifier: $identifier) {\n identifier\n actions\n dynamicProperties\n properties\n }\n }\n`;\n\nconst generateQuery = queryString => gql`\n query getEntityData($where: JSON){\n ${queryString}\n }\n`;\n\nconst generateQueryString = (action, query, props) => `\n ${query}: ${action}(where: $where){\n ${props}\n __typename\n }\n`;\n\nexport { GET_ENTITY_SCHEMAS, generateQuery, generateQueryString };\n"],"file":"queries.js"}
1
+ {"version":3,"sources":["../../src/GoogleMaps/queries.js"],"names":["gql","GET_ENTITY_SCHEMAS","generateQuery","queryString","generateWhereQuery","generateQueryString","action","query","props","generateIdsQuery","ids","JSON","stringify","generateFiltersQuery","rawQUery","filterQueryKey"],"mappings":"AAAA,SAASA,GAAT,QAAoB,gBAApB;AAEA,MAAMC,kBAAkB,GAAGD,GAAI;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CATA;;AAWA,MAAME,aAAa,GAAGC,WAAW,IAAIH,GAAI;AACzC;AACA,MAAMG,WAAY;AAClB;AACA,CAJA;;AAMA,MAAMC,kBAAkB,GAAGD,WAAW,IAAIH,GAAI;AAC9C;AACA,MAAMG,WAAY;AAClB;AACA,CAJA;;AAKA,MAAME,mBAAmB,GAAG,CAACC,MAAD,EAASC,KAAT,EAAgBC,KAAhB,KAA2B;AACvD,IAAID,KAAM,KAAID,MAAO;AACrB,MAAME,KAAM;AACZ;AACA,CAJA;;AAMA,MAAMC,gBAAgB,GAAG,CAACF,KAAD,EAAQC,KAAR,EAAeF,MAAf,EAAuBI,GAAvB,KAAgC;AACzD,IAAIH,KAAM,KAAID,MAAO,wBAAuBK,IAAI,CAACC,SAAL,CAAeF,GAAf,CAAoB;AAChE,MAAMF,KAAM;AACZ;AACA,CAJA;;AAMA,MAAMK,oBAAoB,GAAG,CAACN,KAAD,EAAQC,KAAR,EAAeM,QAAf,EAAyBC,cAAzB,KAA6C;AAC1E,IAAIR,KAAM,kDAAiDI,IAAI,CAACC,SAAL,CAAeE,QAAf,CAAyB;AACpF;AACA,cAAcC,cAAe;AAC7B,UAAUP,KAAM;AAChB;AACA;AACA;AACA,CARA;;AAUA,SACEP,kBADF,EAEEC,aAFF,EAGEG,mBAHF,EAIEI,gBAJF,EAKEI,oBALF,EAMET,kBANF","sourcesContent":["import { gql } from '@apollo/client';\n\nconst GET_ENTITY_SCHEMAS = gql`\n query getEntitySchemas($identifier: String) {\n getEntitySchemas(identifier: $identifier) {\n identifier\n actions\n dynamicProperties\n properties\n }\n }\n`;\n\nconst generateQuery = queryString => gql`\n query getEntityData {\n ${queryString}\n }\n`;\n\nconst generateWhereQuery = queryString => gql`\n query getEntityData($where: JSON){\n ${queryString}\n }\n`;\nconst generateQueryString = (action, query, props) => `\n ${query}: ${action}(where: $where){\n ${props}\n }\n`;\n\nconst generateIdsQuery = (query, props, action, ids) => `\n ${query}: ${action}(where: { id: { _in: ${JSON.stringify(ids)} } }){\n ${props}\n }\n`;\n\nconst generateFiltersQuery = (query, props, rawQUery, filterQueryKey) => `\n ${query}: searchPublishedContent(rawQueryStringified: ${JSON.stringify(rawQUery)}){\n results {\n ...on ${filterQueryKey} {\n ${props}\n }\n }\n }\n`;\n\nexport {\n GET_ENTITY_SCHEMAS,\n generateQuery,\n generateQueryString,\n generateIdsQuery,\n generateFiltersQuery,\n generateWhereQuery\n};\n"],"file":"queries.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blaze-cms/plugin-google-maps-fe",
3
- "version": "0.123.0-alpha.8",
3
+ "version": "0.123.1-alpha.0",
4
4
  "description": "Blaze Google maps plugin fe",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib-es/index.js",
@@ -27,8 +27,8 @@
27
27
  },
28
28
  "license": "GPL-3.0",
29
29
  "dependencies": {
30
- "@blaze-cms/nextjs-components": "^0.119.0",
31
- "@blaze-cms/react-page-builder": "^0.123.0-alpha.8",
30
+ "@blaze-cms/nextjs-components": "^0.123.0",
31
+ "@blaze-cms/react-page-builder": "^0.123.1-alpha.0",
32
32
  "@blaze-cms/setup-ui": "^0.92.0",
33
33
  "core-js": "^3.2.1",
34
34
  "lodash.isnumber": "^3.0.3",
@@ -44,5 +44,5 @@
44
44
  "lib/*",
45
45
  "lib-es/*"
46
46
  ],
47
- "gitHead": "c08d1fbfea62ded431729dd62772f1e5bc974176"
47
+ "gitHead": "c7b118d6028bdc4283be7c8ebce2b02ef53644f9"
48
48
  }
@@ -1,31 +1,54 @@
1
1
  import React, { useEffect, useState } from 'react';
2
2
  import PropTypes from 'prop-types';
3
- import { withRouter } from 'next/router';
3
+ import { useRouter } from 'next/router';
4
4
  import { withTitle } from '@blaze-cms/react-page-builder';
5
5
  import { useInView } from '@blaze-react/utils/lib/customHooks';
6
6
  import { functions, isEqual, omit } from 'lodash';
7
7
  import { setMapOptions, addZoomListener } from './helpers';
8
8
  import { GOOGLE_MAPS_SCRIPT, LOAD, SCRIPT, IN_VIEW_CONFIG } from '../constants';
9
9
 
10
+ const shouldNotUpdate = (props, nextProps) => {
11
+ const [funcs, nextFuncs] = [functions(props), functions(nextProps)];
12
+ const noPropChange = isEqual(omit(props, funcs), omit(nextProps, nextFuncs));
13
+ const noFuncChange =
14
+ funcs.length === nextFuncs.length &&
15
+ funcs.every(fn => props[fn].toString() === nextProps[fn].toString());
16
+ return noPropChange && noFuncChange;
17
+ };
18
+
10
19
  const GoogleMaps = ({
11
- router,
12
- data,
13
20
  type,
14
21
  name,
15
22
  modifier,
16
23
  elementTitle,
17
- entityGroups,
18
24
  imageData,
19
25
  onMount,
20
26
  onMountProps,
27
+ parent,
28
+ mapShapes,
29
+ centerCoordinates,
21
30
  ...otherProps
22
31
  }) => {
32
+ const router = useRouter();
23
33
  const [isIntersecting, mapRef] = useInView(IN_VIEW_CONFIG);
24
34
  const [map, setMap] = useState();
25
35
 
26
36
  useEffect(() => {
27
37
  const options = setMapOptions(otherProps);
28
- const onLoad = () => setMap(new window.google.maps.Map(mapRef.current, options));
38
+ const onLoad = () => {
39
+ const initialMap = new window.google.maps.Map(mapRef.current, options);
40
+ if (centerCoordinates.length === 1) {
41
+ const [{ latitude: lat, longitude: lng }] = centerCoordinates;
42
+ initialMap.setCenter({ lat, lng });
43
+ } else {
44
+ const bounds = new window.google.maps.LatLngBounds();
45
+ centerCoordinates.forEach(({ latitude, longitude }) => {
46
+ bounds.extend(new window.google.maps.LatLng(latitude, longitude));
47
+ });
48
+ initialMap.fitBounds(bounds);
49
+ }
50
+ setMap(initialMap);
51
+ };
29
52
 
30
53
  if (!window.google) {
31
54
  const script = document.createElement(SCRIPT);
@@ -39,7 +62,6 @@ const GoogleMaps = ({
39
62
 
40
63
  if (map) {
41
64
  map.setOptions(options);
42
-
43
65
  const { enableGeolocation } = otherProps;
44
66
  const shouldActivateGeolocation = enableGeolocation && navigator.geolocation;
45
67
  if (shouldActivateGeolocation) {
@@ -62,44 +84,35 @@ const GoogleMaps = ({
62
84
  }, []);
63
85
 
64
86
  if (map && typeof onMount === `function`) onMount(map, onMountProps);
65
-
66
- if (isIntersecting) addZoomListener(map, router, data, imageData, entityGroups);
87
+ if (isIntersecting) addZoomListener(map, router, mapShapes, imageData);
67
88
 
68
89
  return <div className="google-maps" ref={mapRef} />;
69
90
  };
70
91
 
71
- const shouldNotUpdate = (props, nextProps) => {
72
- const [funcs, nextFuncs] = [functions(props), functions(nextProps)];
73
- const noPropChange = isEqual(omit(props, funcs), omit(nextProps, nextFuncs));
74
- const noFuncChange =
75
- funcs.length === nextFuncs.length &&
76
- funcs.every(fn => props[fn].toString() === nextProps[fn].toString());
77
- return noPropChange && noFuncChange;
78
- };
79
-
80
92
  GoogleMaps.propTypes = {
81
- router: PropTypes.object.isRequired,
82
- data: PropTypes.object,
83
- imageData: PropTypes.object,
93
+ mapShapes: PropTypes.array,
94
+ imageData: PropTypes.array,
84
95
  type: PropTypes.string,
85
96
  name: PropTypes.string,
86
97
  modifier: PropTypes.string,
87
98
  elementTitle: PropTypes.string,
88
- entityGroups: PropTypes.array,
89
99
  onMount: PropTypes.func,
90
- onMountProps: PropTypes.object
100
+ onMountProps: PropTypes.object,
101
+ parent: PropTypes.object,
102
+ centerCoordinates: PropTypes.array
91
103
  };
92
104
 
93
105
  GoogleMaps.defaultProps = {
94
- data: {},
95
- imageData: {},
106
+ mapShapes: [],
107
+ imageData: [],
108
+ centerCoordinates: [],
96
109
  type: '',
97
110
  name: '',
98
111
  modifier: '',
99
112
  elementTitle: '',
100
- entityGroups: [],
101
113
  onMount: null,
102
- onMountProps: null
114
+ onMountProps: null,
115
+ parent: {}
103
116
  };
104
117
 
105
- export default React.memo(withRouter(withTitle(GoogleMaps)), shouldNotUpdate);
118
+ export default React.memo(withTitle(GoogleMaps), shouldNotUpdate);
@@ -1,10 +1,10 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { useGetEntitySchemasAsObj } from '@blaze-cms/react-page-builder';
4
- import { setEntityConfigs } from './helpers';
4
+ import { buildShapesConfig } from './helpers';
5
5
  import GoogleMapsRender from './GoogleMapsRender';
6
6
 
7
- const GoogleMapsFactory = ({ entityGroups, ...otherProps }) => {
7
+ const GoogleMapsFactory = ({ entityGroups, parent, ...otherProps }) => {
8
8
  const { data, loading, error } = useGetEntitySchemasAsObj(
9
9
  entityGroups.map(({ entity }) => entity)
10
10
  );
@@ -12,18 +12,25 @@ const GoogleMapsFactory = ({ entityGroups, ...otherProps }) => {
12
12
  if (loading) return '';
13
13
  if (error) return error.message;
14
14
 
15
- const entityConfigs = setEntityConfigs(data, entityGroups);
15
+ const shapeConfigs = buildShapesConfig(data, entityGroups, parent);
16
16
 
17
17
  return (
18
- <GoogleMapsRender entityConfigs={entityConfigs} entityGroups={entityGroups} {...otherProps} />
18
+ <GoogleMapsRender
19
+ shapeConfigs={shapeConfigs}
20
+ entityGroups={entityGroups}
21
+ parent={parent}
22
+ {...otherProps}
23
+ />
19
24
  );
20
25
  };
21
26
 
22
27
  GoogleMapsFactory.propTypes = {
28
+ parent: PropTypes.object,
23
29
  entityGroups: PropTypes.array
24
30
  };
25
31
 
26
32
  GoogleMapsFactory.defaultProps = {
33
+ parent: {},
27
34
  entityGroups: []
28
35
  };
29
36
 
@@ -4,46 +4,47 @@ import isNumber from 'lodash.isnumber';
4
4
  import { useQuery } from '@apollo/client';
5
5
  import { getAction } from '@blaze-cms/react-page-builder';
6
6
  import { useGetImages } from './hooks';
7
- import { buildQuery, getImageIds } from './helpers';
7
+ import { buildQuery, getImageIds, getCenterCoordinates, buildMapShapes } from './helpers';
8
8
  import GoogleMaps from './GoogleMaps';
9
9
 
10
10
  const defaultQuery = getAction('getPublishedPages', 'id');
11
11
 
12
- const GoogleMapsRender = ({ entityConfigs, entityGroups, id, parent, ...otherProps }) => {
13
- const { centerLatitude, centerLongitude, defaultZoom } = otherProps;
14
- const { query, ids } = buildQuery(entityConfigs);
15
- const shouldDisplayMap = [centerLatitude, centerLongitude, defaultZoom].every(value =>
16
- isNumber(value)
17
- );
18
-
19
- const { data = {}, loading, error } = useQuery(query || defaultQuery, {
20
- variables: { where: { id: { _in: ids } } },
21
- skip: !(ids.length && query)
12
+ const GoogleMapsRender = ({ shapeConfigs, entityGroups, id, ...otherProps }) => {
13
+ const { defaultZoom } = otherProps;
14
+ const { query } = buildQuery(shapeConfigs);
15
+ const { data, loading, error } = useQuery(query || defaultQuery, {
16
+ skip: !query
22
17
  });
18
+ const mapShapes = buildMapShapes(shapeConfigs, data);
19
+ const imageIds = getImageIds(mapShapes);
20
+ const {
21
+ data: { getFiles: imageData } = {},
22
+ loading: imagesLoading,
23
+ error: imagesError
24
+ } = useGetImages(imageIds);
25
+ if (loading || imagesLoading) return '';
26
+ if (error || imagesError) return null;
27
+
28
+ const centerCoordinates = getCenterCoordinates(mapShapes, otherProps);
29
+ const shouldDisplayMap = isNumber(defaultZoom) && !!centerCoordinates.length;
23
30
 
24
- const imageIds = getImageIds(entityConfigs, data);
25
- const { data: imageData = {}, loading: _loading, error: _error } = useGetImages(imageIds);
26
-
27
- if (loading || _loading) return '';
28
- if (error || _error) return null;
29
31
  if (!shouldDisplayMap) return null;
30
32
 
31
33
  return (
32
34
  <GoogleMaps
33
35
  key={otherProps.slug}
34
- data={data}
36
+ centerCoordinates={centerCoordinates}
37
+ mapShapes={mapShapes}
35
38
  imageData={imageData}
36
- entityGroups={entityGroups}
37
39
  {...otherProps}
38
40
  />
39
41
  );
40
42
  };
41
43
 
42
44
  GoogleMapsRender.propTypes = {
43
- parent: PropTypes.object.isRequired,
44
45
  entityGroups: PropTypes.array,
45
46
  id: PropTypes.string,
46
- entityConfigs: PropTypes.object,
47
+ shapeConfigs: PropTypes.array,
47
48
  centerLatitude: PropTypes.number,
48
49
  centerLongitude: PropTypes.number,
49
50
  defaultZoom: PropTypes.number
@@ -51,7 +52,7 @@ GoogleMapsRender.propTypes = {
51
52
 
52
53
  GoogleMapsRender.defaultProps = {
53
54
  entityGroups: [],
54
- entityConfigs: {},
55
+ shapeConfigs: [],
55
56
  id: '',
56
57
  centerLatitude: null,
57
58
  centerLongitude: null,
@@ -1,29 +1,10 @@
1
1
  import { ZOOM_CHANGED } from '../../constants';
2
2
  import setShapes from './set-shapes';
3
3
 
4
- const addZoomListener = (map, router, data, imageData, entityGroups = []) => {
4
+ const addZoomListener = (map, router, shapes, imageData) => {
5
5
  if (!map) return;
6
- const shapes = entityGroups.reduce((acc, entityGroup) => {
7
- const {
8
- entity,
9
- shapes: entityShapes,
10
- enableInfoPane = false,
11
- dataSummaries = []
12
- } = entityGroup;
13
- acc.push(
14
- ...entityShapes.map(entityShape => ({
15
- ...entityShape,
16
- entity,
17
- enableInfoPane,
18
- dataSummaries
19
- }))
20
- );
21
- return acc;
22
- }, []);
23
-
24
- setShapes(map, router, shapes, data, imageData);
25
-
26
- map.addListener(ZOOM_CHANGED, () => setShapes(map, router, shapes, data, imageData));
6
+ setShapes(map, router, shapes, imageData);
7
+ map.addListener(ZOOM_CHANGED, () => setShapes(map, router, shapes, imageData));
27
8
  };
28
9
 
29
10
  export default addZoomListener;
@@ -0,0 +1,70 @@
1
+ const getLatLonValues = (keys, data) => {
2
+ if (keys.length === 1) return data[keys];
3
+ const key = keys.shift();
4
+ return getLatLonValues(keys, data[key]);
5
+ };
6
+
7
+ const getLatLong = (latProp, lonProp, shape, data) => {
8
+ const { latitude, longitude } = shape;
9
+
10
+ if (!latProp || !lonProp) return { latitude, longitude };
11
+ const latKeys = latProp.split('.');
12
+ const lonKeys = lonProp.split('.');
13
+ const lat = getLatLonValues(latKeys, data);
14
+ const lon = getLatLonValues(lonKeys, data);
15
+
16
+ return { latitude: lat, longitude: lon };
17
+ };
18
+
19
+ const buildMapShapes = (shapesOptions, shapesData) => {
20
+ if (!shapesData) return [];
21
+ const mapShapes = [];
22
+ shapesOptions.forEach(shape => {
23
+ const { shapeKey, entityOptions, shapeOptions } = shape;
24
+ const { dataSummaries, enableInfoPane } = entityOptions;
25
+ const {
26
+ imageId,
27
+ label,
28
+ markerHeight,
29
+ markerWidth,
30
+ maxZoom,
31
+ minZoom,
32
+ type,
33
+ useAsCenter
34
+ } = shapeOptions;
35
+
36
+ const shapeData = Array.isArray(shapesData[shapeKey])
37
+ ? shapesData[shapeKey]
38
+ : shapesData[shapeKey].results;
39
+ if (!shapeData) return;
40
+ const { latProp, lonProp } = entityOptions;
41
+
42
+ shapeData.forEach(data => {
43
+ const { url } = data;
44
+ const { latitude, longitude } = getLatLong(latProp, lonProp, shapeOptions, data);
45
+
46
+ const formatedShape = {
47
+ latitude,
48
+ longitude,
49
+ dataSummaries,
50
+ enableInfoPane,
51
+ imageId,
52
+ label,
53
+ markerHeight,
54
+ markerWidth,
55
+ maxZoom,
56
+ minZoom,
57
+ type,
58
+ url,
59
+ useAsCenter,
60
+ shapeData: data
61
+ };
62
+
63
+ mapShapes.push(formatedShape);
64
+ });
65
+ });
66
+
67
+ return mapShapes;
68
+ };
69
+
70
+ export default buildMapShapes;
@@ -1,16 +1,31 @@
1
- import { generateQuery, generateQueryString } from '../queries';
1
+ import { generateQuery, generateIdsQuery, generateFiltersQuery } from '../queries';
2
2
 
3
3
  const buildQuery = entityConfigs => {
4
4
  const entityIds = [];
5
- const queryString = Object.keys(entityConfigs).reduce((acc, entityConfig) => {
6
- const { action, ids, propsQuery } = entityConfigs[entityConfig];
7
- entityIds.push(...ids);
8
- const singleItemQuery = action
9
- ? generateQueryString(action, entityConfig, propsQuery.trim() || 'id')
10
- : '';
11
- return `${acc}${singleItemQuery}`;
12
- }, '');
13
- return { query: queryString ? generateQuery(queryString) : '', ids: entityIds };
5
+ const rawQueryStringified = '';
6
+ const queryString = entityConfigs
7
+ .map(entityConfig => {
8
+ const { action, ids, entity, propsQuery, shapeKey, filtersObject } = entityConfig;
9
+ if (!action) return '';
10
+ const formatedEntity = `${entity[0].toUpperCase()}${entity.slice(1)}`;
11
+ const filterQueryKey =
12
+ action.indexOf('Published') !== -1 ? `Published${formatedEntity}` : formatedEntity;
13
+
14
+ entityIds.push(...ids);
15
+ const props = propsQuery.trim() || 'id';
16
+ const singleItemQuery = filtersObject
17
+ ? generateFiltersQuery(shapeKey, props, JSON.stringify(filtersObject), filterQueryKey)
18
+ : generateIdsQuery(shapeKey, props, action, ids);
19
+
20
+ return singleItemQuery;
21
+ })
22
+ .join(' ');
23
+
24
+ return {
25
+ query: queryString ? generateQuery(queryString) : '',
26
+ ids: entityIds,
27
+ rawQueryStringified
28
+ };
14
29
  };
15
30
 
16
31
  export default buildQuery;