[ 'map-editor' => [ 'props' => [ 'defaultCenter' => function ($defaultCenter = [43.836699, 4.360054]) { return $defaultCenter; }, 'defaultZoom' => function ($defaultZoom = 13) { return $defaultZoom; }, 'maxMarkers' => function ($maxMarkers = 50) { return $maxMarkers; }, 'mode' => function ($mode = 'multi') { return $mode; }, 'latitude' => function ($latitude = null) { return $latitude; }, 'longitude' => function ($longitude = null) { return $longitude; }, 'markerIconUrl' => function ($markerIconUrl = null) { // Auto-detect marker icon from page files if ($markerIconUrl === null && $this->model()) { $iconFile = $this->model()->markerIcon()->toFile(); if ($iconFile) { return $iconFile->url(); } } return $markerIconUrl; }, 'markerIconSize' => function ($markerIconSize = 40) { // Auto-detect marker icon size from page if ($this->model() && $this->model()->markerIconSize()->isNotEmpty()) { return (int) $this->model()->markerIconSize()->value(); } return $markerIconSize; } ] ] ], 'api' => [ 'routes' => [ require __DIR__ . '/routes/markers/get.php', require __DIR__ . '/routes/markers/create.php', require __DIR__ . '/routes/markers/update.php', require __DIR__ . '/routes/markers/delete.php', require __DIR__ . '/routes/position/update.php', require __DIR__ . '/routes/image/capture.php', require __DIR__ . '/routes/image/check-flag.php', require __DIR__ . '/routes/image/clear-flag.php', ] ], 'hooks' => [ 'page.update:after' => function ($newPage, $oldPage) { // Mark map page for image regeneration if ($newPage->intendedTemplate()->name() === 'map') { $markerFile = $newPage->root() . '/.regenerate-map-image'; file_put_contents($markerFile, time()); } // If a marker is updated, mark the parent map page for regeneration if ($newPage->intendedTemplate()->name() === 'marker') { $mapPage = $newPage->parent(); if ($mapPage && $mapPage->intendedTemplate()->name() === 'map') { $markerFile = $mapPage->root() . '/.regenerate-map-image'; file_put_contents($markerFile, time()); } } } ] ]);