@gui-chat-plugin/google-map 0.4.0 → 0.4.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.
- package/README.md +5 -0
- package/dist/core.cjs +1 -1
- package/dist/core.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/{samples-Xgow5I6W.cjs → samples-YGbwctMh.cjs} +1 -1
- package/dist/{samples-CH-C0Bol.js → samples-qn05YB-F.js} +1 -1
- package/dist/style.css +2 -2
- package/dist/vue/View.vue.d.ts.map +1 -1
- package/dist/vue.cjs +1 -1
- package/dist/vue.js +117 -117
- package/package.json +17 -17
package/README.md
CHANGED
|
@@ -132,3 +132,8 @@ Try these prompts to test the plugin:
|
|
|
132
132
|
## License
|
|
133
133
|
|
|
134
134
|
MIT
|
|
135
|
+
|
|
136
|
+
## Related
|
|
137
|
+
|
|
138
|
+
- Protocol spec: [gui-chat-protocol](https://github.com/receptron/gui-chat-protocol)
|
|
139
|
+
- Reference implementations using this protocol: [mulmoclaude](https://github.com/receptron/mulmoclaude) · [MulmoChat](https://github.com/receptron/MulmoChat)
|
package/dist/core.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./samples-YGbwctMh.cjs");exports.TOOL_DEFINITION=e.o,exports.TOOL_NAME=e.s,exports.executeMap=e.n,exports.executeMapControl=e.r,exports.pluginCore=e.i,exports.samples=e.t,exports.systemPrompt=e.a;
|
package/dist/core.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as e, i as t, n, o as r, r as i, s as a, t as o } from "./samples-
|
|
1
|
+
import { a as e, i as t, n, o as r, r as i, s as a, t as o } from "./samples-qn05YB-F.js";
|
|
2
2
|
export { r as TOOL_DEFINITION, a as TOOL_NAME, n as executeMap, i as executeMapControl, t as pluginCore, o as samples, e as systemPrompt };
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./samples-YGbwctMh.cjs");require("./core.cjs"),exports.TOOL_DEFINITION=e.o,exports.TOOL_NAME=e.s,exports.executeMap=e.n,exports.executeMapControl=e.r,exports.pluginCore=e.i,exports.samples=e.t,exports.systemPrompt=e.a;
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { a as e, i as t, n, o as r, r as i, s as a, t as o } from "./samples-
|
|
1
|
+
import { a as e, i as t, n, o as r, r as i, s as a, t as o } from "./samples-qn05YB-F.js";
|
|
2
2
|
import "./core.js";
|
|
3
3
|
export { r as TOOL_DEFINITION, a as TOOL_NAME, n as executeMap, i as executeMapControl, t as pluginCore, o as samples, e as systemPrompt };
|
|
@@ -73,4 +73,4 @@ The map will return JSON data with the results of each action, including:
|
|
|
73
73
|
- Current center coordinates and zoom level
|
|
74
74
|
- Markers on the map
|
|
75
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:`
|
|
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:`DRIVING`}},{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,3 +1,3 @@
|
|
|
1
|
-
/*! tailwindcss v4.
|
|
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}}
|
|
1
|
+
/*! tailwindcss v4.3.0 | 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)}.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
3
|
/*$vite$:1*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"View.vue.d.ts","sourceRoot":"","sources":["../../src/vue/View.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"View.vue.d.ts","sourceRoot":"","sources":["../../src/vue/View.vue"],"names":[],"mappings":"AA0vBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EAOZ,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;AA09BF,QAAA,MAAM,YAAY,kSAEhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
|
package/dist/vue.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
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;
|
|
1
|
+
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./samples-YGbwctMh.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`],te={class:`font-medium text-gray-800`},ne={class:`text-sm text-gray-600 mt-1`},_={key:0,class:`flex items-center mt-1`},v={class:`text-sm text-gray-600`},y={key:0,class:`text-gray-400`},b={key:1,class:`p-4`},x={class:`bg-blue-50 rounded-lg p-3 mb-4`},S={class:`text-lg font-medium text-gray-800`},C={class:`text-gray-600`},re={class:`text-sm text-gray-600 mb-3`},w={class:`space-y-2`},ie=[`onClick`],ae={class:`text-gray-800`},oe={class:`text-gray-500 mt-1`},T=(0,t.defineComponent)({__name:`View`,props:{selectedResult:{},googleMapKey:{},onUpdateResult:{type:Function}},setup(e){let T=e,E=(0,t.ref)(null),D=(0,t.ref)(null),O=(0,t.ref)(new Map),k=(0,t.ref)(null),A=(0,t.ref)(null),j=(0,t.ref)(null),M,N,P=(0,t.ref)(!1),F=(0,t.ref)(null),I=(0,t.ref)([]),L=(0,t.ref)(null),R=(0,t.ref)(null),z=(0,t.ref)(15),B=(0,t.computed)(()=>({showLocation:`Map Location`,setCenter:`Map View`,setZoom:`Map View`,addMarker:`Map Marker`,clearMarkers:`Map`,findPlaces:`Place Search`,getDirections:`Directions`})[T.selectedResult?.data?.action||`showLocation`]||`Map`),V=(0,t.computed)(()=>{let e=T.selectedResult?.data;if(!e)return``;switch(e.action){case`showLocation`:case`setCenter`:case`addMarker`:return W(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``}}),H=(0,t.computed)(()=>I.value.length>0||L.value!==null),U=(0,t.computed)(()=>{let e=T.selectedResult?.data;if(!e?.location)return``;let t=W(e.location);return`https://www.google.com/maps/search/?api=1&query=${encodeURIComponent(t)}`}),W=e=>e?typeof e==`string`?e:`${e.lat}, ${e.lng}`:``,G=e=>new DOMParser().parseFromString(e,`text/html`).body.textContent||``,K=()=>{let e=[];return O.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},q=(e,t,n)=>{if(!T.onUpdateResult)return;let r={action:T.selectedResult?.data?.action||`showLocation`,success:e,center:R.value||void 0,zoom:z.value,markers:K(),...n};t&&(r.error=t),T.onUpdateResult(r)},se=()=>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=${T.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)}),ce=async()=>{if(!(!E.value||!T.googleMapKey)&&!D.value)try{await se();let e=await google.maps.importLibrary(`marker`),t=await google.maps.importLibrary(`places`);M=e.AdvancedMarkerElement,N=t.Place,D.value=new google.maps.Map(E.value,{center:{lat:35.6812,lng:139.7671},zoom:z.value,mapTypeControl:!0,streetViewControl:!0,fullscreenControl:!0,mapId:`DEMO_MAP_ID`}),j.value=new google.maps.Geocoder,k.value=new google.maps.DirectionsService,A.value=new google.maps.DirectionsRenderer,A.value.setMap(D.value),D.value.addListener(`center_changed`,()=>{let e=D.value?.getCenter();e&&(R.value={lat:e.lat(),lng:e.lng()})}),D.value.addListener(`zoom_changed`,()=>{z.value=D.value?.getZoom()||15}),T.selectedResult?.data&&await Z(T.selectedResult.data)}catch(e){F.value=e instanceof Error?e.message:`Failed to initialize map`}},J=async e=>typeof e==`string`?j.value?new Promise(t=>{j.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,Y=(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 M({position:e,map:D.value,title:n,content:i});return O.value.set(t,a),a},X=()=>{O.value.forEach(e=>{e.map=null}),O.value.clear()},Z=async e=>{if(D.value){P.value=!0,F.value=null;try{switch(e.action){case`showLocation`:case`setCenter`:{if(!e.location)throw Error(`Location is required`);let t=await J(e.location);if(!t)throw Error(`Could not find location`);D.value.setCenter(t),R.value=t,e.action===`showLocation`&&Y(t,`location_${Date.now()}`,typeof e.location==`string`?e.location:void 0),q(!0);break}case`setZoom`:{let t=e.zoom||15;D.value.setZoom(t),z.value=t,q(!0);break}case`addMarker`:{if(!e.location)throw Error(`Location is required for marker`);let t=await J(e.location);if(!t)throw Error(`Could not find location for marker`);Y(t,e.marker?.id||`marker_${Date.now()}`,e.marker?.title,e.marker?.label),q(!0);break}case`clearMarkers`:X(),A.value?.setDirections({routes:[],request:{}}),I.value=[],L.value=null,q(!0);break;case`findPlaces`:await le(e.searchQuery,e.placeType);break;case`getDirections`:if(!e.origin||!e.destination)throw Error(`Origin and destination are required`);await me(e.origin,e.destination,e.travelMode||`DRIVING`);break}}catch(e){let t=e instanceof Error?e.message:`An error occurred`;F.value=t,q(!1,t)}finally{P.value=!1}}},le=async(e,t)=>{if(!D.value||!N)return;let n=D.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 N.searchByText(r);if(i&&i.length>0){[...O.value.keys()].filter(e=>e.startsWith(`place_`)).forEach(e=>{let t=O.value.get(e);t&&(t.map=null,O.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&&Y(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(I.value=e,L.value=null,e.length>0){let t=new google.maps.LatLngBounds;e.forEach(e=>{t.extend(e.location)}),D.value?.fitBounds(t)}q(!0,void 0,{places:e})}else q(!1,`No places found`)}catch{q(!1,`No places found`)}},Q=e=>e?{lat:e.lat(),lng:e.lng()}:void 0,ue=e=>({instruction:e.instructions||``,distance:e.distance?.text||``,duration:e.duration?.text||``,travelMode:e.travel_mode||``,startLocation:Q(e.start_location),endLocation:Q(e.end_location)}),de=e=>{let t=e.routes[0],n=t?.legs[0];return!t||!n?null:{summary:t.summary||``,distance:n.distance?.text||``,duration:n.duration?.text||``,startAddress:n.start_address||``,endAddress:n.end_address||``,steps:n.steps?.map(ue)||[],polyline:t.overview_polyline||``}},fe=e=>{if(e instanceof Error&&`code`in e){let{code:t}=e;return typeof t==`string`?t:null}return null},pe=(e,t)=>fe(e)===`ZERO_RESULTS`?t===`TRANSIT`?`No transit route found. The Google Directions API does not provide transit directions within Japan.`:`No route found between these locations.`:e instanceof Error?e.message:`Could not find directions`,me=async(e,t,n)=>{if(!k.value||!A.value)return;let r={origin:e,destination:t,travelMode:n};try{let e=await k.value.route(r),t=de(e);if(!t)throw Error(`No route found between these locations.`);A.value.setDirections(e),L.value=t,I.value=[],q(!0,void 0,{route:t})}catch(e){throw Error(pe(e,n),{cause:e})}},he=e=>{D.value&&(D.value.setCenter(e.location),D.value.setZoom(17))},ge=e=>{if(!D.value)return;let t=e.startLocation||e.endLocation;t&&(D.value.setCenter(t),D.value.setZoom(18))},_e=()=>{if(!D.value)return;let e=D.value.getZoom()||15;e<21&&D.value.setZoom(e+1)},ve=()=>{if(!D.value)return;let e=D.value.getZoom()||15;e>1&&D.value.setZoom(e-1)},$=null;return(0,t.watch)(()=>T.selectedResult?.data,async e=>{if(e&&D.value){let t=JSON.stringify(e);if(t===$)return;$=t,await Z(e)}}),(0,t.onMounted)(()=>{T.googleMapKey&&ce()}),(0,t.onUnmounted)(()=>{X()}),(T,O)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,n,[(0,t.createElementVNode)(`div`,r,[(0,t.createElementVNode)(`h2`,i,(0,t.toDisplayString)(B.value),1),V.value?((0,t.openBlock)(),(0,t.createElementBlock)(`p`,a,(0,t.toDisplayString)(V.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:E,class:`w-full h-full`},null,512)):((0,t.openBlock)(),(0,t.createElementBlock)(`div`,c,[(0,t.createElementVNode)(`div`,l,[O[0]||=(0,t.createElementVNode)(`div`,{class:`text-gray-500 mb-4`},`Google Maps API key not configured`,-1),U.value?((0,t.openBlock)(),(0,t.createElementBlock)(`a`,{key:0,href:U.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)])])),P.value?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,d,[...O[1]||=[(0,t.createElementVNode)(`div`,{class:`text-gray-600`},`Loading...`,-1)]])):(0,t.createCommentVNode)(``,!0),F.value?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,f,(0,t.toDisplayString)(F.value),1)):(0,t.createCommentVNode)(``,!0),e.googleMapKey&&D.value?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,p,[(0,t.createElementVNode)(`button`,{onClick:_e,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:ve,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)]),H.value?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,m,[I.value.length>0?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,h,[O[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)(I.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=>he(e)},[(0,t.createElementVNode)(`div`,te,(0,t.toDisplayString)(e.name),1),(0,t.createElementVNode)(`div`,ne,(0,t.toDisplayString)(e.address),1),e.rating?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,_,[O[2]||=(0,t.createElementVNode)(`span`,{class:`text-yellow-500 mr-1`},`★`,-1),(0,t.createElementVNode)(`span`,v,[(0,t.createTextVNode)((0,t.toDisplayString)(e.rating.toFixed(1))+` `,1),e.userRatingsTotal?((0,t.openBlock)(),(0,t.createElementBlock)(`span`,y,` (`+(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),L.value?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,b,[O[6]||=(0,t.createElementVNode)(`h3`,{class:`font-semibold text-gray-800 mb-3`},`Directions`,-1),(0,t.createElementVNode)(`div`,x,[(0,t.createElementVNode)(`div`,S,(0,t.toDisplayString)(L.value.distance),1),(0,t.createElementVNode)(`div`,C,(0,t.toDisplayString)(L.value.duration),1)]),(0,t.createElementVNode)(`div`,re,[(0,t.createElementVNode)(`div`,null,[O[4]||=(0,t.createElementVNode)(`strong`,null,`From:`,-1),(0,t.createTextVNode)(` `+(0,t.toDisplayString)(L.value.startAddress),1)]),(0,t.createElementVNode)(`div`,null,[O[5]||=(0,t.createElementVNode)(`strong`,null,`To:`,-1),(0,t.createTextVNode)(` `+(0,t.toDisplayString)(L.value.endAddress),1)])]),(0,t.createElementVNode)(`div`,w,[((0,t.openBlock)(!0),(0,t.createElementBlock)(t.Fragment,null,(0,t.renderList)(L.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=>ge(e)},[(0,t.createElementVNode)(`div`,ae,(0,t.toDisplayString)(G(e.instruction)),1),(0,t.createElementVNode)(`div`,oe,(0,t.toDisplayString)(e.distance)+` · `+(0,t.toDisplayString)(e.duration),1)],8,ie))),128))])])):(0,t.createCommentVNode)(``,!0)])):(0,t.createCommentVNode)(``,!0)])]))}}),E={class:`text-xs text-gray-600 mt-1 truncate`},D=(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`,E,(0,t.toDisplayString)(a.value),1)],2))}}),O={...e.i,viewComponent:T,previewComponent:D,samples:e.t},k={plugin:O};exports.Preview=D,exports.TOOL_DEFINITION=e.o,exports.TOOL_NAME=e.s,exports.View=T,exports.default=k,exports.executeMap=e.n,exports.plugin=O,exports.pluginCore=e.i,exports.samples=e.t;
|
package/dist/vue.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as e, n as t, o as n, s as r, t as i } from "./samples-
|
|
1
|
+
import { i as e, n as t, o as n, s as r, t as i } from "./samples-qn05YB-F.js";
|
|
2
2
|
import { Fragment as a, computed as o, createCommentVNode as s, createElementBlock as c, createElementVNode as l, createTextVNode as u, defineComponent as d, normalizeClass as f, onMounted as p, onUnmounted as m, openBlock as h, ref as g, renderList as _, toDisplayString as v, watch as y } from "vue";
|
|
3
3
|
//#region src/vue/View.vue?vue&type=script&setup=true&lang.ts
|
|
4
4
|
var b = { class: "w-full h-full bg-white flex flex-col relative" }, x = { class: "p-4 border-b border-gray-200" }, ee = { class: "text-xl font-bold text-gray-800" }, te = {
|
|
@@ -22,16 +22,16 @@ var b = { class: "w-full h-full bg-white flex flex-col relative" }, x = { class:
|
|
|
22
22
|
}, de = {
|
|
23
23
|
key: 0,
|
|
24
24
|
class: "p-4"
|
|
25
|
-
}, fe = { class: "space-y-3" }, pe = ["onClick"], me = { class: "font-medium text-gray-800" }, he = { class: "text-sm text-gray-600 mt-1" },
|
|
25
|
+
}, fe = { class: "space-y-3" }, pe = ["onClick"], me = { class: "font-medium text-gray-800" }, he = { class: "text-sm text-gray-600 mt-1" }, ge = {
|
|
26
26
|
key: 0,
|
|
27
27
|
class: "flex items-center mt-1"
|
|
28
|
-
},
|
|
28
|
+
}, S = { class: "text-sm text-gray-600" }, C = {
|
|
29
29
|
key: 0,
|
|
30
30
|
class: "text-gray-400"
|
|
31
|
-
},
|
|
31
|
+
}, w = {
|
|
32
32
|
key: 1,
|
|
33
33
|
class: "p-4"
|
|
34
|
-
},
|
|
34
|
+
}, T = { class: "bg-blue-50 rounded-lg p-3 mb-4" }, E = { class: "text-lg font-medium text-gray-800" }, D = { class: "text-gray-600" }, O = { class: "text-sm text-gray-600 mb-3" }, k = { class: "space-y-2" }, A = ["onClick"], j = { class: "text-gray-800" }, M = { class: "text-gray-500 mt-1" }, N = /* @__PURE__ */ d({
|
|
35
35
|
__name: "View",
|
|
36
36
|
props: {
|
|
37
37
|
selectedResult: {},
|
|
@@ -39,7 +39,7 @@ var b = { class: "w-full h-full bg-white flex flex-col relative" }, x = { class:
|
|
|
39
39
|
onUpdateResult: { type: Function }
|
|
40
40
|
},
|
|
41
41
|
setup(e) {
|
|
42
|
-
let t = e, n = g(null), r = g(null), i = g(/* @__PURE__ */ new Map()), d = g(null),
|
|
42
|
+
let t = e, n = g(null), r = g(null), i = g(/* @__PURE__ */ new Map()), d = g(null), N = g(null), P = g(null), F, I, L = g(!1), R = g(null), z = g([]), B = g(null), V = g(null), H = g(15), _e = o(() => ({
|
|
43
43
|
showLocation: "Map Location",
|
|
44
44
|
setCenter: "Map View",
|
|
45
45
|
setZoom: "Map View",
|
|
@@ -47,24 +47,24 @@ var b = { class: "w-full h-full bg-white flex flex-col relative" }, x = { class:
|
|
|
47
47
|
clearMarkers: "Map",
|
|
48
48
|
findPlaces: "Place Search",
|
|
49
49
|
getDirections: "Directions"
|
|
50
|
-
})[t.selectedResult?.data?.action || "showLocation"] || "Map"),
|
|
50
|
+
})[t.selectedResult?.data?.action || "showLocation"] || "Map"), U = o(() => {
|
|
51
51
|
let e = t.selectedResult?.data;
|
|
52
52
|
if (!e) return "";
|
|
53
53
|
switch (e.action) {
|
|
54
54
|
case "showLocation":
|
|
55
55
|
case "setCenter":
|
|
56
|
-
case "addMarker": return
|
|
56
|
+
case "addMarker": return G(e.location);
|
|
57
57
|
case "setZoom": return `Zoom level: ${e.zoom}`;
|
|
58
58
|
case "findPlaces": return e.searchQuery || e.placeType || "";
|
|
59
59
|
case "getDirections": return `${e.origin} → ${e.destination}`;
|
|
60
60
|
default: return "";
|
|
61
61
|
}
|
|
62
|
-
}),
|
|
62
|
+
}), ve = o(() => z.value.length > 0 || B.value !== null), W = o(() => {
|
|
63
63
|
let e = t.selectedResult?.data;
|
|
64
64
|
if (!e?.location) return "";
|
|
65
|
-
let n =
|
|
65
|
+
let n = G(e.location);
|
|
66
66
|
return `https://www.google.com/maps/search/?api=1&query=${encodeURIComponent(n)}`;
|
|
67
|
-
}),
|
|
67
|
+
}), G = (e) => e ? typeof e == "string" ? e : `${e.lat}, ${e.lng}` : "", ye = (e) => new DOMParser().parseFromString(e, "text/html").body.textContent || "", be = () => {
|
|
68
68
|
let e = [];
|
|
69
69
|
return i.value.forEach((t, n) => {
|
|
70
70
|
let r = t.position;
|
|
@@ -80,18 +80,18 @@ var b = { class: "w-full h-full bg-white flex flex-col relative" }, x = { class:
|
|
|
80
80
|
});
|
|
81
81
|
}
|
|
82
82
|
}), e;
|
|
83
|
-
},
|
|
83
|
+
}, K = (e, n, r) => {
|
|
84
84
|
if (!t.onUpdateResult) return;
|
|
85
85
|
let i = {
|
|
86
86
|
action: t.selectedResult?.data?.action || "showLocation",
|
|
87
87
|
success: e,
|
|
88
|
-
center:
|
|
89
|
-
zoom:
|
|
90
|
-
markers:
|
|
88
|
+
center: V.value || void 0,
|
|
89
|
+
zoom: H.value,
|
|
90
|
+
markers: be(),
|
|
91
91
|
...r
|
|
92
92
|
};
|
|
93
93
|
n && (i.error = n), t.onUpdateResult(i);
|
|
94
|
-
},
|
|
94
|
+
}, xe = () => new Promise((e, n) => {
|
|
95
95
|
if (typeof google < "u" && google.maps && typeof google.maps.importLibrary == "function") {
|
|
96
96
|
e();
|
|
97
97
|
return;
|
|
@@ -105,34 +105,34 @@ var b = { class: "w-full h-full bg-white flex flex-col relative" }, x = { class:
|
|
|
105
105
|
}
|
|
106
106
|
let a = document.createElement("script");
|
|
107
107
|
a.src = `https://maps.googleapis.com/maps/api/js?key=${t.googleMapKey}&loading=async`, a.async = !0, a.defer = !0, a.onload = () => i(Date.now()), a.onerror = () => n(/* @__PURE__ */ Error("Failed to load Google Maps")), document.head.appendChild(a);
|
|
108
|
-
}),
|
|
108
|
+
}), Se = async () => {
|
|
109
109
|
if (!(!n.value || !t.googleMapKey) && !r.value) try {
|
|
110
|
-
await
|
|
110
|
+
await xe();
|
|
111
111
|
let e = await google.maps.importLibrary("marker"), i = await google.maps.importLibrary("places");
|
|
112
|
-
|
|
112
|
+
F = e.AdvancedMarkerElement, I = i.Place, r.value = new google.maps.Map(n.value, {
|
|
113
113
|
center: {
|
|
114
114
|
lat: 35.6812,
|
|
115
115
|
lng: 139.7671
|
|
116
116
|
},
|
|
117
|
-
zoom:
|
|
117
|
+
zoom: H.value,
|
|
118
118
|
mapTypeControl: !0,
|
|
119
119
|
streetViewControl: !0,
|
|
120
120
|
fullscreenControl: !0,
|
|
121
121
|
mapId: "DEMO_MAP_ID"
|
|
122
|
-
}),
|
|
122
|
+
}), P.value = new google.maps.Geocoder(), d.value = new google.maps.DirectionsService(), N.value = new google.maps.DirectionsRenderer(), N.value.setMap(r.value), r.value.addListener("center_changed", () => {
|
|
123
123
|
let e = r.value?.getCenter();
|
|
124
|
-
e && (
|
|
124
|
+
e && (V.value = {
|
|
125
125
|
lat: e.lat(),
|
|
126
126
|
lng: e.lng()
|
|
127
127
|
});
|
|
128
128
|
}), r.value.addListener("zoom_changed", () => {
|
|
129
|
-
|
|
130
|
-
}), t.selectedResult?.data && await
|
|
129
|
+
H.value = r.value?.getZoom() || 15;
|
|
130
|
+
}), t.selectedResult?.data && await X(t.selectedResult.data);
|
|
131
131
|
} catch (e) {
|
|
132
|
-
|
|
132
|
+
R.value = e instanceof Error ? e.message : "Failed to initialize map";
|
|
133
133
|
}
|
|
134
|
-
},
|
|
135
|
-
|
|
134
|
+
}, q = async (e) => typeof e == "string" ? P.value ? new Promise((t) => {
|
|
135
|
+
P.value.geocode({ address: e }, (e, n) => {
|
|
136
136
|
if (n === "OK" && e && e[0]) {
|
|
137
137
|
let n = e[0].geometry.location;
|
|
138
138
|
t({
|
|
@@ -141,71 +141,71 @@ var b = { class: "w-full h-full bg-white flex flex-col relative" }, x = { class:
|
|
|
141
141
|
});
|
|
142
142
|
} else t(null);
|
|
143
143
|
});
|
|
144
|
-
}) : null : e,
|
|
144
|
+
}) : null : e, J = (e, t, n, a) => {
|
|
145
145
|
let o;
|
|
146
146
|
if (a) {
|
|
147
147
|
let e = document.createElement("div");
|
|
148
148
|
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 = a, o = e;
|
|
149
149
|
}
|
|
150
|
-
let s = new
|
|
150
|
+
let s = new F({
|
|
151
151
|
position: e,
|
|
152
152
|
map: r.value,
|
|
153
153
|
title: n,
|
|
154
154
|
content: o
|
|
155
155
|
});
|
|
156
156
|
return i.value.set(t, s), s;
|
|
157
|
-
},
|
|
157
|
+
}, Y = () => {
|
|
158
158
|
i.value.forEach((e) => {
|
|
159
159
|
e.map = null;
|
|
160
160
|
}), i.value.clear();
|
|
161
|
-
},
|
|
161
|
+
}, X = async (e) => {
|
|
162
162
|
if (r.value) {
|
|
163
|
-
|
|
163
|
+
L.value = !0, R.value = null;
|
|
164
164
|
try {
|
|
165
165
|
switch (e.action) {
|
|
166
166
|
case "showLocation":
|
|
167
167
|
case "setCenter": {
|
|
168
168
|
if (!e.location) throw Error("Location is required");
|
|
169
|
-
let t = await
|
|
169
|
+
let t = await q(e.location);
|
|
170
170
|
if (!t) throw Error("Could not find location");
|
|
171
|
-
r.value.setCenter(t),
|
|
171
|
+
r.value.setCenter(t), V.value = t, e.action === "showLocation" && J(t, `location_${Date.now()}`, typeof e.location == "string" ? e.location : void 0), K(!0);
|
|
172
172
|
break;
|
|
173
173
|
}
|
|
174
174
|
case "setZoom": {
|
|
175
175
|
let t = e.zoom || 15;
|
|
176
|
-
r.value.setZoom(t),
|
|
176
|
+
r.value.setZoom(t), H.value = t, K(!0);
|
|
177
177
|
break;
|
|
178
178
|
}
|
|
179
179
|
case "addMarker": {
|
|
180
180
|
if (!e.location) throw Error("Location is required for marker");
|
|
181
|
-
let t = await
|
|
181
|
+
let t = await q(e.location);
|
|
182
182
|
if (!t) throw Error("Could not find location for marker");
|
|
183
|
-
|
|
183
|
+
J(t, e.marker?.id || `marker_${Date.now()}`, e.marker?.title, e.marker?.label), K(!0);
|
|
184
184
|
break;
|
|
185
185
|
}
|
|
186
186
|
case "clearMarkers":
|
|
187
|
-
|
|
187
|
+
Y(), N.value?.setDirections({
|
|
188
188
|
routes: [],
|
|
189
189
|
request: {}
|
|
190
|
-
}),
|
|
190
|
+
}), z.value = [], B.value = null, K(!0);
|
|
191
191
|
break;
|
|
192
192
|
case "findPlaces":
|
|
193
|
-
await
|
|
193
|
+
await Ce(e.searchQuery, e.placeType);
|
|
194
194
|
break;
|
|
195
195
|
case "getDirections":
|
|
196
196
|
if (!e.origin || !e.destination) throw Error("Origin and destination are required");
|
|
197
|
-
await
|
|
197
|
+
await De(e.origin, e.destination, e.travelMode || "DRIVING");
|
|
198
198
|
break;
|
|
199
199
|
}
|
|
200
200
|
} catch (e) {
|
|
201
201
|
let t = e instanceof Error ? e.message : "An error occurred";
|
|
202
|
-
|
|
202
|
+
R.value = t, K(!1, t);
|
|
203
203
|
} finally {
|
|
204
|
-
|
|
204
|
+
L.value = !1;
|
|
205
205
|
}
|
|
206
206
|
}
|
|
207
|
-
},
|
|
208
|
-
if (!r.value || !
|
|
207
|
+
}, Ce = async (e, t) => {
|
|
208
|
+
if (!r.value || !I) return;
|
|
209
209
|
let n = r.value.getCenter();
|
|
210
210
|
if (n) try {
|
|
211
211
|
let a = {
|
|
@@ -230,7 +230,7 @@ var b = { class: "w-full h-full bg-white flex flex-col relative" }, x = { class:
|
|
|
230
230
|
maxResultCount: 10
|
|
231
231
|
};
|
|
232
232
|
t && !e && (a.includedType = t);
|
|
233
|
-
let { places: o } = await
|
|
233
|
+
let { places: o } = await I.searchByText(a);
|
|
234
234
|
if (o && o.length > 0) {
|
|
235
235
|
[...i.value.keys()].filter((e) => e.startsWith("place_")).forEach((e) => {
|
|
236
236
|
let t = i.value.get(e);
|
|
@@ -244,7 +244,7 @@ var b = { class: "w-full h-full bg-white flex flex-col relative" }, x = { class:
|
|
|
244
244
|
lat: 0,
|
|
245
245
|
lng: 0
|
|
246
246
|
};
|
|
247
|
-
return n &&
|
|
247
|
+
return n && J(r, `place_${e.id}`, e.displayName || void 0, String(t + 1)), {
|
|
248
248
|
placeId: e.id || "",
|
|
249
249
|
name: e.displayName || "",
|
|
250
250
|
address: e.formattedAddress || "",
|
|
@@ -255,69 +255,69 @@ var b = { class: "w-full h-full bg-white flex flex-col relative" }, x = { class:
|
|
|
255
255
|
openNow: void 0
|
|
256
256
|
};
|
|
257
257
|
});
|
|
258
|
-
if (
|
|
258
|
+
if (z.value = e, B.value = null, e.length > 0) {
|
|
259
259
|
let t = new google.maps.LatLngBounds();
|
|
260
260
|
e.forEach((e) => {
|
|
261
261
|
t.extend(e.location);
|
|
262
262
|
}), r.value?.fitBounds(t);
|
|
263
263
|
}
|
|
264
|
-
|
|
265
|
-
} else
|
|
264
|
+
K(!0, void 0, { places: e });
|
|
265
|
+
} else K(!1, "No places found");
|
|
266
266
|
} catch {
|
|
267
|
-
|
|
267
|
+
K(!1, "No places found");
|
|
268
268
|
}
|
|
269
|
-
},
|
|
270
|
-
|
|
269
|
+
}, Z = (e) => e ? {
|
|
270
|
+
lat: e.lat(),
|
|
271
|
+
lng: e.lng()
|
|
272
|
+
} : void 0, we = (e) => ({
|
|
273
|
+
instruction: e.instructions || "",
|
|
274
|
+
distance: e.distance?.text || "",
|
|
275
|
+
duration: e.duration?.text || "",
|
|
276
|
+
travelMode: e.travel_mode || "",
|
|
277
|
+
startLocation: Z(e.start_location),
|
|
278
|
+
endLocation: Z(e.end_location)
|
|
279
|
+
}), Q = (e) => {
|
|
280
|
+
let t = e.routes[0], n = t?.legs[0];
|
|
281
|
+
return !t || !n ? null : {
|
|
282
|
+
summary: t.summary || "",
|
|
283
|
+
distance: n.distance?.text || "",
|
|
284
|
+
duration: n.duration?.text || "",
|
|
285
|
+
startAddress: n.start_address || "",
|
|
286
|
+
endAddress: n.end_address || "",
|
|
287
|
+
steps: n.steps?.map(we) || [],
|
|
288
|
+
polyline: t.overview_polyline || ""
|
|
289
|
+
};
|
|
290
|
+
}, Te = (e) => {
|
|
291
|
+
if (e instanceof Error && "code" in e) {
|
|
292
|
+
let { code: t } = e;
|
|
293
|
+
return typeof t == "string" ? t : null;
|
|
294
|
+
}
|
|
295
|
+
return null;
|
|
296
|
+
}, Ee = (e, t) => Te(e) === "ZERO_RESULTS" ? t === "TRANSIT" ? "No transit route found. The Google Directions API does not provide transit directions within Japan." : "No route found between these locations." : e instanceof Error ? e.message : "Could not find directions", De = async (e, t, n) => {
|
|
297
|
+
if (!d.value || !N.value) return;
|
|
271
298
|
let r = {
|
|
272
299
|
origin: e,
|
|
273
300
|
destination: t,
|
|
274
301
|
travelMode: n
|
|
275
302
|
};
|
|
276
|
-
|
|
277
|
-
d.value.route(r,
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
distance: e.distance?.text || "",
|
|
285
|
-
duration: e.duration?.text || "",
|
|
286
|
-
startAddress: e.start_address || "",
|
|
287
|
-
endAddress: e.end_address || "",
|
|
288
|
-
steps: e.steps?.map((e) => ({
|
|
289
|
-
instruction: e.instructions || "",
|
|
290
|
-
distance: e.distance?.text || "",
|
|
291
|
-
duration: e.duration?.text || "",
|
|
292
|
-
travelMode: e.travel_mode || "",
|
|
293
|
-
startLocation: e.start_location ? {
|
|
294
|
-
lat: e.start_location.lat(),
|
|
295
|
-
lng: e.start_location.lng()
|
|
296
|
-
} : void 0,
|
|
297
|
-
endLocation: e.end_location ? {
|
|
298
|
-
lat: e.end_location.lat(),
|
|
299
|
-
lng: e.end_location.lng()
|
|
300
|
-
} : void 0
|
|
301
|
-
})) || [],
|
|
302
|
-
polyline: t.routes[0].overview_polyline || ""
|
|
303
|
-
};
|
|
304
|
-
V.value = n, B.value = [], q(!0, void 0, { route: n });
|
|
305
|
-
}
|
|
306
|
-
} else q(!1, "Could not find directions");
|
|
307
|
-
e();
|
|
308
|
-
});
|
|
309
|
-
});
|
|
310
|
-
}, we = (e) => {
|
|
303
|
+
try {
|
|
304
|
+
let e = await d.value.route(r), t = Q(e);
|
|
305
|
+
if (!t) throw Error("No route found between these locations.");
|
|
306
|
+
N.value.setDirections(e), B.value = t, z.value = [], K(!0, void 0, { route: t });
|
|
307
|
+
} catch (e) {
|
|
308
|
+
throw Error(Ee(e, n), { cause: e });
|
|
309
|
+
}
|
|
310
|
+
}, Oe = (e) => {
|
|
311
311
|
r.value && (r.value.setCenter(e.location), r.value.setZoom(17));
|
|
312
|
-
},
|
|
312
|
+
}, ke = (e) => {
|
|
313
313
|
if (!r.value) return;
|
|
314
314
|
let t = e.startLocation || e.endLocation;
|
|
315
315
|
t && (r.value.setCenter(t), r.value.setZoom(18));
|
|
316
|
-
},
|
|
316
|
+
}, Ae = () => {
|
|
317
317
|
if (!r.value) return;
|
|
318
318
|
let e = r.value.getZoom() || 15;
|
|
319
319
|
e < 21 && r.value.setZoom(e + 1);
|
|
320
|
-
},
|
|
320
|
+
}, je = () => {
|
|
321
321
|
if (!r.value) return;
|
|
322
322
|
let e = r.value.getZoom() || 15;
|
|
323
323
|
e > 1 && r.value.setZoom(e - 1);
|
|
@@ -326,59 +326,59 @@ var b = { class: "w-full h-full bg-white flex flex-col relative" }, x = { class:
|
|
|
326
326
|
if (e && r.value) {
|
|
327
327
|
let t = JSON.stringify(e);
|
|
328
328
|
if (t === $) return;
|
|
329
|
-
$ = t, await
|
|
329
|
+
$ = t, await X(e);
|
|
330
330
|
}
|
|
331
331
|
}), p(() => {
|
|
332
|
-
t.googleMapKey &&
|
|
332
|
+
t.googleMapKey && Se();
|
|
333
333
|
}), m(() => {
|
|
334
|
-
|
|
335
|
-
}), (t, i) => (h(), c("div", b, [l("div", x, [l("h2", ee, v(
|
|
334
|
+
Y();
|
|
335
|
+
}), (t, i) => (h(), c("div", b, [l("div", x, [l("h2", ee, v(_e.value), 1), U.value ? (h(), c("p", te, v(U.value), 1)) : s("", !0)]), l("div", ne, [l("div", re, [
|
|
336
336
|
e.googleMapKey ? (h(), c("div", {
|
|
337
337
|
key: 0,
|
|
338
338
|
ref_key: "mapContainer",
|
|
339
339
|
ref: n,
|
|
340
340
|
class: "w-full h-full"
|
|
341
|
-
}, null, 512)) : (h(), c("div", ie, [l("div", ae, [i[0] ||= l("div", { class: "text-gray-500 mb-4" }, "Google Maps API key not configured", -1),
|
|
341
|
+
}, null, 512)) : (h(), c("div", ie, [l("div", ae, [i[0] ||= l("div", { class: "text-gray-500 mb-4" }, "Google Maps API key not configured", -1), W.value ? (h(), c("a", {
|
|
342
342
|
key: 0,
|
|
343
|
-
href:
|
|
343
|
+
href: W.value,
|
|
344
344
|
target: "_blank",
|
|
345
345
|
class: "inline-block px-4 py-2 bg-blue-600 text-white rounded hover:bg-blue-700 transition-colors"
|
|
346
346
|
}, " Open in Google Maps ", 8, oe)) : s("", !0)])])),
|
|
347
|
-
|
|
348
|
-
|
|
347
|
+
L.value ? (h(), c("div", se, [...i[1] ||= [l("div", { class: "text-gray-600" }, "Loading...", -1)]])) : s("", !0),
|
|
348
|
+
R.value ? (h(), c("div", ce, v(R.value), 1)) : s("", !0),
|
|
349
349
|
e.googleMapKey && r.value ? (h(), c("div", le, [l("button", {
|
|
350
|
-
onClick:
|
|
350
|
+
onClick: Ae,
|
|
351
351
|
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",
|
|
352
352
|
title: "Zoom in"
|
|
353
353
|
}, " + "), l("button", {
|
|
354
|
-
onClick:
|
|
354
|
+
onClick: je,
|
|
355
355
|
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",
|
|
356
356
|
title: "Zoom out"
|
|
357
357
|
}, " − ")])) : s("", !0)
|
|
358
|
-
]),
|
|
358
|
+
]), ve.value ? (h(), c("div", ue, [z.value.length > 0 ? (h(), c("div", de, [i[3] ||= l("h3", { class: "font-semibold text-gray-800 mb-3" }, "Search Results", -1), l("div", fe, [(h(!0), c(a, null, _(z.value, (e) => (h(), c("div", {
|
|
359
359
|
key: e.placeId,
|
|
360
360
|
class: "p-3 bg-gray-50 rounded-lg cursor-pointer hover:bg-gray-100 transition-colors",
|
|
361
|
-
onClick: (t) =>
|
|
361
|
+
onClick: (t) => Oe(e)
|
|
362
362
|
}, [
|
|
363
363
|
l("div", me, v(e.name), 1),
|
|
364
364
|
l("div", he, v(e.address), 1),
|
|
365
|
-
e.rating ? (h(), c("div",
|
|
365
|
+
e.rating ? (h(), c("div", ge, [i[2] ||= l("span", { class: "text-yellow-500 mr-1" }, "★", -1), l("span", S, [u(v(e.rating.toFixed(1)) + " ", 1), e.userRatingsTotal ? (h(), c("span", C, " (" + v(e.userRatingsTotal) + ") ", 1)) : s("", !0)])])) : s("", !0),
|
|
366
366
|
e.openNow === void 0 ? s("", !0) : (h(), c("div", {
|
|
367
367
|
key: 1,
|
|
368
368
|
class: f([e.openNow ? "text-green-600" : "text-red-600", "text-sm mt-1"])
|
|
369
369
|
}, v(e.openNow ? "Open now" : "Closed"), 3))
|
|
370
|
-
], 8, pe))), 128))])])) : s("", !0),
|
|
370
|
+
], 8, pe))), 128))])])) : s("", !0), B.value ? (h(), c("div", w, [
|
|
371
371
|
i[6] ||= l("h3", { class: "font-semibold text-gray-800 mb-3" }, "Directions", -1),
|
|
372
|
-
l("div",
|
|
373
|
-
l("div",
|
|
374
|
-
l("div",
|
|
372
|
+
l("div", T, [l("div", E, v(B.value.distance), 1), l("div", D, v(B.value.duration), 1)]),
|
|
373
|
+
l("div", O, [l("div", null, [i[4] ||= l("strong", null, "From:", -1), u(" " + v(B.value.startAddress), 1)]), l("div", null, [i[5] ||= l("strong", null, "To:", -1), u(" " + v(B.value.endAddress), 1)])]),
|
|
374
|
+
l("div", k, [(h(!0), c(a, null, _(B.value.steps, (e, t) => (h(), c("div", {
|
|
375
375
|
key: t,
|
|
376
376
|
class: "p-2 bg-gray-50 rounded text-sm cursor-pointer hover:bg-blue-50 transition-colors",
|
|
377
|
-
onClick: (t) =>
|
|
378
|
-
}, [l("div",
|
|
377
|
+
onClick: (t) => ke(e)
|
|
378
|
+
}, [l("div", j, v(ye(e.instruction)), 1), l("div", M, v(e.distance) + " · " + v(e.duration), 1)], 8, A))), 128))])
|
|
379
379
|
])) : s("", !0)])) : s("", !0)])]));
|
|
380
380
|
}
|
|
381
|
-
}),
|
|
381
|
+
}), P = { class: "text-xs text-gray-600 mt-1 truncate" }, F = /* @__PURE__ */ d({
|
|
382
382
|
__name: "Preview",
|
|
383
383
|
props: { result: {} },
|
|
384
384
|
setup(e) {
|
|
@@ -420,13 +420,13 @@ var b = { class: "w-full h-full bg-white flex flex-col relative" }, x = { class:
|
|
|
420
420
|
findPlaces: "text-yellow-700",
|
|
421
421
|
getDirections: "text-orange-600"
|
|
422
422
|
})[t.result.data?.action || "showLocation"] || "text-blue-600");
|
|
423
|
-
return (e, t) => (h(), c("div", { class: f(["text-center p-4 rounded", a.value]) }, [l("div", { class: f(["font-medium", s.value]) }, v(r.value), 3), l("div",
|
|
423
|
+
return (e, t) => (h(), c("div", { class: f(["text-center p-4 rounded", a.value]) }, [l("div", { class: f(["font-medium", s.value]) }, v(r.value), 3), l("div", P, v(i.value), 1)], 2));
|
|
424
424
|
}
|
|
425
|
-
}),
|
|
425
|
+
}), I = {
|
|
426
426
|
...e,
|
|
427
|
-
viewComponent:
|
|
428
|
-
previewComponent:
|
|
427
|
+
viewComponent: N,
|
|
428
|
+
previewComponent: F,
|
|
429
429
|
samples: i
|
|
430
|
-
},
|
|
430
|
+
}, L = { plugin: I };
|
|
431
431
|
//#endregion
|
|
432
|
-
export {
|
|
432
|
+
export { F as Preview, n as TOOL_DEFINITION, r as TOOL_NAME, N as View, L as default, t as executeMap, I as plugin, e as pluginCore, i as samples };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gui-chat-plugin/google-map",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Google Map location plugin for GUI Chat applications",
|
|
6
6
|
"author": "receptron",
|
|
@@ -31,26 +31,26 @@
|
|
|
31
31
|
"lint": "eslint src"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"gui-chat-protocol": "^0.
|
|
34
|
+
"gui-chat-protocol": "^0.3.3"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@eslint/js": "^10.0.1",
|
|
38
|
-
"@tailwindcss/vite": "^4.
|
|
39
|
-
"@types/google.maps": "^3.
|
|
40
|
-
"@typescript-eslint/eslint-plugin": "^8.
|
|
41
|
-
"@typescript-eslint/parser": "^8.
|
|
42
|
-
"@vitejs/plugin-vue": "^6.0.
|
|
43
|
-
"eslint": "^10.
|
|
44
|
-
"eslint-plugin-vue": "^10.
|
|
45
|
-
"globals": "^17.
|
|
46
|
-
"gui-chat-protocol": "^0.
|
|
47
|
-
"openai": "^6.
|
|
48
|
-
"tailwindcss": "^4.
|
|
49
|
-
"typescript": "~6.0.
|
|
50
|
-
"vite": "^8.0.
|
|
51
|
-
"vue": "^3.5.
|
|
38
|
+
"@tailwindcss/vite": "^4.3.0",
|
|
39
|
+
"@types/google.maps": "^3.64.1",
|
|
40
|
+
"@typescript-eslint/eslint-plugin": "^8.59.4",
|
|
41
|
+
"@typescript-eslint/parser": "^8.59.4",
|
|
42
|
+
"@vitejs/plugin-vue": "^6.0.7",
|
|
43
|
+
"eslint": "^10.4.0",
|
|
44
|
+
"eslint-plugin-vue": "^10.9.1",
|
|
45
|
+
"globals": "^17.6.0",
|
|
46
|
+
"gui-chat-protocol": "^0.3.3",
|
|
47
|
+
"openai": "^6.39.0",
|
|
48
|
+
"tailwindcss": "^4.3.0",
|
|
49
|
+
"typescript": "~6.0.3",
|
|
50
|
+
"vite": "^8.0.14",
|
|
51
|
+
"vue": "^3.5.34",
|
|
52
52
|
"vue-eslint-parser": "^10.4.0",
|
|
53
|
-
"vue-tsc": "^3.
|
|
53
|
+
"vue-tsc": "^3.3.1"
|
|
54
54
|
},
|
|
55
55
|
"peerDependencies": {
|
|
56
56
|
"vue": "^3.5.0"
|