@gui-chat-plugin/google-map 0.3.0 → 0.3.2

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.
@@ -0,0 +1,275 @@
1
+ //#region src/core/definition.ts
2
+ var e = "mapControl", t = {
3
+ type: "function",
4
+ name: e,
5
+ description: "Control a Google Map interactively. Supports showing locations, adding markers, searching for places, and getting directions.\n\nAvailable actions:\n- showLocation: Display a location on the map (default action)\n- setCenter: Change the map center without markers\n- setZoom: Change the zoom level (1-21)\n- addMarker: Add a marker to the map\n- clearMarkers: Remove all markers from the map\n- findPlaces: Search for nearby places using Google Places API\n- getDirections: Get directions between two locations",
6
+ parameters: {
7
+ type: "object",
8
+ properties: {
9
+ action: {
10
+ type: "string",
11
+ enum: [
12
+ "showLocation",
13
+ "setCenter",
14
+ "setZoom",
15
+ "addMarker",
16
+ "clearMarkers",
17
+ "findPlaces",
18
+ "getDirections"
19
+ ],
20
+ description: "The action to perform. Defaults to 'showLocation' if not specified."
21
+ },
22
+ location: {
23
+ type: "string",
24
+ description: "Location name, address, or place (e.g., 'Tokyo Station', 'Paris, France'). Used with showLocation, setCenter, addMarker actions."
25
+ },
26
+ lat: {
27
+ type: "number",
28
+ description: "Latitude coordinate. Can be used instead of location for precise positioning."
29
+ },
30
+ lng: {
31
+ type: "number",
32
+ description: "Longitude coordinate. Can be used instead of location for precise positioning."
33
+ },
34
+ zoom: {
35
+ type: "integer",
36
+ minimum: 1,
37
+ maximum: 21,
38
+ description: "Zoom level for setZoom action (1=world, 15=streets, 21=buildings). Default is 15."
39
+ },
40
+ searchQuery: {
41
+ type: "string",
42
+ description: "Text search query for findPlaces action (e.g., 'ramen', 'coffee shop')."
43
+ },
44
+ placeType: {
45
+ type: "string",
46
+ enum: /* @__PURE__ */ "accounting.airport.amusement_park.aquarium.art_gallery.atm.bakery.bank.bar.beauty_salon.bicycle_store.book_store.bowling_alley.bus_station.cafe.campground.car_dealer.car_rental.car_repair.car_wash.casino.cemetery.church.city_hall.clothing_store.convenience_store.courthouse.dentist.department_store.doctor.drugstore.electrician.electronics_store.embassy.fire_station.florist.funeral_home.furniture_store.gas_station.gym.hair_care.hardware_store.hindu_temple.home_goods_store.hospital.insurance_agency.jewelry_store.laundry.lawyer.library.light_rail_station.liquor_store.local_government_office.locksmith.lodging.meal_delivery.meal_takeaway.mosque.movie_rental.movie_theater.moving_company.museum.night_club.painter.park.parking.pet_store.pharmacy.physiotherapist.plumber.police.post_office.primary_school.real_estate_agency.restaurant.roofing_contractor.rv_park.school.secondary_school.shoe_store.shopping_mall.spa.stadium.storage.store.subway_station.supermarket.synagogue.taxi_stand.tourist_attraction.train_station.transit_station.travel_agency.university.veterinary_care.zoo".split("."),
47
+ description: "Type of place to search for with findPlaces action. Use with or instead of searchQuery."
48
+ },
49
+ origin: {
50
+ type: "string",
51
+ description: "Starting point for getDirections action. Can be a place name or address."
52
+ },
53
+ destination: {
54
+ type: "string",
55
+ description: "End point for getDirections action. Can be a place name or address."
56
+ },
57
+ travelMode: {
58
+ type: "string",
59
+ enum: [
60
+ "DRIVING",
61
+ "WALKING",
62
+ "BICYCLING",
63
+ "TRANSIT"
64
+ ],
65
+ description: "Travel mode for getDirections action. Defaults to DRIVING."
66
+ },
67
+ markerTitle: {
68
+ type: "string",
69
+ description: "Title for the marker (shown on hover) when using addMarker."
70
+ },
71
+ markerLabel: {
72
+ type: "string",
73
+ description: "Single character label displayed on the marker when using addMarker."
74
+ }
75
+ },
76
+ required: []
77
+ }
78
+ }, n = "showLocation", r = 15, i = "DRIVING", a = () => `marker_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`, o = (e) => Number.isInteger(e) && e >= 1 && e <= 21, s = (e) => !!(e.location || e.lat !== void 0 && e.lng !== void 0), c = (e) => e.lat !== void 0 && e.lng !== void 0 ? {
79
+ lat: e.lat,
80
+ lng: e.lng
81
+ } : e.location, l = async (e, t) => {
82
+ let l = t.action || n;
83
+ switch (l) {
84
+ case "showLocation":
85
+ case "setCenter":
86
+ case "addMarker": {
87
+ if (!s(t)) throw Error(`${l} requires either 'location' or both 'lat' and 'lng' parameters`);
88
+ let e = c(t), n = {
89
+ action: l,
90
+ location: e
91
+ };
92
+ l === "addMarker" && (n.marker = {
93
+ id: a(),
94
+ position: typeof e == "string" ? {
95
+ lat: 0,
96
+ lng: 0
97
+ } : e,
98
+ title: t.markerTitle,
99
+ label: t.markerLabel?.charAt(0)
100
+ });
101
+ let r = typeof e == "string" ? e : `${e?.lat}, ${e?.lng}`;
102
+ return {
103
+ message: {
104
+ showLocation: `Showing ${r} on the map`,
105
+ setCenter: `Centering map on ${r}`,
106
+ addMarker: `Adding marker at ${r}`
107
+ }[l],
108
+ data: n
109
+ };
110
+ }
111
+ case "setZoom": {
112
+ let e = t.zoom ?? r;
113
+ if (!o(e)) throw Error("Zoom level must be an integer between 1 and 21");
114
+ return {
115
+ message: `Setting zoom level to ${e}`,
116
+ data: {
117
+ action: l,
118
+ zoom: e
119
+ }
120
+ };
121
+ }
122
+ case "clearMarkers": return {
123
+ message: "Clearing all markers from the map",
124
+ data: { action: l }
125
+ };
126
+ case "findPlaces":
127
+ if (!t.searchQuery && !t.placeType) throw Error("findPlaces requires either 'searchQuery' or 'placeType' parameter");
128
+ return {
129
+ message: `Searching for ${t.searchQuery ? `"${t.searchQuery}"` : t.placeType} nearby`,
130
+ data: {
131
+ action: l,
132
+ searchQuery: t.searchQuery,
133
+ placeType: t.placeType
134
+ }
135
+ };
136
+ case "getDirections": {
137
+ if (!t.origin || !t.destination) throw Error("getDirections requires both 'origin' and 'destination' parameters");
138
+ let e = t.travelMode || i;
139
+ return {
140
+ message: `Getting ${e.toLowerCase()} directions from ${t.origin} to ${t.destination}`,
141
+ data: {
142
+ action: l,
143
+ origin: t.origin,
144
+ destination: t.destination,
145
+ travelMode: e
146
+ }
147
+ };
148
+ }
149
+ default: throw Error(`Unknown action: ${l}`);
150
+ }
151
+ }, u = "You have access to the mapControl tool for interactive map operations.\n\n## Basic Usage\n\nShow a location:\n```\nmapControl(location: \"Tokyo Station\")\nmapControl(action: \"showLocation\", location: \"Paris, France\")\n```\n\n## Available Actions\n\n### showLocation (default)\nDisplay a location on the map with a marker.\n- Use `location` for place names/addresses\n- Or use `lat` and `lng` for coordinates\n\n### setCenter\nMove the map center without adding markers.\n```\nmapControl(action: \"setCenter\", location: \"Shibuya, Tokyo\")\n```\n\n### setZoom\nChange the zoom level (1-21).\n- 1-5: Continent/Country level\n- 6-10: Region/City level\n- 11-15: Street level\n- 16-21: Building level\n```\nmapControl(action: \"setZoom\", zoom: 12)\n```\n\n### addMarker\nAdd a marker at a location (without centering).\n```\nmapControl(action: \"addMarker\", location: \"Tokyo Tower\", markerTitle: \"Tokyo Tower\", markerLabel: \"T\")\n```\n\n### clearMarkers\nRemove all markers from the map.\n```\nmapControl(action: \"clearMarkers\")\n```\n\n### findPlaces\nSearch for nearby places using Google Places API.\n```\nmapControl(action: \"findPlaces\", searchQuery: \"ramen\")\nmapControl(action: \"findPlaces\", placeType: \"restaurant\")\nmapControl(action: \"findPlaces\", searchQuery: \"coffee\", placeType: \"cafe\")\n```\n\n### getDirections\nGet directions between two locations.\n```\nmapControl(action: \"getDirections\", origin: \"Tokyo Station\", destination: \"Tokyo Tower\", travelMode: \"WALKING\")\n```\nTravel modes: DRIVING, WALKING, BICYCLING, TRANSIT\n\n## Response Data\n\nThe map will return JSON data with the results of each action, including:\n- Current center coordinates and zoom level\n- Markers on the map\n- Place search results with ratings and addresses\n- Route information with distance and duration", d = {
152
+ toolDefinition: t,
153
+ execute: l,
154
+ generatingMessage: "Loading map...",
155
+ isEnabled: (e) => !!e?.googleMapKey,
156
+ backends: ["map"],
157
+ systemPrompt: u
158
+ }, f = l, p = [
159
+ {
160
+ name: "Show Tokyo Station",
161
+ args: {
162
+ action: "showLocation",
163
+ location: "Tokyo Station, Japan"
164
+ }
165
+ },
166
+ {
167
+ name: "Show Eiffel Tower",
168
+ args: {
169
+ action: "showLocation",
170
+ location: "Eiffel Tower, Paris, France"
171
+ }
172
+ },
173
+ {
174
+ name: "Show coordinates",
175
+ args: {
176
+ action: "showLocation",
177
+ lat: 40.7128,
178
+ lng: -74.006
179
+ }
180
+ },
181
+ {
182
+ name: "Center on Shibuya",
183
+ args: {
184
+ action: "setCenter",
185
+ location: "Shibuya, Tokyo"
186
+ }
187
+ },
188
+ {
189
+ name: "Zoom to street level",
190
+ args: {
191
+ action: "setZoom",
192
+ zoom: 17
193
+ }
194
+ },
195
+ {
196
+ name: "Zoom to city level",
197
+ args: {
198
+ action: "setZoom",
199
+ zoom: 12
200
+ }
201
+ },
202
+ {
203
+ name: "Add marker at Tokyo Tower",
204
+ args: {
205
+ action: "addMarker",
206
+ location: "Tokyo Tower, Japan",
207
+ markerTitle: "Tokyo Tower",
208
+ markerLabel: "T"
209
+ }
210
+ },
211
+ {
212
+ name: "Add marker with coordinates",
213
+ args: {
214
+ action: "addMarker",
215
+ lat: 35.6586,
216
+ lng: 139.7454,
217
+ markerTitle: "Custom Location"
218
+ }
219
+ },
220
+ {
221
+ name: "Clear all markers",
222
+ args: { action: "clearMarkers" }
223
+ },
224
+ {
225
+ name: "Find nearby ramen",
226
+ args: {
227
+ action: "findPlaces",
228
+ searchQuery: "ramen"
229
+ }
230
+ },
231
+ {
232
+ name: "Find restaurants",
233
+ args: {
234
+ action: "findPlaces",
235
+ placeType: "restaurant"
236
+ }
237
+ },
238
+ {
239
+ name: "Find coffee shops",
240
+ args: {
241
+ action: "findPlaces",
242
+ searchQuery: "coffee",
243
+ placeType: "cafe"
244
+ }
245
+ },
246
+ {
247
+ name: "Directions: Tokyo Station to Shibuya",
248
+ args: {
249
+ action: "getDirections",
250
+ origin: "Tokyo Station",
251
+ destination: "Shibuya Station",
252
+ travelMode: "TRANSIT"
253
+ }
254
+ },
255
+ {
256
+ name: "Walking directions",
257
+ args: {
258
+ action: "getDirections",
259
+ origin: "Shinjuku Station",
260
+ destination: "Tokyo Metropolitan Government Building",
261
+ travelMode: "WALKING"
262
+ }
263
+ },
264
+ {
265
+ name: "Driving directions",
266
+ args: {
267
+ action: "getDirections",
268
+ origin: "Narita Airport",
269
+ destination: "Tokyo Station",
270
+ travelMode: "DRIVING"
271
+ }
272
+ }
273
+ ];
274
+ //#endregion
275
+ export { u as a, d as i, f as n, t as o, l as r, e as s, p as t };
@@ -0,0 +1,76 @@
1
+ var e=`mapControl`,t={type:`function`,name:e,description:`Control a Google Map interactively. Supports showing locations, adding markers, searching for places, and getting directions.
2
+
3
+ Available actions:
4
+ - showLocation: Display a location on the map (default action)
5
+ - setCenter: Change the map center without markers
6
+ - setZoom: Change the zoom level (1-21)
7
+ - addMarker: Add a marker to the map
8
+ - clearMarkers: Remove all markers from the map
9
+ - findPlaces: Search for nearby places using Google Places API
10
+ - getDirections: Get directions between two locations`,parameters:{type:`object`,properties:{action:{type:`string`,enum:[`showLocation`,`setCenter`,`setZoom`,`addMarker`,`clearMarkers`,`findPlaces`,`getDirections`],description:`The action to perform. Defaults to 'showLocation' if not specified.`},location:{type:`string`,description:`Location name, address, or place (e.g., 'Tokyo Station', 'Paris, France'). Used with showLocation, setCenter, addMarker actions.`},lat:{type:`number`,description:`Latitude coordinate. Can be used instead of location for precise positioning.`},lng:{type:`number`,description:`Longitude coordinate. Can be used instead of location for precise positioning.`},zoom:{type:`integer`,minimum:1,maximum:21,description:`Zoom level for setZoom action (1=world, 15=streets, 21=buildings). Default is 15.`},searchQuery:{type:`string`,description:`Text search query for findPlaces action (e.g., 'ramen', 'coffee shop').`},placeType:{type:`string`,enum:`accounting.airport.amusement_park.aquarium.art_gallery.atm.bakery.bank.bar.beauty_salon.bicycle_store.book_store.bowling_alley.bus_station.cafe.campground.car_dealer.car_rental.car_repair.car_wash.casino.cemetery.church.city_hall.clothing_store.convenience_store.courthouse.dentist.department_store.doctor.drugstore.electrician.electronics_store.embassy.fire_station.florist.funeral_home.furniture_store.gas_station.gym.hair_care.hardware_store.hindu_temple.home_goods_store.hospital.insurance_agency.jewelry_store.laundry.lawyer.library.light_rail_station.liquor_store.local_government_office.locksmith.lodging.meal_delivery.meal_takeaway.mosque.movie_rental.movie_theater.moving_company.museum.night_club.painter.park.parking.pet_store.pharmacy.physiotherapist.plumber.police.post_office.primary_school.real_estate_agency.restaurant.roofing_contractor.rv_park.school.secondary_school.shoe_store.shopping_mall.spa.stadium.storage.store.subway_station.supermarket.synagogue.taxi_stand.tourist_attraction.train_station.transit_station.travel_agency.university.veterinary_care.zoo`.split(`.`),description:`Type of place to search for with findPlaces action. Use with or instead of searchQuery.`},origin:{type:`string`,description:`Starting point for getDirections action. Can be a place name or address.`},destination:{type:`string`,description:`End point for getDirections action. Can be a place name or address.`},travelMode:{type:`string`,enum:[`DRIVING`,`WALKING`,`BICYCLING`,`TRANSIT`],description:`Travel mode for getDirections action. Defaults to DRIVING.`},markerTitle:{type:`string`,description:`Title for the marker (shown on hover) when using addMarker.`},markerLabel:{type:`string`,description:`Single character label displayed on the marker when using addMarker.`}},required:[]}},n=`showLocation`,r=15,i=`DRIVING`,a=()=>`marker_${Date.now()}_${Math.random().toString(36).substring(2,9)}`,o=e=>Number.isInteger(e)&&e>=1&&e<=21,s=e=>!!(e.location||e.lat!==void 0&&e.lng!==void 0),c=e=>e.lat!==void 0&&e.lng!==void 0?{lat:e.lat,lng:e.lng}:e.location,l=async(e,t)=>{let l=t.action||n;switch(l){case`showLocation`:case`setCenter`:case`addMarker`:{if(!s(t))throw Error(`${l} requires either 'location' or both 'lat' and 'lng' parameters`);let e=c(t),n={action:l,location:e};l===`addMarker`&&(n.marker={id:a(),position:typeof e==`string`?{lat:0,lng:0}:e,title:t.markerTitle,label:t.markerLabel?.charAt(0)});let r=typeof e==`string`?e:`${e?.lat}, ${e?.lng}`;return{message:{showLocation:`Showing ${r} on the map`,setCenter:`Centering map on ${r}`,addMarker:`Adding marker at ${r}`}[l],data:n}}case`setZoom`:{let e=t.zoom??r;if(!o(e))throw Error(`Zoom level must be an integer between 1 and 21`);return{message:`Setting zoom level to ${e}`,data:{action:l,zoom:e}}}case`clearMarkers`:return{message:`Clearing all markers from the map`,data:{action:l}};case`findPlaces`:if(!t.searchQuery&&!t.placeType)throw Error(`findPlaces requires either 'searchQuery' or 'placeType' parameter`);return{message:`Searching for ${t.searchQuery?`"${t.searchQuery}"`:t.placeType} nearby`,data:{action:l,searchQuery:t.searchQuery,placeType:t.placeType}};case`getDirections`:{if(!t.origin||!t.destination)throw Error(`getDirections requires both 'origin' and 'destination' parameters`);let e=t.travelMode||i;return{message:`Getting ${e.toLowerCase()} directions from ${t.origin} to ${t.destination}`,data:{action:l,origin:t.origin,destination:t.destination,travelMode:e}}}default:throw Error(`Unknown action: ${l}`)}},u=`You have access to the mapControl tool for interactive map operations.
11
+
12
+ ## Basic Usage
13
+
14
+ Show a location:
15
+ \`\`\`
16
+ mapControl(location: "Tokyo Station")
17
+ mapControl(action: "showLocation", location: "Paris, France")
18
+ \`\`\`
19
+
20
+ ## Available Actions
21
+
22
+ ### showLocation (default)
23
+ Display a location on the map with a marker.
24
+ - Use \`location\` for place names/addresses
25
+ - Or use \`lat\` and \`lng\` for coordinates
26
+
27
+ ### setCenter
28
+ Move the map center without adding markers.
29
+ \`\`\`
30
+ mapControl(action: "setCenter", location: "Shibuya, Tokyo")
31
+ \`\`\`
32
+
33
+ ### setZoom
34
+ Change the zoom level (1-21).
35
+ - 1-5: Continent/Country level
36
+ - 6-10: Region/City level
37
+ - 11-15: Street level
38
+ - 16-21: Building level
39
+ \`\`\`
40
+ mapControl(action: "setZoom", zoom: 12)
41
+ \`\`\`
42
+
43
+ ### addMarker
44
+ Add a marker at a location (without centering).
45
+ \`\`\`
46
+ mapControl(action: "addMarker", location: "Tokyo Tower", markerTitle: "Tokyo Tower", markerLabel: "T")
47
+ \`\`\`
48
+
49
+ ### clearMarkers
50
+ Remove all markers from the map.
51
+ \`\`\`
52
+ mapControl(action: "clearMarkers")
53
+ \`\`\`
54
+
55
+ ### findPlaces
56
+ Search for nearby places using Google Places API.
57
+ \`\`\`
58
+ mapControl(action: "findPlaces", searchQuery: "ramen")
59
+ mapControl(action: "findPlaces", placeType: "restaurant")
60
+ mapControl(action: "findPlaces", searchQuery: "coffee", placeType: "cafe")
61
+ \`\`\`
62
+
63
+ ### getDirections
64
+ Get directions between two locations.
65
+ \`\`\`
66
+ mapControl(action: "getDirections", origin: "Tokyo Station", destination: "Tokyo Tower", travelMode: "WALKING")
67
+ \`\`\`
68
+ Travel modes: DRIVING, WALKING, BICYCLING, TRANSIT
69
+
70
+ ## Response Data
71
+
72
+ The map will return JSON data with the results of each action, including:
73
+ - Current center coordinates and zoom level
74
+ - Markers on the map
75
+ - Place search results with ratings and addresses
76
+ - Route information with distance and duration`,d={toolDefinition:t,execute:l,generatingMessage:`Loading map...`,isEnabled:e=>!!e?.googleMapKey,backends:[`map`],systemPrompt:u},f=l,p=[{name:`Show Tokyo Station`,args:{action:`showLocation`,location:`Tokyo Station, Japan`}},{name:`Show Eiffel Tower`,args:{action:`showLocation`,location:`Eiffel Tower, Paris, France`}},{name:`Show coordinates`,args:{action:`showLocation`,lat:40.7128,lng:-74.006}},{name:`Center on Shibuya`,args:{action:`setCenter`,location:`Shibuya, Tokyo`}},{name:`Zoom to street level`,args:{action:`setZoom`,zoom:17}},{name:`Zoom to city level`,args:{action:`setZoom`,zoom:12}},{name:`Add marker at Tokyo Tower`,args:{action:`addMarker`,location:`Tokyo Tower, Japan`,markerTitle:`Tokyo Tower`,markerLabel:`T`}},{name:`Add marker with coordinates`,args:{action:`addMarker`,lat:35.6586,lng:139.7454,markerTitle:`Custom Location`}},{name:`Clear all markers`,args:{action:`clearMarkers`}},{name:`Find nearby ramen`,args:{action:`findPlaces`,searchQuery:`ramen`}},{name:`Find restaurants`,args:{action:`findPlaces`,placeType:`restaurant`}},{name:`Find coffee shops`,args:{action:`findPlaces`,searchQuery:`coffee`,placeType:`cafe`}},{name:`Directions: Tokyo Station to Shibuya`,args:{action:`getDirections`,origin:`Tokyo Station`,destination:`Shibuya Station`,travelMode:`TRANSIT`}},{name:`Walking directions`,args:{action:`getDirections`,origin:`Shinjuku Station`,destination:`Tokyo Metropolitan Government Building`,travelMode:`WALKING`}},{name:`Driving directions`,args:{action:`getDirections`,origin:`Narita Airport`,destination:`Tokyo Station`,travelMode:`DRIVING`}}];Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return t}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return e}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return p}});
package/dist/style.css CHANGED
@@ -1 +1,3 @@
1
- @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-100:oklch(93.6% .032 17.717);--color-red-300:oklch(80.8% .114 19.571);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-orange-50:oklch(98% .016 73.684);--color-orange-600:oklch(64.6% .222 41.116);--color-amber-50:oklch(98.7% .022 95.277);--color-amber-600:oklch(66.6% .179 58.318);--color-yellow-50:oklch(98.7% .026 102.212);--color-yellow-500:oklch(79.5% .184 86.047);--color-yellow-700:oklch(55.4% .135 66.442);--color-green-50:oklch(98.2% .018 155.826);--color-green-600:oklch(62.7% .194 149.214);--color-emerald-50:oklch(97.9% .021 166.113);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-800:oklch(43.2% .095 166.913);--color-blue-50:oklch(97% .014 254.604);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-indigo-100:oklch(93% .034 272.788);--color-indigo-200:oklch(87% .065 274.039);--color-indigo-300:oklch(78.5% .115 274.713);--color-indigo-500:oklch(58.5% .233 277.117);--color-indigo-600:oklch(51.1% .262 276.966);--color-indigo-700:oklch(45.7% .24 277.023);--color-purple-50:oklch(97.7% .014 308.299);--color-purple-600:oklch(55.8% .288 302.321);--color-slate-900:oklch(20.8% .042 265.755);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-white:#fff;--spacing:.25rem;--container-3xl:48rem;--container-6xl:72rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--radius-md:.375rem;--radius-lg:.5rem;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.absolute{position:absolute}.relative{position:relative}.inset-0{inset:calc(var(--spacing)*0)}.top-4{top:calc(var(--spacing)*4)}.right-4{right:calc(var(--spacing)*4)}.bottom-4{bottom:calc(var(--spacing)*4)}.left-4{left:calc(var(--spacing)*4)}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.m-0{margin:calc(var(--spacing)*0)}.mx-auto{margin-inline:auto}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mr-1{margin-right:calc(var(--spacing)*1)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-5{margin-bottom:calc(var(--spacing)*5)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.inline-block{display:inline-block}.h-4{height:calc(var(--spacing)*4)}.h-8{height:calc(var(--spacing)*8)}.h-96{height:calc(var(--spacing)*96)}.h-\[600px\]{height:600px}.h-full{height:100%}.min-h-0{min-height:calc(var(--spacing)*0)}.min-h-screen{min-height:100vh}.w-4{width:calc(var(--spacing)*4)}.w-8{width:calc(var(--spacing)*8)}.w-24{width:calc(var(--spacing)*24)}.w-80{width:calc(var(--spacing)*80)}.w-\[100px\]{width:100px}.w-full{width:100%}.max-w-3xl{max-width:var(--container-3xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-\[85\%\]{max-width:85%}.max-w-\[200px\]{max-width:200px}.flex-1{flex:1}.animate-pulse{animation:var(--animate-pulse)}.cursor-pointer{cursor:pointer}.resize-y{resize:vertical}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing)*1)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-none{--tw-border-style:none;border-style:none}.border-emerald-200{border-color:var(--color-emerald-200)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-indigo-200{border-color:var(--color-indigo-200)}.border-red-300{border-color:var(--color-red-300)}.bg-\[\#1a1a2e\]{background-color:#1a1a2e}.bg-amber-50{background-color:var(--color-amber-50)}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-600{background-color:var(--color-blue-600)}.bg-emerald-50{background-color:var(--color-emerald-50)}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-green-50{background-color:var(--color-green-50)}.bg-indigo-100{background-color:var(--color-indigo-100)}.bg-indigo-600{background-color:var(--color-indigo-600)}.bg-orange-50{background-color:var(--color-orange-50)}.bg-purple-50{background-color:var(--color-purple-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-slate-900{background-color:var(--color-slate-900)}.bg-white{background-color:var(--color-white)}.bg-yellow-50{background-color:var(--color-yellow-50)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-5{padding:calc(var(--spacing)*5)}.p-8{padding:calc(var(--spacing)*8)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\.5{padding-block:calc(var(--spacing)*2.5)}.py-3{padding-block:calc(var(--spacing)*3)}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.whitespace-pre-wrap{white-space:pre-wrap}.text-amber-600{color:var(--color-amber-600)}.text-blue-600{color:var(--color-blue-600)}.text-emerald-800{color:var(--color-emerald-800)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-green-600{color:var(--color-green-600)}.text-indigo-600{color:var(--color-indigo-600)}.text-indigo-700{color:var(--color-indigo-700)}.text-orange-600{color:var(--color-orange-600)}.text-purple-600{color:var(--color-purple-600)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-white{color:var(--color-white)}.text-yellow-500{color:var(--color-yellow-500)}.text-yellow-700{color:var(--color-yellow-700)}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media(hover:hover){.hover\:border-indigo-300:hover{border-color:var(--color-indigo-300)}.hover\:bg-blue-700:hover{background-color:var(--color-blue-700)}.hover\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\:bg-gray-300:hover{background-color:var(--color-gray-300)}.hover\:bg-indigo-200:hover{background-color:var(--color-indigo-200)}.hover\:bg-indigo-700:hover{background-color:var(--color-indigo-700)}}.focus\:border-indigo-500:focus{border-color:var(--color-indigo-500)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-\[3px\]:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-indigo-500:focus{--tw-ring-color:var(--color-indigo-500)}.focus\:ring-indigo-500\/10:focus{--tw-ring-color:#625fff1a}@supports (color:color-mix(in lab,red,red)){.focus\:ring-indigo-500\/10:focus{--tw-ring-color:color-mix(in oklab,var(--color-indigo-500)10%,transparent)}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-gray-100:disabled{background-color:var(--color-gray-100)}.disabled\:bg-gray-400:disabled{background-color:var(--color-gray-400)}@media(min-width:64rem){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@keyframes pulse{50%{opacity:.5}}
1
+ /*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */
2
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-100:oklch(93.6% .032 17.717);--color-red-300:oklch(80.8% .114 19.571);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-orange-50:oklch(98% .016 73.684);--color-orange-600:oklch(64.6% .222 41.116);--color-amber-50:oklch(98.7% .022 95.277);--color-amber-600:oklch(66.6% .179 58.318);--color-yellow-50:oklch(98.7% .026 102.212);--color-yellow-500:oklch(79.5% .184 86.047);--color-yellow-700:oklch(55.4% .135 66.442);--color-green-50:oklch(98.2% .018 155.826);--color-green-600:oklch(62.7% .194 149.214);--color-emerald-50:oklch(97.9% .021 166.113);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-800:oklch(43.2% .095 166.913);--color-blue-50:oklch(97% .014 254.604);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-indigo-100:oklch(93% .034 272.788);--color-indigo-200:oklch(87% .065 274.039);--color-indigo-300:oklch(78.5% .115 274.713);--color-indigo-500:oklch(58.5% .233 277.117);--color-indigo-600:oklch(51.1% .262 276.966);--color-indigo-700:oklch(45.7% .24 277.023);--color-purple-50:oklch(97.7% .014 308.299);--color-purple-600:oklch(55.8% .288 302.321);--color-slate-900:oklch(20.8% .042 265.755);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-white:#fff;--spacing:.25rem;--container-3xl:48rem;--container-6xl:72rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--radius-md:.375rem;--radius-lg:.5rem;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.absolute{position:absolute}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.top-4{top:calc(var(--spacing) * 4)}.right-4{right:calc(var(--spacing) * 4)}.bottom-4{bottom:calc(var(--spacing) * 4)}.left-4{left:calc(var(--spacing) * 4)}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.m-0{margin:calc(var(--spacing) * 0)}.mx-auto{margin-inline:auto}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mr-1{margin-right:calc(var(--spacing) * 1)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.inline-block{display:inline-block}.h-4{height:calc(var(--spacing) * 4)}.h-8{height:calc(var(--spacing) * 8)}.h-96{height:calc(var(--spacing) * 96)}.h-\[600px\]{height:600px}.h-full{height:100%}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-screen{min-height:100vh}.w-4{width:calc(var(--spacing) * 4)}.w-8{width:calc(var(--spacing) * 8)}.w-24{width:calc(var(--spacing) * 24)}.w-80{width:calc(var(--spacing) * 80)}.w-\[100px\]{width:100px}.w-full{width:100%}.max-w-3xl{max-width:var(--container-3xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-\[85\%\]{max-width:85%}.max-w-\[200px\]{max-width:200px}.flex-1{flex:1}.animate-pulse{animation:var(--animate-pulse)}.cursor-pointer{cursor:pointer}.resize-y{resize:vertical}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing) * 1)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-none{--tw-border-style:none;border-style:none}.border-emerald-200{border-color:var(--color-emerald-200)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-indigo-200{border-color:var(--color-indigo-200)}.border-red-300{border-color:var(--color-red-300)}.bg-\[\#1a1a2e\]{background-color:#1a1a2e}.bg-amber-50{background-color:var(--color-amber-50)}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-600{background-color:var(--color-blue-600)}.bg-emerald-50{background-color:var(--color-emerald-50)}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-green-50{background-color:var(--color-green-50)}.bg-indigo-100{background-color:var(--color-indigo-100)}.bg-indigo-600{background-color:var(--color-indigo-600)}.bg-orange-50{background-color:var(--color-orange-50)}.bg-purple-50{background-color:var(--color-purple-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-slate-900{background-color:var(--color-slate-900)}.bg-white{background-color:var(--color-white)}.bg-yellow-50{background-color:var(--color-yellow-50)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-8{padding:calc(var(--spacing) * 8)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.whitespace-pre-wrap{white-space:pre-wrap}.text-amber-600{color:var(--color-amber-600)}.text-blue-600{color:var(--color-blue-600)}.text-emerald-800{color:var(--color-emerald-800)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-green-600{color:var(--color-green-600)}.text-indigo-600{color:var(--color-indigo-600)}.text-indigo-700{color:var(--color-indigo-700)}.text-orange-600{color:var(--color-orange-600)}.text-purple-600{color:var(--color-purple-600)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-white{color:var(--color-white)}.text-yellow-500{color:var(--color-yellow-500)}.text-yellow-700{color:var(--color-yellow-700)}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media (hover:hover){.hover\:border-indigo-300:hover{border-color:var(--color-indigo-300)}.hover\:bg-blue-50:hover{background-color:var(--color-blue-50)}.hover\:bg-blue-700:hover{background-color:var(--color-blue-700)}.hover\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\:bg-gray-300:hover{background-color:var(--color-gray-300)}.hover\:bg-indigo-200:hover{background-color:var(--color-indigo-200)}.hover\:bg-indigo-700:hover{background-color:var(--color-indigo-700)}}.focus\:border-indigo-500:focus{border-color:var(--color-indigo-500)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-\[3px\]:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-indigo-500:focus{--tw-ring-color:var(--color-indigo-500)}.focus\:ring-indigo-500\/10:focus{--tw-ring-color:#625fff1a}@supports (color:color-mix(in lab, red, red)){.focus\:ring-indigo-500\/10:focus{--tw-ring-color:color-mix(in oklab, var(--color-indigo-500) 10%, transparent)}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-gray-100:disabled{background-color:var(--color-gray-100)}.disabled\:bg-gray-400:disabled{background-color:var(--color-gray-400)}@media (width>=64rem){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@keyframes pulse{50%{opacity:.5}}
3
+ /*$vite$:1*/
@@ -1 +1 @@
1
- {"version":3,"file":"View.vue.d.ts","sourceRoot":"","sources":["../../src/vue/View.vue"],"names":[],"mappings":"AA8pBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EAKZ,MAAM,eAAe,CAAC;AAEvB,KAAK,WAAW,GAAG;IACjB,cAAc,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;IAC/C,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,KAAK,IAAI,CAAC;CAClD,CAAC;AAq3BF,QAAA,MAAM,YAAY,kSAEhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
1
+ {"version":3,"file":"View.vue.d.ts","sourceRoot":"","sources":["../../src/vue/View.vue"],"names":[],"mappings":"AAovBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EAMZ,MAAM,eAAe,CAAC;AAEvB,KAAK,WAAW,GAAG;IACjB,cAAc,EAAE,UAAU,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;IAC/C,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,KAAK,IAAI,CAAC;CAClD,CAAC;AAq9BF,QAAA,MAAM,YAAY,kSAEhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
package/dist/vue.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const y=require("./core.cjs"),e=require("vue"),W={class:"w-full h-full bg-white flex flex-col relative"},J={class:"p-4 border-b border-gray-200"},X={class:"text-xl font-bold text-gray-800"},Y={key:0,class:"text-gray-600 text-sm"},ee={class:"flex-1 min-h-0 flex"},te={class:"flex-1 relative"},oe={key:1,class:"w-full h-full flex items-center justify-center bg-gray-100"},re={class:"text-center p-8"},ne=["href"],ae={key:2,class:"absolute inset-0 bg-white bg-opacity-75 flex items-center justify-center"},se={key:3,class:"absolute bottom-4 left-4 right-4 bg-red-100 border border-red-300 text-red-700 px-4 py-3 rounded"},le={key:4,class:"absolute top-4 right-4 flex flex-col gap-1"},ce={key:0,class:"w-80 border-l border-gray-200 overflow-y-auto"},ie={key:0,class:"p-4"},ue={class:"space-y-3"},de=["onClick"],me={class:"font-medium text-gray-800"},ge={class:"text-sm text-gray-600 mt-1"},pe={key:0,class:"flex items-center mt-1"},ve={class:"text-sm text-gray-600"},fe={key:0,class:"text-gray-400"},ye={key:1,class:"p-4"},ke={class:"bg-blue-50 rounded-lg p-3 mb-4"},he={class:"text-lg font-medium text-gray-800"},we={class:"text-gray-600"},be={class:"text-sm text-gray-600 mb-3"},xe={class:"space-y-2"},_e=["innerHTML"],Ee={class:"text-gray-500 mt-1"},Z=e.defineComponent({__name:"View",props:{selectedResult:{},googleMapKey:{},onUpdateResult:{type:Function}},setup(w){const c=w,k=e.ref(null),a=e.ref(null),v=e.ref(new Map),b=e.ref(null),x=e.ref(null),n=e.ref(null),g=e.ref(null),_=e.ref(!1),E=e.ref(null),h=e.ref([]),m=e.ref(null),C=e.ref(null),M=e.ref(15),z=e.computed(()=>{const t=c.selectedResult?.data?.action;return{showLocation:"Map Location",setCenter:"Map View",setZoom:"Map View",addMarker:"Map Marker",clearMarkers:"Map",findPlaces:"Place Search",getDirections:"Directions"}[t||"showLocation"]||"Map"}),B=e.computed(()=>{const t=c.selectedResult?.data;if(!t)return"";switch(t.action){case"showLocation":case"setCenter":case"addMarker":return S(t.location);case"setZoom":return`Zoom level: ${t.zoom}`;case"findPlaces":return t.searchQuery||t.placeType||"";case"getDirections":return`${t.origin} → ${t.destination}`;default:return""}}),A=e.computed(()=>h.value.length>0||m.value!==null),D=e.computed(()=>{const t=c.selectedResult?.data;if(!t?.location)return"";const o=S(t.location);return`https://www.google.com/maps/search/?api=1&query=${encodeURIComponent(o)}`}),S=t=>t?typeof t=="string"?t:`${t.lat}, ${t.lng}`:"",F=()=>{const t=[];return v.value.forEach((o,r)=>{const s=o.getPosition();s&&t.push({id:r,position:{lat:s.lat(),lng:s.lng()},title:o.getTitle()||void 0,label:typeof o.getLabel()=="string"?o.getLabel():o.getLabel()?.text})}),t},p=(t,o,r)=>{if(!c.onUpdateResult)return;const i={action:c.selectedResult?.data?.action||"showLocation",success:t,center:C.value||void 0,zoom:M.value,markers:F(),...r};o&&(i.error=o),c.onUpdateResult(i)},q=()=>new Promise((t,o)=>{if(typeof google<"u"&&google.maps){t();return}const r=document.querySelector('script[src*="maps.googleapis.com"]');if(r){r.addEventListener("load",()=>t()),r.addEventListener("error",()=>o(new Error("Failed to load Google Maps")));return}const s=document.createElement("script");s.src=`https://maps.googleapis.com/maps/api/js?key=${c.googleMapKey}&libraries=places`,s.async=!0,s.defer=!0,s.onload=()=>t(),s.onerror=()=>o(new Error("Failed to load Google Maps")),document.head.appendChild(s)}),K=async()=>{if(!(!k.value||!c.googleMapKey))try{await q();const t={lat:35.6812,lng:139.7671};a.value=new google.maps.Map(k.value,{center:t,zoom:M.value,mapTypeControl:!0,streetViewControl:!0,fullscreenControl:!0}),g.value=new google.maps.Geocoder,b.value=new google.maps.places.PlacesService(a.value),x.value=new google.maps.DirectionsService,n.value=new google.maps.DirectionsRenderer,n.value.setMap(a.value),a.value.addListener("center_changed",()=>{const o=a.value?.getCenter();o&&(C.value={lat:o.lat(),lng:o.lng()})}),a.value.addListener("zoom_changed",()=>{M.value=a.value?.getZoom()||15}),c.selectedResult?.data&&await O(c.selectedResult.data)}catch(t){E.value=t instanceof Error?t.message:"Failed to initialize map"}},P=async t=>typeof t!="string"?t:g.value?new Promise(o=>{g.value.geocode({address:t},(r,s)=>{if(s==="OK"&&r&&r[0]){const i=r[0].geometry.location;o({lat:i.lat(),lng:i.lng()})}else o(null)})}):null,V=(t,o,r,s)=>{const i=new google.maps.Marker({position:t,map:a.value,title:r,label:s?{text:s,color:"white"}:void 0,animation:google.maps.Animation.DROP});return v.value.set(o,i),i},R=()=>{v.value.forEach(t=>{t.setMap(null)}),v.value.clear()},O=async t=>{if(a.value){_.value=!0,E.value=null;try{switch(t.action){case"showLocation":case"setCenter":{if(!t.location)throw new Error("Location is required");const o=await P(t.location);if(!o)throw new Error("Could not find location");if(a.value.setCenter(o),C.value=o,t.action==="showLocation"){const r=`location_${Date.now()}`;V(o,r,typeof t.location=="string"?t.location:void 0)}p(!0);break}case"setZoom":{const o=t.zoom||15;a.value.setZoom(o),M.value=o,p(!0);break}case"addMarker":{if(!t.location)throw new Error("Location is required for marker");const o=await P(t.location);if(!o)throw new Error("Could not find location for marker");const r=t.marker?.id||`marker_${Date.now()}`;V(o,r,t.marker?.title,t.marker?.label),p(!0);break}case"clearMarkers":{R(),n.value?.setDirections({routes:[],request:{}}),h.value=[],m.value=null,p(!0);break}case"findPlaces":{await G(t.searchQuery,t.placeType);break}case"getDirections":{if(!t.origin||!t.destination)throw new Error("Origin and destination are required");await j(t.origin,t.destination,t.travelMode||"DRIVING");break}}}catch(o){const r=o instanceof Error?o.message:"An error occurred";E.value=r,p(!1,r)}finally{_.value=!1}}},G=async(t,o)=>{if(!b.value||!a.value)return;const r=a.value.getCenter();if(!r)return;const s={location:r,radius:5e3,query:t||o||""};return o&&!t&&(s.type=o),new Promise(i=>{b.value.textSearch(s,(f,L)=>{if(L===google.maps.places.PlacesServiceStatus.OK&&f){v.value.forEach((l,d)=>{d.startsWith("place_")&&(l.setMap(null),v.value.delete(d))});const u=f.slice(0,10).map((l,d)=>{const N=l.geometry?.location,T=N?{lat:N.lat(),lng:N.lng()}:{lat:0,lng:0};return N&&V(T,`place_${l.place_id}`,l.name,String(d+1)),{placeId:l.place_id||"",name:l.name||"",address:l.formatted_address||"",location:T,rating:l.rating,userRatingsTotal:l.user_ratings_total,types:l.types,openNow:l.opening_hours?.isOpen?.()}});if(h.value=u,m.value=null,u.length>0){const l=new google.maps.LatLngBounds;u.forEach(d=>{l.extend(d.location)}),a.value?.fitBounds(l)}p(!0,void 0,{places:u})}else p(!1,"No places found");i()})})},j=async(t,o,r)=>{if(!x.value||!n.value)return;const s={origin:t,destination:o,travelMode:r};return new Promise(i=>{x.value.route(s,(f,L)=>{if(L===google.maps.DirectionsStatus.OK&&f){n.value.setDirections(f);const u=f.routes[0]?.legs[0];if(u){const l={summary:f.routes[0].summary||"",distance:u.distance?.text||"",duration:u.duration?.text||"",startAddress:u.start_address||"",endAddress:u.end_address||"",steps:u.steps?.map(d=>({instruction:d.instructions||"",distance:d.distance?.text||"",duration:d.duration?.text||"",travelMode:d.travel_mode||""}))||[],polyline:f.routes[0].overview_polyline||""};m.value=l,h.value=[],p(!0,void 0,{route:l})}}else p(!1,"Could not find directions");i()})})},U=t=>{a.value&&(a.value.setCenter(t.location),a.value.setZoom(17))},Q=()=>{if(!a.value)return;const t=a.value.getZoom()||15;t<21&&a.value.setZoom(t+1)},H=()=>{if(!a.value)return;const t=a.value.getZoom()||15;t>1&&a.value.setZoom(t-1)};return e.watch(()=>c.selectedResult?.data,async t=>{t&&a.value&&await O(t)}),e.onMounted(()=>{c.googleMapKey&&K()}),e.onUnmounted(()=>{R()}),(t,o)=>(e.openBlock(),e.createElementBlock("div",W,[e.createElementVNode("div",J,[e.createElementVNode("h2",X,e.toDisplayString(z.value),1),B.value?(e.openBlock(),e.createElementBlock("p",Y,e.toDisplayString(B.value),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",ee,[e.createElementVNode("div",te,[w.googleMapKey?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"mapContainer",ref:k,class:"w-full h-full"},null,512)):(e.openBlock(),e.createElementBlock("div",oe,[e.createElementVNode("div",re,[o[0]||(o[0]=e.createElementVNode("div",{class:"text-gray-500 mb-4"},"Google Maps API key not configured",-1)),D.value?(e.openBlock(),e.createElementBlock("a",{key:0,href:D.value,target:"_blank",class:"inline-block px-4 py-2 bg-blue-600 text-white rounded hover:bg-blue-700 transition-colors"}," Open in Google Maps ",8,ne)):e.createCommentVNode("",!0)])])),_.value?(e.openBlock(),e.createElementBlock("div",ae,[...o[1]||(o[1]=[e.createElementVNode("div",{class:"text-gray-600"},"Loading...",-1)])])):e.createCommentVNode("",!0),E.value?(e.openBlock(),e.createElementBlock("div",se,e.toDisplayString(E.value),1)):e.createCommentVNode("",!0),w.googleMapKey&&a.value?(e.openBlock(),e.createElementBlock("div",le,[e.createElementVNode("button",{onClick:Q,class:"w-8 h-8 bg-white border border-gray-300 rounded shadow text-lg font-bold text-gray-700 hover:bg-gray-100 flex items-center justify-center",title:"Zoom in"}," + "),e.createElementVNode("button",{onClick:H,class:"w-8 h-8 bg-white border border-gray-300 rounded shadow text-lg font-bold text-gray-700 hover:bg-gray-100 flex items-center justify-center",title:"Zoom out"}," − ")])):e.createCommentVNode("",!0)]),A.value?(e.openBlock(),e.createElementBlock("div",ce,[h.value.length>0?(e.openBlock(),e.createElementBlock("div",ie,[o[3]||(o[3]=e.createElementVNode("h3",{class:"font-semibold text-gray-800 mb-3"},"Search Results",-1)),e.createElementVNode("div",ue,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,r=>(e.openBlock(),e.createElementBlock("div",{key:r.placeId,class:"p-3 bg-gray-50 rounded-lg cursor-pointer hover:bg-gray-100 transition-colors",onClick:s=>U(r)},[e.createElementVNode("div",me,e.toDisplayString(r.name),1),e.createElementVNode("div",ge,e.toDisplayString(r.address),1),r.rating?(e.openBlock(),e.createElementBlock("div",pe,[o[2]||(o[2]=e.createElementVNode("span",{class:"text-yellow-500 mr-1"},"★",-1)),e.createElementVNode("span",ve,[e.createTextVNode(e.toDisplayString(r.rating.toFixed(1))+" ",1),r.userRatingsTotal?(e.openBlock(),e.createElementBlock("span",fe," ("+e.toDisplayString(r.userRatingsTotal)+") ",1)):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0),r.openNow!==void 0?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass([r.openNow?"text-green-600":"text-red-600","text-sm mt-1"])},e.toDisplayString(r.openNow?"Open now":"Closed"),3)):e.createCommentVNode("",!0)],8,de))),128))])])):e.createCommentVNode("",!0),m.value?(e.openBlock(),e.createElementBlock("div",ye,[o[6]||(o[6]=e.createElementVNode("h3",{class:"font-semibold text-gray-800 mb-3"},"Directions",-1)),e.createElementVNode("div",ke,[e.createElementVNode("div",he,e.toDisplayString(m.value.distance),1),e.createElementVNode("div",we,e.toDisplayString(m.value.duration),1)]),e.createElementVNode("div",be,[e.createElementVNode("div",null,[o[4]||(o[4]=e.createElementVNode("strong",null,"From:",-1)),e.createTextVNode(" "+e.toDisplayString(m.value.startAddress),1)]),e.createElementVNode("div",null,[o[5]||(o[5]=e.createElementVNode("strong",null,"To:",-1)),e.createTextVNode(" "+e.toDisplayString(m.value.endAddress),1)])]),e.createElementVNode("div",xe,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.value.steps,(r,s)=>(e.openBlock(),e.createElementBlock("div",{key:s,class:"p-2 bg-gray-50 rounded text-sm"},[e.createElementVNode("div",{innerHTML:r.instruction,class:"text-gray-800"},null,8,_e),e.createElementVNode("div",Ee,e.toDisplayString(r.distance)+" · "+e.toDisplayString(r.duration),1)]))),128))])])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)])]))}}),Me={class:"text-xs text-gray-600 mt-1 truncate"},$=e.defineComponent({__name:"Preview",props:{result:{}},setup(w){const c=w,k=n=>n?typeof n=="string"?n:`${n.lat.toFixed(4)}, ${n.lng.toFixed(4)}`:"",a=e.computed(()=>{const n=c.result.data?.action;return{showLocation:"Map Location",setCenter:"Center Map",setZoom:"Zoom",addMarker:"Add Marker",clearMarkers:"Clear Markers",findPlaces:"Place Search",getDirections:"Directions"}[n||"showLocation"]||"Map"}),v=e.computed(()=>{const n=c.result.data;if(!n)return"";switch(n.action){case"showLocation":case"setCenter":case"addMarker":return k(n.location);case"setZoom":return`Level ${n.zoom}`;case"clearMarkers":return"All markers cleared";case"findPlaces":return n.searchQuery||n.placeType||"Search";case"getDirections":{const g=typeof n.origin=="string"?n.origin:"Start",_=typeof n.destination=="string"?n.destination:"End";return`${g} → ${_}`}default:return k(n.location)}}),b=e.computed(()=>{const n=c.result.data?.action;return{showLocation:"bg-blue-50",setCenter:"bg-blue-50",setZoom:"bg-purple-50",addMarker:"bg-green-50",clearMarkers:"bg-gray-50",findPlaces:"bg-yellow-50",getDirections:"bg-orange-50"}[n||"showLocation"]||"bg-blue-50"}),x=e.computed(()=>{const n=c.result.data?.action;return{showLocation:"text-blue-600",setCenter:"text-blue-600",setZoom:"text-purple-600",addMarker:"text-green-600",clearMarkers:"text-gray-600",findPlaces:"text-yellow-700",getDirections:"text-orange-600"}[n||"showLocation"]||"text-blue-600"});return(n,g)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["text-center p-4 rounded",b.value])},[e.createElementVNode("div",{class:e.normalizeClass(["font-medium",x.value])},e.toDisplayString(a.value),3),e.createElementVNode("div",Me,e.toDisplayString(v.value),1)],2))}}),I={...y.pluginCore,viewComponent:Z,previewComponent:$,samples:y.samples},Ne={plugin:I};exports.TOOL_DEFINITION=y.TOOL_DEFINITION;exports.TOOL_NAME=y.TOOL_NAME;exports.executeMap=y.executeMap;exports.pluginCore=y.pluginCore;exports.samples=y.samples;exports.Preview=$;exports.View=Z;exports.default=Ne;exports.plugin=I;
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require(`./samples-Xgow5I6W.cjs`);let t=require(`vue`);var n={class:`w-full h-full bg-white flex flex-col relative`},r={class:`p-4 border-b border-gray-200`},i={class:`text-xl font-bold text-gray-800`},a={key:0,class:`text-gray-600 text-sm`},o={class:`flex-1 min-h-0 flex`},s={class:`flex-1 relative`},c={key:1,class:`w-full h-full flex items-center justify-center bg-gray-100`},l={class:`text-center p-8`},u=[`href`],d={key:2,class:`absolute inset-0 bg-white bg-opacity-75 flex items-center justify-center`},f={key:3,class:`absolute bottom-4 left-4 right-4 bg-red-100 border border-red-300 text-red-700 px-4 py-3 rounded`},p={key:4,class:`absolute top-4 right-4 flex flex-col gap-1`},m={key:0,class:`w-80 border-l border-gray-200 overflow-y-auto`},h={key:0,class:`p-4`},g={class:`space-y-3`},ee=[`onClick`],_={class:`font-medium text-gray-800`},v={class:`text-sm text-gray-600 mt-1`},y={key:0,class:`flex items-center mt-1`},b={class:`text-sm text-gray-600`},x={key:0,class:`text-gray-400`},te={key:1,class:`p-4`},S={class:`bg-blue-50 rounded-lg p-3 mb-4`},ne={class:`text-lg font-medium text-gray-800`},C={class:`text-gray-600`},w={class:`text-sm text-gray-600 mb-3`},T={class:`space-y-2`},E=[`onClick`],re={class:`text-gray-800`},ie={class:`text-gray-500 mt-1`},D=(0,t.defineComponent)({__name:`View`,props:{selectedResult:{},googleMapKey:{},onUpdateResult:{type:Function}},setup(e){let D=e,O=(0,t.ref)(null),k=(0,t.ref)(null),A=(0,t.ref)(new Map),j=(0,t.ref)(null),M=(0,t.ref)(null),N=(0,t.ref)(null),P,F,I=(0,t.ref)(!1),L=(0,t.ref)(null),R=(0,t.ref)([]),z=(0,t.ref)(null),B=(0,t.ref)(null),V=(0,t.ref)(15),H=(0,t.computed)(()=>({showLocation:`Map Location`,setCenter:`Map View`,setZoom:`Map View`,addMarker:`Map Marker`,clearMarkers:`Map`,findPlaces:`Place Search`,getDirections:`Directions`})[D.selectedResult?.data?.action||`showLocation`]||`Map`),U=(0,t.computed)(()=>{let e=D.selectedResult?.data;if(!e)return``;switch(e.action){case`showLocation`:case`setCenter`:case`addMarker`:return G(e.location);case`setZoom`:return`Zoom level: ${e.zoom}`;case`findPlaces`:return e.searchQuery||e.placeType||``;case`getDirections`:return`${e.origin} → ${e.destination}`;default:return``}}),ae=(0,t.computed)(()=>R.value.length>0||z.value!==null),W=(0,t.computed)(()=>{let e=D.selectedResult?.data;if(!e?.location)return``;let t=G(e.location);return`https://www.google.com/maps/search/?api=1&query=${encodeURIComponent(t)}`}),G=e=>e?typeof e==`string`?e:`${e.lat}, ${e.lng}`:``,K=e=>new DOMParser().parseFromString(e,`text/html`).body.textContent||``,q=()=>{let e=[];return A.value.forEach((t,n)=>{let r=t.position;if(r){let i=typeof r.lat==`function`?r.lat():r.lat,a=typeof r.lng==`function`?r.lng():r.lng;e.push({id:n,position:{lat:i,lng:a},title:t.title||void 0})}}),e},J=(e,t,n)=>{if(!D.onUpdateResult)return;let r={action:D.selectedResult?.data?.action||`showLocation`,success:e,center:B.value||void 0,zoom:V.value,markers:q(),...n};t&&(r.error=t),D.onUpdateResult(r)},oe=()=>new Promise((e,t)=>{if(typeof google<`u`&&google.maps&&typeof google.maps.importLibrary==`function`){e();return}let n=document.querySelector(`script[src*="maps.googleapis.com"]`),r=n=>{typeof google<`u`&&google.maps&&typeof google.maps.importLibrary==`function`?e():Date.now()-n>1e4?t(Error(`Timeout waiting for Google Maps to load`)):setTimeout(()=>r(n),50)};if(n){r(Date.now());return}let i=document.createElement(`script`);i.src=`https://maps.googleapis.com/maps/api/js?key=${D.googleMapKey}&loading=async`,i.async=!0,i.defer=!0,i.onload=()=>r(Date.now()),i.onerror=()=>t(Error(`Failed to load Google Maps`)),document.head.appendChild(i)}),se=async()=>{if(!(!O.value||!D.googleMapKey)&&!k.value)try{await oe();let e=await google.maps.importLibrary(`marker`),t=await google.maps.importLibrary(`places`);P=e.AdvancedMarkerElement,F=t.Place,k.value=new google.maps.Map(O.value,{center:{lat:35.6812,lng:139.7671},zoom:V.value,mapTypeControl:!0,streetViewControl:!0,fullscreenControl:!0,mapId:`DEMO_MAP_ID`}),N.value=new google.maps.Geocoder,j.value=new google.maps.DirectionsService,M.value=new google.maps.DirectionsRenderer,M.value.setMap(k.value),k.value.addListener(`center_changed`,()=>{let e=k.value?.getCenter();e&&(B.value={lat:e.lat(),lng:e.lng()})}),k.value.addListener(`zoom_changed`,()=>{V.value=k.value?.getZoom()||15}),D.selectedResult?.data&&await Q(D.selectedResult.data)}catch(e){L.value=e instanceof Error?e.message:`Failed to initialize map`}},Y=async e=>typeof e==`string`?N.value?new Promise(t=>{N.value.geocode({address:e},(e,n)=>{if(n===`OK`&&e&&e[0]){let n=e[0].geometry.location;t({lat:n.lat(),lng:n.lng()})}else t(null)})}):null:e,X=(e,t,n,r)=>{let i;if(r){let e=document.createElement(`div`);e.className=`marker-label`,e.style.cssText=`background: #4285f4; color: white; padding: 4px 8px; border-radius: 4px; font-weight: bold; font-size: 12px;`,e.textContent=r,i=e}let a=new P({position:e,map:k.value,title:n,content:i});return A.value.set(t,a),a},Z=()=>{A.value.forEach(e=>{e.map=null}),A.value.clear()},Q=async e=>{if(k.value){I.value=!0,L.value=null;try{switch(e.action){case`showLocation`:case`setCenter`:{if(!e.location)throw Error(`Location is required`);let t=await Y(e.location);if(!t)throw Error(`Could not find location`);k.value.setCenter(t),B.value=t,e.action===`showLocation`&&X(t,`location_${Date.now()}`,typeof e.location==`string`?e.location:void 0),J(!0);break}case`setZoom`:{let t=e.zoom||15;k.value.setZoom(t),V.value=t,J(!0);break}case`addMarker`:{if(!e.location)throw Error(`Location is required for marker`);let t=await Y(e.location);if(!t)throw Error(`Could not find location for marker`);X(t,e.marker?.id||`marker_${Date.now()}`,e.marker?.title,e.marker?.label),J(!0);break}case`clearMarkers`:Z(),M.value?.setDirections({routes:[],request:{}}),R.value=[],z.value=null,J(!0);break;case`findPlaces`:await ce(e.searchQuery,e.placeType);break;case`getDirections`:if(!e.origin||!e.destination)throw Error(`Origin and destination are required`);await le(e.origin,e.destination,e.travelMode||`DRIVING`);break}}catch(e){let t=e instanceof Error?e.message:`An error occurred`;L.value=t,J(!1,t)}finally{I.value=!1}}},ce=async(e,t)=>{if(!k.value||!F)return;let n=k.value.getCenter();if(n)try{let r={textQuery:e||t||``,locationBias:{center:{lat:n.lat(),lng:n.lng()},radius:5e3},fields:[`id`,`displayName`,`formattedAddress`,`location`,`rating`,`userRatingCount`,`types`,`regularOpeningHours`],maxResultCount:10};t&&!e&&(r.includedType=t);let{places:i}=await F.searchByText(r);if(i&&i.length>0){[...A.value.keys()].filter(e=>e.startsWith(`place_`)).forEach(e=>{let t=A.value.get(e);t&&(t.map=null,A.value.delete(e))});let e=i.map((e,t)=>{let n=e.location,r=n?{lat:n.lat(),lng:n.lng()}:{lat:0,lng:0};return n&&X(r,`place_${e.id}`,e.displayName||void 0,String(t+1)),{placeId:e.id||``,name:e.displayName||``,address:e.formattedAddress||``,location:r,rating:e.rating??void 0,userRatingsTotal:e.userRatingCount??void 0,types:e.types,openNow:void 0}});if(R.value=e,z.value=null,e.length>0){let t=new google.maps.LatLngBounds;e.forEach(e=>{t.extend(e.location)}),k.value?.fitBounds(t)}J(!0,void 0,{places:e})}else J(!1,`No places found`)}catch{J(!1,`No places found`)}},le=async(e,t,n)=>{if(!j.value||!M.value)return;let r={origin:e,destination:t,travelMode:n};return new Promise(e=>{j.value.route(r,(t,n)=>{if(n===google.maps.DirectionsStatus.OK&&t){M.value.setDirections(t);let e=t.routes[0]?.legs[0];if(e){let n={summary:t.routes[0].summary||``,distance:e.distance?.text||``,duration:e.duration?.text||``,startAddress:e.start_address||``,endAddress:e.end_address||``,steps:e.steps?.map(e=>({instruction:e.instructions||``,distance:e.distance?.text||``,duration:e.duration?.text||``,travelMode:e.travel_mode||``,startLocation:e.start_location?{lat:e.start_location.lat(),lng:e.start_location.lng()}:void 0,endLocation:e.end_location?{lat:e.end_location.lat(),lng:e.end_location.lng()}:void 0}))||[],polyline:t.routes[0].overview_polyline||``};z.value=n,R.value=[],J(!0,void 0,{route:n})}}else J(!1,`Could not find directions`);e()})})},ue=e=>{k.value&&(k.value.setCenter(e.location),k.value.setZoom(17))},de=e=>{if(!k.value)return;let t=e.startLocation||e.endLocation;t&&(k.value.setCenter(t),k.value.setZoom(18))},fe=()=>{if(!k.value)return;let e=k.value.getZoom()||15;e<21&&k.value.setZoom(e+1)},pe=()=>{if(!k.value)return;let e=k.value.getZoom()||15;e>1&&k.value.setZoom(e-1)},$=null;return(0,t.watch)(()=>D.selectedResult?.data,async e=>{if(e&&k.value){let t=JSON.stringify(e);if(t===$)return;$=t,await Q(e)}}),(0,t.onMounted)(()=>{D.googleMapKey&&se()}),(0,t.onUnmounted)(()=>{Z()}),(D,A)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,n,[(0,t.createElementVNode)(`div`,r,[(0,t.createElementVNode)(`h2`,i,(0,t.toDisplayString)(H.value),1),U.value?((0,t.openBlock)(),(0,t.createElementBlock)(`p`,a,(0,t.toDisplayString)(U.value),1)):(0,t.createCommentVNode)(``,!0)]),(0,t.createElementVNode)(`div`,o,[(0,t.createElementVNode)(`div`,s,[e.googleMapKey?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:0,ref_key:`mapContainer`,ref:O,class:`w-full h-full`},null,512)):((0,t.openBlock)(),(0,t.createElementBlock)(`div`,c,[(0,t.createElementVNode)(`div`,l,[A[0]||=(0,t.createElementVNode)(`div`,{class:`text-gray-500 mb-4`},`Google Maps API key not configured`,-1),W.value?((0,t.openBlock)(),(0,t.createElementBlock)(`a`,{key:0,href:W.value,target:`_blank`,class:`inline-block px-4 py-2 bg-blue-600 text-white rounded hover:bg-blue-700 transition-colors`},` Open in Google Maps `,8,u)):(0,t.createCommentVNode)(``,!0)])])),I.value?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,d,[...A[1]||=[(0,t.createElementVNode)(`div`,{class:`text-gray-600`},`Loading...`,-1)]])):(0,t.createCommentVNode)(``,!0),L.value?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,f,(0,t.toDisplayString)(L.value),1)):(0,t.createCommentVNode)(``,!0),e.googleMapKey&&k.value?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,p,[(0,t.createElementVNode)(`button`,{onClick:fe,class:`w-8 h-8 bg-white border border-gray-300 rounded shadow text-lg font-bold text-gray-700 hover:bg-gray-100 flex items-center justify-center`,title:`Zoom in`},` + `),(0,t.createElementVNode)(`button`,{onClick:pe,class:`w-8 h-8 bg-white border border-gray-300 rounded shadow text-lg font-bold text-gray-700 hover:bg-gray-100 flex items-center justify-center`,title:`Zoom out`},` − `)])):(0,t.createCommentVNode)(``,!0)]),ae.value?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,m,[R.value.length>0?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,h,[A[3]||=(0,t.createElementVNode)(`h3`,{class:`font-semibold text-gray-800 mb-3`},`Search Results`,-1),(0,t.createElementVNode)(`div`,g,[((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(R.value,e=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:e.placeId,class:`p-3 bg-gray-50 rounded-lg cursor-pointer hover:bg-gray-100 transition-colors`,onClick:t=>ue(e)},[(0,t.createElementVNode)(`div`,_,(0,t.toDisplayString)(e.name),1),(0,t.createElementVNode)(`div`,v,(0,t.toDisplayString)(e.address),1),e.rating?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,y,[A[2]||=(0,t.createElementVNode)(`span`,{class:`text-yellow-500 mr-1`},`★`,-1),(0,t.createElementVNode)(`span`,b,[(0,t.createTextVNode)((0,t.toDisplayString)(e.rating.toFixed(1))+` `,1),e.userRatingsTotal?((0,t.openBlock)(),(0,t.createElementBlock)(`span`,x,` (`+(0,t.toDisplayString)(e.userRatingsTotal)+`) `,1)):(0,t.createCommentVNode)(``,!0)])])):(0,t.createCommentVNode)(``,!0),e.openNow===void 0?(0,t.createCommentVNode)(``,!0):((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:1,class:(0,t.normalizeClass)([e.openNow?`text-green-600`:`text-red-600`,`text-sm mt-1`])},(0,t.toDisplayString)(e.openNow?`Open now`:`Closed`),3))],8,ee))),128))])])):(0,t.createCommentVNode)(``,!0),z.value?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,te,[A[6]||=(0,t.createElementVNode)(`h3`,{class:`font-semibold text-gray-800 mb-3`},`Directions`,-1),(0,t.createElementVNode)(`div`,S,[(0,t.createElementVNode)(`div`,ne,(0,t.toDisplayString)(z.value.distance),1),(0,t.createElementVNode)(`div`,C,(0,t.toDisplayString)(z.value.duration),1)]),(0,t.createElementVNode)(`div`,w,[(0,t.createElementVNode)(`div`,null,[A[4]||=(0,t.createElementVNode)(`strong`,null,`From:`,-1),(0,t.createTextVNode)(` `+(0,t.toDisplayString)(z.value.startAddress),1)]),(0,t.createElementVNode)(`div`,null,[A[5]||=(0,t.createElementVNode)(`strong`,null,`To:`,-1),(0,t.createTextVNode)(` `+(0,t.toDisplayString)(z.value.endAddress),1)])]),(0,t.createElementVNode)(`div`,T,[((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(z.value.steps,(e,n)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{key:n,class:`p-2 bg-gray-50 rounded text-sm cursor-pointer hover:bg-blue-50 transition-colors`,onClick:t=>de(e)},[(0,t.createElementVNode)(`div`,re,(0,t.toDisplayString)(K(e.instruction)),1),(0,t.createElementVNode)(`div`,ie,(0,t.toDisplayString)(e.distance)+` · `+(0,t.toDisplayString)(e.duration),1)],8,E))),128))])])):(0,t.createCommentVNode)(``,!0)])):(0,t.createCommentVNode)(``,!0)])]))}}),O={class:`text-xs text-gray-600 mt-1 truncate`},k=(0,t.defineComponent)({__name:`Preview`,props:{result:{}},setup(e){let n=e,r=e=>e?typeof e==`string`?e:`${e.lat.toFixed(4)}, ${e.lng.toFixed(4)}`:``,i=(0,t.computed)(()=>({showLocation:`Map Location`,setCenter:`Center Map`,setZoom:`Zoom`,addMarker:`Add Marker`,clearMarkers:`Clear Markers`,findPlaces:`Place Search`,getDirections:`Directions`})[n.result.data?.action||`showLocation`]||`Map`),a=(0,t.computed)(()=>{let e=n.result.data;if(!e)return``;switch(e.action){case`showLocation`:case`setCenter`:case`addMarker`:return r(e.location);case`setZoom`:return`Level ${e.zoom}`;case`clearMarkers`:return`All markers cleared`;case`findPlaces`:return e.searchQuery||e.placeType||`Search`;case`getDirections`:return`${typeof e.origin==`string`?e.origin:`Start`} → ${typeof e.destination==`string`?e.destination:`End`}`;default:return r(e.location)}}),o=(0,t.computed)(()=>({showLocation:`bg-blue-50`,setCenter:`bg-blue-50`,setZoom:`bg-purple-50`,addMarker:`bg-green-50`,clearMarkers:`bg-gray-50`,findPlaces:`bg-yellow-50`,getDirections:`bg-orange-50`})[n.result.data?.action||`showLocation`]||`bg-blue-50`),s=(0,t.computed)(()=>({showLocation:`text-blue-600`,setCenter:`text-blue-600`,setZoom:`text-purple-600`,addMarker:`text-green-600`,clearMarkers:`text-gray-600`,findPlaces:`text-yellow-700`,getDirections:`text-orange-600`})[n.result.data?.action||`showLocation`]||`text-blue-600`);return(e,n)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,{class:(0,t.normalizeClass)([`text-center p-4 rounded`,o.value])},[(0,t.createElementVNode)(`div`,{class:(0,t.normalizeClass)([`font-medium`,s.value])},(0,t.toDisplayString)(i.value),3),(0,t.createElementVNode)(`div`,O,(0,t.toDisplayString)(a.value),1)],2))}}),A={...e.i,viewComponent:D,previewComponent:k,samples:e.t},j={plugin:A};exports.Preview=k,exports.TOOL_DEFINITION=e.o,exports.TOOL_NAME=e.s,exports.View=D,exports.default=j,exports.executeMap=e.n,exports.plugin=A,exports.pluginCore=e.i,exports.samples=e.t;