/******/ (() => { // webpackBootstrap
/******/ 	var __webpack_modules__ = ({

/***/ "./src/localisation-map/block.json":
/*!*****************************************!*\
  !*** ./src/localisation-map/block.json ***!
  \*****************************************/
/***/ ((module) => {

"use strict";
module.exports = /*#__PURE__*/JSON.parse('{"$schema":"https://schemas.wp.org/trunk/block.json","apiVersion":3,"name":"carhop-blocks/localisation-map","version":"0.1.0","title":"Localisation Map","category":"carhop-blocks","icon":"smiley","description":"Example block scaffolded with Create Block tool.","example":{},"supports":{"html":false},"textdomain":"localisation-map","editorScript":"file:./index.js","editorStyle":"file:./index.css","style":"file:./style-index.css","viewScript":"file:./view.js","render":"file:./render.php"}');

/***/ }),

/***/ "./src/localisation-map/edit.js":
/*!**************************************!*\
  !*** ./src/localisation-map/edit.js ***!
  \**************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ Edit)
/* harmony export */ });
/* harmony import */ var _wordpress_server_side_render__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/server-side-render */ "@wordpress/server-side-render");
/* harmony import */ var _wordpress_server_side_render__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_server_side_render__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _wordpress_block_editor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/block-editor */ "@wordpress/block-editor");
/* harmony import */ var _wordpress_block_editor__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__);



function Edit(props) {
  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("div", {
    ...(0,_wordpress_block_editor__WEBPACK_IMPORTED_MODULE_1__.useBlockProps)(),
    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)((_wordpress_server_side_render__WEBPACK_IMPORTED_MODULE_0___default()), {
      block: "carhop-blocks/localisation-map",
      attributes: props.attributes
    })
  });
}

/***/ }),

/***/ "./src/localisation-map/index.js":
/*!***************************************!*\
  !*** ./src/localisation-map/index.js ***!
  \***************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _wordpress_blocks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @wordpress/blocks */ "@wordpress/blocks");
/* harmony import */ var _wordpress_blocks__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_blocks__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./style.scss */ "./src/localisation-map/style.scss");
/* harmony import */ var _edit__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./edit */ "./src/localisation-map/edit.js");
/* harmony import */ var _block_json__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./block.json */ "./src/localisation-map/block.json");
/* harmony import */ var _view_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./view.js */ "./src/localisation-map/view.js");
/* harmony import */ var _view_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_view_js__WEBPACK_IMPORTED_MODULE_4__);





// Import the view script to load map handling on the backend

(0,_wordpress_blocks__WEBPACK_IMPORTED_MODULE_0__.registerBlockType)(_block_json__WEBPACK_IMPORTED_MODULE_3__.name, {
  edit: _edit__WEBPACK_IMPORTED_MODULE_2__["default"]
});

/***/ }),

/***/ "./src/localisation-map/style.scss":
/*!*****************************************!*\
  !*** ./src/localisation-map/style.scss ***!
  \*****************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

"use strict";
__webpack_require__.r(__webpack_exports__);
// extracted by mini-css-extract-plugin


/***/ }),

/***/ "./src/localisation-map/view.js":
/*!**************************************!*\
  !*** ./src/localisation-map/view.js ***!
  \**************************************/
/***/ (() => {

/**
 * Google Maps initialization for Carhop Localisation Map block
 */

// Configuration
const GOOGLE_MAPS_CONFIG = {
  apiKey: "AIzaSyBs-owKPe4qiYLb2baCTAptLeNNJX7bTQk",
  center: {
    lat: 50.61036915572659,
    lng: 4.148529499893204
  },
  zoom: 15,
  marker: {
    lat: 50.61036915386491,
    lng: 4.151615298397132,
    // Position originale du pin
    title: "Carhop",
    address: "Av. de la Houssière 80, 7090 Braine-le-Comte",
    placeId: "ChIJ41pZLUq1w0cRjXw8zlHnvXI",
    // Place ID Google Maps (à remplacer par le vrai)

    color: "green"
  },
  styles: [{
    featureType: "administrative",
    elementType: "geometry",
    stylers: [{
      color: "#136f63"
    }]
  }, {
    featureType: "administrative",
    elementType: "labels.text.fill",
    stylers: [{
      color: "#ffffff"
    }, {
      gamma: "1.00"
    }, {
      lightness: "0"
    }, {
      saturation: "0"
    }, {
      visibility: "on"
    }, {
      weight: "1.5"
    }]
  }, {
    featureType: "administrative",
    elementType: "labels.text.stroke",
    stylers: [{
      color: "#19464b"
    }, {
      weight: "2"
    }]
  }, {
    featureType: "administrative.land_parcel",
    elementType: "geometry",
    stylers: [{
      color: "#19464b"
    }]
  }, {
    featureType: "landscape",
    elementType: "all",
    stylers: [{
      color: "#19464b"
    }]
  }, {
    featureType: "landscape",
    elementType: "geometry",
    stylers: [{
      color: "#136f63"
    }]
  }, {
    featureType: "landscape.man_made",
    elementType: "geometry",
    stylers: [{
      color: "#136f63"
    }]
  }, {
    featureType: "landscape.natural",
    elementType: "labels.text.fill",
    stylers: [{
      color: "#ffffff"
    }, {
      visibility: "on"
    }]
  }, {
    featureType: "landscape.natural.landcover",
    elementType: "geometry",
    stylers: [{
      color: "#136f63"
    }]
  }, {
    featureType: "landscape.natural.terrain",
    elementType: "geometry",
    stylers: [{
      color: "#136f63"
    }]
  }, {
    featureType: "poi",
    elementType: "all",
    stylers: [{
      visibility: "off"
    }]
  }, {
    featureType: "poi.attraction",
    elementType: "all",
    stylers: [{
      visibility: "off"
    }]
  }, {
    featureType: "poi.business",
    elementType: "all",
    stylers: [{
      visibility: "off"
    }]
  }, {
    featureType: "poi.government",
    elementType: "all",
    stylers: [{
      visibility: "off"
    }]
  }, {
    featureType: "poi.park",
    elementType: "all",
    stylers: [{
      visibility: "off"
    }]
  }, {
    featureType: "poi.school",
    elementType: "all",
    stylers: [{
      visibility: "off"
    }]
  }, {
    featureType: "poi.medical",
    elementType: "all",
    stylers: [{
      visibility: "off"
    }]
  }, {
    featureType: "poi.place_of_worship",
    elementType: "all",
    stylers: [{
      visibility: "off"
    }]
  }, {
    featureType: "poi.sports_complex",
    elementType: "all",
    stylers: [{
      visibility: "off"
    }]
  }, {
    featureType: "road.highway",
    elementType: "geometry.fill",
    stylers: [{
      color: "#136f63"
    }, {
      lightness: "-40"
    }]
  }, {
    featureType: "road.highway",
    elementType: "geometry.stroke",
    stylers: [{
      visibility: "off"
    }]
  }, {
    featureType: "road.highway",
    elementType: "labels",
    stylers: [{
      visibility: "off"
    }]
  }, {
    featureType: "road.highway",
    elementType: "labels.text.fill",
    stylers: [{
      color: "#ffffff"
    }]
  }, {
    featureType: "road.highway",
    elementType: "labels.text.stroke",
    stylers: [{
      color: "#0a1f14"
    }]
  }, {
    featureType: "road.arterial",
    elementType: "geometry",
    stylers: [{
      color: "#136f63"
    }, {
      lightness: 30
    }]
  }, {
    featureType: "road.arterial",
    elementType: "geometry.fill",
    stylers: [{
      color: "#136f63"
    }]
  }, {
    featureType: "road.arterial",
    elementType: "labels",
    stylers: [{
      visibility: "off"
    }]
  }, {
    featureType: "road.arterial",
    elementType: "labels.text.fill",
    stylers: [{
      color: "#ffffff"
    }]
  }, {
    featureType: "road.arterial",
    elementType: "labels.text.stroke",
    stylers: [{
      color: "#2c2c2c"
    }]
  }, {
    featureType: "road.local",
    elementType: "geometry",
    stylers: [{
      color: "#136F63"
    }, {
      lightness: -20
    }]
  }, {
    featureType: "road.local",
    elementType: "labels",
    stylers: [{
      visibility: "simplified"
    }]
  }, {
    featureType: "road.local",
    elementType: "labels.text.fill",
    stylers: [{
      color: "#ffffff"
    }]
  }, {
    featureType: "transit",
    elementType: "geometry",
    stylers: [{
      color: "#136F63"
    }, {
      lightness: -20
    }]
  },
  // Grandes masses d'eau (océans, lacs, grands fleuves)
  {
    featureType: "water",
    elementType: "geometry",
    stylers: [{
      color: "#136F63"
    }, {
      lightness: 18
    }, {
      saturation: -50
    }, {
      visibility: "simplified" // Simplifie l'affichage
    }]
  }, {
    featureType: "water",
    elementType: "geometry.fill",
    stylers: [{
      visibility: "simplified"
    }]
  },
  // Masquer les labels des petites rivières
  {
    featureType: "water",
    elementType: "labels",
    stylers: [{
      visibility: "off"
    }]
  }]
};

/**
 * Initialize Google Maps for all map containers on the page
 */
function initializeCarhopMaps() {
  // Find all map containers
  const mapContainers = document.querySelectorAll(".carhop-localisation-map");
  mapContainers.forEach(container => {
    const mapElement = container.querySelector(".map-container");
    if (!mapElement || mapElement.dataset.initialized === "true") {
      return;
    }

    // Create map
    const map = new google.maps.Map(mapElement, {
      zoom: GOOGLE_MAPS_CONFIG.zoom,
      center: new google.maps.LatLng(GOOGLE_MAPS_CONFIG.center.lat, GOOGLE_MAPS_CONFIG.center.lng),
      styles: GOOGLE_MAPS_CONFIG.styles,
      // Contrôles de zoom
      zoomControl: true,
      zoomControlOptions: {
        position: google.maps.ControlPosition.RIGHT_TOP,
        style: google.maps.ZoomControlStyle.DEFAULT
      },
      // Autres contrôles utiles
      mapTypeControl: false,
      // Masquer le sélecteur de type de carte
      streetViewControl: false,
      // Contrôle Street View
      fullscreenControl: false // Bouton plein écran
    });
    // Chemin vers votre pin personnalisé avec fallback
    const customPinPath = "/wp-content/plugins/carhop-blocks/blocks/localisation-map/src/localisation-map/carhop-pin.png";

    // Add marker with custom color
    const marker = new google.maps.Marker({
      position: new google.maps.LatLng(GOOGLE_MAPS_CONFIG.marker.lat, GOOGLE_MAPS_CONFIG.marker.lng),
      map: map,
      title: GOOGLE_MAPS_CONFIG.marker.title,
      icon: {
        url: customPinPath,
        scaledSize: new google.maps.Size(40, 40),
        // Taille du pin
        origin: new google.maps.Point(0, 0),
        anchor: new google.maps.Point(20, 40) // Point d'ancrage (centre bas)
      }
    });

    // Add click event to open Google Maps place
    marker.addListener("click", function () {
      const placeId = GOOGLE_MAPS_CONFIG.marker.placeId;

      // URL pour ouvrir la fiche Google Maps complète
      let googleMapsUrl;
      if (placeId && placeId !== "ChIJXXXXXXXXXXXXXXXXXXXX") {
        // Utiliser le Place ID pour ouvrir la fiche complète
        googleMapsUrl = `https://www.google.com/maps/place/?q=place_id:${placeId}`;
      } else {
        // Fallback avec l'adresse
        const address = encodeURIComponent(GOOGLE_MAPS_CONFIG.marker.address);
        googleMapsUrl = `https://www.google.com/maps/search/?api=1&query=${address}`;
      }

      // Ouvrir dans un nouvel onglet
      window.open(googleMapsUrl, "_blank");
    });

    // Mark as initialized
    mapElement.dataset.initialized = "true";
  });
}

/**
 * Load Google Maps API and initialize maps
 */
function loadGoogleMapsAPI() {
  // Check if Google Maps is already loaded
  if (typeof google !== "undefined" && google.maps) {
    initializeCarhopMaps();
    return;
  }

  // Check if script is already loading
  if (window.carhopMapsLoading) {
    window.carhopMapsCallbacks = window.carhopMapsCallbacks || [];
    window.carhopMapsCallbacks.push(initializeCarhopMaps);
    return;
  }

  // Mark as loading
  window.carhopMapsLoading = true;
  window.carhopMapsCallbacks = [initializeCarhopMaps];

  // Create callback function
  window.carhopMapsReady = function () {
    window.carhopMapsLoading = false;
    if (window.carhopMapsCallbacks) {
      window.carhopMapsCallbacks.forEach(callback => callback());
      window.carhopMapsCallbacks = [];
    }
  };

  // Load Google Maps API
  const script = document.createElement("script");
  script.src = `https://maps.googleapis.com/maps/api/js?key=${GOOGLE_MAPS_CONFIG.apiKey}&callback=carhopMapsReady`;
  script.async = true;
  script.defer = true;
  document.head.appendChild(script);
}

// Initialize when DOM is ready
if (document.readyState === "loading") {
  document.addEventListener("DOMContentLoaded", loadGoogleMapsAPI);
} else {
  loadGoogleMapsAPI();
}

// Also initialize on window load as fallback
window.addEventListener("load", loadGoogleMapsAPI);

/***/ }),

/***/ "@wordpress/block-editor":
/*!*************************************!*\
  !*** external ["wp","blockEditor"] ***!
  \*************************************/
/***/ ((module) => {

"use strict";
module.exports = window["wp"]["blockEditor"];

/***/ }),

/***/ "@wordpress/blocks":
/*!********************************!*\
  !*** external ["wp","blocks"] ***!
  \********************************/
/***/ ((module) => {

"use strict";
module.exports = window["wp"]["blocks"];

/***/ }),

/***/ "@wordpress/server-side-render":
/*!******************************************!*\
  !*** external ["wp","serverSideRender"] ***!
  \******************************************/
/***/ ((module) => {

"use strict";
module.exports = window["wp"]["serverSideRender"];

/***/ }),

/***/ "react/jsx-runtime":
/*!**********************************!*\
  !*** external "ReactJSXRuntime" ***!
  \**********************************/
/***/ ((module) => {

"use strict";
module.exports = window["ReactJSXRuntime"];

/***/ })

/******/ 	});
/************************************************************************/
/******/ 	// The module cache
/******/ 	var __webpack_module_cache__ = {};
/******/ 	
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/ 		// Check if module is in cache
/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
/******/ 		if (cachedModule !== undefined) {
/******/ 			return cachedModule.exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = __webpack_module_cache__[moduleId] = {
/******/ 			// no module.id needed
/******/ 			// no module.loaded needed
/******/ 			exports: {}
/******/ 		};
/******/ 	
/******/ 		// Execute the module function
/******/ 		__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
/******/ 	
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/ 	
/******/ 	// expose the modules object (__webpack_modules__)
/******/ 	__webpack_require__.m = __webpack_modules__;
/******/ 	
/************************************************************************/
/******/ 	/* webpack/runtime/chunk loaded */
/******/ 	(() => {
/******/ 		var deferred = [];
/******/ 		__webpack_require__.O = (result, chunkIds, fn, priority) => {
/******/ 			if(chunkIds) {
/******/ 				priority = priority || 0;
/******/ 				for(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];
/******/ 				deferred[i] = [chunkIds, fn, priority];
/******/ 				return;
/******/ 			}
/******/ 			var notFulfilled = Infinity;
/******/ 			for (var i = 0; i < deferred.length; i++) {
/******/ 				var [chunkIds, fn, priority] = deferred[i];
/******/ 				var fulfilled = true;
/******/ 				for (var j = 0; j < chunkIds.length; j++) {
/******/ 					if ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {
/******/ 						chunkIds.splice(j--, 1);
/******/ 					} else {
/******/ 						fulfilled = false;
/******/ 						if(priority < notFulfilled) notFulfilled = priority;
/******/ 					}
/******/ 				}
/******/ 				if(fulfilled) {
/******/ 					deferred.splice(i--, 1)
/******/ 					var r = fn();
/******/ 					if (r !== undefined) result = r;
/******/ 				}
/******/ 			}
/******/ 			return result;
/******/ 		};
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/compat get default export */
/******/ 	(() => {
/******/ 		// getDefaultExport function for compatibility with non-harmony modules
/******/ 		__webpack_require__.n = (module) => {
/******/ 			var getter = module && module.__esModule ?
/******/ 				() => (module['default']) :
/******/ 				() => (module);
/******/ 			__webpack_require__.d(getter, { a: getter });
/******/ 			return getter;
/******/ 		};
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/define property getters */
/******/ 	(() => {
/******/ 		// define getter functions for harmony exports
/******/ 		__webpack_require__.d = (exports, definition) => {
/******/ 			for(var key in definition) {
/******/ 				if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ 					Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ 				}
/******/ 			}
/******/ 		};
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/hasOwnProperty shorthand */
/******/ 	(() => {
/******/ 		__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/make namespace object */
/******/ 	(() => {
/******/ 		// define __esModule on exports
/******/ 		__webpack_require__.r = (exports) => {
/******/ 			if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ 				Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ 			}
/******/ 			Object.defineProperty(exports, '__esModule', { value: true });
/******/ 		};
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/jsonp chunk loading */
/******/ 	(() => {
/******/ 		// no baseURI
/******/ 		
/******/ 		// object to store loaded and loading chunks
/******/ 		// undefined = chunk not loaded, null = chunk preloaded/prefetched
/******/ 		// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded
/******/ 		var installedChunks = {
/******/ 			"localisation-map/index": 0,
/******/ 			"localisation-map/style-index": 0
/******/ 		};
/******/ 		
/******/ 		// no chunk on demand loading
/******/ 		
/******/ 		// no prefetching
/******/ 		
/******/ 		// no preloaded
/******/ 		
/******/ 		// no HMR
/******/ 		
/******/ 		// no HMR manifest
/******/ 		
/******/ 		__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);
/******/ 		
/******/ 		// install a JSONP callback for chunk loading
/******/ 		var webpackJsonpCallback = (parentChunkLoadingFunction, data) => {
/******/ 			var [chunkIds, moreModules, runtime] = data;
/******/ 			// add "moreModules" to the modules object,
/******/ 			// then flag all "chunkIds" as loaded and fire callback
/******/ 			var moduleId, chunkId, i = 0;
/******/ 			if(chunkIds.some((id) => (installedChunks[id] !== 0))) {
/******/ 				for(moduleId in moreModules) {
/******/ 					if(__webpack_require__.o(moreModules, moduleId)) {
/******/ 						__webpack_require__.m[moduleId] = moreModules[moduleId];
/******/ 					}
/******/ 				}
/******/ 				if(runtime) var result = runtime(__webpack_require__);
/******/ 			}
/******/ 			if(parentChunkLoadingFunction) parentChunkLoadingFunction(data);
/******/ 			for(;i < chunkIds.length; i++) {
/******/ 				chunkId = chunkIds[i];
/******/ 				if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {
/******/ 					installedChunks[chunkId][0]();
/******/ 				}
/******/ 				installedChunks[chunkId] = 0;
/******/ 			}
/******/ 			return __webpack_require__.O(result);
/******/ 		}
/******/ 		
/******/ 		var chunkLoadingGlobal = globalThis["webpackChunklocalisation_map"] = globalThis["webpackChunklocalisation_map"] || [];
/******/ 		chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));
/******/ 		chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));
/******/ 	})();
/******/ 	
/************************************************************************/
/******/ 	
/******/ 	// startup
/******/ 	// Load entry module and return exports
/******/ 	// This entry module depends on other loaded chunks and execution need to be delayed
/******/ 	var __webpack_exports__ = __webpack_require__.O(undefined, ["localisation-map/style-index"], () => (__webpack_require__("./src/localisation-map/index.js")))
/******/ 	__webpack_exports__ = __webpack_require__.O(__webpack_exports__);
/******/ 	
/******/ })()
;
//# sourceMappingURL=index.js.map