@8wave/ai-elements 0.74.0 → 0.75.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_chunks/{PkStreamingMarkdown-orhL2kzD.js → PkStreamingMarkdown-rIdQh5_D.js} +20 -20
- package/dist/_chunks/PkStreamingMarkdown-rIdQh5_D.js.map +1 -0
- package/dist/_chunks/{PkToolShowArtifact-c_vCWUpQ.js → PkToolShowArtifact-CeLgwZBA.js} +6 -6
- package/dist/_chunks/{PkToolShowArtifact-c_vCWUpQ.js.map → PkToolShowArtifact-CeLgwZBA.js.map} +1 -1
- package/dist/_chunks/{PkToolShowCalendarEvent-D2VHu1V3.js → PkToolShowCalendarEvent-cQpAAE3a.js} +10 -10
- package/dist/_chunks/{PkToolShowCalendarEvent-D2VHu1V3.js.map → PkToolShowCalendarEvent-cQpAAE3a.js.map} +1 -1
- package/dist/_chunks/{PkToolShowComparison-C2ZUH0w4.js → PkToolShowComparison-Cu-zT8-Z.js} +6 -6
- package/dist/_chunks/{PkToolShowComparison-C2ZUH0w4.js.map → PkToolShowComparison-Cu-zT8-Z.js.map} +1 -1
- package/dist/_chunks/PkToolShowContactForm-CqoSVvjG.js +1658 -0
- package/dist/_chunks/PkToolShowContactForm-CqoSVvjG.js.map +1 -0
- package/dist/_chunks/{PkToolShowEmail-BuyCHUU5.js → PkToolShowEmail-oLGym0R9.js} +10 -10
- package/dist/_chunks/{PkToolShowEmail-BuyCHUU5.js.map → PkToolShowEmail-oLGym0R9.js.map} +1 -1
- package/dist/_chunks/{PkToolShowImageGallery-ByldZ0nj.js → PkToolShowImageGallery-CDXSL1Mg.js} +2 -2
- package/dist/_chunks/{PkToolShowImageGallery-ByldZ0nj.js.map → PkToolShowImageGallery-CDXSL1Mg.js.map} +1 -1
- package/dist/_chunks/{PkToolShowLocation-BCFnC5c7.js → PkToolShowLocation-BtRUdoEw.js} +7 -7
- package/dist/_chunks/{PkToolShowLocation-BCFnC5c7.js.map → PkToolShowLocation-BtRUdoEw.js.map} +1 -1
- package/dist/_chunks/{PkToolShowMessage-6Bsfi3BC.js → PkToolShowMessage-tJQGRhce.js} +9 -9
- package/dist/_chunks/{PkToolShowMessage-6Bsfi3BC.js.map → PkToolShowMessage-tJQGRhce.js.map} +1 -1
- package/dist/_chunks/{PkToolShowMultipleChoice-BLNTD2lK.js → PkToolShowMultipleChoice-CtVvdyDg.js} +2 -2
- package/dist/_chunks/{PkToolShowMultipleChoice-BLNTD2lK.js.map → PkToolShowMultipleChoice-CtVvdyDg.js.map} +1 -1
- package/dist/_chunks/{PkToolShowProductList-B4S5_m-f.js → PkToolShowProductList-D_k6CDdb.js} +2 -2
- package/dist/_chunks/{PkToolShowProductList-B4S5_m-f.js.map → PkToolShowProductList-D_k6CDdb.js.map} +1 -1
- package/dist/_chunks/{PkToolShowQrCode-BVZlzYDq.js → PkToolShowQrCode-S1j_T8wQ.js} +6 -6
- package/dist/_chunks/{PkToolShowQrCode-BVZlzYDq.js.map → PkToolShowQrCode-S1j_T8wQ.js.map} +1 -1
- package/dist/_chunks/{PkToolShowSources-BQo5DRwt.js → PkToolShowSources-CroItMtG.js} +6 -5
- package/dist/_chunks/PkToolShowSources-CroItMtG.js.map +1 -0
- package/dist/_chunks/{PkToolShowSuggestedReply-BxDI6yp_.js → PkToolShowSuggestedReply-BRa5Lpti.js} +2 -2
- package/dist/_chunks/{PkToolShowSuggestedReply-BxDI6yp_.js.map → PkToolShowSuggestedReply-BRa5Lpti.js.map} +1 -1
- package/dist/_chunks/{PkToolShowWeather-DR6egBIP.js → PkToolShowWeather-CUpCJ8Nj.js} +2 -2
- package/dist/_chunks/{PkToolShowWeather-DR6egBIP.js.map → PkToolShowWeather-CUpCJ8Nj.js.map} +1 -1
- package/dist/_chunks/{PkToolShowWebPages-D8RngE-F.js → PkToolShowWebPages-f-dHyxfD.js} +2 -2
- package/dist/_chunks/{PkToolShowWebPages-D8RngE-F.js.map → PkToolShowWebPages-f-dHyxfD.js.map} +1 -1
- package/dist/_chunks/{VvCheckbox.es-kmMsWlkU.js → VvCheckbox.es-BF8Mdg0O.js} +2 -2
- package/dist/_chunks/{VvCheckbox.es-kmMsWlkU.js.map → VvCheckbox.es-BF8Mdg0O.js.map} +1 -1
- package/dist/_chunks/{VvCheckboxGroup.es-BRRmuO9h.js → VvCheckboxGroup.es-BJc8MmJ3.js} +109 -109
- package/dist/_chunks/{VvCheckboxGroup.es-BRRmuO9h.js.map → VvCheckboxGroup.es-BJc8MmJ3.js.map} +1 -1
- package/dist/_chunks/{VvCombobox.es-pTM53Z4B.js → VvCombobox.es-ILRHqAye.js} +256 -256
- package/dist/_chunks/{VvCombobox.es-pTM53Z4B.js.map → VvCombobox.es-ILRHqAye.js.map} +1 -1
- package/dist/_chunks/{VvInputText.es-DO39OSWk.js → VvInputText.es-CDnMeO26.js} +190 -190
- package/dist/_chunks/{VvInputText.es-DO39OSWk.js.map → VvInputText.es-CDnMeO26.js.map} +1 -1
- package/dist/_chunks/{VvRadio.es-BpQAJbon.js → VvRadio.es-C2p5vvAx.js} +2 -2
- package/dist/_chunks/{VvRadio.es-BpQAJbon.js.map → VvRadio.es-C2p5vvAx.js.map} +1 -1
- package/dist/_chunks/{VvRadioGroup.es-BSBrmx9w.js → VvRadioGroup.es-6GlWuDjY.js} +10 -10
- package/dist/_chunks/{VvRadioGroup.es-BSBrmx9w.js.map → VvRadioGroup.es-6GlWuDjY.js.map} +1 -1
- package/dist/_chunks/{VvSelect.es-DALpUK5j.js → VvSelect.es-i4lO9onq.js} +6 -6
- package/dist/_chunks/{VvSelect.es-DALpUK5j.js.map → VvSelect.es-i4lO9onq.js.map} +1 -1
- package/dist/_chunks/{VvTextarea.es-C9dwYLOG.js → VvTextarea.es-CGpiCS4S.js} +248 -248
- package/dist/_chunks/{VvTextarea.es-C9dwYLOG.js.map → VvTextarea.es-CGpiCS4S.js.map} +1 -1
- package/dist/_chunks/{dist-DtF6poRc.js → dist-BTnzL-m0.js} +131 -119
- package/dist/_chunks/dist-BTnzL-m0.js.map +1 -0
- package/dist/_chunks/{index.es-BGFmj59S.js → index.es-CUjDCkXD.js} +449 -449
- package/dist/_chunks/{index.es-BGFmj59S.js.map → index.es-CUjDCkXD.js.map} +1 -1
- package/dist/_chunks/{schemas-Bp3a8tYV.js → schemas-aPiXCaCc.js} +1309 -945
- package/dist/_chunks/schemas-aPiXCaCc.js.map +1 -0
- package/dist/ai-elements.es.js +4603 -3406
- package/dist/ai-elements.es.js.map +1 -1
- package/dist-vue/PkChatbot.js +1 -1
- package/dist-vue/PkChatbotFeedbackForm.js +1 -1
- package/dist-vue/PkChatbotInput.js +1 -1
- package/dist-vue/PkChatbotMessages.js +1 -1
- package/dist-vue/PkChatbotViewChat.js +1 -1
- package/dist-vue/PkChatbotViewConversations.js +1 -1
- package/dist-vue/PkChatbotViewProfile.js +1 -1
- package/dist-vue/_chunks/{Media-Bic_vfSX.js → Media-CXQSoKqt.js} +3 -3
- package/dist-vue/_chunks/{Media-Bic_vfSX.js.map → Media-CXQSoKqt.js.map} +1 -1
- package/dist-vue/_chunks/{PkChatbot-woRkjgP5.js → PkChatbot-DAzGc7al.js} +7 -7
- package/dist-vue/_chunks/{PkChatbot-woRkjgP5.js.map → PkChatbot-DAzGc7al.js.map} +1 -1
- package/dist-vue/_chunks/{PkChatbotFeedbackForm-D-lx1URv.js → PkChatbotFeedbackForm-DvUzirPP.js} +3 -3
- package/dist-vue/_chunks/{PkChatbotFeedbackForm-D-lx1URv.js.map → PkChatbotFeedbackForm-DvUzirPP.js.map} +1 -1
- package/dist-vue/_chunks/{PkChatbotInput-LHE0HZ9z.js → PkChatbotInput-C5QSmt21.js} +2 -2
- package/dist-vue/_chunks/{PkChatbotInput-LHE0HZ9z.js.map → PkChatbotInput-C5QSmt21.js.map} +1 -1
- package/dist-vue/_chunks/{PkChatbotMessages-BxTeEm3j.js → PkChatbotMessages-dsjB0-26.js} +7 -7
- package/dist-vue/_chunks/PkChatbotMessages-dsjB0-26.js.map +1 -0
- package/dist-vue/_chunks/{PkChatbotViewChat-BoEfZeco.js → PkChatbotViewChat-CjoezIyz.js} +6 -6
- package/dist-vue/_chunks/{PkChatbotViewChat-BoEfZeco.js.map → PkChatbotViewChat-CjoezIyz.js.map} +1 -1
- package/dist-vue/_chunks/{PkChatbotViewConversations-DvVc1arX.js → PkChatbotViewConversations-DSQu6vY1.js} +2 -2
- package/dist-vue/_chunks/{PkChatbotViewConversations-DvVc1arX.js.map → PkChatbotViewConversations-DSQu6vY1.js.map} +1 -1
- package/dist-vue/_chunks/{PkChatbotViewProfile-Dev_6pki.js → PkChatbotViewProfile-BJJiaG9H.js} +2 -2
- package/dist-vue/_chunks/{PkChatbotViewProfile-Dev_6pki.js.map → PkChatbotViewProfile-BJJiaG9H.js.map} +1 -1
- package/dist-vue/_chunks/{PkStreamingMarkdown-B4gnJ4hk.js → PkStreamingMarkdown-BAhC3uGK.js} +20 -20
- package/dist-vue/_chunks/PkStreamingMarkdown-BAhC3uGK.js.map +1 -0
- package/dist-vue/_chunks/{PkToolShowArtifact-EvbUZSOf.js → PkToolShowArtifact-RzrDPcEQ.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowArtifact-EvbUZSOf.js.map → PkToolShowArtifact-RzrDPcEQ.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowContactForm-CsDOqSJK.js → PkToolShowContactForm-r_GgO-ZX.js} +4 -4
- package/dist-vue/_chunks/{PkToolShowContactForm-CsDOqSJK.js.map → PkToolShowContactForm-r_GgO-ZX.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowSources-ZtXFkIHt.js → PkToolShowSources-DK2DCvU3.js} +5 -4
- package/dist-vue/_chunks/PkToolShowSources-DK2DCvU3.js.map +1 -0
- package/dist-vue/_chunks/{ZodError-Ca0wCsGp.js → ZodError-C_est8SY.js} +2 -2
- package/dist-vue/_chunks/{ZodError-Ca0wCsGp.js.map → ZodError-C_est8SY.js.map} +1 -1
- package/dist-vue/_chunks/{createChatbotApiClient-YJegM3ni.js → createChatbotApiClient-f86KwRcq.js} +3 -3
- package/dist-vue/_chunks/createChatbotApiClient-f86KwRcq.js.map +1 -0
- package/dist-vue/_chunks/{index.es-CrPSzhoZ.js → index.es-_14zrNZB.js} +4 -4
- package/dist-vue/_chunks/{index.es-CrPSzhoZ.js.map → index.es-_14zrNZB.js.map} +1 -1
- package/dist-vue/_chunks/{schemas-sa2dDEGb.js → schemas-Clx4oKCB.js} +1309 -945
- package/dist-vue/_chunks/schemas-Clx4oKCB.js.map +1 -0
- package/dist-vue/_chunks/{useChatbotStore-DGL81KJa.js → useChatbotStore-CJlkoNn7.js} +1058 -997
- package/dist-vue/_chunks/useChatbotStore-CJlkoNn7.js.map +1 -0
- package/dist-vue/api.js +1 -1
- package/dist-vue/apps/web-component/src/composables/useChatbotAgent.d.ts +6 -6
- package/dist-vue/apps/web-component/src/composables/useChatbotAuth.d.ts +8 -8
- package/dist-vue/apps/web-component/src/lib.d.ts +29 -0
- package/dist-vue/apps/web-component/src/main.d.ts +0 -0
- package/dist-vue/apps/web-component/src/modules/applicationInsights.d.ts +38 -0
- package/dist-vue/composables.js +2 -2
- package/dist-vue/index.js +2846 -2870
- package/dist-vue/index.js.map +1 -1
- package/dist-vue/packages/auth/src/add-member-to-organization.d.ts +5 -0
- package/dist-vue/packages/auth/src/anonymous-reauth-plugin.d.ts +11 -0
- package/dist-vue/packages/auth/src/external-auth-plugin.d.ts +2 -0
- package/dist-vue/packages/auth/src/index.d.ts +3477 -8
- package/dist-vue/packages/auth/src/media-helpers.d.ts +13 -0
- package/dist-vue/packages/auth/src/organization-auto-join.d.ts +1 -0
- package/dist-vue/packages/components/src/PkEditorMarkdown.d.ts +1 -1
- package/dist-vue/packages/components/src/PkEditorRepeater.d.ts +2 -2
- package/dist-vue/packages/components/src/PkEditorWyswyg.d.ts +1 -1
- package/dist-vue/packages/components/src/PkFieldset.d.ts +3 -3
- package/dist-vue/packages/components/src/composables/index.d.ts +3 -0
- package/dist-vue/packages/components/src/composables/useChatbotError.d.ts +11 -11
- package/dist-vue/packages/composable/src/constants.d.ts +5 -0
- package/dist-vue/packages/composable/src/useDialog.d.ts +3 -3
- package/dist-vue/packages/composable/src/useSettingsStore.d.ts +4 -5
- package/dist-vue/packages/models/src/schema/Agent.d.ts +27 -27
- package/dist-vue/packages/models/src/schema/Document.d.ts +2 -0
- package/dist-vue/packages/models/src/schema/ReasoningChat.d.ts +5 -5
- package/dist-vue/packages/models/src/schema/SubAgent.d.ts +10 -10
- package/package.json +3 -3
- package/dist/_chunks/PkStreamingMarkdown-orhL2kzD.js.map +0 -1
- package/dist/_chunks/PkToolShowContactForm-6C4uWDtf.js +0 -1103
- package/dist/_chunks/PkToolShowContactForm-6C4uWDtf.js.map +0 -1
- package/dist/_chunks/PkToolShowSources-BQo5DRwt.js.map +0 -1
- package/dist/_chunks/dist-DtF6poRc.js.map +0 -1
- package/dist/_chunks/schemas-Bp3a8tYV.js.map +0 -1
- package/dist-vue/_chunks/PkChatbotMessages-BxTeEm3j.js.map +0 -1
- package/dist-vue/_chunks/PkStreamingMarkdown-B4gnJ4hk.js.map +0 -1
- package/dist-vue/_chunks/PkToolShowSources-ZtXFkIHt.js.map +0 -1
- package/dist-vue/_chunks/createChatbotApiClient-YJegM3ni.js.map +0 -1
- package/dist-vue/_chunks/schemas-sa2dDEGb.js.map +0 -1
- package/dist-vue/_chunks/useChatbotStore-DGL81KJa.js.map +0 -1
- package/dist-vue/packages/composable/src/chatbot/useChatbotStore.d.ts +0 -6
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { $ as e, Bt as t, C as n, E as r, Gt as i, V as a, Z as o, _ as s, b as c, ft as l, h as u, n as d, v as f, w as p, x as m, y as ee, yt as h, z as g } from "./vue.runtime.esm-bundler-BmggS4HU.js";
|
|
2
2
|
import { n as te } from "./vue-i18n-KvYvoek4.js";
|
|
3
|
-
import { l as ne, o as re } from "./index.es-
|
|
3
|
+
import { l as ne, o as re } from "./index.es-CUjDCkXD.js";
|
|
4
4
|
//#region ../../packages/components/src/chat/PkToolShowWeather.vue?vue&type=script&setup=true&lang.ts
|
|
5
5
|
var _ = {
|
|
6
6
|
key: 0,
|
|
@@ -221,4 +221,4 @@ var _ = {
|
|
|
221
221
|
//#endregion
|
|
222
222
|
export { V as default };
|
|
223
223
|
|
|
224
|
-
//# sourceMappingURL=PkToolShowWeather-
|
|
224
|
+
//# sourceMappingURL=PkToolShowWeather-CUpCJ8Nj.js.map
|
package/dist/_chunks/{PkToolShowWeather-DR6egBIP.js.map → PkToolShowWeather-CUpCJ8Nj.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PkToolShowWeather-DR6egBIP.js","names":[],"sources":["../../../../packages/components/src/chat/PkToolShowWeather.vue","../../../../packages/components/src/chat/PkToolShowWeather.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed, ref, watch } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n interface WeatherCurrent {\n temperature: number\n feelsLike: number\n humidity: number\n precipitation: number\n weatherCode: number\n windSpeed: number\n windDirection: number\n uvIndex: number\n }\n\n interface WeatherHourly {\n time: string\n temperature: number\n precipitationProbability: number\n precipitation: number\n weatherCode: number\n windSpeed: number\n }\n\n interface WeatherDaily {\n date: string\n maxTemp: number\n minTemp: number\n weatherCode: number\n precipitationSum: number\n precipitationProbabilityMax: number\n uvIndexMax: number\n sunrise: string\n sunset: string\n }\n\n interface AirQuality {\n aqi: number\n pm10: number\n pm25: number\n no2: number\n ozone: number\n }\n\n interface WeatherData {\n locationName: string\n latitude: number\n longitude: number\n timezone: string\n current: WeatherCurrent | null\n hourly: WeatherHourly[]\n daily: WeatherDaily[]\n airQuality: AirQuality | null\n }\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const { t: $t, d: $d, n: $n } = useI18n({ useScope: 'global' })\n\n const toolPart = computed(() => {\n return props.part as { input?: WeatherData }\n })\n\n const data = computed(() => toolPart.value.input)\n\n const selectedDayIndex = ref(0)\n\n const dailyOpen = ref(!data.value?.current)\n\n watch(selectedDayIndex, (index) => {\n if (index > 0) {\n dailyOpen.value = true\n }\n })\n\n const selectedDay = computed(\n () => data.value?.daily?.[selectedDayIndex.value],\n )\n\n /** Hourly entries filtered to the selected day's date */\n const filteredHourly = computed(() => {\n if (!data.value?.hourly?.length || !selectedDay.value) {\n return data.value?.hourly ?? []\n }\n const dayDate = selectedDay.value.date\n return data.value.hourly.filter((h) => h.time.startsWith(dayDate))\n })\n\n /**\n * Parses a date/time string in various formats the LLM might produce.\n * Tries ISO, space-separated, time-only, and common human-readable formats.\n */\n function safeDate(value: string): Date {\n // 1. Try native parsing (works for ISO 8601 and many standard formats)\n const direct = new Date(value)\n if (!Number.isNaN(direct.getTime())) {\n return direct\n }\n\n // 2. Replace space separator → T (\"2024-04-15 14:00\" → \"2024-04-15T14:00\")\n if (/^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}/.test(value)) {\n const withT = new Date(value.replace(' ', 'T'))\n if (!Number.isNaN(withT.getTime())) {\n return withT\n }\n }\n\n // 3. Time-only (\"14:00\" or \"14:00:00\") → today at that hour\n const timeOnly = value.match(/^(\\d{1,2}):(\\d{2})(?::(\\d{2}))?$/)\n if (timeOnly) {\n const today = new Date()\n today.setHours(\n Number(timeOnly[1]),\n Number(timeOnly[2]),\n Number(timeOnly[3] ?? 0),\n 0,\n )\n return today\n }\n\n // 4. Date-only (\"2024-04-15\") → noon to avoid timezone edge\n if (/^\\d{4}-\\d{2}-\\d{2}$/.test(value)) {\n const noon = new Date(value + 'T12:00:00')\n if (!Number.isNaN(noon.getTime())) {\n return noon\n }\n }\n\n // Last resort: return an obviously invalid sentinel so callers can handle it\n return new Date(NaN)\n }\n\n /** Maps WMO weather code to an Iconify wi: icon name */\n function wmoToIcon(code: number): string {\n if (code === 0) {\n return 'wi:day-sunny'\n }\n if (code === 1) {\n return 'wi:day-sunny-overcast'\n }\n if (code === 2) {\n return 'wi:day-cloudy'\n }\n if (code === 3) {\n return 'wi:cloudy'\n }\n if (code === 45 || code === 48) {\n return 'wi:fog'\n }\n if (code >= 51 && code <= 55) {\n return 'wi:sprinkle'\n }\n if (code === 56 || code === 57) {\n return 'wi:sleet'\n }\n if (code >= 61 && code <= 65) {\n return 'wi:rain'\n }\n if (code === 66 || code === 67) {\n return 'wi:rain-mix'\n }\n if (code >= 71 && code <= 77) {\n return 'wi:snow'\n }\n if (code >= 80 && code <= 82) {\n return 'wi:showers'\n }\n if (code === 85 || code === 86) {\n return 'wi:snow-wind'\n }\n if (code === 95) {\n return 'wi:thunderstorm'\n }\n if (code === 96 || code === 99) {\n return 'wi:storm-showers'\n }\n return 'wi:na'\n }\n\n /**\n * Returns a formatted day label for daily forecast.\n * When daily has 1-2 entries, use the date string directly.\n * Otherwise, use index-based computation from today.\n */\n function formatDay(isoDate: string, index: number, total: number): string {\n const parsed = safeDate(isoDate + 'T12:00:00')\n if (!Number.isNaN(parsed.getTime())) {\n const today = new Date()\n today.setHours(12, 0, 0, 0)\n const diffDays = Math.round(\n (parsed.getTime() - today.getTime()) / 86_400_000,\n )\n if (diffDays === 0) {\n return $t('weather.today')\n }\n return $d(parsed, 'weekday-day')\n }\n if (index === 0 && total <= 7) {\n return $t('weather.today')\n }\n const fallback = new Date()\n fallback.setDate(fallback.getDate() + index)\n return $d(fallback, 'weekday-day')\n }\n\n const headerDate = computed(() => {\n if (selectedDay.value) {\n const parsed = safeDate(selectedDay.value.date + 'T12:00:00')\n if (!Number.isNaN(parsed.getTime())) {\n return formatDay(\n selectedDay.value.date,\n selectedDayIndex.value,\n data.value.daily.length,\n )\n }\n }\n return formatDay(safeDate(new Date().toISOString().slice(0, 10)), 0, 1)\n })\n\n /** Returns AQI label and CSS class for European AQI */\n function aqiInfo(aqi: number): { label: string; class: string } {\n if (aqi <= 20) {\n return {\n label: $t('weather.aqiGood'),\n class: 'text-green-600 bg-green-50',\n }\n }\n if (aqi <= 40) {\n return {\n label: $t('weather.aqiFair'),\n class: 'text-lime-600 bg-lime-50',\n }\n }\n if (aqi <= 60) {\n return {\n label: $t('weather.aqiModerate'),\n class: 'text-yellow-600 bg-yellow-50',\n }\n }\n if (aqi <= 80) {\n return {\n label: $t('weather.aqiPoor'),\n class: 'text-orange-600 bg-orange-50',\n }\n }\n if (aqi <= 100) {\n return {\n label: $t('weather.aqiVeryPoor'),\n class: 'text-red-600 bg-red-50',\n }\n }\n return {\n label: $t('weather.aqiHazardous'),\n class: 'text-purple-700 bg-purple-50',\n }\n }\n\n /** Formats wind direction degrees to compass label */\n function windDirectionLabel(deg: number): string {\n const dirs = ['N', 'NE', 'E', 'SE', 'S', 'SO', 'O', 'NO']\n return dirs[Math.round(deg / 45) % 8]\n }\n</script>\n\n<template>\n <div\n v-if=\"data\"\n class=\"border border-surface-3 rounded-xl w-full overflow-hidden\">\n <!-- Header -->\n <div\n class=\"px-sm py-6 bg-surface-1 text-12 border-b border-surface-3 text-word-3 flex items-center gap-8 min-h-40\">\n <VvIcon name=\"ri:temp-cold-line\" class=\"text-16\" />\n <strong class=\"font-bold truncate\">\n {{ data.locationName }}\n </strong>\n <span class=\"ml-auto shrink-0 capitalize\">\n {{ headerDate }}\n </span>\n </div>\n\n <!-- Current conditions (only when real-time current is available AND first day is selected) -->\n <div\n v-if=\"data.current && selectedDayIndex === 0\"\n class=\"px-sm py-md flex items-center gap-md flex-wrap\">\n <div class=\"flex items-center gap-8\">\n <VvIcon\n :name=\"wmoToIcon(data.current.weatherCode)\"\n class=\"text-48 text-word-2 shrink-0\" />\n <span class=\"text-48 font-light leading-none text-word-1\">\n {{ $n(data.current.temperature, 'integer') }}°\n </span>\n </div>\n <div class=\"flex flex-col gap-4 text-12 text-word-3\">\n <div class=\"flex items-center gap-6\">\n {{ $t('weather.feelsLike') }}\n {{ $n(data.current.feelsLike, 'integer') }}°\n </div>\n <div class=\"flex items-center gap-6\">\n <VvIcon name=\"ri:water-percent-line\" class=\"text-14\" />\n {{ data.current.humidity }}%\n </div>\n <div class=\"flex items-center gap-6\">\n <VvIcon name=\"ri:windy-line\" class=\"text-14\" />\n {{ $n(data.current.windSpeed, 'integer') }} km/h\n {{ windDirectionLabel(data.current.windDirection) }}\n </div>\n <div\n v-if=\"data.current.uvIndex > 0\"\n class=\"flex items-center gap-6\">\n <VvIcon name=\"ri:sun-line\" class=\"text-14\" />\n UV {{ $n(data.current.uvIndex, 'integer') }}\n </div>\n </div>\n </div>\n\n <!-- Day summary (when no real-time current, or a non-today day is selected) -->\n <div\n v-else-if=\"selectedDay\"\n class=\"px-sm py-md flex items-center gap-md flex-wrap\">\n <div class=\"flex items-center gap-8\">\n <VvIcon\n :name=\"wmoToIcon(selectedDay.weatherCode)\"\n class=\"text-48 text-word-2 shrink-0\" />\n <div class=\"flex flex-col leading-none\">\n <span class=\"text-48 font-light text-word-1\">\n {{ $n(selectedDay.maxTemp, 'integer') }}°\n </span>\n <span class=\"text-20 text-word-3\">\n {{ $n(selectedDay.minTemp, 'integer') }}°\n </span>\n </div>\n </div>\n <div class=\"flex flex-col gap-4 text-12 text-word-3\">\n <div\n v-if=\"selectedDay.precipitationProbabilityMax > 0\"\n class=\"flex items-center gap-6\">\n <VvIcon name=\"ri:drop-line\" class=\"text-14\" />\n {{ selectedDay.precipitationProbabilityMax }}% ({{\n selectedDay.precipitationSum\n }}\n mm)\n </div>\n <div\n v-if=\"selectedDay.uvIndexMax > 0\"\n class=\"flex items-center gap-6\">\n <VvIcon name=\"ri:sun-line\" class=\"text-14\" />\n UV {{ $n(selectedDay.uvIndexMax, 'integer') }}\n </div>\n <div class=\"flex items-center gap-6\">\n <VvIcon name=\"ri:sun-foggy-line\" class=\"text-14\" />\n {{ $d(safeDate(selectedDay.sunrise), 'time') }}\n –\n {{ $d(safeDate(selectedDay.sunset), 'time') }}\n </div>\n </div>\n </div>\n\n <!-- Hourly forecast (filtered to selected day) -->\n <transition>\n <div\n v-if=\"filteredHourly.length > 0\"\n class=\"border-t border-surface-3\">\n <div\n class=\"flex overflow-x-auto gap-2 px-sm py-8 light-scrollbar\">\n <div\n v-for=\"hour in filteredHourly\"\n :key=\"hour.time\"\n class=\"flex flex-col items-center gap-4 min-w-48 px-4 py-6 rounded-lg text-11 text-word-3 shrink-0\">\n <span class=\"text-word-3\">{{\n Number.isNaN(safeDate(hour.time).getTime())\n ? hour.time\n : $d(safeDate(hour.time), 'time')\n }}</span>\n <VvIcon\n :name=\"wmoToIcon(hour.weatherCode)\"\n class=\"text-20 text-word-2\" />\n <span class=\"font-medium text-word-1\">\n {{ $n(hour.temperature, 'integer') }}°\n </span>\n <span\n v-if=\"hour.precipitationProbability > 0\"\n class=\"text-word-5 text-smaller\">\n {{ hour.precipitationProbability }}%\n </span>\n </div>\n </div>\n </div>\n </transition>\n\n <!-- Daily forecast (clickable, inside accordion) -->\n <transition>\n <VvAccordion\n v-if=\"data.daily.length > 1\"\n v-model=\"dailyOpen\"\n modifiers=\"details no-padding\"\n :title=\"$t('weather.dailyForecast')\"\n class=\"border-t border-surface-3\">\n <button\n v-for=\"(day, index) in data.daily\"\n :key=\"day.date\"\n type=\"button\"\n class=\"flex items-center gap-sm px-sm py-8 text-12 w-full text-left transition-colors cursor-pointer border-t border-surface-3\"\n :class=\"\n index === selectedDayIndex\n ? 'bg-surface-2'\n : 'hover:bg-surface-1'\n \"\n @click=\"selectedDayIndex = index\">\n <span class=\"w-48 shrink-0 text-word-3 capitalize\">\n {{ formatDay(day.date, index, data.daily.length) }}\n </span>\n <VvIcon\n :name=\"wmoToIcon(day.weatherCode)\"\n class=\"text-18 text-word-2 shrink-0\" />\n <span\n v-if=\"day.precipitationProbabilityMax > 0\"\n class=\"text-word-5 text-11 w-32 shrink-0\">\n {{ day.precipitationProbabilityMax }}%\n </span>\n <span v-else class=\"w-32 shrink-0\" />\n <div class=\"ml-auto flex items-center gap-8 text-word-3\">\n <span class=\"text-word-1 font-semibold\">\n {{ $n(day.maxTemp, 'integer') }}°\n </span>\n <span>{{ $n(day.minTemp, 'integer') }}°</span>\n </div>\n </button>\n </VvAccordion>\n </transition>\n\n <!-- Air quality -->\n <div\n v-if=\"data.airQuality\"\n class=\"border-t border-surface-3 px-sm py-8 flex items-center gap-8 text-12\">\n <VvIcon name=\"ri:windy-line\" class=\"text-14 text-word-3\" />\n <span class=\"text-word-3\">{{ $t('weather.airQuality') }}</span>\n <span\n :class=\"[\n 'ml-auto px-8 py-2 text-11 font-semibold',\n aqiInfo(data.airQuality.aqi).class,\n ]\">\n {{ aqiInfo(data.airQuality.aqi).label }}\n ({{ data.airQuality.aqi }})\n </span>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\n import { computed, ref, watch } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n interface WeatherCurrent {\n temperature: number\n feelsLike: number\n humidity: number\n precipitation: number\n weatherCode: number\n windSpeed: number\n windDirection: number\n uvIndex: number\n }\n\n interface WeatherHourly {\n time: string\n temperature: number\n precipitationProbability: number\n precipitation: number\n weatherCode: number\n windSpeed: number\n }\n\n interface WeatherDaily {\n date: string\n maxTemp: number\n minTemp: number\n weatherCode: number\n precipitationSum: number\n precipitationProbabilityMax: number\n uvIndexMax: number\n sunrise: string\n sunset: string\n }\n\n interface AirQuality {\n aqi: number\n pm10: number\n pm25: number\n no2: number\n ozone: number\n }\n\n interface WeatherData {\n locationName: string\n latitude: number\n longitude: number\n timezone: string\n current: WeatherCurrent | null\n hourly: WeatherHourly[]\n daily: WeatherDaily[]\n airQuality: AirQuality | null\n }\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const { t: $t, d: $d, n: $n } = useI18n({ useScope: 'global' })\n\n const toolPart = computed(() => {\n return props.part as { input?: WeatherData }\n })\n\n const data = computed(() => toolPart.value.input)\n\n const selectedDayIndex = ref(0)\n\n const dailyOpen = ref(!data.value?.current)\n\n watch(selectedDayIndex, (index) => {\n if (index > 0) {\n dailyOpen.value = true\n }\n })\n\n const selectedDay = computed(\n () => data.value?.daily?.[selectedDayIndex.value],\n )\n\n /** Hourly entries filtered to the selected day's date */\n const filteredHourly = computed(() => {\n if (!data.value?.hourly?.length || !selectedDay.value) {\n return data.value?.hourly ?? []\n }\n const dayDate = selectedDay.value.date\n return data.value.hourly.filter((h) => h.time.startsWith(dayDate))\n })\n\n /**\n * Parses a date/time string in various formats the LLM might produce.\n * Tries ISO, space-separated, time-only, and common human-readable formats.\n */\n function safeDate(value: string): Date {\n // 1. Try native parsing (works for ISO 8601 and many standard formats)\n const direct = new Date(value)\n if (!Number.isNaN(direct.getTime())) {\n return direct\n }\n\n // 2. Replace space separator → T (\"2024-04-15 14:00\" → \"2024-04-15T14:00\")\n if (/^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}/.test(value)) {\n const withT = new Date(value.replace(' ', 'T'))\n if (!Number.isNaN(withT.getTime())) {\n return withT\n }\n }\n\n // 3. Time-only (\"14:00\" or \"14:00:00\") → today at that hour\n const timeOnly = value.match(/^(\\d{1,2}):(\\d{2})(?::(\\d{2}))?$/)\n if (timeOnly) {\n const today = new Date()\n today.setHours(\n Number(timeOnly[1]),\n Number(timeOnly[2]),\n Number(timeOnly[3] ?? 0),\n 0,\n )\n return today\n }\n\n // 4. Date-only (\"2024-04-15\") → noon to avoid timezone edge\n if (/^\\d{4}-\\d{2}-\\d{2}$/.test(value)) {\n const noon = new Date(value + 'T12:00:00')\n if (!Number.isNaN(noon.getTime())) {\n return noon\n }\n }\n\n // Last resort: return an obviously invalid sentinel so callers can handle it\n return new Date(NaN)\n }\n\n /** Maps WMO weather code to an Iconify wi: icon name */\n function wmoToIcon(code: number): string {\n if (code === 0) {\n return 'wi:day-sunny'\n }\n if (code === 1) {\n return 'wi:day-sunny-overcast'\n }\n if (code === 2) {\n return 'wi:day-cloudy'\n }\n if (code === 3) {\n return 'wi:cloudy'\n }\n if (code === 45 || code === 48) {\n return 'wi:fog'\n }\n if (code >= 51 && code <= 55) {\n return 'wi:sprinkle'\n }\n if (code === 56 || code === 57) {\n return 'wi:sleet'\n }\n if (code >= 61 && code <= 65) {\n return 'wi:rain'\n }\n if (code === 66 || code === 67) {\n return 'wi:rain-mix'\n }\n if (code >= 71 && code <= 77) {\n return 'wi:snow'\n }\n if (code >= 80 && code <= 82) {\n return 'wi:showers'\n }\n if (code === 85 || code === 86) {\n return 'wi:snow-wind'\n }\n if (code === 95) {\n return 'wi:thunderstorm'\n }\n if (code === 96 || code === 99) {\n return 'wi:storm-showers'\n }\n return 'wi:na'\n }\n\n /**\n * Returns a formatted day label for daily forecast.\n * When daily has 1-2 entries, use the date string directly.\n * Otherwise, use index-based computation from today.\n */\n function formatDay(isoDate: string, index: number, total: number): string {\n const parsed = safeDate(isoDate + 'T12:00:00')\n if (!Number.isNaN(parsed.getTime())) {\n const today = new Date()\n today.setHours(12, 0, 0, 0)\n const diffDays = Math.round(\n (parsed.getTime() - today.getTime()) / 86_400_000,\n )\n if (diffDays === 0) {\n return $t('weather.today')\n }\n return $d(parsed, 'weekday-day')\n }\n if (index === 0 && total <= 7) {\n return $t('weather.today')\n }\n const fallback = new Date()\n fallback.setDate(fallback.getDate() + index)\n return $d(fallback, 'weekday-day')\n }\n\n const headerDate = computed(() => {\n if (selectedDay.value) {\n const parsed = safeDate(selectedDay.value.date + 'T12:00:00')\n if (!Number.isNaN(parsed.getTime())) {\n return formatDay(\n selectedDay.value.date,\n selectedDayIndex.value,\n data.value.daily.length,\n )\n }\n }\n return formatDay(safeDate(new Date().toISOString().slice(0, 10)), 0, 1)\n })\n\n /** Returns AQI label and CSS class for European AQI */\n function aqiInfo(aqi: number): { label: string; class: string } {\n if (aqi <= 20) {\n return {\n label: $t('weather.aqiGood'),\n class: 'text-green-600 bg-green-50',\n }\n }\n if (aqi <= 40) {\n return {\n label: $t('weather.aqiFair'),\n class: 'text-lime-600 bg-lime-50',\n }\n }\n if (aqi <= 60) {\n return {\n label: $t('weather.aqiModerate'),\n class: 'text-yellow-600 bg-yellow-50',\n }\n }\n if (aqi <= 80) {\n return {\n label: $t('weather.aqiPoor'),\n class: 'text-orange-600 bg-orange-50',\n }\n }\n if (aqi <= 100) {\n return {\n label: $t('weather.aqiVeryPoor'),\n class: 'text-red-600 bg-red-50',\n }\n }\n return {\n label: $t('weather.aqiHazardous'),\n class: 'text-purple-700 bg-purple-50',\n }\n }\n\n /** Formats wind direction degrees to compass label */\n function windDirectionLabel(deg: number): string {\n const dirs = ['N', 'NE', 'E', 'SE', 'S', 'SO', 'O', 'NO']\n return dirs[Math.round(deg / 45) % 8]\n }\n</script>\n\n<template>\n <div\n v-if=\"data\"\n class=\"border border-surface-3 rounded-xl w-full overflow-hidden\">\n <!-- Header -->\n <div\n class=\"px-sm py-6 bg-surface-1 text-12 border-b border-surface-3 text-word-3 flex items-center gap-8 min-h-40\">\n <VvIcon name=\"ri:temp-cold-line\" class=\"text-16\" />\n <strong class=\"font-bold truncate\">\n {{ data.locationName }}\n </strong>\n <span class=\"ml-auto shrink-0 capitalize\">\n {{ headerDate }}\n </span>\n </div>\n\n <!-- Current conditions (only when real-time current is available AND first day is selected) -->\n <div\n v-if=\"data.current && selectedDayIndex === 0\"\n class=\"px-sm py-md flex items-center gap-md flex-wrap\">\n <div class=\"flex items-center gap-8\">\n <VvIcon\n :name=\"wmoToIcon(data.current.weatherCode)\"\n class=\"text-48 text-word-2 shrink-0\" />\n <span class=\"text-48 font-light leading-none text-word-1\">\n {{ $n(data.current.temperature, 'integer') }}°\n </span>\n </div>\n <div class=\"flex flex-col gap-4 text-12 text-word-3\">\n <div class=\"flex items-center gap-6\">\n {{ $t('weather.feelsLike') }}\n {{ $n(data.current.feelsLike, 'integer') }}°\n </div>\n <div class=\"flex items-center gap-6\">\n <VvIcon name=\"ri:water-percent-line\" class=\"text-14\" />\n {{ data.current.humidity }}%\n </div>\n <div class=\"flex items-center gap-6\">\n <VvIcon name=\"ri:windy-line\" class=\"text-14\" />\n {{ $n(data.current.windSpeed, 'integer') }} km/h\n {{ windDirectionLabel(data.current.windDirection) }}\n </div>\n <div\n v-if=\"data.current.uvIndex > 0\"\n class=\"flex items-center gap-6\">\n <VvIcon name=\"ri:sun-line\" class=\"text-14\" />\n UV {{ $n(data.current.uvIndex, 'integer') }}\n </div>\n </div>\n </div>\n\n <!-- Day summary (when no real-time current, or a non-today day is selected) -->\n <div\n v-else-if=\"selectedDay\"\n class=\"px-sm py-md flex items-center gap-md flex-wrap\">\n <div class=\"flex items-center gap-8\">\n <VvIcon\n :name=\"wmoToIcon(selectedDay.weatherCode)\"\n class=\"text-48 text-word-2 shrink-0\" />\n <div class=\"flex flex-col leading-none\">\n <span class=\"text-48 font-light text-word-1\">\n {{ $n(selectedDay.maxTemp, 'integer') }}°\n </span>\n <span class=\"text-20 text-word-3\">\n {{ $n(selectedDay.minTemp, 'integer') }}°\n </span>\n </div>\n </div>\n <div class=\"flex flex-col gap-4 text-12 text-word-3\">\n <div\n v-if=\"selectedDay.precipitationProbabilityMax > 0\"\n class=\"flex items-center gap-6\">\n <VvIcon name=\"ri:drop-line\" class=\"text-14\" />\n {{ selectedDay.precipitationProbabilityMax }}% ({{\n selectedDay.precipitationSum\n }}\n mm)\n </div>\n <div\n v-if=\"selectedDay.uvIndexMax > 0\"\n class=\"flex items-center gap-6\">\n <VvIcon name=\"ri:sun-line\" class=\"text-14\" />\n UV {{ $n(selectedDay.uvIndexMax, 'integer') }}\n </div>\n <div class=\"flex items-center gap-6\">\n <VvIcon name=\"ri:sun-foggy-line\" class=\"text-14\" />\n {{ $d(safeDate(selectedDay.sunrise), 'time') }}\n –\n {{ $d(safeDate(selectedDay.sunset), 'time') }}\n </div>\n </div>\n </div>\n\n <!-- Hourly forecast (filtered to selected day) -->\n <transition>\n <div\n v-if=\"filteredHourly.length > 0\"\n class=\"border-t border-surface-3\">\n <div\n class=\"flex overflow-x-auto gap-2 px-sm py-8 light-scrollbar\">\n <div\n v-for=\"hour in filteredHourly\"\n :key=\"hour.time\"\n class=\"flex flex-col items-center gap-4 min-w-48 px-4 py-6 rounded-lg text-11 text-word-3 shrink-0\">\n <span class=\"text-word-3\">{{\n Number.isNaN(safeDate(hour.time).getTime())\n ? hour.time\n : $d(safeDate(hour.time), 'time')\n }}</span>\n <VvIcon\n :name=\"wmoToIcon(hour.weatherCode)\"\n class=\"text-20 text-word-2\" />\n <span class=\"font-medium text-word-1\">\n {{ $n(hour.temperature, 'integer') }}°\n </span>\n <span\n v-if=\"hour.precipitationProbability > 0\"\n class=\"text-word-5 text-smaller\">\n {{ hour.precipitationProbability }}%\n </span>\n </div>\n </div>\n </div>\n </transition>\n\n <!-- Daily forecast (clickable, inside accordion) -->\n <transition>\n <VvAccordion\n v-if=\"data.daily.length > 1\"\n v-model=\"dailyOpen\"\n modifiers=\"details no-padding\"\n :title=\"$t('weather.dailyForecast')\"\n class=\"border-t border-surface-3\">\n <button\n v-for=\"(day, index) in data.daily\"\n :key=\"day.date\"\n type=\"button\"\n class=\"flex items-center gap-sm px-sm py-8 text-12 w-full text-left transition-colors cursor-pointer border-t border-surface-3\"\n :class=\"\n index === selectedDayIndex\n ? 'bg-surface-2'\n : 'hover:bg-surface-1'\n \"\n @click=\"selectedDayIndex = index\">\n <span class=\"w-48 shrink-0 text-word-3 capitalize\">\n {{ formatDay(day.date, index, data.daily.length) }}\n </span>\n <VvIcon\n :name=\"wmoToIcon(day.weatherCode)\"\n class=\"text-18 text-word-2 shrink-0\" />\n <span\n v-if=\"day.precipitationProbabilityMax > 0\"\n class=\"text-word-5 text-11 w-32 shrink-0\">\n {{ day.precipitationProbabilityMax }}%\n </span>\n <span v-else class=\"w-32 shrink-0\" />\n <div class=\"ml-auto flex items-center gap-8 text-word-3\">\n <span class=\"text-word-1 font-semibold\">\n {{ $n(day.maxTemp, 'integer') }}°\n </span>\n <span>{{ $n(day.minTemp, 'integer') }}°</span>\n </div>\n </button>\n </VvAccordion>\n </transition>\n\n <!-- Air quality -->\n <div\n v-if=\"data.airQuality\"\n class=\"border-t border-surface-3 px-sm py-8 flex items-center gap-8 text-12\">\n <VvIcon name=\"ri:windy-line\" class=\"text-14 text-word-3\" />\n <span class=\"text-word-3\">{{ $t('weather.airQuality') }}</span>\n <span\n :class=\"[\n 'ml-auto px-8 py-2 text-11 font-semibold',\n aqiInfo(data.airQuality.aqi).class,\n ]\">\n {{ aqiInfo(data.airQuality.aqi).label }}\n ({{ data.airQuality.aqi }})\n </span>\n </div>\n </div>\n</template>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PkToolShowWeather-CUpCJ8Nj.js","names":[],"sources":["../../../../packages/components/src/chat/PkToolShowWeather.vue","../../../../packages/components/src/chat/PkToolShowWeather.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed, ref, watch } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n interface WeatherCurrent {\n temperature: number\n feelsLike: number\n humidity: number\n precipitation: number\n weatherCode: number\n windSpeed: number\n windDirection: number\n uvIndex: number\n }\n\n interface WeatherHourly {\n time: string\n temperature: number\n precipitationProbability: number\n precipitation: number\n weatherCode: number\n windSpeed: number\n }\n\n interface WeatherDaily {\n date: string\n maxTemp: number\n minTemp: number\n weatherCode: number\n precipitationSum: number\n precipitationProbabilityMax: number\n uvIndexMax: number\n sunrise: string\n sunset: string\n }\n\n interface AirQuality {\n aqi: number\n pm10: number\n pm25: number\n no2: number\n ozone: number\n }\n\n interface WeatherData {\n locationName: string\n latitude: number\n longitude: number\n timezone: string\n current: WeatherCurrent | null\n hourly: WeatherHourly[]\n daily: WeatherDaily[]\n airQuality: AirQuality | null\n }\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const { t: $t, d: $d, n: $n } = useI18n({ useScope: 'global' })\n\n const toolPart = computed(() => {\n return props.part as { input?: WeatherData }\n })\n\n const data = computed(() => toolPart.value.input)\n\n const selectedDayIndex = ref(0)\n\n const dailyOpen = ref(!data.value?.current)\n\n watch(selectedDayIndex, (index) => {\n if (index > 0) {\n dailyOpen.value = true\n }\n })\n\n const selectedDay = computed(\n () => data.value?.daily?.[selectedDayIndex.value],\n )\n\n /** Hourly entries filtered to the selected day's date */\n const filteredHourly = computed(() => {\n if (!data.value?.hourly?.length || !selectedDay.value) {\n return data.value?.hourly ?? []\n }\n const dayDate = selectedDay.value.date\n return data.value.hourly.filter((h) => h.time.startsWith(dayDate))\n })\n\n /**\n * Parses a date/time string in various formats the LLM might produce.\n * Tries ISO, space-separated, time-only, and common human-readable formats.\n */\n function safeDate(value: string): Date {\n // 1. Try native parsing (works for ISO 8601 and many standard formats)\n const direct = new Date(value)\n if (!Number.isNaN(direct.getTime())) {\n return direct\n }\n\n // 2. Replace space separator → T (\"2024-04-15 14:00\" → \"2024-04-15T14:00\")\n if (/^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}/.test(value)) {\n const withT = new Date(value.replace(' ', 'T'))\n if (!Number.isNaN(withT.getTime())) {\n return withT\n }\n }\n\n // 3. Time-only (\"14:00\" or \"14:00:00\") → today at that hour\n const timeOnly = value.match(/^(\\d{1,2}):(\\d{2})(?::(\\d{2}))?$/)\n if (timeOnly) {\n const today = new Date()\n today.setHours(\n Number(timeOnly[1]),\n Number(timeOnly[2]),\n Number(timeOnly[3] ?? 0),\n 0,\n )\n return today\n }\n\n // 4. Date-only (\"2024-04-15\") → noon to avoid timezone edge\n if (/^\\d{4}-\\d{2}-\\d{2}$/.test(value)) {\n const noon = new Date(value + 'T12:00:00')\n if (!Number.isNaN(noon.getTime())) {\n return noon\n }\n }\n\n // Last resort: return an obviously invalid sentinel so callers can handle it\n return new Date(NaN)\n }\n\n /** Maps WMO weather code to an Iconify wi: icon name */\n function wmoToIcon(code: number): string {\n if (code === 0) {\n return 'wi:day-sunny'\n }\n if (code === 1) {\n return 'wi:day-sunny-overcast'\n }\n if (code === 2) {\n return 'wi:day-cloudy'\n }\n if (code === 3) {\n return 'wi:cloudy'\n }\n if (code === 45 || code === 48) {\n return 'wi:fog'\n }\n if (code >= 51 && code <= 55) {\n return 'wi:sprinkle'\n }\n if (code === 56 || code === 57) {\n return 'wi:sleet'\n }\n if (code >= 61 && code <= 65) {\n return 'wi:rain'\n }\n if (code === 66 || code === 67) {\n return 'wi:rain-mix'\n }\n if (code >= 71 && code <= 77) {\n return 'wi:snow'\n }\n if (code >= 80 && code <= 82) {\n return 'wi:showers'\n }\n if (code === 85 || code === 86) {\n return 'wi:snow-wind'\n }\n if (code === 95) {\n return 'wi:thunderstorm'\n }\n if (code === 96 || code === 99) {\n return 'wi:storm-showers'\n }\n return 'wi:na'\n }\n\n /**\n * Returns a formatted day label for daily forecast.\n * When daily has 1-2 entries, use the date string directly.\n * Otherwise, use index-based computation from today.\n */\n function formatDay(isoDate: string, index: number, total: number): string {\n const parsed = safeDate(isoDate + 'T12:00:00')\n if (!Number.isNaN(parsed.getTime())) {\n const today = new Date()\n today.setHours(12, 0, 0, 0)\n const diffDays = Math.round(\n (parsed.getTime() - today.getTime()) / 86_400_000,\n )\n if (diffDays === 0) {\n return $t('weather.today')\n }\n return $d(parsed, 'weekday-day')\n }\n if (index === 0 && total <= 7) {\n return $t('weather.today')\n }\n const fallback = new Date()\n fallback.setDate(fallback.getDate() + index)\n return $d(fallback, 'weekday-day')\n }\n\n const headerDate = computed(() => {\n if (selectedDay.value) {\n const parsed = safeDate(selectedDay.value.date + 'T12:00:00')\n if (!Number.isNaN(parsed.getTime())) {\n return formatDay(\n selectedDay.value.date,\n selectedDayIndex.value,\n data.value.daily.length,\n )\n }\n }\n return formatDay(safeDate(new Date().toISOString().slice(0, 10)), 0, 1)\n })\n\n /** Returns AQI label and CSS class for European AQI */\n function aqiInfo(aqi: number): { label: string; class: string } {\n if (aqi <= 20) {\n return {\n label: $t('weather.aqiGood'),\n class: 'text-green-600 bg-green-50',\n }\n }\n if (aqi <= 40) {\n return {\n label: $t('weather.aqiFair'),\n class: 'text-lime-600 bg-lime-50',\n }\n }\n if (aqi <= 60) {\n return {\n label: $t('weather.aqiModerate'),\n class: 'text-yellow-600 bg-yellow-50',\n }\n }\n if (aqi <= 80) {\n return {\n label: $t('weather.aqiPoor'),\n class: 'text-orange-600 bg-orange-50',\n }\n }\n if (aqi <= 100) {\n return {\n label: $t('weather.aqiVeryPoor'),\n class: 'text-red-600 bg-red-50',\n }\n }\n return {\n label: $t('weather.aqiHazardous'),\n class: 'text-purple-700 bg-purple-50',\n }\n }\n\n /** Formats wind direction degrees to compass label */\n function windDirectionLabel(deg: number): string {\n const dirs = ['N', 'NE', 'E', 'SE', 'S', 'SO', 'O', 'NO']\n return dirs[Math.round(deg / 45) % 8]\n }\n</script>\n\n<template>\n <div\n v-if=\"data\"\n class=\"border border-surface-3 rounded-xl w-full overflow-hidden\">\n <!-- Header -->\n <div\n class=\"px-sm py-6 bg-surface-1 text-12 border-b border-surface-3 text-word-3 flex items-center gap-8 min-h-40\">\n <VvIcon name=\"ri:temp-cold-line\" class=\"text-16\" />\n <strong class=\"font-bold truncate\">\n {{ data.locationName }}\n </strong>\n <span class=\"ml-auto shrink-0 capitalize\">\n {{ headerDate }}\n </span>\n </div>\n\n <!-- Current conditions (only when real-time current is available AND first day is selected) -->\n <div\n v-if=\"data.current && selectedDayIndex === 0\"\n class=\"px-sm py-md flex items-center gap-md flex-wrap\">\n <div class=\"flex items-center gap-8\">\n <VvIcon\n :name=\"wmoToIcon(data.current.weatherCode)\"\n class=\"text-48 text-word-2 shrink-0\" />\n <span class=\"text-48 font-light leading-none text-word-1\">\n {{ $n(data.current.temperature, 'integer') }}°\n </span>\n </div>\n <div class=\"flex flex-col gap-4 text-12 text-word-3\">\n <div class=\"flex items-center gap-6\">\n {{ $t('weather.feelsLike') }}\n {{ $n(data.current.feelsLike, 'integer') }}°\n </div>\n <div class=\"flex items-center gap-6\">\n <VvIcon name=\"ri:water-percent-line\" class=\"text-14\" />\n {{ data.current.humidity }}%\n </div>\n <div class=\"flex items-center gap-6\">\n <VvIcon name=\"ri:windy-line\" class=\"text-14\" />\n {{ $n(data.current.windSpeed, 'integer') }} km/h\n {{ windDirectionLabel(data.current.windDirection) }}\n </div>\n <div\n v-if=\"data.current.uvIndex > 0\"\n class=\"flex items-center gap-6\">\n <VvIcon name=\"ri:sun-line\" class=\"text-14\" />\n UV {{ $n(data.current.uvIndex, 'integer') }}\n </div>\n </div>\n </div>\n\n <!-- Day summary (when no real-time current, or a non-today day is selected) -->\n <div\n v-else-if=\"selectedDay\"\n class=\"px-sm py-md flex items-center gap-md flex-wrap\">\n <div class=\"flex items-center gap-8\">\n <VvIcon\n :name=\"wmoToIcon(selectedDay.weatherCode)\"\n class=\"text-48 text-word-2 shrink-0\" />\n <div class=\"flex flex-col leading-none\">\n <span class=\"text-48 font-light text-word-1\">\n {{ $n(selectedDay.maxTemp, 'integer') }}°\n </span>\n <span class=\"text-20 text-word-3\">\n {{ $n(selectedDay.minTemp, 'integer') }}°\n </span>\n </div>\n </div>\n <div class=\"flex flex-col gap-4 text-12 text-word-3\">\n <div\n v-if=\"selectedDay.precipitationProbabilityMax > 0\"\n class=\"flex items-center gap-6\">\n <VvIcon name=\"ri:drop-line\" class=\"text-14\" />\n {{ selectedDay.precipitationProbabilityMax }}% ({{\n selectedDay.precipitationSum\n }}\n mm)\n </div>\n <div\n v-if=\"selectedDay.uvIndexMax > 0\"\n class=\"flex items-center gap-6\">\n <VvIcon name=\"ri:sun-line\" class=\"text-14\" />\n UV {{ $n(selectedDay.uvIndexMax, 'integer') }}\n </div>\n <div class=\"flex items-center gap-6\">\n <VvIcon name=\"ri:sun-foggy-line\" class=\"text-14\" />\n {{ $d(safeDate(selectedDay.sunrise), 'time') }}\n –\n {{ $d(safeDate(selectedDay.sunset), 'time') }}\n </div>\n </div>\n </div>\n\n <!-- Hourly forecast (filtered to selected day) -->\n <transition>\n <div\n v-if=\"filteredHourly.length > 0\"\n class=\"border-t border-surface-3\">\n <div\n class=\"flex overflow-x-auto gap-2 px-sm py-8 light-scrollbar\">\n <div\n v-for=\"hour in filteredHourly\"\n :key=\"hour.time\"\n class=\"flex flex-col items-center gap-4 min-w-48 px-4 py-6 rounded-lg text-11 text-word-3 shrink-0\">\n <span class=\"text-word-3\">{{\n Number.isNaN(safeDate(hour.time).getTime())\n ? hour.time\n : $d(safeDate(hour.time), 'time')\n }}</span>\n <VvIcon\n :name=\"wmoToIcon(hour.weatherCode)\"\n class=\"text-20 text-word-2\" />\n <span class=\"font-medium text-word-1\">\n {{ $n(hour.temperature, 'integer') }}°\n </span>\n <span\n v-if=\"hour.precipitationProbability > 0\"\n class=\"text-word-5 text-smaller\">\n {{ hour.precipitationProbability }}%\n </span>\n </div>\n </div>\n </div>\n </transition>\n\n <!-- Daily forecast (clickable, inside accordion) -->\n <transition>\n <VvAccordion\n v-if=\"data.daily.length > 1\"\n v-model=\"dailyOpen\"\n modifiers=\"details no-padding\"\n :title=\"$t('weather.dailyForecast')\"\n class=\"border-t border-surface-3\">\n <button\n v-for=\"(day, index) in data.daily\"\n :key=\"day.date\"\n type=\"button\"\n class=\"flex items-center gap-sm px-sm py-8 text-12 w-full text-left transition-colors cursor-pointer border-t border-surface-3\"\n :class=\"\n index === selectedDayIndex\n ? 'bg-surface-2'\n : 'hover:bg-surface-1'\n \"\n @click=\"selectedDayIndex = index\">\n <span class=\"w-48 shrink-0 text-word-3 capitalize\">\n {{ formatDay(day.date, index, data.daily.length) }}\n </span>\n <VvIcon\n :name=\"wmoToIcon(day.weatherCode)\"\n class=\"text-18 text-word-2 shrink-0\" />\n <span\n v-if=\"day.precipitationProbabilityMax > 0\"\n class=\"text-word-5 text-11 w-32 shrink-0\">\n {{ day.precipitationProbabilityMax }}%\n </span>\n <span v-else class=\"w-32 shrink-0\" />\n <div class=\"ml-auto flex items-center gap-8 text-word-3\">\n <span class=\"text-word-1 font-semibold\">\n {{ $n(day.maxTemp, 'integer') }}°\n </span>\n <span>{{ $n(day.minTemp, 'integer') }}°</span>\n </div>\n </button>\n </VvAccordion>\n </transition>\n\n <!-- Air quality -->\n <div\n v-if=\"data.airQuality\"\n class=\"border-t border-surface-3 px-sm py-8 flex items-center gap-8 text-12\">\n <VvIcon name=\"ri:windy-line\" class=\"text-14 text-word-3\" />\n <span class=\"text-word-3\">{{ $t('weather.airQuality') }}</span>\n <span\n :class=\"[\n 'ml-auto px-8 py-2 text-11 font-semibold',\n aqiInfo(data.airQuality.aqi).class,\n ]\">\n {{ aqiInfo(data.airQuality.aqi).label }}\n ({{ data.airQuality.aqi }})\n </span>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\n import { computed, ref, watch } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n interface WeatherCurrent {\n temperature: number\n feelsLike: number\n humidity: number\n precipitation: number\n weatherCode: number\n windSpeed: number\n windDirection: number\n uvIndex: number\n }\n\n interface WeatherHourly {\n time: string\n temperature: number\n precipitationProbability: number\n precipitation: number\n weatherCode: number\n windSpeed: number\n }\n\n interface WeatherDaily {\n date: string\n maxTemp: number\n minTemp: number\n weatherCode: number\n precipitationSum: number\n precipitationProbabilityMax: number\n uvIndexMax: number\n sunrise: string\n sunset: string\n }\n\n interface AirQuality {\n aqi: number\n pm10: number\n pm25: number\n no2: number\n ozone: number\n }\n\n interface WeatherData {\n locationName: string\n latitude: number\n longitude: number\n timezone: string\n current: WeatherCurrent | null\n hourly: WeatherHourly[]\n daily: WeatherDaily[]\n airQuality: AirQuality | null\n }\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const { t: $t, d: $d, n: $n } = useI18n({ useScope: 'global' })\n\n const toolPart = computed(() => {\n return props.part as { input?: WeatherData }\n })\n\n const data = computed(() => toolPart.value.input)\n\n const selectedDayIndex = ref(0)\n\n const dailyOpen = ref(!data.value?.current)\n\n watch(selectedDayIndex, (index) => {\n if (index > 0) {\n dailyOpen.value = true\n }\n })\n\n const selectedDay = computed(\n () => data.value?.daily?.[selectedDayIndex.value],\n )\n\n /** Hourly entries filtered to the selected day's date */\n const filteredHourly = computed(() => {\n if (!data.value?.hourly?.length || !selectedDay.value) {\n return data.value?.hourly ?? []\n }\n const dayDate = selectedDay.value.date\n return data.value.hourly.filter((h) => h.time.startsWith(dayDate))\n })\n\n /**\n * Parses a date/time string in various formats the LLM might produce.\n * Tries ISO, space-separated, time-only, and common human-readable formats.\n */\n function safeDate(value: string): Date {\n // 1. Try native parsing (works for ISO 8601 and many standard formats)\n const direct = new Date(value)\n if (!Number.isNaN(direct.getTime())) {\n return direct\n }\n\n // 2. Replace space separator → T (\"2024-04-15 14:00\" → \"2024-04-15T14:00\")\n if (/^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}/.test(value)) {\n const withT = new Date(value.replace(' ', 'T'))\n if (!Number.isNaN(withT.getTime())) {\n return withT\n }\n }\n\n // 3. Time-only (\"14:00\" or \"14:00:00\") → today at that hour\n const timeOnly = value.match(/^(\\d{1,2}):(\\d{2})(?::(\\d{2}))?$/)\n if (timeOnly) {\n const today = new Date()\n today.setHours(\n Number(timeOnly[1]),\n Number(timeOnly[2]),\n Number(timeOnly[3] ?? 0),\n 0,\n )\n return today\n }\n\n // 4. Date-only (\"2024-04-15\") → noon to avoid timezone edge\n if (/^\\d{4}-\\d{2}-\\d{2}$/.test(value)) {\n const noon = new Date(value + 'T12:00:00')\n if (!Number.isNaN(noon.getTime())) {\n return noon\n }\n }\n\n // Last resort: return an obviously invalid sentinel so callers can handle it\n return new Date(NaN)\n }\n\n /** Maps WMO weather code to an Iconify wi: icon name */\n function wmoToIcon(code: number): string {\n if (code === 0) {\n return 'wi:day-sunny'\n }\n if (code === 1) {\n return 'wi:day-sunny-overcast'\n }\n if (code === 2) {\n return 'wi:day-cloudy'\n }\n if (code === 3) {\n return 'wi:cloudy'\n }\n if (code === 45 || code === 48) {\n return 'wi:fog'\n }\n if (code >= 51 && code <= 55) {\n return 'wi:sprinkle'\n }\n if (code === 56 || code === 57) {\n return 'wi:sleet'\n }\n if (code >= 61 && code <= 65) {\n return 'wi:rain'\n }\n if (code === 66 || code === 67) {\n return 'wi:rain-mix'\n }\n if (code >= 71 && code <= 77) {\n return 'wi:snow'\n }\n if (code >= 80 && code <= 82) {\n return 'wi:showers'\n }\n if (code === 85 || code === 86) {\n return 'wi:snow-wind'\n }\n if (code === 95) {\n return 'wi:thunderstorm'\n }\n if (code === 96 || code === 99) {\n return 'wi:storm-showers'\n }\n return 'wi:na'\n }\n\n /**\n * Returns a formatted day label for daily forecast.\n * When daily has 1-2 entries, use the date string directly.\n * Otherwise, use index-based computation from today.\n */\n function formatDay(isoDate: string, index: number, total: number): string {\n const parsed = safeDate(isoDate + 'T12:00:00')\n if (!Number.isNaN(parsed.getTime())) {\n const today = new Date()\n today.setHours(12, 0, 0, 0)\n const diffDays = Math.round(\n (parsed.getTime() - today.getTime()) / 86_400_000,\n )\n if (diffDays === 0) {\n return $t('weather.today')\n }\n return $d(parsed, 'weekday-day')\n }\n if (index === 0 && total <= 7) {\n return $t('weather.today')\n }\n const fallback = new Date()\n fallback.setDate(fallback.getDate() + index)\n return $d(fallback, 'weekday-day')\n }\n\n const headerDate = computed(() => {\n if (selectedDay.value) {\n const parsed = safeDate(selectedDay.value.date + 'T12:00:00')\n if (!Number.isNaN(parsed.getTime())) {\n return formatDay(\n selectedDay.value.date,\n selectedDayIndex.value,\n data.value.daily.length,\n )\n }\n }\n return formatDay(safeDate(new Date().toISOString().slice(0, 10)), 0, 1)\n })\n\n /** Returns AQI label and CSS class for European AQI */\n function aqiInfo(aqi: number): { label: string; class: string } {\n if (aqi <= 20) {\n return {\n label: $t('weather.aqiGood'),\n class: 'text-green-600 bg-green-50',\n }\n }\n if (aqi <= 40) {\n return {\n label: $t('weather.aqiFair'),\n class: 'text-lime-600 bg-lime-50',\n }\n }\n if (aqi <= 60) {\n return {\n label: $t('weather.aqiModerate'),\n class: 'text-yellow-600 bg-yellow-50',\n }\n }\n if (aqi <= 80) {\n return {\n label: $t('weather.aqiPoor'),\n class: 'text-orange-600 bg-orange-50',\n }\n }\n if (aqi <= 100) {\n return {\n label: $t('weather.aqiVeryPoor'),\n class: 'text-red-600 bg-red-50',\n }\n }\n return {\n label: $t('weather.aqiHazardous'),\n class: 'text-purple-700 bg-purple-50',\n }\n }\n\n /** Formats wind direction degrees to compass label */\n function windDirectionLabel(deg: number): string {\n const dirs = ['N', 'NE', 'E', 'SE', 'S', 'SO', 'O', 'NO']\n return dirs[Math.round(deg / 45) % 8]\n }\n</script>\n\n<template>\n <div\n v-if=\"data\"\n class=\"border border-surface-3 rounded-xl w-full overflow-hidden\">\n <!-- Header -->\n <div\n class=\"px-sm py-6 bg-surface-1 text-12 border-b border-surface-3 text-word-3 flex items-center gap-8 min-h-40\">\n <VvIcon name=\"ri:temp-cold-line\" class=\"text-16\" />\n <strong class=\"font-bold truncate\">\n {{ data.locationName }}\n </strong>\n <span class=\"ml-auto shrink-0 capitalize\">\n {{ headerDate }}\n </span>\n </div>\n\n <!-- Current conditions (only when real-time current is available AND first day is selected) -->\n <div\n v-if=\"data.current && selectedDayIndex === 0\"\n class=\"px-sm py-md flex items-center gap-md flex-wrap\">\n <div class=\"flex items-center gap-8\">\n <VvIcon\n :name=\"wmoToIcon(data.current.weatherCode)\"\n class=\"text-48 text-word-2 shrink-0\" />\n <span class=\"text-48 font-light leading-none text-word-1\">\n {{ $n(data.current.temperature, 'integer') }}°\n </span>\n </div>\n <div class=\"flex flex-col gap-4 text-12 text-word-3\">\n <div class=\"flex items-center gap-6\">\n {{ $t('weather.feelsLike') }}\n {{ $n(data.current.feelsLike, 'integer') }}°\n </div>\n <div class=\"flex items-center gap-6\">\n <VvIcon name=\"ri:water-percent-line\" class=\"text-14\" />\n {{ data.current.humidity }}%\n </div>\n <div class=\"flex items-center gap-6\">\n <VvIcon name=\"ri:windy-line\" class=\"text-14\" />\n {{ $n(data.current.windSpeed, 'integer') }} km/h\n {{ windDirectionLabel(data.current.windDirection) }}\n </div>\n <div\n v-if=\"data.current.uvIndex > 0\"\n class=\"flex items-center gap-6\">\n <VvIcon name=\"ri:sun-line\" class=\"text-14\" />\n UV {{ $n(data.current.uvIndex, 'integer') }}\n </div>\n </div>\n </div>\n\n <!-- Day summary (when no real-time current, or a non-today day is selected) -->\n <div\n v-else-if=\"selectedDay\"\n class=\"px-sm py-md flex items-center gap-md flex-wrap\">\n <div class=\"flex items-center gap-8\">\n <VvIcon\n :name=\"wmoToIcon(selectedDay.weatherCode)\"\n class=\"text-48 text-word-2 shrink-0\" />\n <div class=\"flex flex-col leading-none\">\n <span class=\"text-48 font-light text-word-1\">\n {{ $n(selectedDay.maxTemp, 'integer') }}°\n </span>\n <span class=\"text-20 text-word-3\">\n {{ $n(selectedDay.minTemp, 'integer') }}°\n </span>\n </div>\n </div>\n <div class=\"flex flex-col gap-4 text-12 text-word-3\">\n <div\n v-if=\"selectedDay.precipitationProbabilityMax > 0\"\n class=\"flex items-center gap-6\">\n <VvIcon name=\"ri:drop-line\" class=\"text-14\" />\n {{ selectedDay.precipitationProbabilityMax }}% ({{\n selectedDay.precipitationSum\n }}\n mm)\n </div>\n <div\n v-if=\"selectedDay.uvIndexMax > 0\"\n class=\"flex items-center gap-6\">\n <VvIcon name=\"ri:sun-line\" class=\"text-14\" />\n UV {{ $n(selectedDay.uvIndexMax, 'integer') }}\n </div>\n <div class=\"flex items-center gap-6\">\n <VvIcon name=\"ri:sun-foggy-line\" class=\"text-14\" />\n {{ $d(safeDate(selectedDay.sunrise), 'time') }}\n –\n {{ $d(safeDate(selectedDay.sunset), 'time') }}\n </div>\n </div>\n </div>\n\n <!-- Hourly forecast (filtered to selected day) -->\n <transition>\n <div\n v-if=\"filteredHourly.length > 0\"\n class=\"border-t border-surface-3\">\n <div\n class=\"flex overflow-x-auto gap-2 px-sm py-8 light-scrollbar\">\n <div\n v-for=\"hour in filteredHourly\"\n :key=\"hour.time\"\n class=\"flex flex-col items-center gap-4 min-w-48 px-4 py-6 rounded-lg text-11 text-word-3 shrink-0\">\n <span class=\"text-word-3\">{{\n Number.isNaN(safeDate(hour.time).getTime())\n ? hour.time\n : $d(safeDate(hour.time), 'time')\n }}</span>\n <VvIcon\n :name=\"wmoToIcon(hour.weatherCode)\"\n class=\"text-20 text-word-2\" />\n <span class=\"font-medium text-word-1\">\n {{ $n(hour.temperature, 'integer') }}°\n </span>\n <span\n v-if=\"hour.precipitationProbability > 0\"\n class=\"text-word-5 text-smaller\">\n {{ hour.precipitationProbability }}%\n </span>\n </div>\n </div>\n </div>\n </transition>\n\n <!-- Daily forecast (clickable, inside accordion) -->\n <transition>\n <VvAccordion\n v-if=\"data.daily.length > 1\"\n v-model=\"dailyOpen\"\n modifiers=\"details no-padding\"\n :title=\"$t('weather.dailyForecast')\"\n class=\"border-t border-surface-3\">\n <button\n v-for=\"(day, index) in data.daily\"\n :key=\"day.date\"\n type=\"button\"\n class=\"flex items-center gap-sm px-sm py-8 text-12 w-full text-left transition-colors cursor-pointer border-t border-surface-3\"\n :class=\"\n index === selectedDayIndex\n ? 'bg-surface-2'\n : 'hover:bg-surface-1'\n \"\n @click=\"selectedDayIndex = index\">\n <span class=\"w-48 shrink-0 text-word-3 capitalize\">\n {{ formatDay(day.date, index, data.daily.length) }}\n </span>\n <VvIcon\n :name=\"wmoToIcon(day.weatherCode)\"\n class=\"text-18 text-word-2 shrink-0\" />\n <span\n v-if=\"day.precipitationProbabilityMax > 0\"\n class=\"text-word-5 text-11 w-32 shrink-0\">\n {{ day.precipitationProbabilityMax }}%\n </span>\n <span v-else class=\"w-32 shrink-0\" />\n <div class=\"ml-auto flex items-center gap-8 text-word-3\">\n <span class=\"text-word-1 font-semibold\">\n {{ $n(day.maxTemp, 'integer') }}°\n </span>\n <span>{{ $n(day.minTemp, 'integer') }}°</span>\n </div>\n </button>\n </VvAccordion>\n </transition>\n\n <!-- Air quality -->\n <div\n v-if=\"data.airQuality\"\n class=\"border-t border-surface-3 px-sm py-8 flex items-center gap-8 text-12\">\n <VvIcon name=\"ri:windy-line\" class=\"text-14 text-word-3\" />\n <span class=\"text-word-3\">{{ $t('weather.airQuality') }}</span>\n <span\n :class=\"[\n 'ml-auto px-8 py-2 text-11 font-semibold',\n aqiInfo(data.airQuality.aqi).class,\n ]\">\n {{ aqiInfo(data.airQuality.aqi).label }}\n ({{ data.airQuality.aqi }})\n </span>\n </div>\n </div>\n</template>\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { C as e, E as t, Gt as n, V as r, _ as i, b as a, ft as o, h as s, v as c, w as l, x as u, yt as d, z as f } from "./vue.runtime.esm-bundler-BmggS4HU.js";
|
|
2
|
-
import { o as p } from "./index.es-
|
|
2
|
+
import { o as p } from "./index.es-CUjDCkXD.js";
|
|
3
3
|
import { n as m } from "./src-C_wl-KYN.js";
|
|
4
4
|
import { t as h } from "./PkUrl-CI17WkYu.js";
|
|
5
5
|
//#region ../../packages/components/src/chat/PkToolShowWebPages.vue?vue&type=script&setup=true&lang.ts
|
|
@@ -58,4 +58,4 @@ var g = {
|
|
|
58
58
|
//#endregion
|
|
59
59
|
export { w as default };
|
|
60
60
|
|
|
61
|
-
//# sourceMappingURL=PkToolShowWebPages-
|
|
61
|
+
//# sourceMappingURL=PkToolShowWebPages-f-dHyxfD.js.map
|
package/dist/_chunks/{PkToolShowWebPages-D8RngE-F.js.map → PkToolShowWebPages-f-dHyxfD.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PkToolShowWebPages-
|
|
1
|
+
{"version":3,"file":"PkToolShowWebPages-f-dHyxfD.js","names":["$t"],"sources":["../../../../packages/components/src/chat/PkToolShowWebPages.vue","../../../../packages/components/src/chat/PkToolShowWebPages.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed, ref } from 'vue'\n import { isSameSite } from 'utils'\n import PkUrl from '../PkUrl.vue'\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const toolPart = computed(() => {\n const part = props.part as {\n input?: {\n pages: Array<{\n title: string\n url: string\n image?: string\n description?: string\n }>\n }\n }\n return part\n })\n\n const showMore = ref(false)\n const pages = computed(() => {\n if (showMore.value) {\n return toolPart.value.input?.pages || []\n }\n return (toolPart.value.input?.pages || []).slice(0, 2)\n })\n const hasMore = computed(\n () => (toolPart.value.input?.pages || []).length > 2,\n )\n</script>\n\n<template>\n <ul v-if=\"pages?.length\" class=\"flex flex-col gap-xs w-full\">\n <li\n v-for=\"(page, index) in pages\"\n :key=\"index\"\n class=\"border border-surface-3 rounded-lg overflow-hidden hover:border-surface-4 transition-colors shrink-0\">\n <a\n :href=\"page.url\"\n :title=\"$t('action.open')\"\n :target=\"isSameSite(page.url) ? undefined : '_blank'\"\n :rel=\"isSameSite(page.url) ? undefined : 'noopener noreferrer'\"\n class=\"flex gap-8 p-8 hover:bg-surface-1 transition-colors\">\n <img\n v-if=\"page.image\"\n :src=\"page.image\"\n :alt=\"page.title\"\n class=\"w-48 h-48 object-contain rounded shrink-0 border border-surface-3 bg-surface\" />\n <div class=\"flex flex-col gap-4 min-w-0 flex-1\">\n <strong class=\"font-bold text-12 text-word-1 truncate\">\n {{ page.title }}\n </strong>\n <span\n class=\"text-10 text-word-4 truncate flex items-center gap-4\">\n <VvIcon name=\"ri:link\" class=\"shrink-0 text-12\" />\n <PkUrl :url=\"page.url\" />\n </span>\n <p\n v-if=\"page.description\"\n class=\"text-12 text-word-3 line-clamp-2\">\n {{ page.description }}\n </p>\n </div>\n </a>\n </li>\n <li v-if=\"hasMore\" class=\"text-center\">\n <button\n class=\"text-12 text-word-3 cursor-pointer hover:underline flex items-center gap-4 mx-auto\"\n @click=\"showMore = !showMore\">\n <VvIcon\n :name=\"\n showMore ? 'ri:arrow-up-s-line' : 'ri:arrow-down-s-line'\n \"\n class=\"text-16\" />\n {{\n showMore\n ? $t('action.showLess')\n : $t('action.showMore', {\n count: (toolPart?.input?.pages?.length || 0) - 2,\n })\n }}\n </button>\n </li>\n </ul>\n</template>\n","<script setup lang=\"ts\">\n import { computed, ref } from 'vue'\n import { isSameSite } from 'utils'\n import PkUrl from '../PkUrl.vue'\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const toolPart = computed(() => {\n const part = props.part as {\n input?: {\n pages: Array<{\n title: string\n url: string\n image?: string\n description?: string\n }>\n }\n }\n return part\n })\n\n const showMore = ref(false)\n const pages = computed(() => {\n if (showMore.value) {\n return toolPart.value.input?.pages || []\n }\n return (toolPart.value.input?.pages || []).slice(0, 2)\n })\n const hasMore = computed(\n () => (toolPart.value.input?.pages || []).length > 2,\n )\n</script>\n\n<template>\n <ul v-if=\"pages?.length\" class=\"flex flex-col gap-xs w-full\">\n <li\n v-for=\"(page, index) in pages\"\n :key=\"index\"\n class=\"border border-surface-3 rounded-lg overflow-hidden hover:border-surface-4 transition-colors shrink-0\">\n <a\n :href=\"page.url\"\n :title=\"$t('action.open')\"\n :target=\"isSameSite(page.url) ? undefined : '_blank'\"\n :rel=\"isSameSite(page.url) ? undefined : 'noopener noreferrer'\"\n class=\"flex gap-8 p-8 hover:bg-surface-1 transition-colors\">\n <img\n v-if=\"page.image\"\n :src=\"page.image\"\n :alt=\"page.title\"\n class=\"w-48 h-48 object-contain rounded shrink-0 border border-surface-3 bg-surface\" />\n <div class=\"flex flex-col gap-4 min-w-0 flex-1\">\n <strong class=\"font-bold text-12 text-word-1 truncate\">\n {{ page.title }}\n </strong>\n <span\n class=\"text-10 text-word-4 truncate flex items-center gap-4\">\n <VvIcon name=\"ri:link\" class=\"shrink-0 text-12\" />\n <PkUrl :url=\"page.url\" />\n </span>\n <p\n v-if=\"page.description\"\n class=\"text-12 text-word-3 line-clamp-2\">\n {{ page.description }}\n </p>\n </div>\n </a>\n </li>\n <li v-if=\"hasMore\" class=\"text-center\">\n <button\n class=\"text-12 text-word-3 cursor-pointer hover:underline flex items-center gap-4 mx-auto\"\n @click=\"showMore = !showMore\">\n <VvIcon\n :name=\"\n showMore ? 'ri:arrow-up-s-line' : 'ri:arrow-down-s-line'\n \"\n class=\"text-16\" />\n {{\n showMore\n ? $t('action.showLess')\n : $t('action.showMore', {\n count: (toolPart?.input?.pages?.length || 0) - 2,\n })\n }}\n </button>\n </li>\n </ul>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;EAKI,IAAM,IAAQ,GAIR,IAAW,QACA,EAAM,KAWtB,EAEK,IAAW,EAAI,GAAK,EACpB,IAAQ,QACN,EAAS,QACF,EAAS,MAAM,OAAO,SAAS,EAAC,IAEnC,EAAS,MAAM,OAAO,SAAS,EAAE,EAAE,MAAM,GAAG,EAAC,CACxD,EACK,IAAU,SACL,EAAS,MAAM,OAAO,SAAS,EAAE,EAAE,SAAS,EACvD;;;UAIU,EAAA,OAAO,UAAA,GAAA,EAAjB,EAmDK,MAnDL,GAmDK,EAAA,EAAA,GAAA,EAlDD,EA+BK,GAAA,MAAA,EA9BuB,EAAA,QAAhB,GAAM,YADlB,EA+BK,MAAA;IA7BA,KAAK;IACN,OAAM;OACN,EA0BI,KAAA;IAzBC,MAAM,EAAK;IACX,OAAOA,EAAAA,GAAE,cAAA;IACT,QAAQ,EAAA,EAAU,CAAC,EAAK,IAAG,GAAI,KAAA,IAAS;IACxC,KAAK,EAAA,EAAU,CAAC,EAAK,IAAG,GAAI,KAAA,IAAS;IACtC,OAAM;OAEI,EAAK,SAAA,GAAA,EADf,EAI2F,OAAA;;IAFtF,KAAK,EAAK;IACV,KAAK,EAAK;IACX,OAAM;gCACV,EAcM,OAdN,GAcM;IAbF,EAES,UAFT,GAES,EADF,EAAK,MAAK,EAAA,EAAA;IAEjB,EAIO,QAJP,GAIO,CAFH,EAAkD,GAAA;KAA1C,MAAK;KAAU,OAAM;QAC7B,EAAyB,GAAA,EAAjB,KAAK,EAAK,KAAA,EAAA,MAAA,GAAA,CAAA,MAAA,CAAA,CAAA,CAAA;IAGZ,EAAK,eAAA,GAAA,EADf,EAII,KAJJ,GAII,EADG,EAAK,YAAW,EAAA,EAAA,IAAA,EAAA,IAAA,GAAA;0BAKzB,EAAA,SAAA,GAAA,EAAV,EAiBK,MAjBL,GAiBK,CAhBD,EAeS,UAAA;IAdL,OAAM;IACL,SAAK,AAAA,EAAA,QAAA,MAAE,EAAA,QAAQ,CAAI,EAAA;OACpB,EAIsB,GAAA;IAHjB,MAA+B,EAAA,QAAQ,uBAAA;IAGxC,OAAM;4BAAY,MACtB,EACI,EAAA,QAAmCA,EAAAA,GAAE,kBAAA,GAA8CA,EAAAA,GAAE,mBAAA,EAAA,QAA4D,EAAA,OAAU,OAAO,OAAO,UAAM,KAAA,GAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EAAA,IAAA,GAAA,CAAA,CAAA,IAAA,EAAA,IAAA,GAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { $ as e, Bt as t, C as n, E as r, Gt as i, H as a, L as o, O as s, Q as c, S as l, Vt as u, Y as d, Z as f, _ as p, _t as m, c as ee, et as te, ft as ne, gt as h, j as g, k as _, q as v, st as y, v as re, w as ie, x as ae, yt as b, z as oe } from "./vue.runtime.esm-bundler-BmggS4HU.js";
|
|
2
|
-
//#region ../../node_modules/.pnpm/@volverjs+ui-vue@0.0.13-beta.8_@volverjs+style@0.1.24-beta.3_@vueuse+core@14.
|
|
2
|
+
//#region ../../node_modules/.pnpm/@volverjs+ui-vue@0.0.13-beta.8_@volverjs+style@0.1.24-beta.3_@vueuse+core@14.3.0_vue@3._522f151ee0a8eb4c0a241a4ec2e81adb/node_modules/@volverjs/ui-vue/dist/components/VvCheckbox/VvCheckbox.es.js
|
|
3
3
|
var x = /* @__PURE__ */ (function(e) {
|
|
4
4
|
return e.local = "local", e.session = "session", e;
|
|
5
5
|
})({}), S = /* @__PURE__ */ (function(e) {
|
|
@@ -511,4 +511,4 @@ var xe = ["for"], Se = [
|
|
|
511
511
|
//#endregion
|
|
512
512
|
export { Ce as default };
|
|
513
513
|
|
|
514
|
-
//# sourceMappingURL=VvCheckbox.es-
|
|
514
|
+
//# sourceMappingURL=VvCheckbox.es-BF8Mdg0O.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VvCheckbox.es-kmMsWlkU.js","names":["Q","n","Ne","Z","X","z","I","Ie","v","Pe","Se","Ce","he","me","fe","ge","_e","ce","Le","m","be","Oe","ye","pe","L","P","N"],"sources":["../../../../node_modules/.pnpm/@volverjs+ui-vue@0.0.13-beta.8_@volverjs+style@0.1.24-beta.3_@vueuse+core@14.2.1_vue@3._a673fe403a0369377ef58323f8456e22/node_modules/@volverjs/ui-vue/dist/components/VvCheckbox/VvCheckbox.es.js"],"sourcesContent":["import { computed as n, createElementBlock as fe, createElementVNode as ce, createSlots as pe, createTextVNode as be, createVNode as ye, defineComponent as z, guardReactiveProps as N, h as I, inject as Q, isRef as X, normalizeClass as ge, normalizeProps as P, onMounted as he, openBlock as me, ref as Se, renderSlot as m, toDisplayString as Oe, toRef as Ne, toRefs as Z, unref as v, useId as Ie, useSlots as Pe, vModelCheckbox as Le, watch as Ce, watchEffect as Be, withCtx as L, withDirectives as _e } from \"vue\";\nvar H = /* @__PURE__ */ (function(e) {\n return e.local = \"local\", e.session = \"session\", e;\n})({}), Ae = /* @__PURE__ */ (function(e) {\n return e.absolute = \"absolute\", e.fixed = \"fixed\", e;\n})({}), Y = /* @__PURE__ */ (function(e) {\n return e.left = \"left\", e.right = \"right\", e.top = \"top\", e.bottom = \"bottom\", e;\n})({}), Ee = /* @__PURE__ */ (function(e) {\n return e.topStart = \"top-start\", e.topEnd = \"top-end\", e.bottomStart = \"bottom-start\", e.bottomEnd = \"bottom-end\", e.leftStart = \"left-start\", e.leftEnd = \"left-end\", e.rightStart = \"right-start\", e.rightEnd = \"right-end\", e;\n})({}), F = /* @__PURE__ */ (function(e) {\n return e.before = \"before\", e.after = \"after\", e;\n})({}), U = /* @__PURE__ */ (function(e) {\n return e.button = \"button\", e.submit = \"submit\", e.reset = \"reset\", e;\n})({}), Ve = /* @__PURE__ */ (function(e) {\n return e.nuxtLink = \"nuxt-link\", e.routerLink = \"router-link\", e.a = \"a\", e.button = \"button\", e;\n})({}), je = /* @__PURE__ */ Symbol.for(\"volver\");\nvar ke = /* @__PURE__ */ Symbol.for(\"checkGroup\");\nvar Re = {\n showPassword: \"eye-on\",\n hidePassword: \"eye-off\",\n showDatePicker: \"calendar\",\n showTimePicker: \"time\",\n showColorPicker: \"color\",\n clear: \"close\",\n add: \"add\",\n remove: \"trash\",\n edit: \"edit\",\n download: \"download\"\n}, we = /* @__PURE__ */ (function(e) {\n return e.simple = \"simple\", e.normal = \"normal\", e.detailed = \"detailed\", e;\n})({}), dt = { prefix: we.normal }, De = {\n to: { type: [String, Object] },\n href: String,\n target: String,\n rel: {\n type: String,\n default: \"noopener noreferrer\"\n }\n}, k = {\n valid: {\n type: Boolean,\n default: !1\n },\n validLabel: {\n type: [String, Array],\n default: void 0\n }\n}, R = {\n invalid: {\n type: Boolean,\n default: !1\n },\n invalidLabel: {\n type: [String, Array],\n default: void 0\n }\n}, w = {\n loading: {\n type: Boolean,\n default: !1\n },\n loadingLabel: {\n type: String,\n default: \"Loading...\"\n }\n}, C = { disabled: {\n type: Boolean,\n default: !1\n} }, ee = { required: {\n type: Boolean,\n default: !1\n} }, $e = { active: {\n type: Boolean,\n default: !1\n} }, xe = { current: {\n type: Boolean,\n default: !1\n} }, vt = {\n showClearAction: {\n type: Boolean,\n default: !1\n },\n iconClear: {\n type: [String, Object],\n default: Re.clear\n },\n labelClear: {\n type: String,\n default: \"Clear\"\n }\n}, Ge = { pressed: {\n type: Boolean,\n default: !1\n} }, B = { label: {\n type: [String, Number],\n default: void 0\n} }, D = { readonly: {\n type: Boolean,\n default: !1\n} }, _ = { modifiers: {\n type: [String, Array],\n default: void 0\n} }, $ = { hintLabel: {\n type: String,\n default: \"\"\n} }, Te = {\n options: {\n type: Array,\n default: () => []\n },\n labelKey: {\n type: [String, Function],\n default: \"label\"\n },\n valueKey: {\n type: [String, Function],\n default: \"value\"\n },\n disabledKey: {\n type: [String, Function],\n default: \"disabled\"\n }\n}, Ke = { count: {\n type: [Boolean, String],\n default: !1,\n validator: (e) => [\n !0,\n !1,\n \"limit\",\n \"countdown\"\n ].includes(e)\n} }, Je = { debounce: {\n type: [Number, String],\n default: void 0\n} }, He = {\n icon: {\n type: [String, Object],\n default: void 0\n },\n iconPosition: {\n type: String,\n default: F.before,\n validation: (e) => Object.values(F).includes(e)\n }\n}, te = { tabindex: {\n type: [String, Number],\n default: 0\n} }, Ye = { floating: {\n type: Boolean,\n default: !1\n} }, Fe = { id: [String, Number] }, ft = {\n placement: {\n type: String,\n default: Y.bottom,\n validator: (e) => Object.values(Y).includes(e) || Object.values(Ee).includes(e)\n },\n strategy: {\n type: String,\n default: void 0,\n validator: (e) => Object.values(Ae).includes(e)\n },\n transitionName: {\n type: String,\n default: void 0\n },\n offset: {\n type: [\n Number,\n String,\n Object\n ],\n default: 0\n },\n shift: {\n type: [Boolean, Object],\n default: !1\n },\n flip: {\n type: [Boolean, Object],\n default: !0\n },\n size: {\n type: [Boolean, Object],\n default: () => ({ padding: 10 })\n },\n autoPlacement: {\n type: [Boolean, Object],\n default: !1\n },\n arrow: {\n type: Boolean,\n default: !1\n },\n keepOpen: {\n type: Boolean,\n default: !1\n },\n autofocusFirst: {\n type: Boolean,\n default: !0\n },\n triggerWidth: {\n type: Boolean,\n default: !1\n }\n}, ae = {\n ...Fe,\n name: {\n type: String,\n required: !0\n }\n}, Ue = { autofocus: {\n type: Boolean,\n default: !1\n} }, qe = { autocomplete: {\n type: String,\n default: \"off\"\n} }, ct = {\n ...ae,\n ...Ue,\n ...qe,\n ...te,\n ...C,\n ...D,\n ...k,\n ...R,\n ...$,\n ...w,\n ..._,\n ...Ke,\n ...Je,\n ...He,\n ...Ye,\n ...B,\n minlength: {\n type: [String, Number],\n default: void 0\n },\n maxlength: {\n type: [String, Number],\n default: void 0\n },\n placeholder: {\n type: String,\n default: void 0\n },\n ...ee\n}, Me = {\n ...ae,\n ...te,\n ...k,\n ...R,\n ...$,\n ...C,\n ...D,\n ..._,\n ...B,\n ...w,\n value: {\n type: [\n String,\n Number,\n Boolean\n ],\n default: void 0\n },\n modelValue: {\n type: [\n Object,\n Number,\n Boolean,\n String\n ],\n default: void 0\n }\n}, pt = {\n ...k,\n ...R,\n ...Te,\n ...$,\n ...C,\n ...D,\n ..._,\n ...B,\n ...w,\n ...ee,\n modelValue: {\n type: [\n String,\n Array,\n Boolean,\n Number,\n Symbol\n ],\n default: void 0\n },\n name: {\n type: String,\n required: !0\n },\n vertical: {\n type: Boolean,\n default: !1\n }\n}, bt = {\n ...C,\n ...B,\n ...Ge,\n ...$e,\n ...xe,\n ...De,\n type: {\n type: String,\n default: U.button,\n validator: (e) => Object.values(U).includes(e)\n },\n ariaLabel: {\n type: String,\n default: void 0\n },\n defaultTag: {\n type: String,\n default: Ve.button\n }\n}, yt = {\n storageType: {\n type: String,\n default: H.local,\n validator: (e) => Object.values(H).includes(e)\n },\n storageKey: String\n};\nfunction We(e) {\n const a = Q(e, void 0), t = n(() => a !== void 0);\n function i(r, o, u) {\n const s = a?.[r];\n if (s) return n({\n get() {\n return s.value;\n },\n set(l) {\n s.value = l;\n }\n });\n const d = Ne(o, r);\n return n({\n get() {\n return d.value;\n },\n set(l) {\n u && u(`update:${r}`, l);\n }\n });\n }\n return {\n group: a,\n isInGroup: t,\n getGroupOrLocalRef: i\n };\n}\nvar q = {\n ...Me,\n ..._,\n indeterminate: Boolean,\n uncheckedValue: [\n String,\n Number,\n Boolean\n ],\n switch: Boolean\n}, ze = [\n \"click\",\n \"update:modelValue\",\n \"change\",\n \"blur\"\n];\nfunction Qe(e, a) {\n const { group: t, isInGroup: i, getGroupOrLocalRef: r } = We(ke), { id: o, switch: u, indeterminate: s } = Z(e);\n return {\n id: o,\n propsSwitch: u,\n indeterminate: s,\n group: t,\n isInGroup: i,\n modelValue: r(\"modelValue\", e, a),\n valid: r(\"valid\", e),\n invalid: r(\"invalid\", e),\n readonly: n(() => !!(e.readonly || t?.readonly.value)),\n disabled: n(() => !!(e.disabled || t?.disabled.value))\n };\n}\nfunction re(e, a, t) {\n return t ? M(e, t) === M(a, t) : j(e, a);\n}\nfunction j(e, a) {\n if (e === a) return !0;\n if (e && a && typeof e == \"object\" && typeof a == \"object\") {\n const t = Array.isArray(e), i = Array.isArray(a);\n let r, o, u;\n if (t && i) {\n if (o = e.length, o !== a.length) return !1;\n for (r = o; r-- !== 0; ) if (!j(e[r], a[r])) return !1;\n return !0;\n }\n if (t !== i) return !1;\n const s = e instanceof Date, d = a instanceof Date;\n if (s !== d) return !1;\n if (s && d) return e.getTime() === a.getTime();\n const l = e instanceof RegExp, b = a instanceof RegExp;\n if (l !== b) return !1;\n if (l && b) return e.toString() === a.toString();\n const f = Object.keys(e);\n if (o = f.length, o !== Object.keys(a).length) return !1;\n for (r = o; r-- !== 0; ) if (!Object.hasOwn(a, f[r])) return !1;\n for (r = o; r-- !== 0; )\n if (u = f[r], !j(e[u], a[u])) return !1;\n return !0;\n }\n return Number.isNaN(e) && Number.isNaN(a);\n}\nfunction M(e, a) {\n if (e && Object.keys(e).length && a) if (a.includes(\".\")) {\n const t = a.split(\".\");\n let i = e;\n for (let r = 0, o = t.length; r < o; ++r) {\n if (e == null) return null;\n i = i[t[r]];\n }\n return i;\n } else\n return e[a];\n else return null;\n}\nfunction Xe(e, a) {\n if (e != null && a && a.length) {\n for (const t of a) if (re(e, t)) return !0;\n }\n return !1;\n}\nfunction Ze(e) {\n return typeof e == \"string\";\n}\nfunction W(e) {\n return Array.isArray(e) ? e.filter((a) => Ze(a)).join(\" \") : e;\n}\nfunction et(e, a) {\n const t = n(() => X(e) ? e.value : e), i = n(() => W(t.value.invalidLabel)), r = n(() => W(t.value.validLabel)), o = n(() => t.value.loadingLabel), u = n(() => t.value.hintLabel), s = n(() => !!(t.value.loading && (a.loading || o.value))), d = n(() => !s.value && !!(t.value.invalid && (a.invalid || i.value))), l = n(() => !s.value && !d.value && !!(t.value.valid && (a.valid || r.value))), b = n(() => !s.value && !d.value && !l.value && !!(a.hint || u.value)), f = n(() => d.value || l.value || s.value || b.value);\n return {\n hasInvalidLabelOrSlot: d,\n hasHintLabelOrSlot: b,\n hasValidLabelOrSlot: l,\n hasLoadingLabelOrSlot: s,\n hintSlotScope: n(() => ({\n modelValue: t.value.modelValue,\n valid: t.value.valid,\n invalid: t.value.invalid,\n loading: t.value.loading\n })),\n HintSlot: z({\n name: \"HintSlot\",\n props: { tag: {\n type: String,\n default: \"small\"\n } },\n setup() {\n return {\n isVisible: f,\n invalidLabel: i,\n validLabel: r,\n loadingLabel: o,\n hintLabel: u,\n hasInvalidLabelOrSlot: d,\n hasValidLabelOrSlot: l,\n hasLoadingLabelOrSlot: s,\n hasHintLabelOrSlot: b\n };\n },\n render() {\n if (this.isVisible) {\n let c;\n return this.hasInvalidLabelOrSlot && (c = \"alert\"), this.hasValidLabelOrSlot && (c = \"status\"), this.hasLoadingLabelOrSlot ? I(this.tag, { role: c }, this.$slots.loading?.() ?? this.loadingLabel) : this.hasInvalidLabelOrSlot ? I(this.tag, { role: c }, this.$slots.invalid?.() ?? this.$slots.invalid ?? this.invalidLabel) : this.hasValidLabelOrSlot ? I(this.tag, { role: c }, this.$slots.valid?.() ?? this.validLabel) : I(this.tag, { role: c }, this.$slots.hint?.() ?? this.$slots.hint ?? this.hintLabel);\n }\n return null;\n }\n })\n };\n}\nfunction tt() {\n return Q(je, void 0);\n}\nfunction at(e, a, t) {\n const i = tt(), r = n(() => {\n if (!(!i || !i.defaults.value?.[e]))\n return i.defaults.value[e];\n });\n return n(() => {\n if (r.value === void 0) return t;\n const o = r.value, u = a, s = t;\n return Object.keys(u).reduce((d, l) => {\n const b = s[l];\n if (d[l] = b, l in o) {\n if (Array.isArray(u[l])) {\n const f = u[l];\n f.length && f[0] === b && (d[l] = o[l]);\n }\n if (typeof u[l] == \"function\") {\n const f = u[l];\n f() === b && (d[l] = o[l]);\n }\n if (typeof u[l] == \"object\") {\n let f = u[l].default;\n typeof f == \"function\" && (f = f()), typeof f == \"object\" ? JSON.stringify(f) === JSON.stringify(b) && (d[l] = o[l]) : f === b && (d[l] = o[l]);\n }\n }\n return d;\n }, {});\n });\n}\nfunction rt(e) {\n return n(() => String(e?.value || Ie()));\n}\nfunction lt(e, a, t) {\n return n(() => {\n const i = { [e]: !0 }, r = typeof a?.value == \"string\" ? a.value.split(\" \") : a?.value;\n return r && Array.isArray(r) && r.forEach((o) => {\n o && (i[`${e}--${o}`] = !0);\n }), t && Object.keys(t.value).forEach((o) => {\n i[`${e}--${o}`] = v(t.value[o]);\n }), i;\n });\n}\nvar ot = [\"for\"], nt = [\n \"id\",\n \"name\",\n \"disabled\",\n \"value\",\n \"tabindex\",\n \"aria-invalid\",\n \"aria-describedby\",\n \"aria-errormessage\"\n], it = { name: \"VvCheckbox\" }, ut = /* @__PURE__ */ z({\n ...it,\n props: q,\n emits: ze,\n setup(e, { emit: a }) {\n const t = e, i = a, r = Pe(), o = at(\"VvCheckbox\", q, t), { id: u, disabled: s, readonly: d, valid: l, invalid: b, propsSwitch: f, modelValue: c, indeterminate: x, isInGroup: G } = Qe(t, i), A = rt(u), E = n(() => `${A.value}-hint`), le = n(() => T.value ? -1 : t.tabindex), S = Se(), g = n(() => t.uncheckedValue !== void 0 && !G.value), T = n(() => s.value || d.value), oe = n(() => {\n if (b.value === !0) return !0;\n if (l.value === !0) return !1;\n }), K = n(() => g.value ? c.value === t.value : Array.isArray(c.value) ? Xe(t.value, c.value) : re(t.value, c.value)), J = n(() => !!(x.value || !K.value && g.value && t.uncheckedValue !== c.value)), ne = n(() => {\n if (!g.value)\n return [\n \"string\",\n \"number\",\n \"boolean\"\n ].includes(typeof t.value) ? t.value : !0;\n }), V = n({\n get() {\n return K.value;\n },\n set(p) {\n if (g.value) c.value = p ? t.value : t.uncheckedValue;\n else if (Array.isArray(c.value) || G.value) {\n const y = c.value ?? [], h = new Set(Array.isArray(y) ? y : [y]);\n p ? h.add(t.value) : h.delete(t.value), c.value = [...h];\n } else c.value = p ? t.value : void 0;\n i(\"change\", p);\n }\n }), { modifiers: ie } = Z(t), ue = lt(\"vv-checkbox\", ie, n(() => ({\n switch: f.value,\n valid: l.value,\n invalid: b.value,\n disabled: s.value,\n readonly: d.value,\n indeterminate: x.value\n })));\n Be(() => {\n g.value && Array.isArray(c.value) && console.warn(\"[VvCheckbox] The model value is an array but the component is in binary mode.\");\n }), Ce(() => J.value, (p) => {\n p ? S.value.indeterminate = !0 : S.value.indeterminate = !1;\n }), he(() => {\n J.value && (S.value.indeterminate = !0);\n });\n const { HintSlot: se, hasHintLabelOrSlot: de, hasInvalidLabelOrSlot: ve, hintSlotScope: O } = et(o, r);\n return (p, y) => (me(), fe(\"label\", {\n class: ge(v(ue)),\n for: v(A)\n }, [\n _e(ce(\"input\", {\n id: v(A),\n ref_key: \"input\",\n ref: S,\n \"onUpdate:modelValue\": y[0] || (y[0] = (h) => X(V) ? V.value = h : null),\n type: \"checkbox\",\n class: \"vv-checkbox__input\",\n name: p.name,\n disabled: v(T),\n value: v(ne),\n tabindex: v(le),\n \"aria-invalid\": v(oe),\n \"aria-describedby\": v(de) ? v(E) : void 0,\n \"aria-errormessage\": v(ve) ? v(E) : void 0\n }, null, 8, nt), [[Le, v(V)]]),\n m(p.$slots, \"default\", { value: v(c) }, () => [be(Oe(p.label), 1)]),\n ye(v(se), {\n id: v(E),\n class: \"vv-checkbox__hint\"\n }, pe({ _: 2 }, [\n p.$slots.hint ? {\n name: \"hint\",\n fn: L(() => [m(p.$slots, \"hint\", P(N(v(O))))]),\n key: \"0\"\n } : void 0,\n p.$slots.loading ? {\n name: \"loading\",\n fn: L(() => [m(p.$slots, \"loading\", P(N(v(O))))]),\n key: \"1\"\n } : void 0,\n p.$slots.valid ? {\n name: \"valid\",\n fn: L(() => [m(p.$slots, \"valid\", P(N(v(O))))]),\n key: \"2\"\n } : void 0,\n p.$slots.invalid ? {\n name: \"invalid\",\n fn: L(() => [m(p.$slots, \"invalid\", P(N(v(O))))]),\n key: \"3\"\n } : void 0\n ]), 1032, [\"id\"])\n ], 10, ot));\n }\n}), gt = ut;\nexport {\n gt as default\n};\n"],"x_google_ignoreList":[0],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VvCheckbox.es-BF8Mdg0O.js","names":["Q","n","Ne","Z","X","z","I","Ie","v","Pe","Se","Ce","he","me","fe","ge","_e","ce","Le","m","be","Oe","ye","pe","L","P","N"],"sources":["../../../../node_modules/.pnpm/@volverjs+ui-vue@0.0.13-beta.8_@volverjs+style@0.1.24-beta.3_@vueuse+core@14.3.0_vue@3._522f151ee0a8eb4c0a241a4ec2e81adb/node_modules/@volverjs/ui-vue/dist/components/VvCheckbox/VvCheckbox.es.js"],"sourcesContent":["import { computed as n, createElementBlock as fe, createElementVNode as ce, createSlots as pe, createTextVNode as be, createVNode as ye, defineComponent as z, guardReactiveProps as N, h as I, inject as Q, isRef as X, normalizeClass as ge, normalizeProps as P, onMounted as he, openBlock as me, ref as Se, renderSlot as m, toDisplayString as Oe, toRef as Ne, toRefs as Z, unref as v, useId as Ie, useSlots as Pe, vModelCheckbox as Le, watch as Ce, watchEffect as Be, withCtx as L, withDirectives as _e } from \"vue\";\nvar H = /* @__PURE__ */ (function(e) {\n return e.local = \"local\", e.session = \"session\", e;\n})({}), Ae = /* @__PURE__ */ (function(e) {\n return e.absolute = \"absolute\", e.fixed = \"fixed\", e;\n})({}), Y = /* @__PURE__ */ (function(e) {\n return e.left = \"left\", e.right = \"right\", e.top = \"top\", e.bottom = \"bottom\", e;\n})({}), Ee = /* @__PURE__ */ (function(e) {\n return e.topStart = \"top-start\", e.topEnd = \"top-end\", e.bottomStart = \"bottom-start\", e.bottomEnd = \"bottom-end\", e.leftStart = \"left-start\", e.leftEnd = \"left-end\", e.rightStart = \"right-start\", e.rightEnd = \"right-end\", e;\n})({}), F = /* @__PURE__ */ (function(e) {\n return e.before = \"before\", e.after = \"after\", e;\n})({}), U = /* @__PURE__ */ (function(e) {\n return e.button = \"button\", e.submit = \"submit\", e.reset = \"reset\", e;\n})({}), Ve = /* @__PURE__ */ (function(e) {\n return e.nuxtLink = \"nuxt-link\", e.routerLink = \"router-link\", e.a = \"a\", e.button = \"button\", e;\n})({}), je = /* @__PURE__ */ Symbol.for(\"volver\");\nvar ke = /* @__PURE__ */ Symbol.for(\"checkGroup\");\nvar Re = {\n showPassword: \"eye-on\",\n hidePassword: \"eye-off\",\n showDatePicker: \"calendar\",\n showTimePicker: \"time\",\n showColorPicker: \"color\",\n clear: \"close\",\n add: \"add\",\n remove: \"trash\",\n edit: \"edit\",\n download: \"download\"\n}, we = /* @__PURE__ */ (function(e) {\n return e.simple = \"simple\", e.normal = \"normal\", e.detailed = \"detailed\", e;\n})({}), dt = { prefix: we.normal }, De = {\n to: { type: [String, Object] },\n href: String,\n target: String,\n rel: {\n type: String,\n default: \"noopener noreferrer\"\n }\n}, k = {\n valid: {\n type: Boolean,\n default: !1\n },\n validLabel: {\n type: [String, Array],\n default: void 0\n }\n}, R = {\n invalid: {\n type: Boolean,\n default: !1\n },\n invalidLabel: {\n type: [String, Array],\n default: void 0\n }\n}, w = {\n loading: {\n type: Boolean,\n default: !1\n },\n loadingLabel: {\n type: String,\n default: \"Loading...\"\n }\n}, C = { disabled: {\n type: Boolean,\n default: !1\n} }, ee = { required: {\n type: Boolean,\n default: !1\n} }, $e = { active: {\n type: Boolean,\n default: !1\n} }, xe = { current: {\n type: Boolean,\n default: !1\n} }, vt = {\n showClearAction: {\n type: Boolean,\n default: !1\n },\n iconClear: {\n type: [String, Object],\n default: Re.clear\n },\n labelClear: {\n type: String,\n default: \"Clear\"\n }\n}, Ge = { pressed: {\n type: Boolean,\n default: !1\n} }, B = { label: {\n type: [String, Number],\n default: void 0\n} }, D = { readonly: {\n type: Boolean,\n default: !1\n} }, _ = { modifiers: {\n type: [String, Array],\n default: void 0\n} }, $ = { hintLabel: {\n type: String,\n default: \"\"\n} }, Te = {\n options: {\n type: Array,\n default: () => []\n },\n labelKey: {\n type: [String, Function],\n default: \"label\"\n },\n valueKey: {\n type: [String, Function],\n default: \"value\"\n },\n disabledKey: {\n type: [String, Function],\n default: \"disabled\"\n }\n}, Ke = { count: {\n type: [Boolean, String],\n default: !1,\n validator: (e) => [\n !0,\n !1,\n \"limit\",\n \"countdown\"\n ].includes(e)\n} }, Je = { debounce: {\n type: [Number, String],\n default: void 0\n} }, He = {\n icon: {\n type: [String, Object],\n default: void 0\n },\n iconPosition: {\n type: String,\n default: F.before,\n validation: (e) => Object.values(F).includes(e)\n }\n}, te = { tabindex: {\n type: [String, Number],\n default: 0\n} }, Ye = { floating: {\n type: Boolean,\n default: !1\n} }, Fe = { id: [String, Number] }, ft = {\n placement: {\n type: String,\n default: Y.bottom,\n validator: (e) => Object.values(Y).includes(e) || Object.values(Ee).includes(e)\n },\n strategy: {\n type: String,\n default: void 0,\n validator: (e) => Object.values(Ae).includes(e)\n },\n transitionName: {\n type: String,\n default: void 0\n },\n offset: {\n type: [\n Number,\n String,\n Object\n ],\n default: 0\n },\n shift: {\n type: [Boolean, Object],\n default: !1\n },\n flip: {\n type: [Boolean, Object],\n default: !0\n },\n size: {\n type: [Boolean, Object],\n default: () => ({ padding: 10 })\n },\n autoPlacement: {\n type: [Boolean, Object],\n default: !1\n },\n arrow: {\n type: Boolean,\n default: !1\n },\n keepOpen: {\n type: Boolean,\n default: !1\n },\n autofocusFirst: {\n type: Boolean,\n default: !0\n },\n triggerWidth: {\n type: Boolean,\n default: !1\n }\n}, ae = {\n ...Fe,\n name: {\n type: String,\n required: !0\n }\n}, Ue = { autofocus: {\n type: Boolean,\n default: !1\n} }, qe = { autocomplete: {\n type: String,\n default: \"off\"\n} }, ct = {\n ...ae,\n ...Ue,\n ...qe,\n ...te,\n ...C,\n ...D,\n ...k,\n ...R,\n ...$,\n ...w,\n ..._,\n ...Ke,\n ...Je,\n ...He,\n ...Ye,\n ...B,\n minlength: {\n type: [String, Number],\n default: void 0\n },\n maxlength: {\n type: [String, Number],\n default: void 0\n },\n placeholder: {\n type: String,\n default: void 0\n },\n ...ee\n}, Me = {\n ...ae,\n ...te,\n ...k,\n ...R,\n ...$,\n ...C,\n ...D,\n ..._,\n ...B,\n ...w,\n value: {\n type: [\n String,\n Number,\n Boolean\n ],\n default: void 0\n },\n modelValue: {\n type: [\n Object,\n Number,\n Boolean,\n String\n ],\n default: void 0\n }\n}, pt = {\n ...k,\n ...R,\n ...Te,\n ...$,\n ...C,\n ...D,\n ..._,\n ...B,\n ...w,\n ...ee,\n modelValue: {\n type: [\n String,\n Array,\n Boolean,\n Number,\n Symbol\n ],\n default: void 0\n },\n name: {\n type: String,\n required: !0\n },\n vertical: {\n type: Boolean,\n default: !1\n }\n}, bt = {\n ...C,\n ...B,\n ...Ge,\n ...$e,\n ...xe,\n ...De,\n type: {\n type: String,\n default: U.button,\n validator: (e) => Object.values(U).includes(e)\n },\n ariaLabel: {\n type: String,\n default: void 0\n },\n defaultTag: {\n type: String,\n default: Ve.button\n }\n}, yt = {\n storageType: {\n type: String,\n default: H.local,\n validator: (e) => Object.values(H).includes(e)\n },\n storageKey: String\n};\nfunction We(e) {\n const a = Q(e, void 0), t = n(() => a !== void 0);\n function i(r, o, u) {\n const s = a?.[r];\n if (s) return n({\n get() {\n return s.value;\n },\n set(l) {\n s.value = l;\n }\n });\n const d = Ne(o, r);\n return n({\n get() {\n return d.value;\n },\n set(l) {\n u && u(`update:${r}`, l);\n }\n });\n }\n return {\n group: a,\n isInGroup: t,\n getGroupOrLocalRef: i\n };\n}\nvar q = {\n ...Me,\n ..._,\n indeterminate: Boolean,\n uncheckedValue: [\n String,\n Number,\n Boolean\n ],\n switch: Boolean\n}, ze = [\n \"click\",\n \"update:modelValue\",\n \"change\",\n \"blur\"\n];\nfunction Qe(e, a) {\n const { group: t, isInGroup: i, getGroupOrLocalRef: r } = We(ke), { id: o, switch: u, indeterminate: s } = Z(e);\n return {\n id: o,\n propsSwitch: u,\n indeterminate: s,\n group: t,\n isInGroup: i,\n modelValue: r(\"modelValue\", e, a),\n valid: r(\"valid\", e),\n invalid: r(\"invalid\", e),\n readonly: n(() => !!(e.readonly || t?.readonly.value)),\n disabled: n(() => !!(e.disabled || t?.disabled.value))\n };\n}\nfunction re(e, a, t) {\n return t ? M(e, t) === M(a, t) : j(e, a);\n}\nfunction j(e, a) {\n if (e === a) return !0;\n if (e && a && typeof e == \"object\" && typeof a == \"object\") {\n const t = Array.isArray(e), i = Array.isArray(a);\n let r, o, u;\n if (t && i) {\n if (o = e.length, o !== a.length) return !1;\n for (r = o; r-- !== 0; ) if (!j(e[r], a[r])) return !1;\n return !0;\n }\n if (t !== i) return !1;\n const s = e instanceof Date, d = a instanceof Date;\n if (s !== d) return !1;\n if (s && d) return e.getTime() === a.getTime();\n const l = e instanceof RegExp, b = a instanceof RegExp;\n if (l !== b) return !1;\n if (l && b) return e.toString() === a.toString();\n const f = Object.keys(e);\n if (o = f.length, o !== Object.keys(a).length) return !1;\n for (r = o; r-- !== 0; ) if (!Object.hasOwn(a, f[r])) return !1;\n for (r = o; r-- !== 0; )\n if (u = f[r], !j(e[u], a[u])) return !1;\n return !0;\n }\n return Number.isNaN(e) && Number.isNaN(a);\n}\nfunction M(e, a) {\n if (e && Object.keys(e).length && a) if (a.includes(\".\")) {\n const t = a.split(\".\");\n let i = e;\n for (let r = 0, o = t.length; r < o; ++r) {\n if (e == null) return null;\n i = i[t[r]];\n }\n return i;\n } else\n return e[a];\n else return null;\n}\nfunction Xe(e, a) {\n if (e != null && a && a.length) {\n for (const t of a) if (re(e, t)) return !0;\n }\n return !1;\n}\nfunction Ze(e) {\n return typeof e == \"string\";\n}\nfunction W(e) {\n return Array.isArray(e) ? e.filter((a) => Ze(a)).join(\" \") : e;\n}\nfunction et(e, a) {\n const t = n(() => X(e) ? e.value : e), i = n(() => W(t.value.invalidLabel)), r = n(() => W(t.value.validLabel)), o = n(() => t.value.loadingLabel), u = n(() => t.value.hintLabel), s = n(() => !!(t.value.loading && (a.loading || o.value))), d = n(() => !s.value && !!(t.value.invalid && (a.invalid || i.value))), l = n(() => !s.value && !d.value && !!(t.value.valid && (a.valid || r.value))), b = n(() => !s.value && !d.value && !l.value && !!(a.hint || u.value)), f = n(() => d.value || l.value || s.value || b.value);\n return {\n hasInvalidLabelOrSlot: d,\n hasHintLabelOrSlot: b,\n hasValidLabelOrSlot: l,\n hasLoadingLabelOrSlot: s,\n hintSlotScope: n(() => ({\n modelValue: t.value.modelValue,\n valid: t.value.valid,\n invalid: t.value.invalid,\n loading: t.value.loading\n })),\n HintSlot: z({\n name: \"HintSlot\",\n props: { tag: {\n type: String,\n default: \"small\"\n } },\n setup() {\n return {\n isVisible: f,\n invalidLabel: i,\n validLabel: r,\n loadingLabel: o,\n hintLabel: u,\n hasInvalidLabelOrSlot: d,\n hasValidLabelOrSlot: l,\n hasLoadingLabelOrSlot: s,\n hasHintLabelOrSlot: b\n };\n },\n render() {\n if (this.isVisible) {\n let c;\n return this.hasInvalidLabelOrSlot && (c = \"alert\"), this.hasValidLabelOrSlot && (c = \"status\"), this.hasLoadingLabelOrSlot ? I(this.tag, { role: c }, this.$slots.loading?.() ?? this.loadingLabel) : this.hasInvalidLabelOrSlot ? I(this.tag, { role: c }, this.$slots.invalid?.() ?? this.$slots.invalid ?? this.invalidLabel) : this.hasValidLabelOrSlot ? I(this.tag, { role: c }, this.$slots.valid?.() ?? this.validLabel) : I(this.tag, { role: c }, this.$slots.hint?.() ?? this.$slots.hint ?? this.hintLabel);\n }\n return null;\n }\n })\n };\n}\nfunction tt() {\n return Q(je, void 0);\n}\nfunction at(e, a, t) {\n const i = tt(), r = n(() => {\n if (!(!i || !i.defaults.value?.[e]))\n return i.defaults.value[e];\n });\n return n(() => {\n if (r.value === void 0) return t;\n const o = r.value, u = a, s = t;\n return Object.keys(u).reduce((d, l) => {\n const b = s[l];\n if (d[l] = b, l in o) {\n if (Array.isArray(u[l])) {\n const f = u[l];\n f.length && f[0] === b && (d[l] = o[l]);\n }\n if (typeof u[l] == \"function\") {\n const f = u[l];\n f() === b && (d[l] = o[l]);\n }\n if (typeof u[l] == \"object\") {\n let f = u[l].default;\n typeof f == \"function\" && (f = f()), typeof f == \"object\" ? JSON.stringify(f) === JSON.stringify(b) && (d[l] = o[l]) : f === b && (d[l] = o[l]);\n }\n }\n return d;\n }, {});\n });\n}\nfunction rt(e) {\n return n(() => String(e?.value || Ie()));\n}\nfunction lt(e, a, t) {\n return n(() => {\n const i = { [e]: !0 }, r = typeof a?.value == \"string\" ? a.value.split(\" \") : a?.value;\n return r && Array.isArray(r) && r.forEach((o) => {\n o && (i[`${e}--${o}`] = !0);\n }), t && Object.keys(t.value).forEach((o) => {\n i[`${e}--${o}`] = v(t.value[o]);\n }), i;\n });\n}\nvar ot = [\"for\"], nt = [\n \"id\",\n \"name\",\n \"disabled\",\n \"value\",\n \"tabindex\",\n \"aria-invalid\",\n \"aria-describedby\",\n \"aria-errormessage\"\n], it = { name: \"VvCheckbox\" }, ut = /* @__PURE__ */ z({\n ...it,\n props: q,\n emits: ze,\n setup(e, { emit: a }) {\n const t = e, i = a, r = Pe(), o = at(\"VvCheckbox\", q, t), { id: u, disabled: s, readonly: d, valid: l, invalid: b, propsSwitch: f, modelValue: c, indeterminate: x, isInGroup: G } = Qe(t, i), A = rt(u), E = n(() => `${A.value}-hint`), le = n(() => T.value ? -1 : t.tabindex), S = Se(), g = n(() => t.uncheckedValue !== void 0 && !G.value), T = n(() => s.value || d.value), oe = n(() => {\n if (b.value === !0) return !0;\n if (l.value === !0) return !1;\n }), K = n(() => g.value ? c.value === t.value : Array.isArray(c.value) ? Xe(t.value, c.value) : re(t.value, c.value)), J = n(() => !!(x.value || !K.value && g.value && t.uncheckedValue !== c.value)), ne = n(() => {\n if (!g.value)\n return [\n \"string\",\n \"number\",\n \"boolean\"\n ].includes(typeof t.value) ? t.value : !0;\n }), V = n({\n get() {\n return K.value;\n },\n set(p) {\n if (g.value) c.value = p ? t.value : t.uncheckedValue;\n else if (Array.isArray(c.value) || G.value) {\n const y = c.value ?? [], h = new Set(Array.isArray(y) ? y : [y]);\n p ? h.add(t.value) : h.delete(t.value), c.value = [...h];\n } else c.value = p ? t.value : void 0;\n i(\"change\", p);\n }\n }), { modifiers: ie } = Z(t), ue = lt(\"vv-checkbox\", ie, n(() => ({\n switch: f.value,\n valid: l.value,\n invalid: b.value,\n disabled: s.value,\n readonly: d.value,\n indeterminate: x.value\n })));\n Be(() => {\n g.value && Array.isArray(c.value) && console.warn(\"[VvCheckbox] The model value is an array but the component is in binary mode.\");\n }), Ce(() => J.value, (p) => {\n p ? S.value.indeterminate = !0 : S.value.indeterminate = !1;\n }), he(() => {\n J.value && (S.value.indeterminate = !0);\n });\n const { HintSlot: se, hasHintLabelOrSlot: de, hasInvalidLabelOrSlot: ve, hintSlotScope: O } = et(o, r);\n return (p, y) => (me(), fe(\"label\", {\n class: ge(v(ue)),\n for: v(A)\n }, [\n _e(ce(\"input\", {\n id: v(A),\n ref_key: \"input\",\n ref: S,\n \"onUpdate:modelValue\": y[0] || (y[0] = (h) => X(V) ? V.value = h : null),\n type: \"checkbox\",\n class: \"vv-checkbox__input\",\n name: p.name,\n disabled: v(T),\n value: v(ne),\n tabindex: v(le),\n \"aria-invalid\": v(oe),\n \"aria-describedby\": v(de) ? v(E) : void 0,\n \"aria-errormessage\": v(ve) ? v(E) : void 0\n }, null, 8, nt), [[Le, v(V)]]),\n m(p.$slots, \"default\", { value: v(c) }, () => [be(Oe(p.label), 1)]),\n ye(v(se), {\n id: v(E),\n class: \"vv-checkbox__hint\"\n }, pe({ _: 2 }, [\n p.$slots.hint ? {\n name: \"hint\",\n fn: L(() => [m(p.$slots, \"hint\", P(N(v(O))))]),\n key: \"0\"\n } : void 0,\n p.$slots.loading ? {\n name: \"loading\",\n fn: L(() => [m(p.$slots, \"loading\", P(N(v(O))))]),\n key: \"1\"\n } : void 0,\n p.$slots.valid ? {\n name: \"valid\",\n fn: L(() => [m(p.$slots, \"valid\", P(N(v(O))))]),\n key: \"2\"\n } : void 0,\n p.$slots.invalid ? {\n name: \"invalid\",\n fn: L(() => [m(p.$slots, \"invalid\", P(N(v(O))))]),\n key: \"3\"\n } : void 0\n ]), 1032, [\"id\"])\n ], 10, ot));\n }\n}), gt = ut;\nexport {\n gt as default\n};\n"],"x_google_ignoreList":[0],"mappings":"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"}
|