@8wave/ai-elements 0.69.0 → 0.70.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/README.md +30 -5
- package/dist/_chunks/{PkStreamingMarkdown-C0BpOvli.js → PkStreamingMarkdown-CCD_gifi.js} +2 -2
- package/dist/_chunks/{PkStreamingMarkdown-C0BpOvli.js.map → PkStreamingMarkdown-CCD_gifi.js.map} +1 -1
- package/dist/_chunks/{PkToolShowArtifact-DzNIkKvZ.js → PkToolShowArtifact-BZ9-wuXH.js} +12 -11
- package/dist/_chunks/PkToolShowArtifact-BZ9-wuXH.js.map +1 -0
- package/dist/_chunks/{PkToolShowCalendarEvent-Dolb7MTf.js → PkToolShowCalendarEvent-BFHzjM9E.js} +2 -2
- package/dist/_chunks/{PkToolShowCalendarEvent-Dolb7MTf.js.map → PkToolShowCalendarEvent-BFHzjM9E.js.map} +1 -1
- package/dist/_chunks/{PkToolShowComparison-BWwQPM6d.js → PkToolShowComparison-D-cY7yXE.js} +1 -1
- package/dist/_chunks/{PkToolShowComparison-BWwQPM6d.js.map → PkToolShowComparison-D-cY7yXE.js.map} +1 -1
- package/dist/_chunks/PkToolShowContactForm-B5Zuup-c.js +2 -0
- package/dist/_chunks/PkToolShowContactForm-izy_eJOv.js +1102 -0
- package/dist/_chunks/PkToolShowContactForm-izy_eJOv.js.map +1 -0
- package/dist/_chunks/{PkToolShowEmail-BrBJY7Op.js → PkToolShowEmail-BhGdH4Ig.js} +1 -1
- package/dist/_chunks/{PkToolShowEmail-BrBJY7Op.js.map → PkToolShowEmail-BhGdH4Ig.js.map} +1 -1
- package/dist/_chunks/{PkToolShowImageGallery-dnCkJaK8.js → PkToolShowImageGallery-CiN2M02m.js} +3 -3
- package/dist/_chunks/{PkToolShowImageGallery-dnCkJaK8.js.map → PkToolShowImageGallery-CiN2M02m.js.map} +1 -1
- package/dist/_chunks/PkToolShowLocation-CbaF2oBf.js +2 -0
- package/dist/_chunks/PkToolShowLocation-gQtxMrSM.js +4996 -0
- package/dist/_chunks/PkToolShowLocation-gQtxMrSM.js.map +1 -0
- package/dist/_chunks/{PkToolShowMessage-D0hwYIlo.js → PkToolShowMessage-5Luc042T.js} +1 -1
- package/dist/_chunks/{PkToolShowMessage-D0hwYIlo.js.map → PkToolShowMessage-5Luc042T.js.map} +1 -1
- package/dist/_chunks/PkToolShowMultipleChoice-DgfLPaKE.js +2 -0
- package/dist/_chunks/PkToolShowMultipleChoice-WBsP83PW.js +44 -0
- package/dist/_chunks/PkToolShowMultipleChoice-WBsP83PW.js.map +1 -0
- package/dist/_chunks/{PkToolShowProductList-C-t2Q6vG.js → PkToolShowProductList-BSLTdM8w.js} +2 -2
- package/dist/_chunks/{PkToolShowProductList-C-t2Q6vG.js.map → PkToolShowProductList-BSLTdM8w.js.map} +1 -1
- package/dist/_chunks/{PkToolShowQrCode-pX-2NQ0q.js → PkToolShowQrCode-DLSOtaV9.js} +1 -1
- package/dist/_chunks/{PkToolShowQrCode-pX-2NQ0q.js.map → PkToolShowQrCode-DLSOtaV9.js.map} +1 -1
- package/dist/_chunks/PkToolShowSources-BZyYFWu6.js +490 -0
- package/dist/_chunks/PkToolShowSources-BZyYFWu6.js.map +1 -0
- package/dist/_chunks/PkToolShowSources-C0Edf43F.js +2 -0
- package/dist/_chunks/PkToolShowSuggestedReply-CMIWzymE.js +2 -0
- package/dist/_chunks/PkToolShowSuggestedReply-PyXHjIMg.js +40 -0
- package/dist/_chunks/PkToolShowSuggestedReply-PyXHjIMg.js.map +1 -0
- package/dist/_chunks/{PkToolShowWeather-BlxQ4-di.js → PkToolShowWeather-BmB6I1CQ.js} +1 -1
- package/dist/_chunks/{PkToolShowWeather-BlxQ4-di.js.map → PkToolShowWeather-BmB6I1CQ.js.map} +1 -1
- package/dist/_chunks/{PkToolShowWebPages-CflGTyAq.js → PkToolShowWebPages-BQEuy2SB.js} +3 -3
- package/dist/_chunks/{PkToolShowWebPages-CflGTyAq.js.map → PkToolShowWebPages-BQEuy2SB.js.map} +1 -1
- package/dist/_chunks/{PkUrl-BiCK2gUF.js → PkUrl-DbCzf0TH.js} +5 -8
- package/dist/_chunks/{PkUrl-BiCK2gUF.js.map → PkUrl-DbCzf0TH.js.map} +1 -1
- package/dist/_chunks/{VvCheckbox.es-BB__5AQf.js → VvCheckbox.es-xoDP7xfG.js} +1 -1
- package/dist/_chunks/{VvCheckbox.es-BB__5AQf.js.map → VvCheckbox.es-xoDP7xfG.js.map} +1 -1
- package/dist/_chunks/{VvCheckboxGroup.es-B8vNssFt.js → VvCheckboxGroup.es-CqmkSf32.js} +1 -1
- package/dist/_chunks/{VvCheckboxGroup.es-B8vNssFt.js.map → VvCheckboxGroup.es-CqmkSf32.js.map} +1 -1
- package/dist/_chunks/{VvCombobox.es-B3EXD0qk.js → VvCombobox.es-8c5A9J7u.js} +1 -1
- package/dist/_chunks/{VvCombobox.es-B3EXD0qk.js.map → VvCombobox.es-8c5A9J7u.js.map} +1 -1
- package/dist/_chunks/{VvInputText.es-Dz2nJhHg.js → VvInputText.es-C3DasKVI.js} +1 -1
- package/dist/_chunks/{VvInputText.es-Dz2nJhHg.js.map → VvInputText.es-C3DasKVI.js.map} +1 -1
- package/dist/_chunks/{VvRadio.es-CBNUR8-A.js → VvRadio.es-DWCbGLSw.js} +1 -1
- package/dist/_chunks/{VvRadio.es-CBNUR8-A.js.map → VvRadio.es-DWCbGLSw.js.map} +1 -1
- package/dist/_chunks/{VvRadioGroup.es-C3cxLQie.js → VvRadioGroup.es-DeZPOSLg.js} +1 -1
- package/dist/_chunks/{VvRadioGroup.es-C3cxLQie.js.map → VvRadioGroup.es-DeZPOSLg.js.map} +1 -1
- package/dist/_chunks/{VvSelect.es-DhnVYyFM.js → VvSelect.es-Cbdxv0hL.js} +1 -1
- package/dist/_chunks/{VvSelect.es-DhnVYyFM.js.map → VvSelect.es-Cbdxv0hL.js.map} +1 -1
- package/dist/_chunks/{VvTextarea.es-CqwOOwHn.js → VvTextarea.es-G6PqQj_w.js} +1 -1
- package/dist/_chunks/{VvTextarea.es-CqwOOwHn.js.map → VvTextarea.es-G6PqQj_w.js.map} +1 -1
- package/dist/_chunks/_plugin-vue_export-helper-C6kC663S.js +8 -0
- package/dist/_chunks/marker-icon-2x-B5zK5Qr3.js +7 -0
- package/dist/_chunks/marker-icon-2x-B5zK5Qr3.js.map +1 -0
- package/dist/_chunks/marker-icon-C9YVKiza.js +7 -0
- package/dist/_chunks/marker-icon-C9YVKiza.js.map +1 -0
- package/dist/_chunks/marker-shadow-C69K8Z1K.js +7 -0
- package/dist/_chunks/marker-shadow-C69K8Z1K.js.map +1 -0
- package/dist/_chunks/schemas-BzxsvNFR.js +3117 -0
- package/dist/_chunks/schemas-BzxsvNFR.js.map +1 -0
- package/dist/_chunks/{src-BRYn66N3.js → src-B7wQQMx2.js} +1 -1
- package/dist/_chunks/{src-BRYn66N3.js.map → src-B7wQQMx2.js.map} +1 -1
- package/dist/_chunks/{useLightbox-RmU8z981.js → useLightbox-krdR1Z0n.js} +2 -2
- package/dist/_chunks/{useLightbox-RmU8z981.js.map → useLightbox-krdR1Z0n.js.map} +1 -1
- package/dist/ai-elements.es.js +7433 -12095
- package/dist/ai-elements.es.js.map +1 -1
- package/dist-vue/PkChatbot.js +1 -1
- package/dist-vue/PkChatbotError.js +1 -1
- package/dist-vue/PkChatbotFeedbackForm.js +1 -1
- package/dist-vue/PkChatbotFilePreview.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-COOsOMMv.js +120 -0
- package/dist-vue/_chunks/Media-COOsOMMv.js.map +1 -0
- package/dist-vue/_chunks/{PkChatbot-Cy7p5UI_.js → PkChatbot-h7EIb9Y5.js} +61 -60
- package/dist-vue/_chunks/{PkChatbot-Cy7p5UI_.js.map → PkChatbot-h7EIb9Y5.js.map} +1 -1
- package/dist-vue/_chunks/{PkChatbotError-DOkNTDsc.js → PkChatbotError-CBQaRNse.js} +1 -1
- package/dist-vue/_chunks/{PkChatbotError-DOkNTDsc.js.map → PkChatbotError-CBQaRNse.js.map} +1 -1
- package/dist-vue/_chunks/PkChatbotFeedbackForm-C5QLJeUc.js +91 -0
- package/dist-vue/_chunks/PkChatbotFeedbackForm-C5QLJeUc.js.map +1 -0
- package/dist-vue/_chunks/{PkChatbotFilePreview-zHYZ0F7j.js → PkChatbotFilePreview-0ow1cjom.js} +2 -2
- package/dist-vue/_chunks/{PkChatbotFilePreview-zHYZ0F7j.js.map → PkChatbotFilePreview-0ow1cjom.js.map} +1 -1
- package/dist-vue/_chunks/{PkChatbotInput-CXydKByS.js → PkChatbotInput-DjUU_5_9.js} +3 -3
- package/dist-vue/_chunks/{PkChatbotInput-CXydKByS.js.map → PkChatbotInput-DjUU_5_9.js.map} +1 -1
- package/dist-vue/_chunks/{PkChatbotMessages-C7-ZtU0-.js → PkChatbotMessages-DJngZXIX.js} +130 -121
- package/dist-vue/_chunks/PkChatbotMessages-DJngZXIX.js.map +1 -0
- package/dist-vue/_chunks/PkChatbotViewChat-LdHOe19w.js +246 -0
- package/dist-vue/_chunks/PkChatbotViewChat-LdHOe19w.js.map +1 -0
- package/dist-vue/_chunks/{PkChatbotViewConversations-Ct0TbDrg.js → PkChatbotViewConversations-BAU8tPTf.js} +4 -4
- package/dist-vue/_chunks/{PkChatbotViewConversations-Ct0TbDrg.js.map → PkChatbotViewConversations-BAU8tPTf.js.map} +1 -1
- package/dist-vue/_chunks/{PkChatbotViewProfile-BhdCxVSX.js → PkChatbotViewProfile-B_TpBkAf.js} +2 -2
- package/dist-vue/_chunks/{PkChatbotViewProfile-BhdCxVSX.js.map → PkChatbotViewProfile-B_TpBkAf.js.map} +1 -1
- package/dist-vue/_chunks/{PkRelativeTime-Bzh37jv5.js → PkRelativeTime-ivIkVQRR.js} +1 -1
- package/dist-vue/_chunks/{PkRelativeTime-Bzh37jv5.js.map → PkRelativeTime-ivIkVQRR.js.map} +1 -1
- package/dist-vue/_chunks/{PkStreamingMarkdown-C-XHB63C.js → PkStreamingMarkdown-CGEZEVZF.js} +2 -2
- package/dist-vue/_chunks/{PkStreamingMarkdown-C-XHB63C.js.map → PkStreamingMarkdown-CGEZEVZF.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowArtifact-pTS7wzhw.js → PkToolShowArtifact-D1PnI-E1.js} +14 -13
- package/dist-vue/_chunks/PkToolShowArtifact-D1PnI-E1.js.map +1 -0
- package/dist-vue/_chunks/{PkToolShowCalendarEvent-DQ--fzwb.js → PkToolShowCalendarEvent-HiRf_hSv.js} +3 -3
- package/dist-vue/_chunks/{PkToolShowCalendarEvent-DQ--fzwb.js.map → PkToolShowCalendarEvent-HiRf_hSv.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowComparison-CzRUrjbP.js → PkToolShowComparison-Bll3lc1g.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowComparison-CzRUrjbP.js.map → PkToolShowComparison-Bll3lc1g.js.map} +1 -1
- package/dist-vue/_chunks/PkToolShowContactForm-DQDXyNco.js +130 -0
- package/dist-vue/_chunks/PkToolShowContactForm-DQDXyNco.js.map +1 -0
- package/dist-vue/_chunks/{PkToolShowEmail-htn0ivwY.js → PkToolShowEmail-DzYBtaIE.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowEmail-htn0ivwY.js.map → PkToolShowEmail-DzYBtaIE.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowImageGallery-CpU183SC.js → PkToolShowImageGallery-BQtLChsM.js} +4 -4
- package/dist-vue/_chunks/{PkToolShowImageGallery-CpU183SC.js.map → PkToolShowImageGallery-BQtLChsM.js.map} +1 -1
- package/dist-vue/_chunks/PkToolShowLocation-CaG0Txb6.js +148 -0
- package/dist-vue/_chunks/PkToolShowLocation-CaG0Txb6.js.map +1 -0
- package/dist-vue/_chunks/{PkToolShowMessage-DtGDm3pq.js → PkToolShowMessage-C4os87fJ.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowMessage-DtGDm3pq.js.map → PkToolShowMessage-C4os87fJ.js.map} +1 -1
- package/dist-vue/_chunks/PkToolShowMultipleChoice-DB5ZvvhS.js +45 -0
- package/dist-vue/_chunks/PkToolShowMultipleChoice-DB5ZvvhS.js.map +1 -0
- package/dist-vue/_chunks/{PkToolShowProductList-BlkUdbtV.js → PkToolShowProductList-BR14mmfl.js} +3 -3
- package/dist-vue/_chunks/{PkToolShowProductList-BlkUdbtV.js.map → PkToolShowProductList-BR14mmfl.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowQrCode-BUyhM_MN.js → PkToolShowQrCode-CTfDrItd.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowQrCode-BUyhM_MN.js.map → PkToolShowQrCode-CTfDrItd.js.map} +1 -1
- package/dist-vue/_chunks/PkToolShowSources-B_UfP0QT.js +377 -0
- package/dist-vue/_chunks/PkToolShowSources-B_UfP0QT.js.map +1 -0
- package/dist-vue/_chunks/PkToolShowSuggestedReply-BVa6p4DJ.js +40 -0
- package/dist-vue/_chunks/PkToolShowSuggestedReply-BVa6p4DJ.js.map +1 -0
- package/dist-vue/_chunks/{PkToolShowWeather-iAV7Hn_J.js → PkToolShowWeather-D3MyAnH4.js} +1 -1
- package/dist-vue/_chunks/{PkToolShowWeather-iAV7Hn_J.js.map → PkToolShowWeather-D3MyAnH4.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowWebPages-BQp9A4vb.js → PkToolShowWebPages-0pwK7psA.js} +4 -4
- package/dist-vue/_chunks/{PkToolShowWebPages-BQp9A4vb.js.map → PkToolShowWebPages-0pwK7psA.js.map} +1 -1
- package/dist-vue/_chunks/{PkUrl-C9annqfF.js → PkUrl-tuHTaGCy.js} +1 -1
- package/dist-vue/_chunks/{PkUrl-C9annqfF.js.map → PkUrl-tuHTaGCy.js.map} +1 -1
- package/dist-vue/_chunks/{ZodError-B3AvmUCJ.js → ZodError-DkVfTODd.js} +1 -1
- package/dist-vue/_chunks/{ZodError-B3AvmUCJ.js.map → ZodError-DkVfTODd.js.map} +1 -1
- package/dist-vue/_chunks/{apl-Bkqrrr3v.js → apl-j-tvtpTP.js} +1 -1
- package/dist-vue/_chunks/{apl-Bkqrrr3v.js.map → apl-j-tvtpTP.js.map} +1 -1
- package/dist-vue/_chunks/{asciiarmor-DMBg7NdB.js → asciiarmor-JNKKTtQt.js} +1 -1
- package/dist-vue/_chunks/{asciiarmor-DMBg7NdB.js.map → asciiarmor-JNKKTtQt.js.map} +1 -1
- package/dist-vue/_chunks/{asn1-WRfjxqL1.js → asn1-DBQ_amwa.js} +1 -1
- package/dist-vue/_chunks/{asn1-WRfjxqL1.js.map → asn1-DBQ_amwa.js.map} +1 -1
- package/dist-vue/_chunks/{asterisk-DYv-EHWB.js → asterisk-Di3iYNR-.js} +1 -1
- package/dist-vue/_chunks/{asterisk-DYv-EHWB.js.map → asterisk-Di3iYNR-.js.map} +1 -1
- package/dist-vue/_chunks/{brainfuck-hzOnKOH7.js → brainfuck-D8mwwQut.js} +1 -1
- package/dist-vue/_chunks/{brainfuck-hzOnKOH7.js.map → brainfuck-D8mwwQut.js.map} +1 -1
- package/dist-vue/_chunks/{clike-r66wHNGT.js → clike-I6ihTsJ5.js} +1 -1
- package/dist-vue/_chunks/{clike-r66wHNGT.js.map → clike-I6ihTsJ5.js.map} +1 -1
- package/dist-vue/_chunks/{clojure-BDb_WsAm.js → clojure-CGENQS-R.js} +1 -1
- package/dist-vue/_chunks/{clojure-BDb_WsAm.js.map → clojure-CGENQS-R.js.map} +1 -1
- package/dist-vue/_chunks/{cmake-Curqstum.js → cmake-D2jqXHLk.js} +1 -1
- package/dist-vue/_chunks/{cmake-Curqstum.js.map → cmake-D2jqXHLk.js.map} +1 -1
- package/dist-vue/_chunks/{cobol-BAx4MdII.js → cobol-Db3IHNru.js} +1 -1
- package/dist-vue/_chunks/{cobol-BAx4MdII.js.map → cobol-Db3IHNru.js.map} +1 -1
- package/dist-vue/_chunks/{coffeescript-jbcF4nR3.js → coffeescript-B4Rd3RcP.js} +1 -1
- package/dist-vue/_chunks/{coffeescript-jbcF4nR3.js.map → coffeescript-B4Rd3RcP.js.map} +1 -1
- package/dist-vue/_chunks/{commonlisp-BXKJxcTF.js → commonlisp-B-ehiawF.js} +1 -1
- package/dist-vue/_chunks/{commonlisp-BXKJxcTF.js.map → commonlisp-B-ehiawF.js.map} +1 -1
- package/dist-vue/_chunks/createChatbotApiClient-C520OTrB.js +521 -0
- package/dist-vue/_chunks/createChatbotApiClient-C520OTrB.js.map +1 -0
- package/dist-vue/_chunks/{crystal-Dq4io9oq.js → crystal-Bj2fwY3J.js} +1 -1
- package/dist-vue/_chunks/{crystal-Dq4io9oq.js.map → crystal-Bj2fwY3J.js.map} +1 -1
- package/dist-vue/_chunks/{css-Bd9Y1kSi.js → css-CDqbdUZS.js} +1 -1
- package/dist-vue/_chunks/{css-Bd9Y1kSi.js.map → css-CDqbdUZS.js.map} +1 -1
- package/dist-vue/_chunks/{cypher-D14rILSd.js → cypher-BPgl78lW.js} +1 -1
- package/dist-vue/_chunks/{cypher-D14rILSd.js.map → cypher-BPgl78lW.js.map} +1 -1
- package/dist-vue/_chunks/{d-B-E6YUkN.js → d-_9PAw1JO.js} +1 -1
- package/dist-vue/_chunks/{d-B-E6YUkN.js.map → d-_9PAw1JO.js.map} +1 -1
- package/dist-vue/_chunks/{diff-BPPcQvHC.js → diff-C_qwk3ek.js} +1 -1
- package/dist-vue/_chunks/{diff-BPPcQvHC.js.map → diff-C_qwk3ek.js.map} +1 -1
- package/dist-vue/_chunks/{dist-CJYiwDlx.js → dist-2RCoY9yL.js} +2 -2
- package/dist-vue/_chunks/{dist-CJYiwDlx.js.map → dist-2RCoY9yL.js.map} +1 -1
- package/dist-vue/_chunks/{dist-DEe8jwtO.js → dist-B504iqq4.js} +3 -3
- package/dist-vue/_chunks/{dist-DEe8jwtO.js.map → dist-B504iqq4.js.map} +1 -1
- package/dist-vue/_chunks/{dist-BHuX2VvC.js → dist-BbACD7ZF.js} +3 -3
- package/dist-vue/_chunks/{dist-BHuX2VvC.js.map → dist-BbACD7ZF.js.map} +1 -1
- package/dist-vue/_chunks/{dist-Bh5Q6aSI2.js → dist-BfWfkbOA.js} +2 -2
- package/dist-vue/_chunks/dist-BfWfkbOA.js.map +1 -0
- package/dist-vue/_chunks/{dist-Qq_6SbFF.js → dist-BnR5Kl9J.js} +3 -3
- package/dist-vue/_chunks/{dist-Qq_6SbFF.js.map → dist-BnR5Kl9J.js.map} +1 -1
- package/dist-vue/_chunks/{dist-KPI2eL8F.js → dist-Bx_jrcne.js} +2 -2
- package/dist-vue/_chunks/{dist-KPI2eL8F.js.map → dist-Bx_jrcne.js.map} +1 -1
- package/dist-vue/_chunks/{dist-CAXUIcdd.js → dist-C4DKJxXu.js} +4 -4
- package/dist-vue/_chunks/{dist-CAXUIcdd.js.map → dist-C4DKJxXu.js.map} +1 -1
- package/dist-vue/_chunks/{dist-CAZOa5qs2.js → dist-C9oRomIQ.js} +3 -3
- package/dist-vue/_chunks/dist-C9oRomIQ.js.map +1 -0
- package/dist-vue/_chunks/{dist-DfEAZDKB.js → dist-COvC03Xx.js} +3 -3
- package/dist-vue/_chunks/{dist-DfEAZDKB.js.map → dist-COvC03Xx.js.map} +1 -1
- package/dist-vue/_chunks/{dist-D-VT7gvP.js → dist-CwB_dFae.js} +3 -3
- package/dist-vue/_chunks/{dist-D-VT7gvP.js.map → dist-CwB_dFae.js.map} +1 -1
- package/dist-vue/_chunks/{dist-BaIe783A.js → dist-Cz8slHpf.js} +2 -2
- package/dist-vue/_chunks/{dist-BaIe783A.js.map → dist-Cz8slHpf.js.map} +1 -1
- package/dist-vue/_chunks/{dist-DV82RztV.js → dist-D-G-983p.js} +3 -3
- package/dist-vue/_chunks/{dist-DV82RztV.js.map → dist-D-G-983p.js.map} +1 -1
- package/dist-vue/_chunks/{dist-BNLIqE7O.js → dist-DGsr6BFK.js} +2 -2
- package/dist-vue/_chunks/{dist-BNLIqE7O.js.map → dist-DGsr6BFK.js.map} +1 -1
- package/dist-vue/_chunks/{dist-DMP9Xsk0.js → dist-DJFxbNlz.js} +2 -2
- package/dist-vue/_chunks/{dist-DMP9Xsk0.js.map → dist-DJFxbNlz.js.map} +1 -1
- package/dist-vue/_chunks/{dist-bUGhZmKp.js → dist-DKeYnhzh.js} +5 -5
- package/dist-vue/_chunks/{dist-bUGhZmKp.js.map → dist-DKeYnhzh.js.map} +1 -1
- package/dist-vue/_chunks/{dist--mE2E_mM.js → dist-DL84m6GA.js} +1 -1
- package/dist-vue/_chunks/{dist--mE2E_mM.js.map → dist-DL84m6GA.js.map} +1 -1
- package/dist-vue/_chunks/{dist-QbFF3eM_.js → dist-DS-IY-lt.js} +4 -4
- package/dist-vue/_chunks/{dist-QbFF3eM_.js.map → dist-DS-IY-lt.js.map} +1 -1
- package/dist-vue/_chunks/{dist-s_XUA-aw.js → dist-DZloX6N0.js} +3 -3
- package/dist-vue/_chunks/{dist-s_XUA-aw.js.map → dist-DZloX6N0.js.map} +1 -1
- package/dist-vue/_chunks/{dist-jVwgEJDw.js → dist-DapfuoOT.js} +3 -3
- package/dist-vue/_chunks/{dist-jVwgEJDw.js.map → dist-DapfuoOT.js.map} +1 -1
- package/dist-vue/_chunks/{dist-BWXfA4NS.js → dist-DmUxIVrQ.js} +5 -5
- package/dist-vue/_chunks/{dist-BWXfA4NS.js.map → dist-DmUxIVrQ.js.map} +1 -1
- package/dist-vue/_chunks/{dist-BQRG0D3Y.js → dist-LX3EryGA.js} +2 -2
- package/dist-vue/_chunks/{dist-BQRG0D3Y.js.map → dist-LX3EryGA.js.map} +1 -1
- package/dist-vue/_chunks/{dist-afJW4ohP2.js → dist-Z_cFz9nA.js} +2 -2
- package/dist-vue/_chunks/dist-Z_cFz9nA.js.map +1 -0
- package/dist-vue/_chunks/{dist-DVM_p-M1.js → dist-mJVylhvZ.js} +4 -4
- package/dist-vue/_chunks/{dist-DVM_p-M1.js.map → dist-mJVylhvZ.js.map} +1 -1
- package/dist-vue/_chunks/{dockerfile-CGxYmrOo.js → dockerfile-nMSg2tXY.js} +2 -2
- package/dist-vue/_chunks/{dockerfile-CGxYmrOo.js.map → dockerfile-nMSg2tXY.js.map} +1 -1
- package/dist-vue/_chunks/{dtd-ztbg9nev.js → dtd-BhtRjlzo.js} +1 -1
- package/dist-vue/_chunks/{dtd-ztbg9nev.js.map → dtd-BhtRjlzo.js.map} +1 -1
- package/dist-vue/_chunks/{dylan-Do2p-AA-.js → dylan-DyLL0Sxl.js} +1 -1
- package/dist-vue/_chunks/{dylan-Do2p-AA-.js.map → dylan-DyLL0Sxl.js.map} +1 -1
- package/dist-vue/_chunks/{ebnf-ChJPn51D.js → ebnf-DcBh-k1T.js} +1 -1
- package/dist-vue/_chunks/{ebnf-ChJPn51D.js.map → ebnf-DcBh-k1T.js.map} +1 -1
- package/dist-vue/_chunks/{ecl-ztl4D9j5.js → ecl-C-A1gGx7.js} +1 -1
- package/dist-vue/_chunks/{ecl-ztl4D9j5.js.map → ecl-C-A1gGx7.js.map} +1 -1
- package/dist-vue/_chunks/{eiffel-BYAAf3D8.js → eiffel-DwgfvIBI.js} +1 -1
- package/dist-vue/_chunks/{eiffel-BYAAf3D8.js.map → eiffel-DwgfvIBI.js.map} +1 -1
- package/dist-vue/_chunks/{elm-DFquGUxW.js → elm-RPF69bOV.js} +1 -1
- package/dist-vue/_chunks/{elm-DFquGUxW.js.map → elm-RPF69bOV.js.map} +1 -1
- package/dist-vue/_chunks/{erlang-BIndT8-8.js → erlang-BvNh96Ir.js} +1 -1
- package/dist-vue/_chunks/{erlang-BIndT8-8.js.map → erlang-BvNh96Ir.js.map} +1 -1
- package/dist-vue/_chunks/{factor-DqGzyyvS.js → factor-B_mOIxzF.js} +2 -2
- package/dist-vue/_chunks/{factor-DqGzyyvS.js.map → factor-B_mOIxzF.js.map} +1 -1
- package/dist-vue/_chunks/{fcl-MTt_AC1b.js → fcl-C9ulsEA4.js} +1 -1
- package/dist-vue/_chunks/{fcl-MTt_AC1b.js.map → fcl-C9ulsEA4.js.map} +1 -1
- package/dist-vue/_chunks/{forth-BPoSoJYE.js → forth-CFaZGhGS.js} +1 -1
- package/dist-vue/_chunks/{forth-BPoSoJYE.js.map → forth-CFaZGhGS.js.map} +1 -1
- package/dist-vue/_chunks/{fortran-BmHZEBN4.js → fortran-Cjm6fEBu.js} +1 -1
- package/dist-vue/_chunks/{fortran-BmHZEBN4.js.map → fortran-Cjm6fEBu.js.map} +1 -1
- package/dist-vue/_chunks/{gas-7ZHFSr9Y.js → gas-C3adNyJH.js} +1 -1
- package/dist-vue/_chunks/{gas-7ZHFSr9Y.js.map → gas-C3adNyJH.js.map} +1 -1
- package/dist-vue/_chunks/{gherkin-DiGPpFIT.js → gherkin-DFFRCqQB.js} +1 -1
- package/dist-vue/_chunks/{gherkin-DiGPpFIT.js.map → gherkin-DFFRCqQB.js.map} +1 -1
- package/dist-vue/_chunks/{groovy-DdKIH6vq.js → groovy-BHcqGGgZ.js} +1 -1
- package/dist-vue/_chunks/{groovy-DdKIH6vq.js.map → groovy-BHcqGGgZ.js.map} +1 -1
- package/dist-vue/_chunks/{haskell-DAISwZqR.js → haskell-BB45MUCR.js} +1 -1
- package/dist-vue/_chunks/{haskell-DAISwZqR.js.map → haskell-BB45MUCR.js.map} +1 -1
- package/dist-vue/_chunks/{haxe-CcCnoX02.js → haxe-QBohTRDI.js} +1 -1
- package/dist-vue/_chunks/{haxe-CcCnoX02.js.map → haxe-QBohTRDI.js.map} +1 -1
- package/dist-vue/_chunks/{http-Dy51A1Ji.js → http-HqJENFoz.js} +1 -1
- package/dist-vue/_chunks/{http-Dy51A1Ji.js.map → http-HqJENFoz.js.map} +1 -1
- package/dist-vue/_chunks/{idl-Cf5JG3Ez.js → idl-DZZwNvlw.js} +1 -1
- package/dist-vue/_chunks/{idl-Cf5JG3Ez.js.map → idl-DZZwNvlw.js.map} +1 -1
- package/dist-vue/_chunks/index.es-CikrfdXD.js +950 -0
- package/dist-vue/_chunks/index.es-CikrfdXD.js.map +1 -0
- package/dist-vue/_chunks/{javascript-CzLVX0gM.js → javascript-C85sLH7Y.js} +1 -1
- package/dist-vue/_chunks/{javascript-CzLVX0gM.js.map → javascript-C85sLH7Y.js.map} +1 -1
- package/dist-vue/_chunks/{julia-B2PXBujh.js → julia-ChIE7-ml.js} +1 -1
- package/dist-vue/_chunks/{julia-B2PXBujh.js.map → julia-ChIE7-ml.js.map} +1 -1
- package/dist-vue/_chunks/{livescript-2I87cCXG.js → livescript-BCs3u_kv.js} +1 -1
- package/dist-vue/_chunks/{livescript-2I87cCXG.js.map → livescript-BCs3u_kv.js.map} +1 -1
- package/dist-vue/_chunks/{lua-C3mMI1er.js → lua-DzZVFmfH.js} +1 -1
- package/dist-vue/_chunks/{lua-C3mMI1er.js.map → lua-DzZVFmfH.js.map} +1 -1
- package/dist-vue/_chunks/{mathematica-fQn4Bu4o.js → mathematica-Zz2lXOfW.js} +1 -1
- package/dist-vue/_chunks/{mathematica-fQn4Bu4o.js.map → mathematica-Zz2lXOfW.js.map} +1 -1
- package/dist-vue/_chunks/{mbox-DKAPFpEV.js → mbox-CuPDY4hp.js} +1 -1
- package/dist-vue/_chunks/{mbox-DKAPFpEV.js.map → mbox-CuPDY4hp.js.map} +1 -1
- package/dist-vue/_chunks/{mirc-BjO0qN2s.js → mirc-DwrsqNtD.js} +1 -1
- package/dist-vue/_chunks/{mirc-BjO0qN2s.js.map → mirc-DwrsqNtD.js.map} +1 -1
- package/dist-vue/_chunks/{mllike-BlZyj79n.js → mllike-76cVByXA.js} +1 -1
- package/dist-vue/_chunks/{mllike-BlZyj79n.js.map → mllike-76cVByXA.js.map} +1 -1
- package/dist-vue/_chunks/{modelica-QjIv2_JC.js → modelica-kytS8Bwg.js} +1 -1
- package/dist-vue/_chunks/{modelica-QjIv2_JC.js.map → modelica-kytS8Bwg.js.map} +1 -1
- package/dist-vue/_chunks/{mscgen-LfC5dXDe.js → mscgen-CoPuHfjN.js} +1 -1
- package/dist-vue/_chunks/{mscgen-LfC5dXDe.js.map → mscgen-CoPuHfjN.js.map} +1 -1
- package/dist-vue/_chunks/{mumps-Dv1DAXnR.js → mumps-B2uz6FeJ.js} +1 -1
- package/dist-vue/_chunks/{mumps-Dv1DAXnR.js.map → mumps-B2uz6FeJ.js.map} +1 -1
- package/dist-vue/_chunks/{nginx-3DgpfXl3.js → nginx-BSBpB1IU.js} +1 -1
- package/dist-vue/_chunks/{nginx-3DgpfXl3.js.map → nginx-BSBpB1IU.js.map} +1 -1
- package/dist-vue/_chunks/{nsis-K3Sov04-.js → nsis-R5ELJwT9.js} +2 -2
- package/dist-vue/_chunks/{nsis-K3Sov04-.js.map → nsis-R5ELJwT9.js.map} +1 -1
- package/dist-vue/_chunks/{ntriples-BEnyXf7m.js → ntriples-CAwEARBj.js} +1 -1
- package/dist-vue/_chunks/{ntriples-BEnyXf7m.js.map → ntriples-CAwEARBj.js.map} +1 -1
- package/dist-vue/_chunks/{octave-CyLDdHqN.js → octave-Ufq41PR2.js} +1 -1
- package/dist-vue/_chunks/{octave-CyLDdHqN.js.map → octave-Ufq41PR2.js.map} +1 -1
- package/dist-vue/_chunks/{oz-D5CDtCy5.js → oz-gzP8z3Q6.js} +1 -1
- package/dist-vue/_chunks/{oz-D5CDtCy5.js.map → oz-gzP8z3Q6.js.map} +1 -1
- package/dist-vue/_chunks/{pascal-BSLSyZrm.js → pascal-Ccg4lI6j.js} +1 -1
- package/dist-vue/_chunks/{pascal-BSLSyZrm.js.map → pascal-Ccg4lI6j.js.map} +1 -1
- package/dist-vue/_chunks/{perl-DBW5T0Wn.js → perl-64iNbjRD.js} +1 -1
- package/dist-vue/_chunks/{perl-DBW5T0Wn.js.map → perl-64iNbjRD.js.map} +1 -1
- package/dist-vue/_chunks/{pig-C5Bshhgj.js → pig-CsJsXnem.js} +1 -1
- package/dist-vue/_chunks/{pig-C5Bshhgj.js.map → pig-CsJsXnem.js.map} +1 -1
- package/dist-vue/_chunks/{powershell-BEB8cXp1.js → powershell-CPnsuu0v.js} +1 -1
- package/dist-vue/_chunks/{powershell-BEB8cXp1.js.map → powershell-CPnsuu0v.js.map} +1 -1
- package/dist-vue/_chunks/{properties-Dywxo8ET.js → properties-CEGInQuZ.js} +1 -1
- package/dist-vue/_chunks/{properties-Dywxo8ET.js.map → properties-CEGInQuZ.js.map} +1 -1
- package/dist-vue/_chunks/{protobuf-236BAJ7w.js → protobuf-BGU8l-K6.js} +1 -1
- package/dist-vue/_chunks/{protobuf-236BAJ7w.js.map → protobuf-BGU8l-K6.js.map} +1 -1
- package/dist-vue/_chunks/{pug-cbZddqK7.js → pug-DMZOuiBR.js} +2 -2
- package/dist-vue/_chunks/{pug-cbZddqK7.js.map → pug-DMZOuiBR.js.map} +1 -1
- package/dist-vue/_chunks/{puppet-C2NL98jI.js → puppet-CT38RAOR.js} +1 -1
- package/dist-vue/_chunks/{puppet-C2NL98jI.js.map → puppet-CT38RAOR.js.map} +1 -1
- package/dist-vue/_chunks/{python-CwQbjwek.js → python-BmpRibCQ.js} +1 -1
- package/dist-vue/_chunks/{python-CwQbjwek.js.map → python-BmpRibCQ.js.map} +1 -1
- package/dist-vue/_chunks/{q-BSTDwNDO.js → q-CtSYDlyO.js} +1 -1
- package/dist-vue/_chunks/{q-BSTDwNDO.js.map → q-CtSYDlyO.js.map} +1 -1
- package/dist-vue/_chunks/{r-DFZgsfAZ.js → r-oVGiwSoK.js} +1 -1
- package/dist-vue/_chunks/{r-DFZgsfAZ.js.map → r-oVGiwSoK.js.map} +1 -1
- package/dist-vue/_chunks/{rpm-C0LbsDPX.js → rpm-B5gOa5-q.js} +1 -1
- package/dist-vue/_chunks/{rpm-C0LbsDPX.js.map → rpm-B5gOa5-q.js.map} +1 -1
- package/dist-vue/_chunks/{ruby-Bier99ao.js → ruby-34fuN336.js} +1 -1
- package/dist-vue/_chunks/{ruby-Bier99ao.js.map → ruby-34fuN336.js.map} +1 -1
- package/dist-vue/_chunks/{sas-VrUpo2iQ.js → sas-BlnUKWuD.js} +1 -1
- package/dist-vue/_chunks/{sas-VrUpo2iQ.js.map → sas-BlnUKWuD.js.map} +1 -1
- package/dist-vue/_chunks/{scheme-D6LSF3th.js → scheme-Ba-z_mxe.js} +1 -1
- package/dist-vue/_chunks/{scheme-D6LSF3th.js.map → scheme-Ba-z_mxe.js.map} +1 -1
- package/dist-vue/_chunks/{shell-Pil6sZYj.js → shell-B-EgOeQy.js} +1 -1
- package/dist-vue/_chunks/{shell-Pil6sZYj.js.map → shell-B-EgOeQy.js.map} +1 -1
- package/dist-vue/_chunks/{sieve-BP6vUMh6.js → sieve-DsG7bfYX.js} +1 -1
- package/dist-vue/_chunks/{sieve-BP6vUMh6.js.map → sieve-DsG7bfYX.js.map} +1 -1
- package/dist-vue/_chunks/{simple-mode-BG7WQO3g.js → simple-mode-wQYx-pPa.js} +1 -1
- package/dist-vue/_chunks/{simple-mode-BG7WQO3g.js.map → simple-mode-wQYx-pPa.js.map} +1 -1
- package/dist-vue/_chunks/{smalltalk-BnTD_-u6.js → smalltalk-ChZvyDpP.js} +1 -1
- package/dist-vue/_chunks/{smalltalk-BnTD_-u6.js.map → smalltalk-ChZvyDpP.js.map} +1 -1
- package/dist-vue/_chunks/{solr-VuxI6OR2.js → solr-Dqcv2AYp.js} +1 -1
- package/dist-vue/_chunks/{solr-VuxI6OR2.js.map → solr-Dqcv2AYp.js.map} +1 -1
- package/dist-vue/_chunks/{sparql-7LilzgeP.js → sparql-DqMXm2dv.js} +1 -1
- package/dist-vue/_chunks/{sparql-7LilzgeP.js.map → sparql-DqMXm2dv.js.map} +1 -1
- package/dist-vue/_chunks/{spreadsheet-CMp1pfGY.js → spreadsheet-DZEh4bps.js} +1 -1
- package/dist-vue/_chunks/{spreadsheet-CMp1pfGY.js.map → spreadsheet-DZEh4bps.js.map} +1 -1
- package/dist-vue/_chunks/{sql-7pX-pbPB.js → sql-MyS5CFp1.js} +1 -1
- package/dist-vue/_chunks/{sql-7pX-pbPB.js.map → sql-MyS5CFp1.js.map} +1 -1
- package/dist-vue/_chunks/{src-DjRNH9vV.js → src-BteqqLGW.js} +1 -1
- package/dist-vue/_chunks/{src-DjRNH9vV.js.map → src-BteqqLGW.js.map} +1 -1
- package/dist-vue/_chunks/{stex-Bb7D4YTq.js → stex-CuUykOIw.js} +1 -1
- package/dist-vue/_chunks/{stex-Bb7D4YTq.js.map → stex-CuUykOIw.js.map} +1 -1
- package/dist-vue/_chunks/{stylus-DtQ7d5hI.js → stylus-BIh9GBXG.js} +1 -1
- package/dist-vue/_chunks/{stylus-DtQ7d5hI.js.map → stylus-BIh9GBXG.js.map} +1 -1
- package/dist-vue/_chunks/{swift-BUw5YtkI.js → swift-En1d22e-.js} +1 -1
- package/dist-vue/_chunks/{swift-BUw5YtkI.js.map → swift-En1d22e-.js.map} +1 -1
- package/dist-vue/_chunks/{tcl-DXJDyEhN.js → tcl-CA3XR2Sh.js} +1 -1
- package/dist-vue/_chunks/{tcl-DXJDyEhN.js.map → tcl-CA3XR2Sh.js.map} +1 -1
- package/dist-vue/_chunks/{textile-CFJlGF4J.js → textile-CKe5SU6F.js} +1 -1
- package/dist-vue/_chunks/{textile-CFJlGF4J.js.map → textile-CKe5SU6F.js.map} +1 -1
- package/dist-vue/_chunks/{tiddlywiki-BcfgI-U0.js → tiddlywiki-UOzNZSPW.js} +1 -1
- package/dist-vue/_chunks/{tiddlywiki-BcfgI-U0.js.map → tiddlywiki-UOzNZSPW.js.map} +1 -1
- package/dist-vue/_chunks/{tiki-Ck3ovlwE.js → tiki-CTiuYP9v.js} +1 -1
- package/dist-vue/_chunks/{tiki-Ck3ovlwE.js.map → tiki-CTiuYP9v.js.map} +1 -1
- package/dist-vue/_chunks/{toml-Cj82erLE.js → toml-DDNufn3M.js} +1 -1
- package/dist-vue/_chunks/{toml-Cj82erLE.js.map → toml-DDNufn3M.js.map} +1 -1
- package/dist-vue/_chunks/{troff-CizaXfug.js → troff-DW8Y_3S4.js} +1 -1
- package/dist-vue/_chunks/{troff-CizaXfug.js.map → troff-DW8Y_3S4.js.map} +1 -1
- package/dist-vue/_chunks/{ttcn-mPO-QsiQ.js → ttcn-C-DIoNCg.js} +1 -1
- package/dist-vue/_chunks/{ttcn-mPO-QsiQ.js.map → ttcn-C-DIoNCg.js.map} +1 -1
- package/dist-vue/_chunks/{ttcn-cfg-c_AW8b7V.js → ttcn-cfg-B4ziRnM-.js} +1 -1
- package/dist-vue/_chunks/{ttcn-cfg-c_AW8b7V.js.map → ttcn-cfg-B4ziRnM-.js.map} +1 -1
- package/dist-vue/_chunks/{turtle-BF5AsFbP.js → turtle-CARqpYpc.js} +1 -1
- package/dist-vue/_chunks/{turtle-BF5AsFbP.js.map → turtle-CARqpYpc.js.map} +1 -1
- package/dist-vue/_chunks/{useChatbotStore-ys9uGP5v.js → useChatbotStore-C9xj40sY.js} +24 -24
- package/dist-vue/_chunks/{useChatbotStore-ys9uGP5v.js.map → useChatbotStore-C9xj40sY.js.map} +1 -1
- package/dist-vue/_chunks/{useLightbox-CRpWDdlN.js → useLightbox-CsBDIq4B.js} +2 -2
- package/dist-vue/_chunks/{useLightbox-CRpWDdlN.js.map → useLightbox-CsBDIq4B.js.map} +1 -1
- package/dist-vue/_chunks/useSafeLocalStorage-C1GCM7nD.js +15 -0
- package/dist-vue/_chunks/useSafeLocalStorage-C1GCM7nD.js.map +1 -0
- package/dist-vue/_chunks/{utils-DBd_X5-V.js → utils-D1pBqT-n.js} +2 -2
- package/dist-vue/_chunks/{utils-DBd_X5-V.js.map → utils-D1pBqT-n.js.map} +1 -1
- package/dist-vue/_chunks/{vb-CeqEYgxc.js → vb-jy9Yl8VS.js} +1 -1
- package/dist-vue/_chunks/{vb-CeqEYgxc.js.map → vb-jy9Yl8VS.js.map} +1 -1
- package/dist-vue/_chunks/{vbscript-Dy7to0l6.js → vbscript-srk6lbz5.js} +1 -1
- package/dist-vue/_chunks/{vbscript-Dy7to0l6.js.map → vbscript-srk6lbz5.js.map} +1 -1
- package/dist-vue/_chunks/{velocity-CKubdsu-.js → velocity-DYmMYLwp.js} +1 -1
- package/dist-vue/_chunks/{velocity-CKubdsu-.js.map → velocity-DYmMYLwp.js.map} +1 -1
- package/dist-vue/_chunks/{verilog-BhlfpzOZ.js → verilog-UsIZeNkB.js} +1 -1
- package/dist-vue/_chunks/{verilog-BhlfpzOZ.js.map → verilog-UsIZeNkB.js.map} +1 -1
- package/dist-vue/_chunks/{vhdl-8WXkWtGM.js → vhdl-DNCP7Bn1.js} +1 -1
- package/dist-vue/_chunks/{vhdl-8WXkWtGM.js.map → vhdl-DNCP7Bn1.js.map} +1 -1
- package/dist-vue/_chunks/{webidl-Jc36v0Y0.js → webidl-DOqqk_0y.js} +1 -1
- package/dist-vue/_chunks/{webidl-Jc36v0Y0.js.map → webidl-DOqqk_0y.js.map} +1 -1
- package/dist-vue/_chunks/{xquery-H0oz85f3.js → xquery-DJDJrmLG.js} +1 -1
- package/dist-vue/_chunks/{xquery-H0oz85f3.js.map → xquery-DJDJrmLG.js.map} +1 -1
- package/dist-vue/_chunks/{yacas-BdW11VL8.js → yacas-BSgkPzcj.js} +1 -1
- package/dist-vue/_chunks/{yacas-BdW11VL8.js.map → yacas-BSgkPzcj.js.map} +1 -1
- package/dist-vue/_chunks/{z80-GK9AbKDL.js → z80-C0-Mg9L3.js} +1 -1
- package/dist-vue/_chunks/{z80-GK9AbKDL.js.map → z80-C0-Mg9L3.js.map} +1 -1
- package/dist-vue/api.js +1 -1
- package/dist-vue/apps/web-component/src/composables/useChatbotAuth.d.ts +2 -1
- package/dist-vue/composables.js +92 -80
- package/dist-vue/composables.js.map +1 -1
- package/dist-vue/index.js +874 -857
- package/dist-vue/index.js.map +1 -1
- package/dist-vue/locales.js +1 -0
- package/dist-vue/packages/ability/src/types.d.ts +3 -1
- package/dist-vue/packages/components/src/chat/PkChatbotMessages.d.ts +10 -3
- package/dist-vue/packages/components/src/chat/PkCopyBlock.d.ts +4 -2
- package/dist-vue/packages/components/src/chat/PkMessageParts.d.ts +5 -1
- package/dist-vue/packages/components/src/chat/PkToolShowLocation.d.ts +5 -0
- package/dist-vue/packages/components/src/index.d.ts +2 -1
- package/dist-vue/packages/composable/src/chatbot/api/createChatbotApiClient.d.ts +5 -0
- package/dist-vue/packages/composable/src/index.d.ts +1 -0
- package/dist-vue/packages/composable/src/useSafeLocalStorage.d.ts +7 -0
- package/dist-vue/packages/models/src/schema/AgentEndpoint.d.ts +108 -0
- package/dist-vue/packages/models/src/schema/AgentEndpointLog.d.ts +48 -0
- package/dist-vue/packages/models/src/schema/index.d.ts +2 -0
- package/dist-vue/style.css +1 -1
- package/package.json +3 -2
- package/dist/_chunks/PkToolShowArtifact-DzNIkKvZ.js.map +0 -1
- package/dist/_chunks/PkToolShowLocation-BsBiA4jV.js +0 -134
- package/dist/_chunks/PkToolShowLocation-BsBiA4jV.js.map +0 -1
- package/dist/_chunks/vue-leaflet.es-BT-uRmMx.js +0 -1738
- package/dist/_chunks/vue-leaflet.es-BT-uRmMx.js.map +0 -1
- package/dist-vue/_chunks/PkChatbotFeedbackForm-Dl1pWKbb.js +0 -1035
- package/dist-vue/_chunks/PkChatbotFeedbackForm-Dl1pWKbb.js.map +0 -1
- package/dist-vue/_chunks/PkChatbotMessages-C7-ZtU0-.js.map +0 -1
- package/dist-vue/_chunks/PkChatbotViewChat-EWotdJkz.js +0 -792
- package/dist-vue/_chunks/PkChatbotViewChat-EWotdJkz.js.map +0 -1
- package/dist-vue/_chunks/PkToolShowArtifact-pTS7wzhw.js.map +0 -1
- package/dist-vue/_chunks/PkToolShowLocation-DSZvW68g.js +0 -135
- package/dist-vue/_chunks/PkToolShowLocation-DSZvW68g.js.map +0 -1
- package/dist-vue/_chunks/createChatbotApiClient-BJL1_AVi.js +0 -630
- package/dist-vue/_chunks/createChatbotApiClient-BJL1_AVi.js.map +0 -1
- package/dist-vue/_chunks/dist-Bh5Q6aSI2.js.map +0 -1
- package/dist-vue/_chunks/dist-CAZOa5qs2.js.map +0 -1
- package/dist-vue/_chunks/dist-afJW4ohP2.js.map +0 -1
package/dist-vue/_chunks/{PkToolShowWeather-iAV7Hn_J.js.map → PkToolShowWeather-D3MyAnH4.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PkToolShowWeather-iAV7Hn_J.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-D3MyAnH4.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,6 +1,6 @@
|
|
|
1
|
-
import { u as e } from "./useChatbotStore-
|
|
2
|
-
import { n as t } from "./src-
|
|
3
|
-
import { t as n } from "./PkUrl-
|
|
1
|
+
import { u as e } from "./useChatbotStore-C9xj40sY.js";
|
|
2
|
+
import { n as t } from "./src-BteqqLGW.js";
|
|
3
|
+
import { t as n } from "./PkUrl-tuHTaGCy.js";
|
|
4
4
|
import { Fragment as r, computed as i, createCommentVNode as a, createElementBlock as o, createElementVNode as s, createTextVNode as c, createVNode as l, defineComponent as u, openBlock as d, ref as f, renderList as p, toDisplayString as m, unref as h } from "vue";
|
|
5
5
|
import { VvIcon as g } from "@volverjs/ui-vue/components";
|
|
6
6
|
//#region ../../packages/components/src/chat/PkToolShowWebPages.vue?vue&type=script&setup=true&lang.ts
|
|
@@ -59,4 +59,4 @@ var _ = {
|
|
|
59
59
|
//#endregion
|
|
60
60
|
export { E as n, D as t };
|
|
61
61
|
|
|
62
|
-
//# sourceMappingURL=PkToolShowWebPages-
|
|
62
|
+
//# sourceMappingURL=PkToolShowWebPages-0pwK7psA.js.map
|
package/dist-vue/_chunks/{PkToolShowWebPages-BQp9A4vb.js.map → PkToolShowWebPages-0pwK7psA.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PkToolShowWebPages-
|
|
1
|
+
{"version":3,"file":"PkToolShowWebPages-0pwK7psA.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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PkUrl-
|
|
1
|
+
{"version":3,"file":"PkUrl-tuHTaGCy.js","names":[],"sources":["../../../../packages/components/src/PkUrl.vue","../../../../packages/components/src/PkUrl.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed } from 'vue'\n\n interface Props {\n url: string\n maxLength?: number\n domainClass?: string\n target?: '_blank' | '_self' | '_parent' | '_top'\n rel?: string\n muted?: boolean\n }\n\n const props = withDefaults(defineProps<Props>(), {\n maxLength: 60,\n domainClass: undefined,\n target: '_blank',\n rel: 'noopener noreferrer',\n muted: false,\n })\n\n const parsedUrl = computed(() => {\n try {\n const urlObj = new URL(props.url)\n let hostname = urlObj.hostname\n\n // Remove www. prefix\n if (hostname.startsWith('www.')) hostname = hostname.substring(4)\n\n // Get pathname and remove trailing slash\n let pathname = urlObj.pathname\n if (pathname === '/') pathname = ''\n\n // Split pathname into segments\n const segments = pathname\n .split('/')\n .filter((segment) => segment.length > 0)\n\n return {\n domain: hostname,\n segments,\n fullPath: hostname + pathname,\n }\n } catch {\n // If URL parsing fails, return the original URL\n return {\n domain: props.url,\n segments: [],\n fullPath: props.url,\n }\n }\n })\n\n const truncatedUrl = computed(() => {\n if (parsedUrl.value.fullPath.length <= props.maxLength)\n return parsedUrl.value\n\n // If too long, truncate segments from the beginning\n const domain = parsedUrl.value.domain\n const allSegments = parsedUrl.value.segments\n\n // Always show at least the last segment\n if (allSegments.length === 0) {\n return {\n domain,\n segments: [],\n fullPath: domain,\n }\n }\n\n const segments: string[] = []\n\n // Calculate from the end\n let currentLength = domain.length\n\n // Try to fit segments from the end\n for (let i = allSegments.length - 1; i >= 0; i--) {\n const segment = allSegments[i]\n\n // Always include at least the last segment\n if (segments.length === 0) {\n currentLength += segment.length + 1\n segments.unshift(segment)\n } else if (currentLength + segment.length + 1 <= props.maxLength) {\n currentLength += segment.length + 1\n segments.unshift(segment)\n } else {\n segments.unshift('...')\n break\n }\n }\n\n return {\n domain,\n segments,\n fullPath: domain + '/' + segments.join('/'),\n }\n })\n</script>\n\n<template>\n <Component\n :is=\"muted ? 'span' : 'a'\"\n class=\"pk-url\"\n :href=\"muted ? undefined : props.url\"\n :target=\"muted ? undefined : props.target\"\n :rel=\"muted ? undefined : props.rel\">\n <span :class=\"['pk-url__domain', domainClass]\">{{\n truncatedUrl.domain\n }}</span>\n <template\n v-for=\"(segment, index) in truncatedUrl.segments\"\n :key=\"index\">\n <span class=\"pk-url__separator\">›</span>\n <span class=\"pk-url__segment\">{{ segment }}</span>\n </template>\n </Component>\n</template>\n\n<style lang=\"scss\">\n .pk-url {\n display: inline-flex;\n align-items: center;\n gap: 0.5ch;\n }\n</style>\n","<script setup lang=\"ts\">\n import { computed } from 'vue'\n\n interface Props {\n url: string\n maxLength?: number\n domainClass?: string\n target?: '_blank' | '_self' | '_parent' | '_top'\n rel?: string\n muted?: boolean\n }\n\n const props = withDefaults(defineProps<Props>(), {\n maxLength: 60,\n domainClass: undefined,\n target: '_blank',\n rel: 'noopener noreferrer',\n muted: false,\n })\n\n const parsedUrl = computed(() => {\n try {\n const urlObj = new URL(props.url)\n let hostname = urlObj.hostname\n\n // Remove www. prefix\n if (hostname.startsWith('www.')) hostname = hostname.substring(4)\n\n // Get pathname and remove trailing slash\n let pathname = urlObj.pathname\n if (pathname === '/') pathname = ''\n\n // Split pathname into segments\n const segments = pathname\n .split('/')\n .filter((segment) => segment.length > 0)\n\n return {\n domain: hostname,\n segments,\n fullPath: hostname + pathname,\n }\n } catch {\n // If URL parsing fails, return the original URL\n return {\n domain: props.url,\n segments: [],\n fullPath: props.url,\n }\n }\n })\n\n const truncatedUrl = computed(() => {\n if (parsedUrl.value.fullPath.length <= props.maxLength)\n return parsedUrl.value\n\n // If too long, truncate segments from the beginning\n const domain = parsedUrl.value.domain\n const allSegments = parsedUrl.value.segments\n\n // Always show at least the last segment\n if (allSegments.length === 0) {\n return {\n domain,\n segments: [],\n fullPath: domain,\n }\n }\n\n const segments: string[] = []\n\n // Calculate from the end\n let currentLength = domain.length\n\n // Try to fit segments from the end\n for (let i = allSegments.length - 1; i >= 0; i--) {\n const segment = allSegments[i]\n\n // Always include at least the last segment\n if (segments.length === 0) {\n currentLength += segment.length + 1\n segments.unshift(segment)\n } else if (currentLength + segment.length + 1 <= props.maxLength) {\n currentLength += segment.length + 1\n segments.unshift(segment)\n } else {\n segments.unshift('...')\n break\n }\n }\n\n return {\n domain,\n segments,\n fullPath: domain + '/' + segments.join('/'),\n }\n })\n</script>\n\n<template>\n <Component\n :is=\"muted ? 'span' : 'a'\"\n class=\"pk-url\"\n :href=\"muted ? undefined : props.url\"\n :target=\"muted ? undefined : props.target\"\n :rel=\"muted ? undefined : props.rel\">\n <span :class=\"['pk-url__domain', domainClass]\">{{\n truncatedUrl.domain\n }}</span>\n <template\n v-for=\"(segment, index) in truncatedUrl.segments\"\n :key=\"index\">\n <span class=\"pk-url__separator\">›</span>\n <span class=\"pk-url__segment\">{{ segment }}</span>\n </template>\n </Component>\n</template>\n\n<style lang=\"scss\">\n .pk-url {\n display: inline-flex;\n align-items: center;\n gap: 0.5ch;\n }\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;EAYI,IAAM,IAAQ,GAQR,IAAY,QAAe;AAC7B,OAAI;IACA,IAAM,IAAS,IAAI,IAAI,EAAM,IAAG,EAC5B,IAAW,EAAO;AAGtB,IAAI,EAAS,WAAW,OAAO,KAAE,IAAW,EAAS,UAAU,EAAC;IAGhE,IAAI,IAAW,EAAO;AACtB,IAAI,MAAa,QAAK,IAAW;IAGjC,IAAM,IAAW,EACZ,MAAM,IAAG,CACT,QAAQ,MAAY,EAAQ,SAAS,EAAC;AAE3C,WAAO;KACH,QAAQ;KACR;KACA,UAAU,IAAW;KACzB;WACI;AAEJ,WAAO;KACH,QAAQ,EAAM;KACd,UAAU,EAAE;KACZ,UAAU,EAAM;KACpB;;IAEP,EAEK,IAAe,QAAe;AAChC,OAAI,EAAU,MAAM,SAAS,UAAU,EAAM,UACzC,QAAO,EAAU;GAGrB,IAAM,IAAS,EAAU,MAAM,QACzB,IAAc,EAAU,MAAM;AAGpC,OAAI,EAAY,WAAW,EACvB,QAAO;IACH;IACA,UAAU,EAAE;IACZ,UAAU;IACd;GAGJ,IAAM,IAAqB,EAAC,EAGxB,IAAgB,EAAO;AAG3B,QAAK,IAAI,IAAI,EAAY,SAAS,GAAG,KAAK,GAAG,KAAK;IAC9C,IAAM,IAAU,EAAY;AAG5B,QAAI,EAAS,WAAW,EAEpB,CADA,KAAiB,EAAQ,SAAS,GAClC,EAAS,QAAQ,EAAO;aACjB,IAAgB,EAAQ,SAAS,KAAK,EAAM,UAEnD,CADA,KAAiB,EAAQ,SAAS,GAClC,EAAS,QAAQ,EAAO;SACrB;AACH,OAAS,QAAQ,MAAK;AACtB;;;AAIR,UAAO;IACH;IACA;IACA,UAAU,IAAS,MAAM,EAAS,KAAK,IAAA;IAC3C;IACH;yBAID,EAeY,EAdH,EAAA,QAAK,SAAA,IAAA,EAAA;GACV,OAAM;GACL,MAAM,EAAA,QAAQ,KAAA,IAAY,EAAM;GAChC,QAAQ,EAAA,QAAQ,KAAA,IAAY,EAAM;GAClC,KAAK,EAAA,QAAQ,KAAA,IAAY,EAAM;;oBAGvB,CAFT,EAES,QAAA,EAFF,OAAK,EAAA,CAAA,kBAAqB,EAAA,YAAW,CAAA,EAAA,EAAA,EACxC,EAAA,MAAa,OAAM,EAAA,EAAA,GAAA,EAAA,GAAA,EAEvB,EAKW,GAAA,MAAA,EAJoB,EAAA,MAAa,WAAhC,GAAS,wBACX,GAAK,EAAA,CAAA,AAAA,EAAA,OACX,EAAwC,QAAA,EAAlC,OAAM,qBAAmB,EAAC,KAAC,GAAA,EACjC,EAAkD,QAAlD,GAAkD,EAAjB,EAAO,EAAA,EAAA,CAAA,EAAA,GAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ZodError-B3AvmUCJ.js","names":[],"sources":["../../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/helpers/util.js","../../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/ZodError.js"],"sourcesContent":["export var util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n","import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = Object.create(null);\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n const firstEl = sub.path[0];\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n fieldErrors[firstEl].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n"],"x_google_ignoreList":[0,1],"mappings":";AAAA,IAAW;CACV,SAAU,GAAM;AACb,GAAK,eAAe,MAAM;CAC1B,SAAS,EAAS,GAAM;AACxB,GAAK,WAAW;CAChB,SAAS,EAAY,GAAI;AACrB,QAAU,OAAO;;AAyCrB,CAvCA,EAAK,cAAc,GACnB,EAAK,eAAe,MAAU;EAC1B,IAAM,IAAM,EAAE;AACd,OAAK,IAAM,KAAQ,EACf,GAAI,KAAQ;AAEhB,SAAO;IAEX,EAAK,sBAAsB,MAAQ;EAC/B,IAAM,IAAY,EAAK,WAAW,EAAI,CAAC,QAAQ,MAAM,OAAO,EAAI,EAAI,OAAQ,SAAS,EAC/E,IAAW,EAAE;AACnB,OAAK,IAAM,KAAK,EACZ,GAAS,KAAK,EAAI;AAEtB,SAAO,EAAK,aAAa,EAAS;IAEtC,EAAK,gBAAgB,MACV,EAAK,WAAW,EAAI,CAAC,IAAI,SAAU,GAAG;AACzC,SAAO,EAAI;GACb,EAEN,EAAK,aAAa,OAAO,OAAO,QAAS,cAClC,MAAQ,OAAO,KAAK,EAAI,IACxB,MAAW;EACV,IAAM,IAAO,EAAE;AACf,OAAK,IAAM,KAAO,EACd,CAAI,OAAO,UAAU,eAAe,KAAK,GAAQ,EAAI,IACjD,EAAK,KAAK,EAAI;AAGtB,SAAO;IAEf,EAAK,QAAQ,GAAK,MAAY;AAC1B,OAAK,IAAM,KAAQ,EACf,KAAI,EAAQ,EAAK,CACb,QAAO;IAInB,EAAK,YAAY,OAAO,OAAO,aAAc,cACtC,MAAQ,OAAO,UAAU,EAAI,IAC7B,MAAQ,OAAO,KAAQ,YAAY,OAAO,SAAS,EAAI,IAAI,KAAK,MAAM,EAAI,KAAK;CACtF,SAAS,EAAW,GAAO,IAAY,OAAO;AAC1C,SAAO,EAAM,KAAK,MAAS,OAAO,KAAQ,WAAW,IAAI,EAAI,KAAK,EAAK,CAAC,KAAK,EAAU;;AAG3F,CADA,EAAK,aAAa,GAClB,EAAK,yBAAyB,GAAG,MACzB,OAAO,KAAU,WACV,EAAM,UAAU,GAEpB;GAEZ,AAAS,MAAO,EAAE,CAAE;AACvB,IAAW;CACV,SAAU,GAAY;AACnB,GAAW,eAAe,GAAO,OACtB;EACH,GAAG;EACH,GAAG;EACN;GAEN,AAAe,MAAa,EAAE,CAAE;AACnC,IAAa,IAAgB,EAAK,YAAY;CAC1C;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACH,CAAC,EACW,KAAiB,MAAS;AAEnC,SADU,OAAO,GACjB;EACI,KAAK,YACD,QAAO,EAAc;EACzB,KAAK,SACD,QAAO,EAAc;EACzB,KAAK,SACD,QAAO,OAAO,MAAM,EAAK,GAAG,EAAc,MAAM,EAAc;EAClE,KAAK,UACD,QAAO,EAAc;EACzB,KAAK,WACD,QAAO,EAAc;EACzB,KAAK,SACD,QAAO,EAAc;EACzB,KAAK,SACD,QAAO,EAAc;EACzB,KAAK,SAmBD,QAlBI,MAAM,QAAQ,EAAK,GACZ,EAAc,QAErB,MAAS,OACF,EAAc,OAErB,EAAK,QAAQ,OAAO,EAAK,QAAS,cAAc,EAAK,SAAS,OAAO,EAAK,SAAU,aAC7E,EAAc,UAErB,OAAO,MAAQ,OAAe,aAAgB,MACvC,EAAc,MAErB,OAAO,MAAQ,OAAe,aAAgB,MACvC,EAAc,MAErB,OAAO,OAAS,OAAe,aAAgB,OACxC,EAAc,OAElB,EAAc;EACzB,QACI,QAAO,EAAc;;GCjIpB,IAAe,EAAK,YAAY;CACzC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACH,CAAC,EAKW,IAAb,MAAa,UAAiB,MAAM;CAChC,IAAI,SAAS;AACT,SAAO,KAAK;;CAEhB,YAAY,GAAQ;AAMhB,EALA,OAAO,EACP,KAAK,SAAS,EAAE,EAChB,KAAK,YAAY,MAAQ;AACrB,QAAK,SAAS,CAAC,GAAG,KAAK,QAAQ,EAAI;KAEvC,KAAK,aAAa,IAAO,EAAE,KAAK;AAC5B,QAAK,SAAS,CAAC,GAAG,KAAK,QAAQ,GAAG,EAAK;;EAE3C,IAAM,IAAc,IAAI,OAAO;AAS/B,EARI,OAAO,iBAEP,OAAO,eAAe,MAAM,EAAY,GAGxC,KAAK,YAAY,GAErB,KAAK,OAAO,YACZ,KAAK,SAAS;;CAElB,OAAO,GAAS;EACZ,IAAM,IAAS,KACX,SAAU,GAAO;AACb,UAAO,EAAM;KAEf,IAAc,EAAE,SAAS,EAAE,EAAE,EAC7B,KAAgB,MAAU;AAC5B,QAAK,IAAM,KAAS,EAAM,OACtB,KAAI,EAAM,SAAS,gBACf,GAAM,YAAY,IAAI,EAAa;YAE9B,EAAM,SAAS,sBACpB,GAAa,EAAM,gBAAgB;YAE9B,EAAM,SAAS,oBACpB,GAAa,EAAM,eAAe;YAE7B,EAAM,KAAK,WAAW,EAC3B,GAAY,QAAQ,KAAK,EAAO,EAAM,CAAC;QAEtC;IACD,IAAI,IAAO,GACP,IAAI;AACR,WAAO,IAAI,EAAM,KAAK,SAAQ;KAC1B,IAAM,IAAK,EAAM,KAAK;AAiBtB,KAhBiB,MAAM,EAAM,KAAK,SAAS,KAYvC,EAAK,KAAM,EAAK,MAAO,EAAE,SAAS,EAAE,EAAE,EACtC,EAAK,GAAI,QAAQ,KAAK,EAAO,EAAM,CAAC,IAXpC,EAAK,KAAM,EAAK,MAAO,EAAE,SAAS,EAAE,EAAE,EAa1C,IAAO,EAAK,IACZ;;;;AAMhB,SADA,EAAa,KAAK,EACX;;CAEX,OAAO,OAAO,GAAO;AACjB,MAAI,EAAE,aAAiB,GACnB,OAAU,MAAM,mBAAmB,IAAQ;;CAGnD,WAAW;AACP,SAAO,KAAK;;CAEhB,IAAI,UAAU;AACV,SAAO,KAAK,UAAU,KAAK,QAAQ,EAAK,uBAAuB,EAAE;;CAErE,IAAI,UAAU;AACV,SAAO,KAAK,OAAO,WAAW;;CAElC,QAAQ,KAAU,MAAU,EAAM,SAAS;EACvC,IAAM,IAAc,OAAO,OAAO,KAAK,EACjC,IAAa,EAAE;AACrB,OAAK,IAAM,KAAO,KAAK,OACnB,KAAI,EAAI,KAAK,SAAS,GAAG;GACrB,IAAM,IAAU,EAAI,KAAK;AAEzB,GADA,EAAY,KAAW,EAAY,MAAY,EAAE,EACjD,EAAY,GAAS,KAAK,EAAO,EAAI,CAAC;QAGtC,GAAW,KAAK,EAAO,EAAI,CAAC;AAGpC,SAAO;GAAE;GAAY;GAAa;;CAEtC,IAAI,aAAa;AACb,SAAO,KAAK,SAAS;;;AAG7B,EAAS,UAAU,MACD,IAAI,EAAS,EAAO"}
|
|
1
|
+
{"version":3,"file":"ZodError-DkVfTODd.js","names":[],"sources":["../../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/helpers/util.js","../../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/ZodError.js"],"sourcesContent":["export var util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n","import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = Object.create(null);\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n const firstEl = sub.path[0];\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n fieldErrors[firstEl].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n"],"x_google_ignoreList":[0,1],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apl-
|
|
1
|
+
{"version":3,"file":"apl-j-tvtpTP.js","names":[],"sources":["../../../../node_modules/.pnpm/@codemirror+legacy-modes@6.5.2/node_modules/@codemirror/legacy-modes/mode/apl.js"],"sourcesContent":["var builtInFuncs = {\n \"+\": [\"conjugate\", \"add\"],\n \"−\": [\"negate\", \"subtract\"],\n \"×\": [\"signOf\", \"multiply\"],\n \"÷\": [\"reciprocal\", \"divide\"],\n \"⌈\": [\"ceiling\", \"greaterOf\"],\n \"⌊\": [\"floor\", \"lesserOf\"],\n \"∣\": [\"absolute\", \"residue\"],\n \"⍳\": [\"indexGenerate\", \"indexOf\"],\n \"?\": [\"roll\", \"deal\"],\n \"⋆\": [\"exponentiate\", \"toThePowerOf\"],\n \"⍟\": [\"naturalLog\", \"logToTheBase\"],\n \"○\": [\"piTimes\", \"circularFuncs\"],\n \"!\": [\"factorial\", \"binomial\"],\n \"⌹\": [\"matrixInverse\", \"matrixDivide\"],\n \"<\": [null, \"lessThan\"],\n \"≤\": [null, \"lessThanOrEqual\"],\n \"=\": [null, \"equals\"],\n \">\": [null, \"greaterThan\"],\n \"≥\": [null, \"greaterThanOrEqual\"],\n \"≠\": [null, \"notEqual\"],\n \"≡\": [\"depth\", \"match\"],\n \"≢\": [null, \"notMatch\"],\n \"∈\": [\"enlist\", \"membership\"],\n \"⍷\": [null, \"find\"],\n \"∪\": [\"unique\", \"union\"],\n \"∩\": [null, \"intersection\"],\n \"∼\": [\"not\", \"without\"],\n \"∨\": [null, \"or\"],\n \"∧\": [null, \"and\"],\n \"⍱\": [null, \"nor\"],\n \"⍲\": [null, \"nand\"],\n \"⍴\": [\"shapeOf\", \"reshape\"],\n \",\": [\"ravel\", \"catenate\"],\n \"⍪\": [null, \"firstAxisCatenate\"],\n \"⌽\": [\"reverse\", \"rotate\"],\n \"⊖\": [\"axis1Reverse\", \"axis1Rotate\"],\n \"⍉\": [\"transpose\", null],\n \"↑\": [\"first\", \"take\"],\n \"↓\": [null, \"drop\"],\n \"⊂\": [\"enclose\", \"partitionWithAxis\"],\n \"⊃\": [\"diclose\", \"pick\"],\n \"⌷\": [null, \"index\"],\n \"⍋\": [\"gradeUp\", null],\n \"⍒\": [\"gradeDown\", null],\n \"⊤\": [\"encode\", null],\n \"⊥\": [\"decode\", null],\n \"⍕\": [\"format\", \"formatByExample\"],\n \"⍎\": [\"execute\", null],\n \"⊣\": [\"stop\", \"left\"],\n \"⊢\": [\"pass\", \"right\"]\n};\n\nvar isOperator = /[\\.\\/⌿⍀¨⍣]/;\nvar isNiladic = /⍬/;\nvar isFunction = /[\\+−×÷⌈⌊∣⍳\\?⋆⍟○!⌹<≤=>≥≠≡≢∈⍷∪∩∼∨∧⍱⍲⍴,⍪⌽⊖⍉↑↓⊂⊃⌷⍋⍒⊤⊥⍕⍎⊣⊢]/;\nvar isArrow = /←/;\nvar isComment = /[⍝#].*$/;\n\nvar stringEater = function(type) {\n var prev;\n prev = false;\n return function(c) {\n prev = c;\n if (c === type) {\n return prev === \"\\\\\";\n }\n return true;\n };\n};\n\nexport const apl = {\n name: \"apl\",\n startState: function() {\n return {\n prev: false,\n func: false,\n op: false,\n string: false,\n escape: false\n };\n },\n token: function(stream, state) {\n var ch;\n if (stream.eatSpace()) {\n return null;\n }\n ch = stream.next();\n if (ch === '\"' || ch === \"'\") {\n stream.eatWhile(stringEater(ch));\n stream.next();\n state.prev = true;\n return \"string\";\n }\n if (/[\\[{\\(]/.test(ch)) {\n state.prev = false;\n return null;\n }\n if (/[\\]}\\)]/.test(ch)) {\n state.prev = true;\n return null;\n }\n if (isNiladic.test(ch)) {\n state.prev = false;\n return \"atom\";\n }\n if (/[¯\\d]/.test(ch)) {\n if (state.func) {\n state.func = false;\n state.prev = false;\n } else {\n state.prev = true;\n }\n stream.eatWhile(/[\\w\\.]/);\n return \"number\";\n }\n if (isOperator.test(ch)) {\n return \"operator\"\n }\n if (isArrow.test(ch)) {\n return \"operator\";\n }\n if (isFunction.test(ch)) {\n state.func = true;\n state.prev = false;\n return builtInFuncs[ch] ? \"variableName.function.standard\" : \"variableName.function\"\n }\n if (isComment.test(ch)) {\n stream.skipToEnd();\n return \"comment\";\n }\n if (ch === \"∘\" && stream.peek() === \".\") {\n stream.next();\n return \"variableName.function\";\n }\n stream.eatWhile(/[\\w\\$_]/);\n state.prev = true;\n return \"keyword\";\n }\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asciiarmor-
|
|
1
|
+
{"version":3,"file":"asciiarmor-JNKKTtQt.js","names":[],"sources":["../../../../node_modules/.pnpm/@codemirror+legacy-modes@6.5.2/node_modules/@codemirror/legacy-modes/mode/asciiarmor.js"],"sourcesContent":["function errorIfNotEmpty(stream) {\n var nonWS = stream.match(/^\\s*\\S/);\n stream.skipToEnd();\n return nonWS ? \"error\" : null;\n}\n\nexport const asciiArmor = {\n name: \"asciiarmor\",\n token: function(stream, state) {\n var m;\n if (state.state == \"top\") {\n if (stream.sol() && (m = stream.match(/^-----BEGIN (.*)?-----\\s*$/))) {\n state.state = \"headers\";\n state.type = m[1];\n return \"tag\";\n }\n return errorIfNotEmpty(stream);\n } else if (state.state == \"headers\") {\n if (stream.sol() && stream.match(/^\\w+:/)) {\n state.state = \"header\";\n return \"atom\";\n } else {\n var result = errorIfNotEmpty(stream);\n if (result) state.state = \"body\";\n return result;\n }\n } else if (state.state == \"header\") {\n stream.skipToEnd();\n state.state = \"headers\";\n return \"string\";\n } else if (state.state == \"body\") {\n if (stream.sol() && (m = stream.match(/^-----END (.*)?-----\\s*$/))) {\n if (m[1] != state.type) return \"error\";\n state.state = \"end\";\n return \"tag\";\n } else {\n if (stream.eatWhile(/[A-Za-z0-9+\\/=]/)) {\n return null;\n } else {\n stream.next();\n return \"error\";\n }\n }\n } else if (state.state == \"end\") {\n return errorIfNotEmpty(stream);\n }\n },\n blankLine: function(state) {\n if (state.state == \"headers\") state.state = \"body\";\n },\n startState: function() {\n return {state: \"top\", type: null};\n }\n};\n"],"x_google_ignoreList":[0],"mappings":";AAAA,SAAS,EAAgB,GAAQ;CAC/B,IAAI,IAAQ,EAAO,MAAM,SAAS;AAElC,QADA,EAAO,WAAW,EACX,IAAQ,UAAU;;AAG3B,IAAa,IAAa;CACxB,MAAM;CACN,OAAO,SAAS,GAAQ,GAAO;EAC7B,IAAI;AACJ,MAAI,EAAM,SAAS,MAMjB,QALI,EAAO,KAAK,KAAK,IAAI,EAAO,MAAM,6BAA6B,KACjE,EAAM,QAAQ,WACd,EAAM,OAAO,EAAE,IACR,SAEF,EAAgB,EAAO;MACrB,EAAM,SAAS,WACxB;OAAI,EAAO,KAAK,IAAI,EAAO,MAAM,QAAQ,CAEvC,QADA,EAAM,QAAQ,UACP;GAEP,IAAI,IAAS,EAAgB,EAAO;AAEpC,UADI,MAAQ,EAAM,QAAQ,SACnB;aAEA,EAAM,SAAS,SAGxB,QAFA,EAAO,WAAW,EAClB,EAAM,QAAQ,WACP;WACE,EAAM,SAAS,OAUpB,QATA,EAAO,KAAK,KAAK,IAAI,EAAO,MAAM,2BAA2B,IAC3D,EAAE,MAAM,EAAM,QAClB,EAAM,QAAQ,OACP,SAFwB,UAI3B,EAAO,SAAS,kBAAkB,GAC7B,QAEP,EAAO,MAAM,EACN;WAGF,EAAM,SAAS,MACxB,QAAO,EAAgB,EAAO;;CAGlC,WAAW,SAAS,GAAO;AACzB,EAAI,EAAM,SAAS,cAAW,EAAM,QAAQ;;CAE9C,YAAY,WAAW;AACrB,SAAO;GAAC,OAAO;GAAO,MAAM;GAAK;;CAEpC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asn1-WRfjxqL1.js","names":[],"sources":["../../../../node_modules/.pnpm/@codemirror+legacy-modes@6.5.2/node_modules/@codemirror/legacy-modes/mode/asn1.js"],"sourcesContent":["function words(str) {\n var obj = {}, words = str.split(\" \");\n for (var i = 0; i < words.length; ++i) obj[words[i]] = true;\n return obj;\n}\n\nconst defaults = {\n keywords: words(\"DEFINITIONS OBJECTS IF DERIVED INFORMATION ACTION\" +\n \" REPLY ANY NAMED CHARACTERIZED BEHAVIOUR REGISTERED\" +\n \" WITH AS IDENTIFIED CONSTRAINED BY PRESENT BEGIN\" +\n \" IMPORTS FROM UNITS SYNTAX MIN-ACCESS MAX-ACCESS\" +\n \" MINACCESS MAXACCESS REVISION STATUS DESCRIPTION\" +\n \" SEQUENCE SET COMPONENTS OF CHOICE DistinguishedName\" +\n \" ENUMERATED SIZE MODULE END INDEX AUGMENTS EXTENSIBILITY\" +\n \" IMPLIED EXPORTS\"),\n cmipVerbs: words(\"ACTIONS ADD GET NOTIFICATIONS REPLACE REMOVE\"),\n compareTypes: words(\"OPTIONAL DEFAULT MANAGED MODULE-TYPE MODULE_IDENTITY\" +\n \" MODULE-COMPLIANCE OBJECT-TYPE OBJECT-IDENTITY\" +\n \" OBJECT-COMPLIANCE MODE CONFIRMED CONDITIONAL\" +\n \" SUBORDINATE SUPERIOR CLASS TRUE FALSE NULL\" +\n \" TEXTUAL-CONVENTION\"),\n status: words(\"current deprecated mandatory obsolete\"),\n tags: words(\"APPLICATION AUTOMATIC EXPLICIT IMPLICIT PRIVATE TAGS\" +\n \" UNIVERSAL\"),\n storage: words(\"BOOLEAN INTEGER OBJECT IDENTIFIER BIT OCTET STRING\" +\n \" UTCTime InterfaceIndex IANAifType CMIP-Attribute\" +\n \" REAL PACKAGE PACKAGES IpAddress PhysAddress\" +\n \" NetworkAddress BITS BMPString TimeStamp TimeTicks\" +\n \" TruthValue RowStatus DisplayString GeneralString\" +\n \" GraphicString IA5String NumericString\" +\n \" PrintableString SnmpAdminString TeletexString\" +\n \" UTF8String VideotexString VisibleString StringStore\" +\n \" ISO646String T61String UniversalString Unsigned32\" +\n \" Integer32 Gauge Gauge32 Counter Counter32 Counter64\"),\n modifier: words(\"ATTRIBUTE ATTRIBUTES MANDATORY-GROUP MANDATORY-GROUPS\" +\n \" GROUP GROUPS ELEMENTS EQUALITY ORDERING SUBSTRINGS\" +\n \" DEFINED\"),\n accessTypes: words(\"not-accessible accessible-for-notify read-only\" +\n \" read-create read-write\"),\n multiLineStrings: true\n}\n\nexport function asn1(parserConfig) {\n var keywords = parserConfig.keywords || defaults.keywords,\n cmipVerbs = parserConfig.cmipVerbs || defaults.cmipVerbs,\n compareTypes = parserConfig.compareTypes || defaults.compareTypes,\n status = parserConfig.status || defaults.status,\n tags = parserConfig.tags || defaults.tags,\n storage = parserConfig.storage || defaults.storage,\n modifier = parserConfig.modifier || defaults.modifier,\n accessTypes = parserConfig.accessTypes|| defaults.accessTypes,\n multiLineStrings = parserConfig.multiLineStrings || defaults.multiLineStrings,\n indentStatements = parserConfig.indentStatements !== false;\n var isOperatorChar = /[\\|\\^]/;\n var curPunc;\n\n function tokenBase(stream, state) {\n var ch = stream.next();\n if (ch == '\"' || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n }\n if (/[\\[\\]\\(\\){}:=,;]/.test(ch)) {\n curPunc = ch;\n return \"punctuation\";\n }\n if (ch == \"-\"){\n if (stream.eat(\"-\")) {\n stream.skipToEnd();\n return \"comment\";\n }\n }\n if (/\\d/.test(ch)) {\n stream.eatWhile(/[\\w\\.]/);\n return \"number\";\n }\n if (isOperatorChar.test(ch)) {\n stream.eatWhile(isOperatorChar);\n return \"operator\";\n }\n\n stream.eatWhile(/[\\w\\-]/);\n var cur = stream.current();\n if (keywords.propertyIsEnumerable(cur)) return \"keyword\";\n if (cmipVerbs.propertyIsEnumerable(cur)) return \"variableName\";\n if (compareTypes.propertyIsEnumerable(cur)) return \"atom\";\n if (status.propertyIsEnumerable(cur)) return \"comment\";\n if (tags.propertyIsEnumerable(cur)) return \"typeName\";\n if (storage.propertyIsEnumerable(cur)) return \"modifier\";\n if (modifier.propertyIsEnumerable(cur)) return \"modifier\";\n if (accessTypes.propertyIsEnumerable(cur)) return \"modifier\";\n\n return \"variableName\";\n }\n\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, next, end = false;\n while ((next = stream.next()) != null) {\n if (next == quote && !escaped){\n var afterNext = stream.peek();\n //look if the character if the quote is like the B in '10100010'B\n if (afterNext){\n afterNext = afterNext.toLowerCase();\n if(afterNext == \"b\" || afterNext == \"h\" || afterNext == \"o\")\n stream.next();\n }\n end = true; break;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n if (end || !(escaped || multiLineStrings))\n state.tokenize = null;\n return \"string\";\n };\n }\n\n function Context(indented, column, type, align, prev) {\n this.indented = indented;\n this.column = column;\n this.type = type;\n this.align = align;\n this.prev = prev;\n }\n function pushContext(state, col, type) {\n var indent = state.indented;\n if (state.context && state.context.type == \"statement\")\n indent = state.context.indented;\n return state.context = new Context(indent, col, type, null, state.context);\n }\n function popContext(state) {\n var t = state.context.type;\n if (t == \")\" || t == \"]\" || t == \"}\")\n state.indented = state.context.indented;\n return state.context = state.context.prev;\n }\n\n //Interface\n return {\n name: \"asn1\",\n startState: function() {\n return {\n tokenize: null,\n context: new Context(-2, 0, \"top\", false),\n indented: 0,\n startOfLine: true\n };\n },\n\n token: function(stream, state) {\n var ctx = state.context;\n if (stream.sol()) {\n if (ctx.align == null) ctx.align = false;\n state.indented = stream.indentation();\n state.startOfLine = true;\n }\n if (stream.eatSpace()) return null;\n curPunc = null;\n var style = (state.tokenize || tokenBase)(stream, state);\n if (style == \"comment\") return style;\n if (ctx.align == null) ctx.align = true;\n\n if ((curPunc == \";\" || curPunc == \":\" || curPunc == \",\")\n && ctx.type == \"statement\"){\n popContext(state);\n }\n else if (curPunc == \"{\") pushContext(state, stream.column(), \"}\");\n else if (curPunc == \"[\") pushContext(state, stream.column(), \"]\");\n else if (curPunc == \"(\") pushContext(state, stream.column(), \")\");\n else if (curPunc == \"}\") {\n while (ctx.type == \"statement\") ctx = popContext(state);\n if (ctx.type == \"}\") ctx = popContext(state);\n while (ctx.type == \"statement\") ctx = popContext(state);\n }\n else if (curPunc == ctx.type) popContext(state);\n else if (indentStatements && (((ctx.type == \"}\" || ctx.type == \"top\")\n && curPunc != ';') || (ctx.type == \"statement\"\n && curPunc == \"newstatement\")))\n pushContext(state, stream.column(), \"statement\");\n\n state.startOfLine = false;\n return style;\n },\n\n languageData: {\n indentOnInput: /^\\s*[{}]$/,\n commentTokens: {line: \"--\"}\n }\n };\n};\n"],"x_google_ignoreList":[0],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"asn1-DBQ_amwa.js","names":[],"sources":["../../../../node_modules/.pnpm/@codemirror+legacy-modes@6.5.2/node_modules/@codemirror/legacy-modes/mode/asn1.js"],"sourcesContent":["function words(str) {\n var obj = {}, words = str.split(\" \");\n for (var i = 0; i < words.length; ++i) obj[words[i]] = true;\n return obj;\n}\n\nconst defaults = {\n keywords: words(\"DEFINITIONS OBJECTS IF DERIVED INFORMATION ACTION\" +\n \" REPLY ANY NAMED CHARACTERIZED BEHAVIOUR REGISTERED\" +\n \" WITH AS IDENTIFIED CONSTRAINED BY PRESENT BEGIN\" +\n \" IMPORTS FROM UNITS SYNTAX MIN-ACCESS MAX-ACCESS\" +\n \" MINACCESS MAXACCESS REVISION STATUS DESCRIPTION\" +\n \" SEQUENCE SET COMPONENTS OF CHOICE DistinguishedName\" +\n \" ENUMERATED SIZE MODULE END INDEX AUGMENTS EXTENSIBILITY\" +\n \" IMPLIED EXPORTS\"),\n cmipVerbs: words(\"ACTIONS ADD GET NOTIFICATIONS REPLACE REMOVE\"),\n compareTypes: words(\"OPTIONAL DEFAULT MANAGED MODULE-TYPE MODULE_IDENTITY\" +\n \" MODULE-COMPLIANCE OBJECT-TYPE OBJECT-IDENTITY\" +\n \" OBJECT-COMPLIANCE MODE CONFIRMED CONDITIONAL\" +\n \" SUBORDINATE SUPERIOR CLASS TRUE FALSE NULL\" +\n \" TEXTUAL-CONVENTION\"),\n status: words(\"current deprecated mandatory obsolete\"),\n tags: words(\"APPLICATION AUTOMATIC EXPLICIT IMPLICIT PRIVATE TAGS\" +\n \" UNIVERSAL\"),\n storage: words(\"BOOLEAN INTEGER OBJECT IDENTIFIER BIT OCTET STRING\" +\n \" UTCTime InterfaceIndex IANAifType CMIP-Attribute\" +\n \" REAL PACKAGE PACKAGES IpAddress PhysAddress\" +\n \" NetworkAddress BITS BMPString TimeStamp TimeTicks\" +\n \" TruthValue RowStatus DisplayString GeneralString\" +\n \" GraphicString IA5String NumericString\" +\n \" PrintableString SnmpAdminString TeletexString\" +\n \" UTF8String VideotexString VisibleString StringStore\" +\n \" ISO646String T61String UniversalString Unsigned32\" +\n \" Integer32 Gauge Gauge32 Counter Counter32 Counter64\"),\n modifier: words(\"ATTRIBUTE ATTRIBUTES MANDATORY-GROUP MANDATORY-GROUPS\" +\n \" GROUP GROUPS ELEMENTS EQUALITY ORDERING SUBSTRINGS\" +\n \" DEFINED\"),\n accessTypes: words(\"not-accessible accessible-for-notify read-only\" +\n \" read-create read-write\"),\n multiLineStrings: true\n}\n\nexport function asn1(parserConfig) {\n var keywords = parserConfig.keywords || defaults.keywords,\n cmipVerbs = parserConfig.cmipVerbs || defaults.cmipVerbs,\n compareTypes = parserConfig.compareTypes || defaults.compareTypes,\n status = parserConfig.status || defaults.status,\n tags = parserConfig.tags || defaults.tags,\n storage = parserConfig.storage || defaults.storage,\n modifier = parserConfig.modifier || defaults.modifier,\n accessTypes = parserConfig.accessTypes|| defaults.accessTypes,\n multiLineStrings = parserConfig.multiLineStrings || defaults.multiLineStrings,\n indentStatements = parserConfig.indentStatements !== false;\n var isOperatorChar = /[\\|\\^]/;\n var curPunc;\n\n function tokenBase(stream, state) {\n var ch = stream.next();\n if (ch == '\"' || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n }\n if (/[\\[\\]\\(\\){}:=,;]/.test(ch)) {\n curPunc = ch;\n return \"punctuation\";\n }\n if (ch == \"-\"){\n if (stream.eat(\"-\")) {\n stream.skipToEnd();\n return \"comment\";\n }\n }\n if (/\\d/.test(ch)) {\n stream.eatWhile(/[\\w\\.]/);\n return \"number\";\n }\n if (isOperatorChar.test(ch)) {\n stream.eatWhile(isOperatorChar);\n return \"operator\";\n }\n\n stream.eatWhile(/[\\w\\-]/);\n var cur = stream.current();\n if (keywords.propertyIsEnumerable(cur)) return \"keyword\";\n if (cmipVerbs.propertyIsEnumerable(cur)) return \"variableName\";\n if (compareTypes.propertyIsEnumerable(cur)) return \"atom\";\n if (status.propertyIsEnumerable(cur)) return \"comment\";\n if (tags.propertyIsEnumerable(cur)) return \"typeName\";\n if (storage.propertyIsEnumerable(cur)) return \"modifier\";\n if (modifier.propertyIsEnumerable(cur)) return \"modifier\";\n if (accessTypes.propertyIsEnumerable(cur)) return \"modifier\";\n\n return \"variableName\";\n }\n\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, next, end = false;\n while ((next = stream.next()) != null) {\n if (next == quote && !escaped){\n var afterNext = stream.peek();\n //look if the character if the quote is like the B in '10100010'B\n if (afterNext){\n afterNext = afterNext.toLowerCase();\n if(afterNext == \"b\" || afterNext == \"h\" || afterNext == \"o\")\n stream.next();\n }\n end = true; break;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n if (end || !(escaped || multiLineStrings))\n state.tokenize = null;\n return \"string\";\n };\n }\n\n function Context(indented, column, type, align, prev) {\n this.indented = indented;\n this.column = column;\n this.type = type;\n this.align = align;\n this.prev = prev;\n }\n function pushContext(state, col, type) {\n var indent = state.indented;\n if (state.context && state.context.type == \"statement\")\n indent = state.context.indented;\n return state.context = new Context(indent, col, type, null, state.context);\n }\n function popContext(state) {\n var t = state.context.type;\n if (t == \")\" || t == \"]\" || t == \"}\")\n state.indented = state.context.indented;\n return state.context = state.context.prev;\n }\n\n //Interface\n return {\n name: \"asn1\",\n startState: function() {\n return {\n tokenize: null,\n context: new Context(-2, 0, \"top\", false),\n indented: 0,\n startOfLine: true\n };\n },\n\n token: function(stream, state) {\n var ctx = state.context;\n if (stream.sol()) {\n if (ctx.align == null) ctx.align = false;\n state.indented = stream.indentation();\n state.startOfLine = true;\n }\n if (stream.eatSpace()) return null;\n curPunc = null;\n var style = (state.tokenize || tokenBase)(stream, state);\n if (style == \"comment\") return style;\n if (ctx.align == null) ctx.align = true;\n\n if ((curPunc == \";\" || curPunc == \":\" || curPunc == \",\")\n && ctx.type == \"statement\"){\n popContext(state);\n }\n else if (curPunc == \"{\") pushContext(state, stream.column(), \"}\");\n else if (curPunc == \"[\") pushContext(state, stream.column(), \"]\");\n else if (curPunc == \"(\") pushContext(state, stream.column(), \")\");\n else if (curPunc == \"}\") {\n while (ctx.type == \"statement\") ctx = popContext(state);\n if (ctx.type == \"}\") ctx = popContext(state);\n while (ctx.type == \"statement\") ctx = popContext(state);\n }\n else if (curPunc == ctx.type) popContext(state);\n else if (indentStatements && (((ctx.type == \"}\" || ctx.type == \"top\")\n && curPunc != ';') || (ctx.type == \"statement\"\n && curPunc == \"newstatement\")))\n pushContext(state, stream.column(), \"statement\");\n\n state.startOfLine = false;\n return style;\n },\n\n languageData: {\n indentOnInput: /^\\s*[{}]$/,\n commentTokens: {line: \"--\"}\n }\n };\n};\n"],"x_google_ignoreList":[0],"mappings":"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"}
|