@8wave/ai-elements 0.82.0 → 0.83.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_chunks/{PkToolShowComparison-D_DtpXRO.js → PkToolShowComparison-CGflZD9j.js} +2 -2
- package/dist/_chunks/PkToolShowComparison-CGflZD9j.js.map +1 -0
- package/dist/_chunks/{PkToolShowProductList-Ds6ah3dL.js → PkToolShowProductList-DvSGk45f.js} +2 -2
- package/dist/_chunks/{PkToolShowProductList-Ds6ah3dL.js.map → PkToolShowProductList-DvSGk45f.js.map} +1 -1
- package/dist/_chunks/{PkToolShowWebPages-C1ZXSB00.js → PkToolShowWebPages-C2VvN6sE.js} +2 -2
- package/dist/_chunks/{PkToolShowWebPages-C1ZXSB00.js.map → PkToolShowWebPages-C2VvN6sE.js.map} +1 -1
- package/dist/_chunks/{PkUrl-Dsi-Zezs.js → PkUrl-BVv89CMm.js} +2 -2
- package/dist/_chunks/{PkUrl-Dsi-Zezs.js.map → PkUrl-BVv89CMm.js.map} +1 -1
- package/dist/_chunks/{VvCheckbox.es-LSjS8_8K.js → VvCheckbox.es-BsF_JJw_.js} +2 -2
- package/dist/_chunks/VvCheckbox.es-BsF_JJw_.js.map +1 -0
- package/dist/_chunks/{VvCheckboxGroup.es-CR5ZTD2H.js → VvCheckboxGroup.es-Blgwe85A.js} +2 -2
- package/dist/_chunks/VvCheckboxGroup.es-Blgwe85A.js.map +1 -0
- package/dist/_chunks/{VvCombobox.es-B8E1RmUn.js → VvCombobox.es-BQ31qIIa.js} +2 -2
- package/dist/_chunks/VvCombobox.es-BQ31qIIa.js.map +1 -0
- package/dist/_chunks/{VvInputText.es-BYAhw1yP.js → VvInputText.es-DtzvbGMQ.js} +2 -2
- package/dist/_chunks/VvInputText.es-DtzvbGMQ.js.map +1 -0
- package/dist/_chunks/{VvRadio.es-CQj6S-QP.js → VvRadio.es-DJY-UZOw.js} +2 -2
- package/dist/_chunks/VvRadio.es-DJY-UZOw.js.map +1 -0
- package/dist/_chunks/{VvRadioGroup.es-9AWwbBXm.js → VvRadioGroup.es-2xgX8Gdu.js} +2 -2
- package/dist/_chunks/VvRadioGroup.es-2xgX8Gdu.js.map +1 -0
- package/dist/_chunks/{VvSelect.es-DAmZPvCV.js → VvSelect.es-D5RIWAgh.js} +2 -2
- package/dist/_chunks/VvSelect.es-D5RIWAgh.js.map +1 -0
- package/dist/_chunks/{VvTextarea.es-BfgLTEPk.js → VvTextarea.es-C_kKlPCs.js} +2 -2
- package/dist/_chunks/VvTextarea.es-C_kKlPCs.js.map +1 -0
- package/dist/_chunks/index.es-D6JnX5Jz.js.map +1 -1
- package/dist/ai-elements.es.js +5538 -5413
- 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/PkChatbot-C1gpRhfP.js +191 -0
- package/dist-vue/_chunks/PkChatbot-C1gpRhfP.js.map +1 -0
- package/dist-vue/_chunks/{PkChatbotError-C1ZxZlwQ.js → PkChatbotError-BlZ4WNup.js} +2 -2
- package/dist-vue/_chunks/PkChatbotError-BlZ4WNup.js.map +1 -0
- package/dist-vue/_chunks/{PkChatbotFeedbackForm-BFG5AcGR.js → PkChatbotFeedbackForm-Buzwweuj.js} +2 -2
- package/dist-vue/_chunks/{PkChatbotFeedbackForm-BFG5AcGR.js.map → PkChatbotFeedbackForm-Buzwweuj.js.map} +1 -1
- package/dist-vue/_chunks/{PkChatbotFilePreview-BPJwRxAC.js → PkChatbotFilePreview-0N9ASbIp.js} +1 -1
- package/dist-vue/_chunks/{PkChatbotFilePreview-BPJwRxAC.js.map → PkChatbotFilePreview-0N9ASbIp.js.map} +1 -1
- package/dist-vue/_chunks/{PkChatbotInput-CEWPF7af.js → PkChatbotInput-CsazCkTA.js} +3 -3
- package/dist-vue/_chunks/{PkChatbotInput-CEWPF7af.js.map → PkChatbotInput-CsazCkTA.js.map} +1 -1
- package/dist-vue/_chunks/PkChatbotMessages-NODnY9a2.js +472 -0
- package/dist-vue/_chunks/PkChatbotMessages-NODnY9a2.js.map +1 -0
- package/dist-vue/_chunks/{PkChatbotViewChat-hqsvz_7X.js → PkChatbotViewChat-BROfuqG3.js} +23 -22
- package/dist-vue/_chunks/PkChatbotViewChat-BROfuqG3.js.map +1 -0
- package/dist-vue/_chunks/{PkChatbotViewConversations-GNm8qoqA.js → PkChatbotViewConversations-B19iyIBD.js} +3 -3
- package/dist-vue/_chunks/{PkChatbotViewConversations-GNm8qoqA.js.map → PkChatbotViewConversations-B19iyIBD.js.map} +1 -1
- package/dist-vue/_chunks/{PkChatbotViewProfile-C605zDZy.js → PkChatbotViewProfile-D2raknfo.js} +2 -2
- package/dist-vue/_chunks/{PkChatbotViewProfile-C605zDZy.js.map → PkChatbotViewProfile-D2raknfo.js.map} +1 -1
- package/dist-vue/_chunks/{PkRelativeTime-jP41qAJ5.js → PkRelativeTime-WZ2aPcp_.js} +1 -1
- package/dist-vue/_chunks/{PkRelativeTime-jP41qAJ5.js.map → PkRelativeTime-WZ2aPcp_.js.map} +1 -1
- package/dist-vue/_chunks/{PkStreamingMarkdown-DvjHrpmN.js → PkStreamingMarkdown-BUiAi-qv.js} +1 -1
- package/dist-vue/_chunks/{PkStreamingMarkdown-DvjHrpmN.js.map → PkStreamingMarkdown-BUiAi-qv.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolRequestOAuthConnection-CsQc0Ju7.js → PkToolRequestOAuthConnection-CCVLUbiX.js} +2 -2
- package/dist-vue/_chunks/{PkToolRequestOAuthConnection-CsQc0Ju7.js.map → PkToolRequestOAuthConnection-CCVLUbiX.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowArtifact-LwE9r0Dz.js → PkToolShowArtifact-B13M7nEV.js} +3 -3
- package/dist-vue/_chunks/{PkToolShowArtifact-LwE9r0Dz.js.map → PkToolShowArtifact-B13M7nEV.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowCalendarEvent-ze3jGmX5.js → PkToolShowCalendarEvent-BuTDY0xa.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowCalendarEvent-ze3jGmX5.js.map → PkToolShowCalendarEvent-BuTDY0xa.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowComparison-CZ3kO6PT.js → PkToolShowComparison-By5K23oe.js} +3 -3
- package/dist-vue/_chunks/PkToolShowComparison-By5K23oe.js.map +1 -0
- package/dist-vue/_chunks/PkToolShowContactForm-D9mmqNvI.js +122 -0
- package/dist-vue/_chunks/PkToolShowContactForm-D9mmqNvI.js.map +1 -0
- package/dist-vue/_chunks/{PkToolShowEmail-BfpB-rs5.js → PkToolShowEmail-DFM6ClX-.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowEmail-BfpB-rs5.js.map → PkToolShowEmail-DFM6ClX-.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowImageGallery-D78Uthkj.js → PkToolShowImageGallery-By3Evwn4.js} +3 -3
- package/dist-vue/_chunks/{PkToolShowImageGallery-D78Uthkj.js.map → PkToolShowImageGallery-By3Evwn4.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowLocation-CsYef0jY.js → PkToolShowLocation-DW55PIk2.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowLocation-CsYef0jY.js.map → PkToolShowLocation-DW55PIk2.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowMessage-CWpjXtzt.js → PkToolShowMessage-BUujtIdB.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowMessage-CWpjXtzt.js.map → PkToolShowMessage-BUujtIdB.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowMultipleChoice-DF0ub4qZ.js → PkToolShowMultipleChoice-DoQHEPc0.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowMultipleChoice-DF0ub4qZ.js.map → PkToolShowMultipleChoice-DoQHEPc0.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowProductList-BQWK3I7I.js → PkToolShowProductList-C6pMC0td.js} +3 -3
- package/dist-vue/_chunks/{PkToolShowProductList-BQWK3I7I.js.map → PkToolShowProductList-C6pMC0td.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowQrCode-fGmIY8_T.js → PkToolShowQrCode-DZNSI7WD.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowQrCode-fGmIY8_T.js.map → PkToolShowQrCode-DZNSI7WD.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowSources-DjvToy__.js → PkToolShowSources-9avCy0zx.js} +4 -4
- package/dist-vue/_chunks/{PkToolShowSources-DjvToy__.js.map → PkToolShowSources-9avCy0zx.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowSuggestedReply-DtOTPUVf.js → PkToolShowSuggestedReply-BCdanuPg.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowSuggestedReply-DtOTPUVf.js.map → PkToolShowSuggestedReply-BCdanuPg.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowWeather-a4_T7lIK.js → PkToolShowWeather-BAHfvDAa.js} +1 -1
- package/dist-vue/_chunks/{PkToolShowWeather-a4_T7lIK.js.map → PkToolShowWeather-BAHfvDAa.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowWebPages-C-ClBVZm.js → PkToolShowWebPages-CRnjWep6.js} +3 -3
- package/dist-vue/_chunks/{PkToolShowWebPages-C-ClBVZm.js.map → PkToolShowWebPages-CRnjWep6.js.map} +1 -1
- package/dist-vue/_chunks/{PkUrl-C8L1MG2A.js → PkUrl-Da1k1VEM.js} +1 -1
- package/dist-vue/_chunks/{PkUrl-C8L1MG2A.js.map → PkUrl-Da1k1VEM.js.map} +1 -1
- package/dist-vue/_chunks/{apl-Q8pZMVVP.js → apl-BAiRVRB9.js} +1 -1
- package/dist-vue/_chunks/{apl-Q8pZMVVP.js.map → apl-BAiRVRB9.js.map} +1 -1
- package/dist-vue/_chunks/{asciiarmor-Dgm0UqoJ.js → asciiarmor-CDnl80Cc.js} +1 -1
- package/dist-vue/_chunks/{asciiarmor-Dgm0UqoJ.js.map → asciiarmor-CDnl80Cc.js.map} +1 -1
- package/dist-vue/_chunks/{asn1-D02Lu2iy.js → asn1-f4a3R9bP.js} +1 -1
- package/dist-vue/_chunks/{asn1-D02Lu2iy.js.map → asn1-f4a3R9bP.js.map} +1 -1
- package/dist-vue/_chunks/{asterisk-CNRpuZz9.js → asterisk-TbfcWk59.js} +1 -1
- package/dist-vue/_chunks/{asterisk-CNRpuZz9.js.map → asterisk-TbfcWk59.js.map} +1 -1
- package/dist-vue/_chunks/{brainfuck-B2UPzG6P.js → brainfuck-4PV2XjYq.js} +1 -1
- package/dist-vue/_chunks/{brainfuck-B2UPzG6P.js.map → brainfuck-4PV2XjYq.js.map} +1 -1
- package/dist-vue/_chunks/{clike-D8bd4tzV.js → clike-BwgfIzU-.js} +1 -1
- package/dist-vue/_chunks/{clike-D8bd4tzV.js.map → clike-BwgfIzU-.js.map} +1 -1
- package/dist-vue/_chunks/{clojure-wIiobTMZ.js → clojure-D3pGxSKq.js} +1 -1
- package/dist-vue/_chunks/{clojure-wIiobTMZ.js.map → clojure-D3pGxSKq.js.map} +1 -1
- package/dist-vue/_chunks/{cmake-BXv0H94m.js → cmake-BCnKEIrD.js} +1 -1
- package/dist-vue/_chunks/{cmake-BXv0H94m.js.map → cmake-BCnKEIrD.js.map} +1 -1
- package/dist-vue/_chunks/{cobol-DHS--Q0E.js → cobol-BYaGw1Yw.js} +1 -1
- package/dist-vue/_chunks/{cobol-DHS--Q0E.js.map → cobol-BYaGw1Yw.js.map} +1 -1
- package/dist-vue/_chunks/{coffeescript-DuPphqba.js → coffeescript-BkiWHrll.js} +1 -1
- package/dist-vue/_chunks/{coffeescript-DuPphqba.js.map → coffeescript-BkiWHrll.js.map} +1 -1
- package/dist-vue/_chunks/{commonlisp-C978VsBx.js → commonlisp-BmB0kcsA.js} +1 -1
- package/dist-vue/_chunks/{commonlisp-C978VsBx.js.map → commonlisp-BmB0kcsA.js.map} +1 -1
- package/dist-vue/_chunks/{createChatbotApiClient-tAXyZCUx.js → createChatbotApiClient-Dcrje955.js} +211 -115
- package/dist-vue/_chunks/createChatbotApiClient-Dcrje955.js.map +1 -0
- package/dist-vue/_chunks/{crystal-BTi9IGqB.js → crystal-j2Uodr6G.js} +1 -1
- package/dist-vue/_chunks/{crystal-BTi9IGqB.js.map → crystal-j2Uodr6G.js.map} +1 -1
- package/dist-vue/_chunks/{css-Byc0XEOa.js → css-DikOvTi5.js} +1 -1
- package/dist-vue/_chunks/{css-Byc0XEOa.js.map → css-DikOvTi5.js.map} +1 -1
- package/dist-vue/_chunks/{cypher-DbIDcgjc.js → cypher-CocRBvf0.js} +1 -1
- package/dist-vue/_chunks/{cypher-DbIDcgjc.js.map → cypher-CocRBvf0.js.map} +1 -1
- package/dist-vue/_chunks/{d-CfpiXU_s.js → d-By563UA3.js} +1 -1
- package/dist-vue/_chunks/{d-CfpiXU_s.js.map → d-By563UA3.js.map} +1 -1
- package/dist-vue/_chunks/{diff-Chsz7v8H.js → diff-B1bbhSQg.js} +1 -1
- package/dist-vue/_chunks/{diff-Chsz7v8H.js.map → diff-B1bbhSQg.js.map} +1 -1
- package/dist-vue/_chunks/{dist-BX9gMnDv.js → dist-1VuiSmDe.js} +3 -3
- package/dist-vue/_chunks/{dist-BX9gMnDv.js.map → dist-1VuiSmDe.js.map} +1 -1
- package/dist-vue/_chunks/{dist--K3HVPFP.js → dist-4zE2m0cC.js} +2 -2
- package/dist-vue/_chunks/{dist--K3HVPFP.js.map → dist-4zE2m0cC.js.map} +1 -1
- package/dist-vue/_chunks/{dist-DKu5hMyS.js → dist-6CvrlmzR.js} +5 -5
- package/dist-vue/_chunks/{dist-DKu5hMyS.js.map → dist-6CvrlmzR.js.map} +1 -1
- package/dist-vue/_chunks/{dist-dGGJB751.js → dist-BDIP4oQC.js} +3 -3
- package/dist-vue/_chunks/{dist-dGGJB751.js.map → dist-BDIP4oQC.js.map} +1 -1
- package/dist-vue/_chunks/{dist-BAhi8JnF.js → dist-BYcMzoKR.js} +2 -2
- package/dist-vue/_chunks/{dist-BAhi8JnF.js.map → dist-BYcMzoKR.js.map} +1 -1
- package/dist-vue/_chunks/{dist-sJCKYKfx.js → dist-BxM_in4x.js} +3 -3
- package/dist-vue/_chunks/{dist-sJCKYKfx.js.map → dist-BxM_in4x.js.map} +1 -1
- package/dist-vue/_chunks/{dist-qpPts-lE.js → dist-ByBDQkx9.js} +4 -4
- package/dist-vue/_chunks/{dist-qpPts-lE.js.map → dist-ByBDQkx9.js.map} +1 -1
- package/dist-vue/_chunks/{dist-C4Q2oVwo.js → dist-CbDm9BNK.js} +2 -2
- package/dist-vue/_chunks/{dist-C4Q2oVwo.js.map → dist-CbDm9BNK.js.map} +1 -1
- package/dist-vue/_chunks/{dist-Tm13weGi.js → dist-CcI0VoWs.js} +3 -3
- package/dist-vue/_chunks/{dist-Tm13weGi.js.map → dist-CcI0VoWs.js.map} +1 -1
- package/dist-vue/_chunks/{dist-DyCRk5Sz2.js → dist-CkV64K6q2.js} +3 -3
- package/dist-vue/_chunks/{dist-DyCRk5Sz2.js.map → dist-CkV64K6q2.js.map} +1 -1
- package/dist-vue/_chunks/{dist-CIN_Avbm.js → dist-D-R9PvqV.js} +1 -1
- package/dist-vue/_chunks/{dist-CIN_Avbm.js.map → dist-D-R9PvqV.js.map} +1 -1
- package/dist-vue/_chunks/{dist-KnH97L2h2.js → dist-D0U7Raxc2.js} +4 -4
- package/dist-vue/_chunks/{dist-KnH97L2h2.js.map → dist-D0U7Raxc2.js.map} +1 -1
- package/dist-vue/_chunks/{dist-B0QmqS0N.js → dist-D0Wm5IxH.js} +3 -3
- package/dist-vue/_chunks/{dist-B0QmqS0N.js.map → dist-D0Wm5IxH.js.map} +1 -1
- package/dist-vue/_chunks/{dist-DFvVVU0-.js → dist-D1-E577I.js} +2 -2
- package/dist-vue/_chunks/{dist-DFvVVU0-.js.map → dist-D1-E577I.js.map} +1 -1
- package/dist-vue/_chunks/{dist-DBu5ECbV2.js → dist-DC8yN_w12.js} +2 -2
- package/dist-vue/_chunks/{dist-DBu5ECbV2.js.map → dist-DC8yN_w12.js.map} +1 -1
- package/dist-vue/_chunks/{dist-DfJ0x-DV.js → dist-DIVYK7vr.js} +2 -2
- package/dist-vue/_chunks/{dist-DfJ0x-DV.js.map → dist-DIVYK7vr.js.map} +1 -1
- package/dist-vue/_chunks/{dist-DnGUlg51.js → dist-DIujXFeP.js} +3 -3
- package/dist-vue/_chunks/{dist-DnGUlg51.js.map → dist-DIujXFeP.js.map} +1 -1
- package/dist-vue/_chunks/{dist-8Ba2NTwQ.js → dist-DNMuMsYA.js} +3 -3
- package/dist-vue/_chunks/{dist-8Ba2NTwQ.js.map → dist-DNMuMsYA.js.map} +1 -1
- package/dist-vue/_chunks/{dist-DpBbH8yX.js → dist-Dq2JgmgY.js} +3 -3
- package/dist-vue/_chunks/{dist-DpBbH8yX.js.map → dist-Dq2JgmgY.js.map} +1 -1
- package/dist-vue/_chunks/{dist-D1vdEteA.js → dist-DtMND9KH.js} +2 -2
- package/dist-vue/_chunks/{dist-D1vdEteA.js.map → dist-DtMND9KH.js.map} +1 -1
- package/dist-vue/_chunks/{dist-BXMdPs2n.js → dist-Dy4eir4A.js} +2 -2
- package/dist-vue/_chunks/{dist-BXMdPs2n.js.map → dist-Dy4eir4A.js.map} +1 -1
- package/dist-vue/_chunks/{dist-zSYkbMGo.js → dist-x0QhP1E9.js} +4 -4
- package/dist-vue/_chunks/{dist-zSYkbMGo.js.map → dist-x0QhP1E9.js.map} +1 -1
- package/dist-vue/_chunks/{dockerfile-Bctf8YOl.js → dockerfile-DE9wt2dL.js} +2 -2
- package/dist-vue/_chunks/{dockerfile-Bctf8YOl.js.map → dockerfile-DE9wt2dL.js.map} +1 -1
- package/dist-vue/_chunks/{dtd-Bly5BFAf.js → dtd-CqxlpCqG.js} +1 -1
- package/dist-vue/_chunks/{dtd-Bly5BFAf.js.map → dtd-CqxlpCqG.js.map} +1 -1
- package/dist-vue/_chunks/{dylan-CzoYHa03.js → dylan-D1Gpc3L-.js} +1 -1
- package/dist-vue/_chunks/{dylan-CzoYHa03.js.map → dylan-D1Gpc3L-.js.map} +1 -1
- package/dist-vue/_chunks/{ebnf-4baG1T13.js → ebnf-DgP0YVa-.js} +1 -1
- package/dist-vue/_chunks/{ebnf-4baG1T13.js.map → ebnf-DgP0YVa-.js.map} +1 -1
- package/dist-vue/_chunks/{ecl-DUKN-Onz.js → ecl-KeBeM266.js} +1 -1
- package/dist-vue/_chunks/{ecl-DUKN-Onz.js.map → ecl-KeBeM266.js.map} +1 -1
- package/dist-vue/_chunks/{eiffel-Call-dqp.js → eiffel-C2i3fXO-.js} +1 -1
- package/dist-vue/_chunks/{eiffel-Call-dqp.js.map → eiffel-C2i3fXO-.js.map} +1 -1
- package/dist-vue/_chunks/{elm-DW-uVY9B.js → elm-Bv3L_mvL.js} +1 -1
- package/dist-vue/_chunks/{elm-DW-uVY9B.js.map → elm-Bv3L_mvL.js.map} +1 -1
- package/dist-vue/_chunks/{erlang-qvATK88s.js → erlang-DDXGK6MZ.js} +1 -1
- package/dist-vue/_chunks/{erlang-qvATK88s.js.map → erlang-DDXGK6MZ.js.map} +1 -1
- package/dist-vue/_chunks/{factor-DLyqB44S.js → factor-BMluBoEh.js} +2 -2
- package/dist-vue/_chunks/{factor-DLyqB44S.js.map → factor-BMluBoEh.js.map} +1 -1
- package/dist-vue/_chunks/{fcl-BrnRqE-k.js → fcl-Cmz-2giq.js} +1 -1
- package/dist-vue/_chunks/{fcl-BrnRqE-k.js.map → fcl-Cmz-2giq.js.map} +1 -1
- package/dist-vue/_chunks/{forth-DeYqvv5h.js → forth-DaWjj3JF.js} +1 -1
- package/dist-vue/_chunks/{forth-DeYqvv5h.js.map → forth-DaWjj3JF.js.map} +1 -1
- package/dist-vue/_chunks/{fortran-DdvDmAzM.js → fortran-Cjf1_njC.js} +1 -1
- package/dist-vue/_chunks/{fortran-DdvDmAzM.js.map → fortran-Cjf1_njC.js.map} +1 -1
- package/dist-vue/_chunks/{gas-BNdHmuUu.js → gas-Dw0EKIt6.js} +1 -1
- package/dist-vue/_chunks/{gas-BNdHmuUu.js.map → gas-Dw0EKIt6.js.map} +1 -1
- package/dist-vue/_chunks/{gherkin-CBC9qNkO.js → gherkin-BmhCQ-3F.js} +1 -1
- package/dist-vue/_chunks/{gherkin-CBC9qNkO.js.map → gherkin-BmhCQ-3F.js.map} +1 -1
- package/dist-vue/_chunks/{groovy-GC0PSVJU.js → groovy-Ce2VCAj0.js} +1 -1
- package/dist-vue/_chunks/{groovy-GC0PSVJU.js.map → groovy-Ce2VCAj0.js.map} +1 -1
- package/dist-vue/_chunks/{haskell-BKrhNlBi.js → haskell-CL9NsPDf.js} +1 -1
- package/dist-vue/_chunks/{haskell-BKrhNlBi.js.map → haskell-CL9NsPDf.js.map} +1 -1
- package/dist-vue/_chunks/{haxe-CPxacElW.js → haxe-Bbed1mIk.js} +1 -1
- package/dist-vue/_chunks/{haxe-CPxacElW.js.map → haxe-Bbed1mIk.js.map} +1 -1
- package/dist-vue/_chunks/{http-B_g6rpYy.js → http-CQ9T-AS4.js} +1 -1
- package/dist-vue/_chunks/{http-B_g6rpYy.js.map → http-CQ9T-AS4.js.map} +1 -1
- package/dist-vue/_chunks/{idl-nWWgQIyM.js → idl-CvhgP0zv.js} +1 -1
- package/dist-vue/_chunks/{idl-nWWgQIyM.js.map → idl-CvhgP0zv.js.map} +1 -1
- package/dist-vue/_chunks/{javascript-LK1o3VqT.js → javascript-Btb8UHXp.js} +1 -1
- package/dist-vue/_chunks/{javascript-LK1o3VqT.js.map → javascript-Btb8UHXp.js.map} +1 -1
- package/dist-vue/_chunks/{julia-BTozo5av.js → julia-DTNyuRVE.js} +1 -1
- package/dist-vue/_chunks/{julia-BTozo5av.js.map → julia-DTNyuRVE.js.map} +1 -1
- package/dist-vue/_chunks/{livescript-DpF2_JFC.js → livescript-CsLAR-Dk.js} +1 -1
- package/dist-vue/_chunks/{livescript-DpF2_JFC.js.map → livescript-CsLAR-Dk.js.map} +1 -1
- package/dist-vue/_chunks/{lua-tQN-2Pk0.js → lua-TjS61pff.js} +1 -1
- package/dist-vue/_chunks/{lua-tQN-2Pk0.js.map → lua-TjS61pff.js.map} +1 -1
- package/dist-vue/_chunks/{mathematica-CvawU267.js → mathematica-B36wjihf.js} +1 -1
- package/dist-vue/_chunks/{mathematica-CvawU267.js.map → mathematica-B36wjihf.js.map} +1 -1
- package/dist-vue/_chunks/{mbox-CoCfe6cW.js → mbox-l34D_Sup.js} +1 -1
- package/dist-vue/_chunks/{mbox-CoCfe6cW.js.map → mbox-l34D_Sup.js.map} +1 -1
- package/dist-vue/_chunks/{mirc-COd5tE63.js → mirc-ClsitdIY.js} +1 -1
- package/dist-vue/_chunks/{mirc-COd5tE63.js.map → mirc-ClsitdIY.js.map} +1 -1
- package/dist-vue/_chunks/{mllike-DDHxpeHd.js → mllike-CfQSkcI7.js} +1 -1
- package/dist-vue/_chunks/{mllike-DDHxpeHd.js.map → mllike-CfQSkcI7.js.map} +1 -1
- package/dist-vue/_chunks/{modelica-lMYNHoEu.js → modelica-CbCNcNrB.js} +1 -1
- package/dist-vue/_chunks/{modelica-lMYNHoEu.js.map → modelica-CbCNcNrB.js.map} +1 -1
- package/dist-vue/_chunks/{mscgen-BDVHHK85.js → mscgen-BEGyn8Kg.js} +1 -1
- package/dist-vue/_chunks/{mscgen-BDVHHK85.js.map → mscgen-BEGyn8Kg.js.map} +1 -1
- package/dist-vue/_chunks/{mumps-Cytx8qiy.js → mumps-Dr2ezLO-.js} +1 -1
- package/dist-vue/_chunks/{mumps-Cytx8qiy.js.map → mumps-Dr2ezLO-.js.map} +1 -1
- package/dist-vue/_chunks/{nginx-DkyUeyBK.js → nginx-Bi4gDD3m.js} +1 -1
- package/dist-vue/_chunks/{nginx-DkyUeyBK.js.map → nginx-Bi4gDD3m.js.map} +1 -1
- package/dist-vue/_chunks/{nsis-if-eCOXK.js → nsis-tIoKsxwO.js} +2 -2
- package/dist-vue/_chunks/{nsis-if-eCOXK.js.map → nsis-tIoKsxwO.js.map} +1 -1
- package/dist-vue/_chunks/{ntriples-D-c0_vEi.js → ntriples-BpLyHtBK.js} +1 -1
- package/dist-vue/_chunks/{ntriples-D-c0_vEi.js.map → ntriples-BpLyHtBK.js.map} +1 -1
- package/dist-vue/_chunks/{octave-Co_9SHXf.js → octave-BFLmhqOS.js} +1 -1
- package/dist-vue/_chunks/{octave-Co_9SHXf.js.map → octave-BFLmhqOS.js.map} +1 -1
- package/dist-vue/_chunks/{oz-0gSLg5tX.js → oz-DZWYUv0Q.js} +1 -1
- package/dist-vue/_chunks/{oz-0gSLg5tX.js.map → oz-DZWYUv0Q.js.map} +1 -1
- package/dist-vue/_chunks/{pascal-EFiy6L3H.js → pascal-C9E98ftD.js} +1 -1
- package/dist-vue/_chunks/{pascal-EFiy6L3H.js.map → pascal-C9E98ftD.js.map} +1 -1
- package/dist-vue/_chunks/{perl-6G11E8em.js → perl-BVKFqc1F.js} +1 -1
- package/dist-vue/_chunks/{perl-6G11E8em.js.map → perl-BVKFqc1F.js.map} +1 -1
- package/dist-vue/_chunks/{pig-BW1hm3XT.js → pig-D6QFO3WI.js} +1 -1
- package/dist-vue/_chunks/{pig-BW1hm3XT.js.map → pig-D6QFO3WI.js.map} +1 -1
- package/dist-vue/_chunks/{powershell-Bt-QJoDH.js → powershell-2IfoeWan.js} +1 -1
- package/dist-vue/_chunks/{powershell-Bt-QJoDH.js.map → powershell-2IfoeWan.js.map} +1 -1
- package/dist-vue/_chunks/{properties-D_XHdyRl.js → properties-C2B2ArUy.js} +1 -1
- package/dist-vue/_chunks/{properties-D_XHdyRl.js.map → properties-C2B2ArUy.js.map} +1 -1
- package/dist-vue/_chunks/{protobuf-B2341jP2.js → protobuf-B4WeH-l7.js} +1 -1
- package/dist-vue/_chunks/{protobuf-B2341jP2.js.map → protobuf-B4WeH-l7.js.map} +1 -1
- package/dist-vue/_chunks/{pug-16scRmP0.js → pug-CQ-5YOub.js} +2 -2
- package/dist-vue/_chunks/{pug-16scRmP0.js.map → pug-CQ-5YOub.js.map} +1 -1
- package/dist-vue/_chunks/{puppet-BnknQ9uc.js → puppet-C57db21O.js} +1 -1
- package/dist-vue/_chunks/{puppet-BnknQ9uc.js.map → puppet-C57db21O.js.map} +1 -1
- package/dist-vue/_chunks/{python-Dx6wyD-h.js → python-L3kdHi6C.js} +1 -1
- package/dist-vue/_chunks/{python-Dx6wyD-h.js.map → python-L3kdHi6C.js.map} +1 -1
- package/dist-vue/_chunks/{q-CwYXS2Js.js → q-DQI-vHRp.js} +1 -1
- package/dist-vue/_chunks/{q-CwYXS2Js.js.map → q-DQI-vHRp.js.map} +1 -1
- package/dist-vue/_chunks/{r-B31sqbQ3.js → r-DhKB-o8I.js} +1 -1
- package/dist-vue/_chunks/{r-B31sqbQ3.js.map → r-DhKB-o8I.js.map} +1 -1
- package/dist-vue/_chunks/{rpm-B0MmKWRw.js → rpm-D56QajaS.js} +1 -1
- package/dist-vue/_chunks/{rpm-B0MmKWRw.js.map → rpm-D56QajaS.js.map} +1 -1
- package/dist-vue/_chunks/{ruby-DXiHl-Yz.js → ruby-BcD3iVWj.js} +1 -1
- package/dist-vue/_chunks/{ruby-DXiHl-Yz.js.map → ruby-BcD3iVWj.js.map} +1 -1
- package/dist-vue/_chunks/{sas-B4XJ2693.js → sas-D1OuUIKN.js} +1 -1
- package/dist-vue/_chunks/{sas-B4XJ2693.js.map → sas-D1OuUIKN.js.map} +1 -1
- package/dist-vue/_chunks/{scheme-Df6d10fH.js → scheme-CUrJ3_0S.js} +1 -1
- package/dist-vue/_chunks/{scheme-Df6d10fH.js.map → scheme-CUrJ3_0S.js.map} +1 -1
- package/dist-vue/_chunks/{shell-BV8cKKHJ.js → shell-BPM0XoRU.js} +1 -1
- package/dist-vue/_chunks/{shell-BV8cKKHJ.js.map → shell-BPM0XoRU.js.map} +1 -1
- package/dist-vue/_chunks/{sieve-KCcjO0gU.js → sieve-n-ojLaJW.js} +1 -1
- package/dist-vue/_chunks/{sieve-KCcjO0gU.js.map → sieve-n-ojLaJW.js.map} +1 -1
- package/dist-vue/_chunks/{simple-mode-eFYrLHNd.js → simple-mode-DGBVTMBE.js} +1 -1
- package/dist-vue/_chunks/{simple-mode-eFYrLHNd.js.map → simple-mode-DGBVTMBE.js.map} +1 -1
- package/dist-vue/_chunks/{smalltalk-TnIZTtVY.js → smalltalk-CbOtG3J-.js} +1 -1
- package/dist-vue/_chunks/{smalltalk-TnIZTtVY.js.map → smalltalk-CbOtG3J-.js.map} +1 -1
- package/dist-vue/_chunks/{solr-D67CeY1D.js → solr-CC7GnBmE.js} +1 -1
- package/dist-vue/_chunks/{solr-D67CeY1D.js.map → solr-CC7GnBmE.js.map} +1 -1
- package/dist-vue/_chunks/{sparql-D0t-Guzg.js → sparql-DC2C8LuG.js} +1 -1
- package/dist-vue/_chunks/{sparql-D0t-Guzg.js.map → sparql-DC2C8LuG.js.map} +1 -1
- package/dist-vue/_chunks/{spreadsheet-NH0IWwbw.js → spreadsheet-rMh9jzuD.js} +1 -1
- package/dist-vue/_chunks/{spreadsheet-NH0IWwbw.js.map → spreadsheet-rMh9jzuD.js.map} +1 -1
- package/dist-vue/_chunks/{sql-B5Rl3TuV.js → sql-C15h02N-.js} +1 -1
- package/dist-vue/_chunks/{sql-B5Rl3TuV.js.map → sql-C15h02N-.js.map} +1 -1
- package/dist-vue/_chunks/{stex-Bu2gC9SM.js → stex-BQU7jli4.js} +1 -1
- package/dist-vue/_chunks/{stex-Bu2gC9SM.js.map → stex-BQU7jli4.js.map} +1 -1
- package/dist-vue/_chunks/{stylus-SIPLRHxF.js → stylus-Fj84CAVA.js} +1 -1
- package/dist-vue/_chunks/{stylus-SIPLRHxF.js.map → stylus-Fj84CAVA.js.map} +1 -1
- package/dist-vue/_chunks/{swift-B_JaBro8.js → swift-CrzZIdws.js} +1 -1
- package/dist-vue/_chunks/{swift-B_JaBro8.js.map → swift-CrzZIdws.js.map} +1 -1
- package/dist-vue/_chunks/{tcl-ChmdQusa.js → tcl-BvFcqrC1.js} +1 -1
- package/dist-vue/_chunks/{tcl-ChmdQusa.js.map → tcl-BvFcqrC1.js.map} +1 -1
- package/dist-vue/_chunks/{textile-BukFHU5C.js → textile-CAX0nrzJ.js} +1 -1
- package/dist-vue/_chunks/{textile-BukFHU5C.js.map → textile-CAX0nrzJ.js.map} +1 -1
- package/dist-vue/_chunks/{tiddlywiki-Cjof9i6e.js → tiddlywiki-D5Gu8Cgp.js} +1 -1
- package/dist-vue/_chunks/{tiddlywiki-Cjof9i6e.js.map → tiddlywiki-D5Gu8Cgp.js.map} +1 -1
- package/dist-vue/_chunks/{tiki-DqShKWqG.js → tiki-BelGwBNb.js} +1 -1
- package/dist-vue/_chunks/{tiki-DqShKWqG.js.map → tiki-BelGwBNb.js.map} +1 -1
- package/dist-vue/_chunks/{toml-BATqZFcK.js → toml-BEm4Ctws.js} +1 -1
- package/dist-vue/_chunks/{toml-BATqZFcK.js.map → toml-BEm4Ctws.js.map} +1 -1
- package/dist-vue/_chunks/{troff-PbwxY1FZ.js → troff-lWffuAea.js} +1 -1
- package/dist-vue/_chunks/{troff-PbwxY1FZ.js.map → troff-lWffuAea.js.map} +1 -1
- package/dist-vue/_chunks/{ttcn-BSxIkHWh.js → ttcn-CJo3GWqH.js} +1 -1
- package/dist-vue/_chunks/{ttcn-BSxIkHWh.js.map → ttcn-CJo3GWqH.js.map} +1 -1
- package/dist-vue/_chunks/{ttcn-cfg-pJEPzif5.js → ttcn-cfg-C9gCx5K3.js} +1 -1
- package/dist-vue/_chunks/{ttcn-cfg-pJEPzif5.js.map → ttcn-cfg-C9gCx5K3.js.map} +1 -1
- package/dist-vue/_chunks/{turtle-B0nZo8hJ.js → turtle-Bg3JtSZx.js} +1 -1
- package/dist-vue/_chunks/{turtle-B0nZo8hJ.js.map → turtle-Bg3JtSZx.js.map} +1 -1
- package/dist-vue/_chunks/{useChatbotStore-C1gZgvam.js → useChatbotStore-DE8leYO8.js} +3 -2
- package/dist-vue/_chunks/{useChatbotStore-C1gZgvam.js.map → useChatbotStore-DE8leYO8.js.map} +1 -1
- package/dist-vue/_chunks/useLocalizedString-CW0dVF2K.js +14 -0
- package/dist-vue/_chunks/useLocalizedString-CW0dVF2K.js.map +1 -0
- package/dist-vue/_chunks/{utils-BTa2h3WM.js → utils-CRojvghU.js} +26 -11
- package/dist-vue/_chunks/utils-CRojvghU.js.map +1 -0
- package/dist-vue/_chunks/{vb-BRq_7ZF9.js → vb-Xh1Jl3M6.js} +1 -1
- package/dist-vue/_chunks/{vb-BRq_7ZF9.js.map → vb-Xh1Jl3M6.js.map} +1 -1
- package/dist-vue/_chunks/{vbscript-B6ZIwOLd.js → vbscript-NjJzWxN6.js} +1 -1
- package/dist-vue/_chunks/{vbscript-B6ZIwOLd.js.map → vbscript-NjJzWxN6.js.map} +1 -1
- package/dist-vue/_chunks/{velocity-BvxA2zsa.js → velocity-CRJkj7qc.js} +1 -1
- package/dist-vue/_chunks/{velocity-BvxA2zsa.js.map → velocity-CRJkj7qc.js.map} +1 -1
- package/dist-vue/_chunks/{verilog-B3osH5GQ.js → verilog-CBHbxdbo.js} +1 -1
- package/dist-vue/_chunks/{verilog-B3osH5GQ.js.map → verilog-CBHbxdbo.js.map} +1 -1
- package/dist-vue/_chunks/{vhdl-CR1z1JUE.js → vhdl-BxdacNfs.js} +1 -1
- package/dist-vue/_chunks/{vhdl-CR1z1JUE.js.map → vhdl-BxdacNfs.js.map} +1 -1
- package/dist-vue/_chunks/{webidl-C74Qva8l.js → webidl-BuFj0gB5.js} +1 -1
- package/dist-vue/_chunks/{webidl-C74Qva8l.js.map → webidl-BuFj0gB5.js.map} +1 -1
- package/dist-vue/_chunks/{xquery-hmT-vB1m.js → xquery-DA__vFXM.js} +1 -1
- package/dist-vue/_chunks/{xquery-hmT-vB1m.js.map → xquery-DA__vFXM.js.map} +1 -1
- package/dist-vue/_chunks/{yacas-B2_Uw5g-.js → yacas-C0zyYz-1.js} +1 -1
- package/dist-vue/_chunks/{yacas-B2_Uw5g-.js.map → yacas-C0zyYz-1.js.map} +1 -1
- package/dist-vue/_chunks/{z80-BDY8ScET.js → z80-D0C3d2Md.js} +1 -1
- package/dist-vue/_chunks/{z80-BDY8ScET.js.map → z80-D0C3d2Md.js.map} +1 -1
- package/dist-vue/api.js +1 -1
- package/dist-vue/apps/web-component/src/composables/index.d.ts +1 -0
- package/dist-vue/apps/web-component/src/composables/useChatbotAuth.d.ts +2 -2
- package/dist-vue/composables.js +62 -61
- package/dist-vue/composables.js.map +1 -1
- package/dist-vue/index.js +4536 -3897
- package/dist-vue/index.js.map +1 -1
- package/dist-vue/locales.js +72 -28
- package/dist-vue/packages/auth/src/index.d.ts +2 -2
- package/dist-vue/packages/components/src/PkEditorMedia.d.ts +1 -1
- package/dist-vue/packages/components/src/chat/PkAgentSettingsPanel.d.ts +135 -9
- package/dist-vue/packages/components/src/chat/PkReasoningSettings.d.ts +54 -0
- package/dist-vue/packages/components/src/chat/PkWebSearchSettings.d.ts +105 -0
- package/dist-vue/packages/components/src/chat/constants.d.ts +1 -1
- package/dist-vue/packages/components/src/chat/index.d.ts +3 -1
- package/dist-vue/packages/components/src/chat/utils.d.ts +6 -0
- package/dist-vue/packages/components/src/composables/index.d.ts +0 -2
- package/dist-vue/packages/composable/src/index.d.ts +2 -0
- package/dist-vue/packages/{components/src/composables → composable/src}/useChatbotError.d.ts +1 -1
- package/dist-vue/packages/{components/src/composables → composable/src}/useLocalizedString.d.ts +1 -1
- package/dist-vue/packages/models/src/schema/Agent.d.ts +633 -63
- package/dist-vue/packages/models/src/schema/AgentChatStatistics.d.ts +1 -1
- package/dist-vue/packages/models/src/schema/Chat.d.ts +104 -13
- package/dist-vue/packages/models/src/schema/Integration.d.ts +1 -1
- package/dist-vue/packages/models/src/schema/McpServer.d.ts +6 -6
- package/dist-vue/packages/models/src/schema/ReasoningChat.d.ts +209 -27
- package/dist-vue/packages/models/src/schema/SubAgent.d.ts +209 -27
- package/dist-vue/style.css +1 -1
- package/package.json +2 -2
- package/dist/_chunks/PkToolShowComparison-D_DtpXRO.js.map +0 -1
- package/dist/_chunks/VvCheckbox.es-LSjS8_8K.js.map +0 -1
- package/dist/_chunks/VvCheckboxGroup.es-CR5ZTD2H.js.map +0 -1
- package/dist/_chunks/VvCombobox.es-B8E1RmUn.js.map +0 -1
- package/dist/_chunks/VvInputText.es-BYAhw1yP.js.map +0 -1
- package/dist/_chunks/VvRadio.es-CQj6S-QP.js.map +0 -1
- package/dist/_chunks/VvRadioGroup.es-9AWwbBXm.js.map +0 -1
- package/dist/_chunks/VvSelect.es-DAmZPvCV.js.map +0 -1
- package/dist/_chunks/VvTextarea.es-BfgLTEPk.js.map +0 -1
- package/dist-vue/_chunks/PkChatbot-Cqu5lhyS.js +0 -191
- package/dist-vue/_chunks/PkChatbot-Cqu5lhyS.js.map +0 -1
- package/dist-vue/_chunks/PkChatbotError-C1ZxZlwQ.js.map +0 -1
- package/dist-vue/_chunks/PkChatbotMessages-DFgERA1l.js +0 -468
- package/dist-vue/_chunks/PkChatbotMessages-DFgERA1l.js.map +0 -1
- package/dist-vue/_chunks/PkChatbotViewChat-hqsvz_7X.js.map +0 -1
- package/dist-vue/_chunks/PkToolShowComparison-CZ3kO6PT.js.map +0 -1
- package/dist-vue/_chunks/PkToolShowContactForm-CTbMiGnv.js +0 -130
- package/dist-vue/_chunks/PkToolShowContactForm-CTbMiGnv.js.map +0 -1
- package/dist-vue/_chunks/createChatbotApiClient-tAXyZCUx.js.map +0 -1
- package/dist-vue/_chunks/utils-BTa2h3WM.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { o as e } from "./useChatbotStore-
|
|
1
|
+
import { o as e } from "./useChatbotStore-DE8leYO8.js";
|
|
2
2
|
import { VvButton as t, VvIcon as n } from "@volverjs/ui-vue/components";
|
|
3
3
|
import { Fragment as r, computed as i, createCommentVNode as a, createElementBlock as o, createElementVNode as s, createVNode as c, defineComponent as l, onUnmounted as u, openBlock as d, ref as f, toDisplayString as p, unref as m, watch as h } from "vue";
|
|
4
4
|
import { useI18n as g } from "vue-i18n";
|
|
@@ -67,4 +67,4 @@ var _ = { class: "flex flex-col gap-8 border border-surface-3 rounded-xl px-sm p
|
|
|
67
67
|
//#endregion
|
|
68
68
|
export { E as n, D as t };
|
|
69
69
|
|
|
70
|
-
//# sourceMappingURL=PkToolRequestOAuthConnection-
|
|
70
|
+
//# sourceMappingURL=PkToolRequestOAuthConnection-CCVLUbiX.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PkToolRequestOAuthConnection-CsQc0Ju7.js","names":[],"sources":["../../../../packages/components/src/chat/PkToolRequestOAuthConnection.vue","../../../../packages/components/src/chat/PkToolRequestOAuthConnection.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed, onUnmounted, ref, watch } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n const props = defineProps<{\n part: unknown\n resolveConnection: (\n serverName: string,\n ) => Promise<{ mcpServerId: string; authorizeUrl: string }>\n }>()\n\n const emit = defineEmits<{\n connected: [mcpServerId: string]\n }>()\n\n const { t: $t } = useI18n({ useScope: 'global' })\n\n const toolPart = computed(() => {\n return props.part as {\n state?: string\n toolCallId?: string\n input?: { serverName: string }\n }\n })\n\n const state = computed(() => toolPart.value.state ?? 'unknown')\n const serverName = computed(() => toolPart.value.input?.serverName)\n\n const connectionData = ref<{\n mcpServerId: string\n authorizeUrl: string\n } | null>(null)\n const isResolving = ref(false)\n const oauthCompleted = ref(false)\n const oauthError = ref<string | null>(null)\n\n async function resolveConnectionData() {\n if (!serverName.value || connectionData.value || isResolving.value) {\n return\n }\n isResolving.value = true\n try {\n connectionData.value = await props.resolveConnection(\n serverName.value,\n )\n } catch (err) {\n oauthError.value =\n err instanceof Error ? err.message : 'Failed to resolve OAuth'\n } finally {\n isResolving.value = false\n }\n }\n\n watch(\n () => state.value === 'input-available' && serverName.value,\n (ready) => {\n if (ready) {\n resolveConnectionData()\n }\n },\n { immediate: true },\n )\n\n function onMessage(event: MessageEvent) {\n if (event.data?.type !== 'mcp-oauth-complete') {\n return\n }\n if (event.data.mcpServerId !== connectionData.value?.mcpServerId) {\n return\n }\n window.removeEventListener('message', onMessage)\n if (event.data.success) {\n oauthCompleted.value = true\n emit('connected', event.data.mcpServerId)\n } else {\n oauthError.value = event.data.error ?? 'Unknown error'\n }\n }\n\n function openAuthWindow() {\n if (!connectionData.value?.authorizeUrl) {\n return\n }\n window.addEventListener('message', onMessage)\n window.open(\n connectionData.value.authorizeUrl,\n 'mcp_oauth',\n 'width=600,height=700',\n )\n }\n\n onUnmounted(() => {\n window.removeEventListener('message', onMessage)\n })\n</script>\n\n<template>\n <div\n class=\"flex flex-col gap-8 border border-surface-3 rounded-xl px-sm py-10 text-12\">\n <!-- Loading state -->\n <template v-if=\"isResolving\">\n <div class=\"flex items-center gap-8 text-word-3\">\n <VvIcon name=\"line-md:loading-loop\" />\n <span class=\"text-10\">{{\n $t('messagePart.requestOAuthConnection')\n }}</span>\n </div>\n </template>\n\n <!-- Connected successfully -->\n <template v-else-if=\"oauthCompleted\">\n <div class=\"flex items-center gap-sm\">\n <VvIcon\n name=\"ri:checkbox-circle-line\"\n class=\"text-24 text-success\" />\n <strong class=\"font-semibold text-word-3\">\n {{\n $t('messagePart.requestOAuthConnectionSuccess', {\n name: serverName,\n })\n }}\n </strong>\n </div>\n </template>\n\n <!-- OAuth error -->\n <template v-else-if=\"oauthError\">\n <div class=\"flex items-center gap-sm\">\n <VvIcon name=\"ri:alert-line\" class=\"text-24 text-danger\" />\n <strong class=\"font-semibold text-word-3\">\n {{ oauthError }}\n </strong>\n </div>\n </template>\n\n <!-- Call ready — show connect button -->\n <template v-else-if=\"connectionData\">\n <div class=\"flex items-center gap-6 text-word-3 mb-xs\">\n <VvIcon name=\"ri:link-m\" class=\"text-16 shrink-0\" />\n <span>\n {{\n $t('messagePart.requestOAuthConnectionPrompt', {\n name: serverName,\n })\n }}\n </span>\n </div>\n <VvButton\n modifiers=\"action\"\n icon=\"ri:external-link-line\"\n :label=\"\n $t('messagePart.requestOAuthConnectionButton', {\n name: serverName,\n })\n \"\n @click=\"openAuthWindow\" />\n </template>\n </div>\n</template>\n","<script setup lang=\"ts\">\n import { computed, onUnmounted, ref, watch } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n const props = defineProps<{\n part: unknown\n resolveConnection: (\n serverName: string,\n ) => Promise<{ mcpServerId: string; authorizeUrl: string }>\n }>()\n\n const emit = defineEmits<{\n connected: [mcpServerId: string]\n }>()\n\n const { t: $t } = useI18n({ useScope: 'global' })\n\n const toolPart = computed(() => {\n return props.part as {\n state?: string\n toolCallId?: string\n input?: { serverName: string }\n }\n })\n\n const state = computed(() => toolPart.value.state ?? 'unknown')\n const serverName = computed(() => toolPart.value.input?.serverName)\n\n const connectionData = ref<{\n mcpServerId: string\n authorizeUrl: string\n } | null>(null)\n const isResolving = ref(false)\n const oauthCompleted = ref(false)\n const oauthError = ref<string | null>(null)\n\n async function resolveConnectionData() {\n if (!serverName.value || connectionData.value || isResolving.value) {\n return\n }\n isResolving.value = true\n try {\n connectionData.value = await props.resolveConnection(\n serverName.value,\n )\n } catch (err) {\n oauthError.value =\n err instanceof Error ? err.message : 'Failed to resolve OAuth'\n } finally {\n isResolving.value = false\n }\n }\n\n watch(\n () => state.value === 'input-available' && serverName.value,\n (ready) => {\n if (ready) {\n resolveConnectionData()\n }\n },\n { immediate: true },\n )\n\n function onMessage(event: MessageEvent) {\n if (event.data?.type !== 'mcp-oauth-complete') {\n return\n }\n if (event.data.mcpServerId !== connectionData.value?.mcpServerId) {\n return\n }\n window.removeEventListener('message', onMessage)\n if (event.data.success) {\n oauthCompleted.value = true\n emit('connected', event.data.mcpServerId)\n } else {\n oauthError.value = event.data.error ?? 'Unknown error'\n }\n }\n\n function openAuthWindow() {\n if (!connectionData.value?.authorizeUrl) {\n return\n }\n window.addEventListener('message', onMessage)\n window.open(\n connectionData.value.authorizeUrl,\n 'mcp_oauth',\n 'width=600,height=700',\n )\n }\n\n onUnmounted(() => {\n window.removeEventListener('message', onMessage)\n })\n</script>\n\n<template>\n <div\n class=\"flex flex-col gap-8 border border-surface-3 rounded-xl px-sm py-10 text-12\">\n <!-- Loading state -->\n <template v-if=\"isResolving\">\n <div class=\"flex items-center gap-8 text-word-3\">\n <VvIcon name=\"line-md:loading-loop\" />\n <span class=\"text-10\">{{\n $t('messagePart.requestOAuthConnection')\n }}</span>\n </div>\n </template>\n\n <!-- Connected successfully -->\n <template v-else-if=\"oauthCompleted\">\n <div class=\"flex items-center gap-sm\">\n <VvIcon\n name=\"ri:checkbox-circle-line\"\n class=\"text-24 text-success\" />\n <strong class=\"font-semibold text-word-3\">\n {{\n $t('messagePart.requestOAuthConnectionSuccess', {\n name: serverName,\n })\n }}\n </strong>\n </div>\n </template>\n\n <!-- OAuth error -->\n <template v-else-if=\"oauthError\">\n <div class=\"flex items-center gap-sm\">\n <VvIcon name=\"ri:alert-line\" class=\"text-24 text-danger\" />\n <strong class=\"font-semibold text-word-3\">\n {{ oauthError }}\n </strong>\n </div>\n </template>\n\n <!-- Call ready — show connect button -->\n <template v-else-if=\"connectionData\">\n <div class=\"flex items-center gap-6 text-word-3 mb-xs\">\n <VvIcon name=\"ri:link-m\" class=\"text-16 shrink-0\" />\n <span>\n {{\n $t('messagePart.requestOAuthConnectionPrompt', {\n name: serverName,\n })\n }}\n </span>\n </div>\n <VvButton\n modifiers=\"action\"\n icon=\"ri:external-link-line\"\n :label=\"\n $t('messagePart.requestOAuthConnectionButton', {\n name: serverName,\n })\n \"\n @click=\"openAuthWindow\" />\n </template>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;EAII,IAAM,IAAQ,GAOR,IAAO,GAIP,EAAE,GAAG,MAAO,EAAQ,EAAE,UAAU,SAAS,CAAC,GAE1C,IAAW,QACN,EAAM,IAKhB,GAEK,IAAQ,QAAe,EAAS,MAAM,SAAS,SAAS,GACxD,IAAa,QAAe,EAAS,MAAM,OAAO,UAAU,GAE5D,IAAiB,EAGb,IAAI,GACR,IAAc,EAAI,EAAK,GACvB,IAAiB,EAAI,EAAK,GAC1B,IAAa,EAAmB,IAAI;EAE1C,eAAe,IAAwB;GAC/B,OAAC,EAAW,SAAS,EAAe,SAAS,EAAY,QAG7D;MAAY,QAAQ;IACpB,IAAI;KACA,EAAe,QAAQ,MAAM,EAAM,kBAC/B,EAAW,KACf;IACJ,SAAS,GAAK;KACV,EAAW,QACP,aAAe,QAAQ,EAAI,UAAU;IAC7C,UAAU;KACN,EAAY,QAAQ;IACxB;GAVoB;EAWxB;EAEA,QACU,EAAM,UAAU,qBAAqB,EAAW,QACrD,MAAU;GACP,AAAI,KACA,EAAsB;EAE9B,GACA,EAAE,WAAW,GAAK,CACtB;EAEA,SAAS,EAAU,GAAqB;GAChC,EAAM,MAAM,SAAS,wBAGrB,EAAM,KAAK,gBAAgB,EAAe,OAAO,gBAGrD,OAAO,oBAAoB,WAAW,CAAS,GAC3C,EAAM,KAAK,WACX,EAAe,QAAQ,IACvB,EAAK,aAAa,EAAM,KAAK,WAAW,KAExC,EAAW,QAAQ,EAAM,KAAK,SAAS;EAE/C;EAEA,SAAS,IAAiB;GACjB,EAAe,OAAO,iBAG3B,OAAO,iBAAiB,WAAW,CAAS,GAC5C,OAAO,KACH,EAAe,MAAM,cACrB,aACA,sBACJ;EACJ;SAEA,QAAkB;GACd,OAAO,oBAAoB,WAAW,CAAS;EACnD,CAAC;;eAID,EA4DM,OA5DN,GA4DM,CAzDc,EAAA,SAAA,EAAA,GACZ,EAKM,OALN,GAKM,CAJF,EAAsC,GAAA,EAA9B,MAAK,uBAAsB,CAAA,GACnC,EAES,QAFT,GAES,EADL,EAAA,CAAA,EAAE,oCAAA,CAAA,GAAA,CAAA,CAAA,CAAA,KAMO,EAAA,SAAA,EAAA,GACjB,EAWM,OAXN,GAWM,CAVF,EAEmC,GAAA;IAD/B,MAAK;IACL,OAAM;OACV,EAMS,UANT,GAMS,EAJD,EAAA,CAAA,EAAE,6CAAA,EAAA,MAAkF,EAAA,MAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,KAS/E,EAAA,SAAA,EAAA,GACjB,EAKM,OALN,GAKM,CAJF,EAA2D,GAAA;IAAnD,MAAK;IAAgB,OAAM;OACnC,EAES,UAFT,GAES,EADF,EAAA,KAAU,GAAA,CAAA,CAAA,CAAA,KAMJ,EAAA,SAAA,EAAA,GAArB,EAoBW,GAAA,EAAA,KAAA,EAAA,GAAA,CAnBP,EASM,OATN,GASM,CARF,EAAoD,GAAA;IAA5C,MAAK;IAAY,OAAM;OAC/B,EAMO,QAAA,MAAA,EAJC,EAAA,CAAA,EAAE,4CAAA,EAAA,MAAiF,EAAA,MAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,GAM/F,EAQ8B,GAAA;IAP1B,WAAU;IACV,MAAK;IACJ,OAA4B,EAAA,CAAA,EAAE,4CAAA,EAAA,MAA6E,EAAA,MAAA,CAAA;IAK3G,SAAO"}
|
|
1
|
+
{"version":3,"file":"PkToolRequestOAuthConnection-CCVLUbiX.js","names":[],"sources":["../../../../packages/components/src/chat/PkToolRequestOAuthConnection.vue","../../../../packages/components/src/chat/PkToolRequestOAuthConnection.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed, onUnmounted, ref, watch } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n const props = defineProps<{\n part: unknown\n resolveConnection: (\n serverName: string,\n ) => Promise<{ mcpServerId: string; authorizeUrl: string }>\n }>()\n\n const emit = defineEmits<{\n connected: [mcpServerId: string]\n }>()\n\n const { t: $t } = useI18n({ useScope: 'global' })\n\n const toolPart = computed(() => {\n return props.part as {\n state?: string\n toolCallId?: string\n input?: { serverName: string }\n }\n })\n\n const state = computed(() => toolPart.value.state ?? 'unknown')\n const serverName = computed(() => toolPart.value.input?.serverName)\n\n const connectionData = ref<{\n mcpServerId: string\n authorizeUrl: string\n } | null>(null)\n const isResolving = ref(false)\n const oauthCompleted = ref(false)\n const oauthError = ref<string | null>(null)\n\n async function resolveConnectionData() {\n if (!serverName.value || connectionData.value || isResolving.value) {\n return\n }\n isResolving.value = true\n try {\n connectionData.value = await props.resolveConnection(\n serverName.value,\n )\n } catch (err) {\n oauthError.value =\n err instanceof Error ? err.message : 'Failed to resolve OAuth'\n } finally {\n isResolving.value = false\n }\n }\n\n watch(\n () => state.value === 'input-available' && serverName.value,\n (ready) => {\n if (ready) {\n resolveConnectionData()\n }\n },\n { immediate: true },\n )\n\n function onMessage(event: MessageEvent) {\n if (event.data?.type !== 'mcp-oauth-complete') {\n return\n }\n if (event.data.mcpServerId !== connectionData.value?.mcpServerId) {\n return\n }\n window.removeEventListener('message', onMessage)\n if (event.data.success) {\n oauthCompleted.value = true\n emit('connected', event.data.mcpServerId)\n } else {\n oauthError.value = event.data.error ?? 'Unknown error'\n }\n }\n\n function openAuthWindow() {\n if (!connectionData.value?.authorizeUrl) {\n return\n }\n window.addEventListener('message', onMessage)\n window.open(\n connectionData.value.authorizeUrl,\n 'mcp_oauth',\n 'width=600,height=700',\n )\n }\n\n onUnmounted(() => {\n window.removeEventListener('message', onMessage)\n })\n</script>\n\n<template>\n <div\n class=\"flex flex-col gap-8 border border-surface-3 rounded-xl px-sm py-10 text-12\">\n <!-- Loading state -->\n <template v-if=\"isResolving\">\n <div class=\"flex items-center gap-8 text-word-3\">\n <VvIcon name=\"line-md:loading-loop\" />\n <span class=\"text-10\">{{\n $t('messagePart.requestOAuthConnection')\n }}</span>\n </div>\n </template>\n\n <!-- Connected successfully -->\n <template v-else-if=\"oauthCompleted\">\n <div class=\"flex items-center gap-sm\">\n <VvIcon\n name=\"ri:checkbox-circle-line\"\n class=\"text-24 text-success\" />\n <strong class=\"font-semibold text-word-3\">\n {{\n $t('messagePart.requestOAuthConnectionSuccess', {\n name: serverName,\n })\n }}\n </strong>\n </div>\n </template>\n\n <!-- OAuth error -->\n <template v-else-if=\"oauthError\">\n <div class=\"flex items-center gap-sm\">\n <VvIcon name=\"ri:alert-line\" class=\"text-24 text-danger\" />\n <strong class=\"font-semibold text-word-3\">\n {{ oauthError }}\n </strong>\n </div>\n </template>\n\n <!-- Call ready — show connect button -->\n <template v-else-if=\"connectionData\">\n <div class=\"flex items-center gap-6 text-word-3 mb-xs\">\n <VvIcon name=\"ri:link-m\" class=\"text-16 shrink-0\" />\n <span>\n {{\n $t('messagePart.requestOAuthConnectionPrompt', {\n name: serverName,\n })\n }}\n </span>\n </div>\n <VvButton\n modifiers=\"action\"\n icon=\"ri:external-link-line\"\n :label=\"\n $t('messagePart.requestOAuthConnectionButton', {\n name: serverName,\n })\n \"\n @click=\"openAuthWindow\" />\n </template>\n </div>\n</template>\n","<script setup lang=\"ts\">\n import { computed, onUnmounted, ref, watch } from 'vue'\n import { useI18n } from 'vue-i18n'\n\n const props = defineProps<{\n part: unknown\n resolveConnection: (\n serverName: string,\n ) => Promise<{ mcpServerId: string; authorizeUrl: string }>\n }>()\n\n const emit = defineEmits<{\n connected: [mcpServerId: string]\n }>()\n\n const { t: $t } = useI18n({ useScope: 'global' })\n\n const toolPart = computed(() => {\n return props.part as {\n state?: string\n toolCallId?: string\n input?: { serverName: string }\n }\n })\n\n const state = computed(() => toolPart.value.state ?? 'unknown')\n const serverName = computed(() => toolPart.value.input?.serverName)\n\n const connectionData = ref<{\n mcpServerId: string\n authorizeUrl: string\n } | null>(null)\n const isResolving = ref(false)\n const oauthCompleted = ref(false)\n const oauthError = ref<string | null>(null)\n\n async function resolveConnectionData() {\n if (!serverName.value || connectionData.value || isResolving.value) {\n return\n }\n isResolving.value = true\n try {\n connectionData.value = await props.resolveConnection(\n serverName.value,\n )\n } catch (err) {\n oauthError.value =\n err instanceof Error ? err.message : 'Failed to resolve OAuth'\n } finally {\n isResolving.value = false\n }\n }\n\n watch(\n () => state.value === 'input-available' && serverName.value,\n (ready) => {\n if (ready) {\n resolveConnectionData()\n }\n },\n { immediate: true },\n )\n\n function onMessage(event: MessageEvent) {\n if (event.data?.type !== 'mcp-oauth-complete') {\n return\n }\n if (event.data.mcpServerId !== connectionData.value?.mcpServerId) {\n return\n }\n window.removeEventListener('message', onMessage)\n if (event.data.success) {\n oauthCompleted.value = true\n emit('connected', event.data.mcpServerId)\n } else {\n oauthError.value = event.data.error ?? 'Unknown error'\n }\n }\n\n function openAuthWindow() {\n if (!connectionData.value?.authorizeUrl) {\n return\n }\n window.addEventListener('message', onMessage)\n window.open(\n connectionData.value.authorizeUrl,\n 'mcp_oauth',\n 'width=600,height=700',\n )\n }\n\n onUnmounted(() => {\n window.removeEventListener('message', onMessage)\n })\n</script>\n\n<template>\n <div\n class=\"flex flex-col gap-8 border border-surface-3 rounded-xl px-sm py-10 text-12\">\n <!-- Loading state -->\n <template v-if=\"isResolving\">\n <div class=\"flex items-center gap-8 text-word-3\">\n <VvIcon name=\"line-md:loading-loop\" />\n <span class=\"text-10\">{{\n $t('messagePart.requestOAuthConnection')\n }}</span>\n </div>\n </template>\n\n <!-- Connected successfully -->\n <template v-else-if=\"oauthCompleted\">\n <div class=\"flex items-center gap-sm\">\n <VvIcon\n name=\"ri:checkbox-circle-line\"\n class=\"text-24 text-success\" />\n <strong class=\"font-semibold text-word-3\">\n {{\n $t('messagePart.requestOAuthConnectionSuccess', {\n name: serverName,\n })\n }}\n </strong>\n </div>\n </template>\n\n <!-- OAuth error -->\n <template v-else-if=\"oauthError\">\n <div class=\"flex items-center gap-sm\">\n <VvIcon name=\"ri:alert-line\" class=\"text-24 text-danger\" />\n <strong class=\"font-semibold text-word-3\">\n {{ oauthError }}\n </strong>\n </div>\n </template>\n\n <!-- Call ready — show connect button -->\n <template v-else-if=\"connectionData\">\n <div class=\"flex items-center gap-6 text-word-3 mb-xs\">\n <VvIcon name=\"ri:link-m\" class=\"text-16 shrink-0\" />\n <span>\n {{\n $t('messagePart.requestOAuthConnectionPrompt', {\n name: serverName,\n })\n }}\n </span>\n </div>\n <VvButton\n modifiers=\"action\"\n icon=\"ri:external-link-line\"\n :label=\"\n $t('messagePart.requestOAuthConnectionButton', {\n name: serverName,\n })\n \"\n @click=\"openAuthWindow\" />\n </template>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;EAII,IAAM,IAAQ,GAOR,IAAO,GAIP,EAAE,GAAG,MAAO,EAAQ,EAAE,UAAU,SAAS,CAAC,GAE1C,IAAW,QACN,EAAM,IAKhB,GAEK,IAAQ,QAAe,EAAS,MAAM,SAAS,SAAS,GACxD,IAAa,QAAe,EAAS,MAAM,OAAO,UAAU,GAE5D,IAAiB,EAGb,IAAI,GACR,IAAc,EAAI,EAAK,GACvB,IAAiB,EAAI,EAAK,GAC1B,IAAa,EAAmB,IAAI;EAE1C,eAAe,IAAwB;GAC/B,OAAC,EAAW,SAAS,EAAe,SAAS,EAAY,QAG7D;MAAY,QAAQ;IACpB,IAAI;KACA,EAAe,QAAQ,MAAM,EAAM,kBAC/B,EAAW,KACf;IACJ,SAAS,GAAK;KACV,EAAW,QACP,aAAe,QAAQ,EAAI,UAAU;IAC7C,UAAU;KACN,EAAY,QAAQ;IACxB;GAVoB;EAWxB;EAEA,QACU,EAAM,UAAU,qBAAqB,EAAW,QACrD,MAAU;GACP,AAAI,KACA,EAAsB;EAE9B,GACA,EAAE,WAAW,GAAK,CACtB;EAEA,SAAS,EAAU,GAAqB;GAChC,EAAM,MAAM,SAAS,wBAGrB,EAAM,KAAK,gBAAgB,EAAe,OAAO,gBAGrD,OAAO,oBAAoB,WAAW,CAAS,GAC3C,EAAM,KAAK,WACX,EAAe,QAAQ,IACvB,EAAK,aAAa,EAAM,KAAK,WAAW,KAExC,EAAW,QAAQ,EAAM,KAAK,SAAS;EAE/C;EAEA,SAAS,IAAiB;GACjB,EAAe,OAAO,iBAG3B,OAAO,iBAAiB,WAAW,CAAS,GAC5C,OAAO,KACH,EAAe,MAAM,cACrB,aACA,sBACJ;EACJ;SAEA,QAAkB;GACd,OAAO,oBAAoB,WAAW,CAAS;EACnD,CAAC;;eAID,EA4DM,OA5DN,GA4DM,CAzDc,EAAA,SAAA,EAAA,GACZ,EAKM,OALN,GAKM,CAJF,EAAsC,GAAA,EAA9B,MAAK,uBAAsB,CAAA,GACnC,EAES,QAFT,GAES,EADL,EAAA,CAAA,EAAE,oCAAA,CAAA,GAAA,CAAA,CAAA,CAAA,KAMO,EAAA,SAAA,EAAA,GACjB,EAWM,OAXN,GAWM,CAVF,EAEmC,GAAA;IAD/B,MAAK;IACL,OAAM;OACV,EAMS,UANT,GAMS,EAJD,EAAA,CAAA,EAAE,6CAAA,EAAA,MAAkF,EAAA,MAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,KAS/E,EAAA,SAAA,EAAA,GACjB,EAKM,OALN,GAKM,CAJF,EAA2D,GAAA;IAAnD,MAAK;IAAgB,OAAM;OACnC,EAES,UAFT,GAES,EADF,EAAA,KAAU,GAAA,CAAA,CAAA,CAAA,KAMJ,EAAA,SAAA,EAAA,GAArB,EAoBW,GAAA,EAAA,KAAA,EAAA,GAAA,CAnBP,EASM,OATN,GASM,CARF,EAAoD,GAAA;IAA5C,MAAK;IAAY,OAAM;OAC/B,EAMO,QAAA,MAAA,EAJC,EAAA,CAAA,EAAE,4CAAA,EAAA,MAAiF,EAAA,MAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,GAM/F,EAQ8B,GAAA;IAP1B,WAAU;IACV,MAAK;IACJ,OAA4B,EAAA,CAAA,EAAE,4CAAA,EAAA,MAA6E,EAAA,MAAA,CAAA;IAK3G,SAAO"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { o as e } from "./useChatbotStore-
|
|
2
|
-
import { t } from "./PkStreamingMarkdown-
|
|
1
|
+
import { o as e } from "./useChatbotStore-DE8leYO8.js";
|
|
2
|
+
import { t } from "./PkStreamingMarkdown-BUiAi-qv.js";
|
|
3
3
|
import { VvButton as n } from "@volverjs/ui-vue/components";
|
|
4
4
|
import { computed as r, createBlock as i, createElementBlock as a, createElementVNode as o, createTextVNode as s, createVNode as c, defineComponent as l, normalizeClass as u, openBlock as d, ref as f, toDisplayString as p, unref as m, watch as h } from "vue";
|
|
5
5
|
import { useClipboard as g } from "@vueuse/core";
|
|
@@ -88,4 +88,4 @@ var _ = ["innerHTML"], v = /* @__PURE__ */ l({
|
|
|
88
88
|
//#endregion
|
|
89
89
|
export { T as n, v as r, E as t };
|
|
90
90
|
|
|
91
|
-
//# sourceMappingURL=PkToolShowArtifact-
|
|
91
|
+
//# sourceMappingURL=PkToolShowArtifact-B13M7nEV.js.map
|
package/dist-vue/_chunks/{PkToolShowArtifact-LwE9r0Dz.js.map → PkToolShowArtifact-B13M7nEV.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PkToolShowArtifact-LwE9r0Dz.js","names":["$attrs","$t"],"sources":["../../../../packages/components/src/chat/PkCode.vue","../../../../packages/components/src/chat/PkCode.vue","../../../../packages/components/src/chat/PkToolShowArtifact.vue","../../../../packages/components/src/chat/PkToolShowArtifact.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed, ref, watch } from 'vue'\n\n defineOptions({\n inheritAttrs: false,\n })\n\n const props = defineProps<{\n code: unknown\n language: string\n line?: boolean\n }>()\n\n const highlightedHtml = ref('')\n\n const hasCode = computed(() => {\n if (typeof props.code === 'string') {\n return props.code\n }\n return JSON.stringify(props.code, null, 2)\n })\n\n async function highlight() {\n const hljs = (await import('highlight.js/lib/common')).default\n try {\n const result = props.language\n ? hljs.highlight(hasCode.value, { language: props.language })\n : hljs.highlightAuto(hasCode.value)\n highlightedHtml.value = result.value\n } catch {\n highlightedHtml.value = hasCode.value\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n }\n }\n\n watch(hasCode, highlight, { immediate: true })\n</script>\n\n<template>\n <pre\n :class=\"\n $attrs.class\n ? $attrs.class\n : 'font-mono leading-snug text-smaller bg-surface-1'\n \">\n <code :class=\"['hljs', line ? 'whitespace-pre-line' : 'whitespace-pre', language]\" v-html=\"highlightedHtml\"></code>\n </pre>\n</template>\n","<script setup lang=\"ts\">\n import { computed, ref, watch } from 'vue'\n\n defineOptions({\n inheritAttrs: false,\n })\n\n const props = defineProps<{\n code: unknown\n language: string\n line?: boolean\n }>()\n\n const highlightedHtml = ref('')\n\n const hasCode = computed(() => {\n if (typeof props.code === 'string') {\n return props.code\n }\n return JSON.stringify(props.code, null, 2)\n })\n\n async function highlight() {\n const hljs = (await import('highlight.js/lib/common')).default\n try {\n const result = props.language\n ? hljs.highlight(hasCode.value, { language: props.language })\n : hljs.highlightAuto(hasCode.value)\n highlightedHtml.value = result.value\n } catch {\n highlightedHtml.value = hasCode.value\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n }\n }\n\n watch(hasCode, highlight, { immediate: true })\n</script>\n\n<template>\n <pre\n :class=\"\n $attrs.class\n ? $attrs.class\n : 'font-mono leading-snug text-smaller bg-surface-1'\n \">\n <code :class=\"['hljs', line ? 'whitespace-pre-line' : 'whitespace-pre', language]\" v-html=\"highlightedHtml\"></code>\n </pre>\n</template>\n","<script setup lang=\"ts\">\n import { computed } from 'vue'\n import { useClipboard } from '@vueuse/core'\n import PkCode from './PkCode.vue'\n import PkStreamingMarkdown from './PkStreamingMarkdown.vue'\n\n const { copy, copied } = useClipboard()\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const toolPart = computed(() => {\n const part = props.part as {\n input?: {\n title: string\n content: string\n artifactType: string\n language?: string\n }\n }\n return part\n })\n\n const artifactTypeLabel = computed(() => {\n const labels: Record<string, string> = {\n code: 'Code',\n document: 'Document',\n markdown: 'Markdown',\n json: 'JSON',\n xml: 'XML',\n csv: 'CSV',\n html: 'HTML',\n yaml: 'YAML',\n sql: 'SQL',\n text: 'Text',\n }\n if (!toolPart.value.input?.artifactType) {\n return 'Artifact'\n }\n return labels[toolPart.value.input.artifactType] || 'Artifact'\n })\n\n const languageLabel = computed(() => {\n if (!toolPart.value.input?.language) {\n return ''\n }\n return ` (${toolPart.value.input.language})`\n })\n\n const isCodeType = computed(() => {\n return (\n toolPart.value.input?.artifactType === 'code' ||\n toolPart.value.input?.artifactType === 'json' ||\n toolPart.value.input?.artifactType === 'xml' ||\n toolPart.value.input?.artifactType === 'yaml' ||\n toolPart.value.input?.artifactType === 'html' ||\n toolPart.value.input?.artifactType === 'sql'\n )\n })\n\n const isMarkdownType = computed(() => {\n return toolPart.value.input?.artifactType === 'markdown'\n })\n\n const codeLanguage = computed(() => {\n if (toolPart.value.input?.language) {\n return toolPart.value.input.language\n }\n // Map artifact types to highlight.js languages\n const languageMap: Record<string, string> = {\n json: 'json',\n xml: 'xml',\n yaml: 'yaml',\n html: 'html',\n sql: 'sql',\n }\n if (!toolPart.value.input?.artifactType) {\n return 'plaintext'\n }\n return languageMap[toolPart.value.input.artifactType] || 'plaintext'\n })\n</script>\n\n<template>\n <div class=\"border border-surface-3 rounded-xl w-full overflow-hidden\">\n <div\n class=\"px-sm py-6 font-bold bg-surface-1 text-12 border-b border-surface-3 text-word-3 flex justify-between items-center\">\n <div class=\"flex flex-col items-start gap-4\">\n <span>{{ toolPart?.input?.title }}</span>\n <span class=\"text-10 opacity-60 font-normal\">\n {{ artifactTypeLabel }}{{ languageLabel }}\n </span>\n </div>\n <VvButton\n :icon=\"copied ? 'ri:check-line' : 'ri:file-copy-line'\"\n :label=\"copied ? $t('action.copied') : $t('action.copy')\"\n modifiers=\"action-quiet-small\"\n :title=\"$t('action.copy')\"\n class=\"shrink-0\"\n @click=\"copy(toolPart?.input?.content || '')\" />\n </div>\n <div class=\"px-sm py-10\">\n <PkCode\n v-if=\"isCodeType\"\n :code=\"toolPart?.input?.content\"\n :language=\"codeLanguage\" />\n <PkStreamingMarkdown\n v-else-if=\"isMarkdownType\"\n :markdown=\"toolPart?.input?.content\"\n class=\"wysiwyg text-word-2\" />\n <pre\n v-else\n class=\"text-word-2 whitespace-pre-wrap break-words\"\n :class=\"{\n italic:\n toolPart?.input?.artifactType === 'document' ||\n toolPart?.input?.artifactType === 'text',\n }\"\n >{{ toolPart?.input?.content }}</pre\n >\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\n import { computed } from 'vue'\n import { useClipboard } from '@vueuse/core'\n import PkCode from './PkCode.vue'\n import PkStreamingMarkdown from './PkStreamingMarkdown.vue'\n\n const { copy, copied } = useClipboard()\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const toolPart = computed(() => {\n const part = props.part as {\n input?: {\n title: string\n content: string\n artifactType: string\n language?: string\n }\n }\n return part\n })\n\n const artifactTypeLabel = computed(() => {\n const labels: Record<string, string> = {\n code: 'Code',\n document: 'Document',\n markdown: 'Markdown',\n json: 'JSON',\n xml: 'XML',\n csv: 'CSV',\n html: 'HTML',\n yaml: 'YAML',\n sql: 'SQL',\n text: 'Text',\n }\n if (!toolPart.value.input?.artifactType) {\n return 'Artifact'\n }\n return labels[toolPart.value.input.artifactType] || 'Artifact'\n })\n\n const languageLabel = computed(() => {\n if (!toolPart.value.input?.language) {\n return ''\n }\n return ` (${toolPart.value.input.language})`\n })\n\n const isCodeType = computed(() => {\n return (\n toolPart.value.input?.artifactType === 'code' ||\n toolPart.value.input?.artifactType === 'json' ||\n toolPart.value.input?.artifactType === 'xml' ||\n toolPart.value.input?.artifactType === 'yaml' ||\n toolPart.value.input?.artifactType === 'html' ||\n toolPart.value.input?.artifactType === 'sql'\n )\n })\n\n const isMarkdownType = computed(() => {\n return toolPart.value.input?.artifactType === 'markdown'\n })\n\n const codeLanguage = computed(() => {\n if (toolPart.value.input?.language) {\n return toolPart.value.input.language\n }\n // Map artifact types to highlight.js languages\n const languageMap: Record<string, string> = {\n json: 'json',\n xml: 'xml',\n yaml: 'yaml',\n html: 'html',\n sql: 'sql',\n }\n if (!toolPart.value.input?.artifactType) {\n return 'plaintext'\n }\n return languageMap[toolPart.value.input.artifactType] || 'plaintext'\n })\n</script>\n\n<template>\n <div class=\"border border-surface-3 rounded-xl w-full overflow-hidden\">\n <div\n class=\"px-sm py-6 font-bold bg-surface-1 text-12 border-b border-surface-3 text-word-3 flex justify-between items-center\">\n <div class=\"flex flex-col items-start gap-4\">\n <span>{{ toolPart?.input?.title }}</span>\n <span class=\"text-10 opacity-60 font-normal\">\n {{ artifactTypeLabel }}{{ languageLabel }}\n </span>\n </div>\n <VvButton\n :icon=\"copied ? 'ri:check-line' : 'ri:file-copy-line'\"\n :label=\"copied ? $t('action.copied') : $t('action.copy')\"\n modifiers=\"action-quiet-small\"\n :title=\"$t('action.copy')\"\n class=\"shrink-0\"\n @click=\"copy(toolPart?.input?.content || '')\" />\n </div>\n <div class=\"px-sm py-10\">\n <PkCode\n v-if=\"isCodeType\"\n :code=\"toolPart?.input?.content\"\n :language=\"codeLanguage\" />\n <PkStreamingMarkdown\n v-else-if=\"isMarkdownType\"\n :markdown=\"toolPart?.input?.content\"\n class=\"wysiwyg text-word-2\" />\n <pre\n v-else\n class=\"text-word-2 whitespace-pre-wrap break-words\"\n :class=\"{\n italic:\n toolPart?.input?.artifactType === 'document' ||\n toolPart?.input?.artifactType === 'text',\n }\"\n >{{ toolPart?.input?.content }}</pre\n >\n </div>\n </div>\n</template>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PkToolShowArtifact-B13M7nEV.js","names":["$attrs","$t"],"sources":["../../../../packages/components/src/chat/PkCode.vue","../../../../packages/components/src/chat/PkCode.vue","../../../../packages/components/src/chat/PkToolShowArtifact.vue","../../../../packages/components/src/chat/PkToolShowArtifact.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed, ref, watch } from 'vue'\n\n defineOptions({\n inheritAttrs: false,\n })\n\n const props = defineProps<{\n code: unknown\n language: string\n line?: boolean\n }>()\n\n const highlightedHtml = ref('')\n\n const hasCode = computed(() => {\n if (typeof props.code === 'string') {\n return props.code\n }\n return JSON.stringify(props.code, null, 2)\n })\n\n async function highlight() {\n const hljs = (await import('highlight.js/lib/common')).default\n try {\n const result = props.language\n ? hljs.highlight(hasCode.value, { language: props.language })\n : hljs.highlightAuto(hasCode.value)\n highlightedHtml.value = result.value\n } catch {\n highlightedHtml.value = hasCode.value\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n }\n }\n\n watch(hasCode, highlight, { immediate: true })\n</script>\n\n<template>\n <pre\n :class=\"\n $attrs.class\n ? $attrs.class\n : 'font-mono leading-snug text-smaller bg-surface-1'\n \">\n <code :class=\"['hljs', line ? 'whitespace-pre-line' : 'whitespace-pre', language]\" v-html=\"highlightedHtml\"></code>\n </pre>\n</template>\n","<script setup lang=\"ts\">\n import { computed, ref, watch } from 'vue'\n\n defineOptions({\n inheritAttrs: false,\n })\n\n const props = defineProps<{\n code: unknown\n language: string\n line?: boolean\n }>()\n\n const highlightedHtml = ref('')\n\n const hasCode = computed(() => {\n if (typeof props.code === 'string') {\n return props.code\n }\n return JSON.stringify(props.code, null, 2)\n })\n\n async function highlight() {\n const hljs = (await import('highlight.js/lib/common')).default\n try {\n const result = props.language\n ? hljs.highlight(hasCode.value, { language: props.language })\n : hljs.highlightAuto(hasCode.value)\n highlightedHtml.value = result.value\n } catch {\n highlightedHtml.value = hasCode.value\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n }\n }\n\n watch(hasCode, highlight, { immediate: true })\n</script>\n\n<template>\n <pre\n :class=\"\n $attrs.class\n ? $attrs.class\n : 'font-mono leading-snug text-smaller bg-surface-1'\n \">\n <code :class=\"['hljs', line ? 'whitespace-pre-line' : 'whitespace-pre', language]\" v-html=\"highlightedHtml\"></code>\n </pre>\n</template>\n","<script setup lang=\"ts\">\n import { computed } from 'vue'\n import { useClipboard } from '@vueuse/core'\n import PkCode from './PkCode.vue'\n import PkStreamingMarkdown from './PkStreamingMarkdown.vue'\n\n const { copy, copied } = useClipboard()\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const toolPart = computed(() => {\n const part = props.part as {\n input?: {\n title: string\n content: string\n artifactType: string\n language?: string\n }\n }\n return part\n })\n\n const artifactTypeLabel = computed(() => {\n const labels: Record<string, string> = {\n code: 'Code',\n document: 'Document',\n markdown: 'Markdown',\n json: 'JSON',\n xml: 'XML',\n csv: 'CSV',\n html: 'HTML',\n yaml: 'YAML',\n sql: 'SQL',\n text: 'Text',\n }\n if (!toolPart.value.input?.artifactType) {\n return 'Artifact'\n }\n return labels[toolPart.value.input.artifactType] || 'Artifact'\n })\n\n const languageLabel = computed(() => {\n if (!toolPart.value.input?.language) {\n return ''\n }\n return ` (${toolPart.value.input.language})`\n })\n\n const isCodeType = computed(() => {\n return (\n toolPart.value.input?.artifactType === 'code' ||\n toolPart.value.input?.artifactType === 'json' ||\n toolPart.value.input?.artifactType === 'xml' ||\n toolPart.value.input?.artifactType === 'yaml' ||\n toolPart.value.input?.artifactType === 'html' ||\n toolPart.value.input?.artifactType === 'sql'\n )\n })\n\n const isMarkdownType = computed(() => {\n return toolPart.value.input?.artifactType === 'markdown'\n })\n\n const codeLanguage = computed(() => {\n if (toolPart.value.input?.language) {\n return toolPart.value.input.language\n }\n // Map artifact types to highlight.js languages\n const languageMap: Record<string, string> = {\n json: 'json',\n xml: 'xml',\n yaml: 'yaml',\n html: 'html',\n sql: 'sql',\n }\n if (!toolPart.value.input?.artifactType) {\n return 'plaintext'\n }\n return languageMap[toolPart.value.input.artifactType] || 'plaintext'\n })\n</script>\n\n<template>\n <div class=\"border border-surface-3 rounded-xl w-full overflow-hidden\">\n <div\n class=\"px-sm py-6 font-bold bg-surface-1 text-12 border-b border-surface-3 text-word-3 flex justify-between items-center\">\n <div class=\"flex flex-col items-start gap-4\">\n <span>{{ toolPart?.input?.title }}</span>\n <span class=\"text-10 opacity-60 font-normal\">\n {{ artifactTypeLabel }}{{ languageLabel }}\n </span>\n </div>\n <VvButton\n :icon=\"copied ? 'ri:check-line' : 'ri:file-copy-line'\"\n :label=\"copied ? $t('action.copied') : $t('action.copy')\"\n modifiers=\"action-quiet-small\"\n :title=\"$t('action.copy')\"\n class=\"shrink-0\"\n @click=\"copy(toolPart?.input?.content || '')\" />\n </div>\n <div class=\"px-sm py-10\">\n <PkCode\n v-if=\"isCodeType\"\n :code=\"toolPart?.input?.content\"\n :language=\"codeLanguage\" />\n <PkStreamingMarkdown\n v-else-if=\"isMarkdownType\"\n :markdown=\"toolPart?.input?.content\"\n class=\"wysiwyg text-word-2\" />\n <pre\n v-else\n class=\"text-word-2 whitespace-pre-wrap break-words\"\n :class=\"{\n italic:\n toolPart?.input?.artifactType === 'document' ||\n toolPart?.input?.artifactType === 'text',\n }\"\n >{{ toolPart?.input?.content }}</pre\n >\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\n import { computed } from 'vue'\n import { useClipboard } from '@vueuse/core'\n import PkCode from './PkCode.vue'\n import PkStreamingMarkdown from './PkStreamingMarkdown.vue'\n\n const { copy, copied } = useClipboard()\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const toolPart = computed(() => {\n const part = props.part as {\n input?: {\n title: string\n content: string\n artifactType: string\n language?: string\n }\n }\n return part\n })\n\n const artifactTypeLabel = computed(() => {\n const labels: Record<string, string> = {\n code: 'Code',\n document: 'Document',\n markdown: 'Markdown',\n json: 'JSON',\n xml: 'XML',\n csv: 'CSV',\n html: 'HTML',\n yaml: 'YAML',\n sql: 'SQL',\n text: 'Text',\n }\n if (!toolPart.value.input?.artifactType) {\n return 'Artifact'\n }\n return labels[toolPart.value.input.artifactType] || 'Artifact'\n })\n\n const languageLabel = computed(() => {\n if (!toolPart.value.input?.language) {\n return ''\n }\n return ` (${toolPart.value.input.language})`\n })\n\n const isCodeType = computed(() => {\n return (\n toolPart.value.input?.artifactType === 'code' ||\n toolPart.value.input?.artifactType === 'json' ||\n toolPart.value.input?.artifactType === 'xml' ||\n toolPart.value.input?.artifactType === 'yaml' ||\n toolPart.value.input?.artifactType === 'html' ||\n toolPart.value.input?.artifactType === 'sql'\n )\n })\n\n const isMarkdownType = computed(() => {\n return toolPart.value.input?.artifactType === 'markdown'\n })\n\n const codeLanguage = computed(() => {\n if (toolPart.value.input?.language) {\n return toolPart.value.input.language\n }\n // Map artifact types to highlight.js languages\n const languageMap: Record<string, string> = {\n json: 'json',\n xml: 'xml',\n yaml: 'yaml',\n html: 'html',\n sql: 'sql',\n }\n if (!toolPart.value.input?.artifactType) {\n return 'plaintext'\n }\n return languageMap[toolPart.value.input.artifactType] || 'plaintext'\n })\n</script>\n\n<template>\n <div class=\"border border-surface-3 rounded-xl w-full overflow-hidden\">\n <div\n class=\"px-sm py-6 font-bold bg-surface-1 text-12 border-b border-surface-3 text-word-3 flex justify-between items-center\">\n <div class=\"flex flex-col items-start gap-4\">\n <span>{{ toolPart?.input?.title }}</span>\n <span class=\"text-10 opacity-60 font-normal\">\n {{ artifactTypeLabel }}{{ languageLabel }}\n </span>\n </div>\n <VvButton\n :icon=\"copied ? 'ri:check-line' : 'ri:file-copy-line'\"\n :label=\"copied ? $t('action.copied') : $t('action.copy')\"\n modifiers=\"action-quiet-small\"\n :title=\"$t('action.copy')\"\n class=\"shrink-0\"\n @click=\"copy(toolPart?.input?.content || '')\" />\n </div>\n <div class=\"px-sm py-10\">\n <PkCode\n v-if=\"isCodeType\"\n :code=\"toolPart?.input?.content\"\n :language=\"codeLanguage\" />\n <PkStreamingMarkdown\n v-else-if=\"isMarkdownType\"\n :markdown=\"toolPart?.input?.content\"\n class=\"wysiwyg text-word-2\" />\n <pre\n v-else\n class=\"text-word-2 whitespace-pre-wrap break-words\"\n :class=\"{\n italic:\n toolPart?.input?.artifactType === 'document' ||\n toolPart?.input?.artifactType === 'text',\n }\"\n >{{ toolPart?.input?.content }}</pre\n >\n </div>\n </div>\n</template>\n"],"mappings":"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"}
|
package/dist-vue/_chunks/{PkToolShowCalendarEvent-ze3jGmX5.js → PkToolShowCalendarEvent-BuTDY0xa.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { o as e } from "./useChatbotStore-
|
|
1
|
+
import { o as e } from "./useChatbotStore-DE8leYO8.js";
|
|
2
2
|
import { n as t } from "./src-EtGd6cRz.js";
|
|
3
3
|
import { VvButton as n, VvButtonGroup as r, VvDropdown as i, VvDropdownAction as a, VvIcon as o } from "@volverjs/ui-vue/components";
|
|
4
4
|
import { computed as s, createCommentVNode as c, createElementBlock as l, createElementVNode as u, createTextVNode as d, createVNode as f, defineComponent as p, guardReactiveProps as m, normalizeProps as h, openBlock as g, toDisplayString as _, unref as v, withCtx as y } from "vue";
|
|
@@ -144,4 +144,4 @@ var S = {
|
|
|
144
144
|
//#endregion
|
|
145
145
|
export { R as n, z as t };
|
|
146
146
|
|
|
147
|
-
//# sourceMappingURL=PkToolShowCalendarEvent-
|
|
147
|
+
//# sourceMappingURL=PkToolShowCalendarEvent-BuTDY0xa.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PkToolShowCalendarEvent-ze3jGmX5.js","names":["$t"],"sources":["../../../../packages/components/src/chat/PkToolShowCalendarEvent.vue","../../../../packages/components/src/chat/PkToolShowCalendarEvent.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed } from 'vue'\n import { useI18n } from 'vue-i18n'\n import { useClipboard } from '@vueuse/core'\n import { isSameSite } from 'utils'\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const { copy, copied } = useClipboard()\n const { d } = useI18n()\n\n const toolPart = computed(() => {\n const part = props.part as {\n input?: {\n title: string\n startDate: string\n endDate: string\n location?: string\n additionalInfo?: string\n allDay?: boolean\n }\n }\n return part\n })\n\n const dateDisplay = computed(() => {\n const input = toolPart.value.input\n if (!input) {\n return ''\n }\n const { startDate, endDate, allDay } = input\n const start = new Date(startDate)\n const end = new Date(endDate)\n const startDay = startDate.slice(0, 10)\n const endDay = endDate.slice(0, 10)\n if (allDay) {\n if (startDay === endDay) {\n return d(start, 'date-medium')\n }\n return `${d(start, 'date-medium')} - ${d(end, 'date-medium')}`\n }\n if (startDay === endDay) {\n return `${d(start, 'date-time-medium')} - ${d(end, 'time')}`\n }\n return `${d(start, 'date-time-medium')} - ${d(end, 'date-time-medium')}`\n })\n\n const calendarStart = computed(() =>\n toolPart.value.input ? new Date(toolPart.value.input.startDate) : null,\n )\n\n const calendarDay = computed(\n () => calendarStart.value?.getDate().toString() ?? '',\n )\n\n const calendarMonth = computed(() =>\n calendarStart.value ? d(calendarStart.value, 'month-short') : '',\n )\n\n // Floating time: remove dashes/colons without converting to UTC\n const toIcsDateTime = (iso: string) =>\n iso.replace(/[-:]/g, '').replace(/\\.\\d{3}$/, '')\n\n const escapeIcs = (str: string) =>\n str\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/;/g, '\\\\;')\n .replace(/,/g, '\\\\,')\n .replace(/\\n/g, '\\\\n')\n\n const generateIcs = () => {\n const input = toolPart.value.input\n if (!input) {\n return\n }\n const { title, startDate, endDate, location, additionalInfo } = input\n const ics = [\n 'BEGIN:VCALENDAR',\n 'VERSION:2.0',\n 'PRODID:-//8wave//8bot//EN',\n 'BEGIN:VEVENT',\n `DTSTART:${toIcsDateTime(startDate)}`,\n `DTEND:${toIcsDateTime(endDate)}`,\n `SUMMARY:${escapeIcs(title)}`,\n location ? `LOCATION:${escapeIcs(location)}` : '',\n additionalInfo ? `DESCRIPTION:${escapeIcs(additionalInfo)}` : '',\n `DTSTAMP:${new Date()\n .toISOString()\n .replace(/[-:]/g, '')\n .replace(/\\.\\d{3}/, '')}`,\n `UID:${crypto.randomUUID()}@8bot.ai`,\n 'END:VEVENT',\n 'END:VCALENDAR',\n ]\n .filter(Boolean)\n .join('\\r\\n')\n\n const blob = new Blob([ics], { type: 'text/calendar;charset=utf-8' })\n const url = URL.createObjectURL(blob)\n const a = document.createElement('a')\n a.href = url\n a.download = `${title.replace(/[^a-zA-Z0-9\\s-]/g, '')}.ics`\n a.click()\n URL.revokeObjectURL(url)\n }\n\n const openGoogleCalendar = () => {\n const input = toolPart.value.input\n if (!input) {\n return\n }\n const { title, startDate, endDate, location, additionalInfo } = input\n const start = toIcsDateTime(startDate)\n const end = toIcsDateTime(endDate)\n const params = new URLSearchParams({\n action: 'TEMPLATE',\n text: title,\n dates: `${start}/${end}`,\n })\n if (location) {\n params.set('location', location)\n }\n if (additionalInfo) {\n params.set('details', additionalInfo)\n }\n window.open(\n `https://calendar.google.com/calendar/render?${params.toString()}`,\n '_blank',\n )\n }\n\n const openOutlook = () => {\n const input = toolPart.value.input\n if (!input) {\n return\n }\n const { title, startDate, endDate, location, additionalInfo } = input\n const params = new URLSearchParams({\n subject: title,\n startdt: startDate,\n enddt: endDate,\n })\n if (location) {\n params.set('location', location)\n }\n if (additionalInfo) {\n params.set('body', additionalInfo)\n }\n window.open(\n `https://outlook.office.com/calendar/0/action/compose?${params.toString()}`,\n '_blank',\n )\n }\n\n const copyEvent = () => {\n const input = toolPart.value.input\n if (!input) {\n return\n }\n const lines = [input.title, dateDisplay.value]\n if (input.location) {\n lines.push(input.location)\n }\n if (input.additionalInfo) {\n lines.push(input.additionalInfo)\n }\n copy(lines.join('\\n'))\n }\n</script>\n\n<template>\n <div\n v-if=\"toolPart?.input\"\n class=\"border border-surface-3 rounded-xl w-full overflow-hidden\">\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\">\n <VvIcon name=\"ri:calendar-event-line\" class=\"text-16\" />\n <strong class=\"font-bold\">{{ $t('label.calendarEvent') }}</strong>\n <VvButtonGroup modifiers=\"compact\" class=\"ml-auto shrink-0\">\n <VvButton\n modifiers=\"action-quiet-small\"\n :icon=\"copied ? 'ri:check-line' : 'ri:file-copy-line'\"\n :label=\"copied ? $t('action.copied') : $t('action.copy')\"\n @click=\"copyEvent\" />\n <VvDropdown\n v-bind=\"{\n placement: 'bottom-end',\n modifiers: 'menu',\n flip: true,\n offset: 3,\n strategy: 'fixed',\n }\">\n <VvButton\n icon=\"ri:calendar-line\"\n modifiers=\"action-quiet-small\"\n :label=\"$t('action.addToCalendar')\" />\n <template #items>\n <VvDropdownAction @click=\"openGoogleCalendar\">\n <VvIcon name=\"ri:google-line\" />\n Google Calendar\n </VvDropdownAction>\n <VvDropdownAction @click=\"openOutlook\">\n <VvIcon name=\"ri:microsoft-line\" />\n Outlook\n </VvDropdownAction>\n <VvDropdownAction @click=\"generateIcs\">\n <VvIcon name=\"ri:download-line\" />\n {{ $t('action.downloadIcs') }}\n </VvDropdownAction>\n </template>\n </VvDropdown>\n </VvButtonGroup>\n </div>\n <div class=\"p-sm flex gap-sm items-start\">\n <div\n class=\"shrink-0 w-44 rounded-lg overflow-hidden border border-surface-3 text-center select-none\">\n <div\n class=\"bg-brand px-8 py-2 text-white text-10 font-bold uppercase tracking-wide\">\n {{ calendarMonth }}\n </div>\n <div\n class=\"bg-surface-1 py-4 text-word-1 text-24 font-bold leading-none\">\n {{ calendarDay }}\n </div>\n </div>\n <div class=\"flex flex-col gap-4 min-w-0\">\n <p class=\"font-semibold text-word-1 text-14\">\n {{ toolPart.input.title }}\n </p>\n <div class=\"flex items-center gap-8 text-12 text-word-3\">\n <VvIcon name=\"ri:time-line\" class=\"text-14 shrink-0\" />\n <time :datetime=\"toolPart.input.startDate\">{{\n dateDisplay\n }}</time>\n </div>\n <div\n v-if=\"toolPart.input.location\"\n class=\"flex items-center gap-8 text-12 text-word-3\">\n <VvIcon name=\"ri:map-pin-line\" class=\"text-14 shrink-0\" />\n <a\n v-if=\"toolPart.input.location.startsWith('http')\"\n :href=\"toolPart.input.location\"\n :target=\"\n isSameSite(toolPart.input.location)\n ? undefined\n : '_blank'\n \"\n :rel=\"\n isSameSite(toolPart.input.location)\n ? undefined\n : 'noopener noreferrer'\n \"\n class=\"underline truncate\">\n {{ toolPart.input.location }}\n </a>\n <span v-else>{{ toolPart.input.location }}</span>\n </div>\n <div\n v-if=\"toolPart.input.additionalInfo\"\n class=\"flex items-start gap-8 text-12 text-word-3\">\n <VvIcon\n name=\"ri:sticky-note-line\"\n class=\"text-14 shrink-0 mt-1\" />\n <span>{{ toolPart.input.additionalInfo }}</span>\n </div>\n </div>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\n import { computed } from 'vue'\n import { useI18n } from 'vue-i18n'\n import { useClipboard } from '@vueuse/core'\n import { isSameSite } from 'utils'\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const { copy, copied } = useClipboard()\n const { d } = useI18n()\n\n const toolPart = computed(() => {\n const part = props.part as {\n input?: {\n title: string\n startDate: string\n endDate: string\n location?: string\n additionalInfo?: string\n allDay?: boolean\n }\n }\n return part\n })\n\n const dateDisplay = computed(() => {\n const input = toolPart.value.input\n if (!input) {\n return ''\n }\n const { startDate, endDate, allDay } = input\n const start = new Date(startDate)\n const end = new Date(endDate)\n const startDay = startDate.slice(0, 10)\n const endDay = endDate.slice(0, 10)\n if (allDay) {\n if (startDay === endDay) {\n return d(start, 'date-medium')\n }\n return `${d(start, 'date-medium')} - ${d(end, 'date-medium')}`\n }\n if (startDay === endDay) {\n return `${d(start, 'date-time-medium')} - ${d(end, 'time')}`\n }\n return `${d(start, 'date-time-medium')} - ${d(end, 'date-time-medium')}`\n })\n\n const calendarStart = computed(() =>\n toolPart.value.input ? new Date(toolPart.value.input.startDate) : null,\n )\n\n const calendarDay = computed(\n () => calendarStart.value?.getDate().toString() ?? '',\n )\n\n const calendarMonth = computed(() =>\n calendarStart.value ? d(calendarStart.value, 'month-short') : '',\n )\n\n // Floating time: remove dashes/colons without converting to UTC\n const toIcsDateTime = (iso: string) =>\n iso.replace(/[-:]/g, '').replace(/\\.\\d{3}$/, '')\n\n const escapeIcs = (str: string) =>\n str\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/;/g, '\\\\;')\n .replace(/,/g, '\\\\,')\n .replace(/\\n/g, '\\\\n')\n\n const generateIcs = () => {\n const input = toolPart.value.input\n if (!input) {\n return\n }\n const { title, startDate, endDate, location, additionalInfo } = input\n const ics = [\n 'BEGIN:VCALENDAR',\n 'VERSION:2.0',\n 'PRODID:-//8wave//8bot//EN',\n 'BEGIN:VEVENT',\n `DTSTART:${toIcsDateTime(startDate)}`,\n `DTEND:${toIcsDateTime(endDate)}`,\n `SUMMARY:${escapeIcs(title)}`,\n location ? `LOCATION:${escapeIcs(location)}` : '',\n additionalInfo ? `DESCRIPTION:${escapeIcs(additionalInfo)}` : '',\n `DTSTAMP:${new Date()\n .toISOString()\n .replace(/[-:]/g, '')\n .replace(/\\.\\d{3}/, '')}`,\n `UID:${crypto.randomUUID()}@8bot.ai`,\n 'END:VEVENT',\n 'END:VCALENDAR',\n ]\n .filter(Boolean)\n .join('\\r\\n')\n\n const blob = new Blob([ics], { type: 'text/calendar;charset=utf-8' })\n const url = URL.createObjectURL(blob)\n const a = document.createElement('a')\n a.href = url\n a.download = `${title.replace(/[^a-zA-Z0-9\\s-]/g, '')}.ics`\n a.click()\n URL.revokeObjectURL(url)\n }\n\n const openGoogleCalendar = () => {\n const input = toolPart.value.input\n if (!input) {\n return\n }\n const { title, startDate, endDate, location, additionalInfo } = input\n const start = toIcsDateTime(startDate)\n const end = toIcsDateTime(endDate)\n const params = new URLSearchParams({\n action: 'TEMPLATE',\n text: title,\n dates: `${start}/${end}`,\n })\n if (location) {\n params.set('location', location)\n }\n if (additionalInfo) {\n params.set('details', additionalInfo)\n }\n window.open(\n `https://calendar.google.com/calendar/render?${params.toString()}`,\n '_blank',\n )\n }\n\n const openOutlook = () => {\n const input = toolPart.value.input\n if (!input) {\n return\n }\n const { title, startDate, endDate, location, additionalInfo } = input\n const params = new URLSearchParams({\n subject: title,\n startdt: startDate,\n enddt: endDate,\n })\n if (location) {\n params.set('location', location)\n }\n if (additionalInfo) {\n params.set('body', additionalInfo)\n }\n window.open(\n `https://outlook.office.com/calendar/0/action/compose?${params.toString()}`,\n '_blank',\n )\n }\n\n const copyEvent = () => {\n const input = toolPart.value.input\n if (!input) {\n return\n }\n const lines = [input.title, dateDisplay.value]\n if (input.location) {\n lines.push(input.location)\n }\n if (input.additionalInfo) {\n lines.push(input.additionalInfo)\n }\n copy(lines.join('\\n'))\n }\n</script>\n\n<template>\n <div\n v-if=\"toolPart?.input\"\n class=\"border border-surface-3 rounded-xl w-full overflow-hidden\">\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\">\n <VvIcon name=\"ri:calendar-event-line\" class=\"text-16\" />\n <strong class=\"font-bold\">{{ $t('label.calendarEvent') }}</strong>\n <VvButtonGroup modifiers=\"compact\" class=\"ml-auto shrink-0\">\n <VvButton\n modifiers=\"action-quiet-small\"\n :icon=\"copied ? 'ri:check-line' : 'ri:file-copy-line'\"\n :label=\"copied ? $t('action.copied') : $t('action.copy')\"\n @click=\"copyEvent\" />\n <VvDropdown\n v-bind=\"{\n placement: 'bottom-end',\n modifiers: 'menu',\n flip: true,\n offset: 3,\n strategy: 'fixed',\n }\">\n <VvButton\n icon=\"ri:calendar-line\"\n modifiers=\"action-quiet-small\"\n :label=\"$t('action.addToCalendar')\" />\n <template #items>\n <VvDropdownAction @click=\"openGoogleCalendar\">\n <VvIcon name=\"ri:google-line\" />\n Google Calendar\n </VvDropdownAction>\n <VvDropdownAction @click=\"openOutlook\">\n <VvIcon name=\"ri:microsoft-line\" />\n Outlook\n </VvDropdownAction>\n <VvDropdownAction @click=\"generateIcs\">\n <VvIcon name=\"ri:download-line\" />\n {{ $t('action.downloadIcs') }}\n </VvDropdownAction>\n </template>\n </VvDropdown>\n </VvButtonGroup>\n </div>\n <div class=\"p-sm flex gap-sm items-start\">\n <div\n class=\"shrink-0 w-44 rounded-lg overflow-hidden border border-surface-3 text-center select-none\">\n <div\n class=\"bg-brand px-8 py-2 text-white text-10 font-bold uppercase tracking-wide\">\n {{ calendarMonth }}\n </div>\n <div\n class=\"bg-surface-1 py-4 text-word-1 text-24 font-bold leading-none\">\n {{ calendarDay }}\n </div>\n </div>\n <div class=\"flex flex-col gap-4 min-w-0\">\n <p class=\"font-semibold text-word-1 text-14\">\n {{ toolPart.input.title }}\n </p>\n <div class=\"flex items-center gap-8 text-12 text-word-3\">\n <VvIcon name=\"ri:time-line\" class=\"text-14 shrink-0\" />\n <time :datetime=\"toolPart.input.startDate\">{{\n dateDisplay\n }}</time>\n </div>\n <div\n v-if=\"toolPart.input.location\"\n class=\"flex items-center gap-8 text-12 text-word-3\">\n <VvIcon name=\"ri:map-pin-line\" class=\"text-14 shrink-0\" />\n <a\n v-if=\"toolPart.input.location.startsWith('http')\"\n :href=\"toolPart.input.location\"\n :target=\"\n isSameSite(toolPart.input.location)\n ? undefined\n : '_blank'\n \"\n :rel=\"\n isSameSite(toolPart.input.location)\n ? undefined\n : 'noopener noreferrer'\n \"\n class=\"underline truncate\">\n {{ toolPart.input.location }}\n </a>\n <span v-else>{{ toolPart.input.location }}</span>\n </div>\n <div\n v-if=\"toolPart.input.additionalInfo\"\n class=\"flex items-start gap-8 text-12 text-word-3\">\n <VvIcon\n name=\"ri:sticky-note-line\"\n class=\"text-14 shrink-0 mt-1\" />\n <span>{{ toolPart.input.additionalInfo }}</span>\n </div>\n </div>\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;EAMI,IAAM,IAAQ,GAIR,EAAE,SAAM,cAAW,EAAa,GAChC,EAAE,SAAM,EAAQ,GAEhB,IAAW,QACA,EAAM,IAWtB,GAEK,IAAc,QAAe;GAC/B,IAAM,IAAQ,EAAS,MAAM;GAC7B,IAAI,CAAC,GACD,OAAO;GAEX,IAAM,EAAE,cAAW,YAAS,cAAW,GACjC,IAAQ,IAAI,KAAK,CAAS,GAC1B,IAAM,IAAI,KAAK,CAAO,GACtB,IAAW,EAAU,MAAM,GAAG,EAAE,GAChC,IAAS,EAAQ,MAAM,GAAG,EAAE;GAUlC,OATI,IACI,MAAa,IACN,EAAE,GAAO,aAAa,IAE1B,GAAG,EAAE,GAAO,aAAa,EAAE,KAAK,EAAE,GAAK,aAAa,MAE3D,MAAa,IACN,GAAG,EAAE,GAAO,kBAAkB,EAAE,KAAK,EAAE,GAAK,MAAM,MAEtD,GAAG,EAAE,GAAO,kBAAkB,EAAE,KAAK,EAAE,GAAK,kBAAkB;EACzE,CAAC,GAEK,IAAgB,QAClB,EAAS,MAAM,QAAQ,IAAI,KAAK,EAAS,MAAM,MAAM,SAAS,IAAI,IACtE,GAEM,IAAc,QACV,EAAc,OAAO,QAAQ,EAAE,SAAS,KAAK,EACvD,GAEM,IAAgB,QAClB,EAAc,QAAQ,EAAE,EAAc,OAAO,aAAa,IAAI,EAClE,GAGM,KAAiB,MACnB,EAAI,QAAQ,SAAS,EAAE,EAAE,QAAQ,YAAY,EAAE,GAE7C,KAAa,MACf,EACK,QAAQ,OAAO,MAAM,EACrB,QAAQ,MAAM,KAAK,EACnB,QAAQ,MAAM,KAAK,EACnB,QAAQ,OAAO,KAAK,GAEvB,UAAoB;GACtB,IAAM,IAAQ,EAAS,MAAM;GAC7B,IAAI,CAAC,GACD;GAEJ,IAAM,EAAE,UAAO,cAAW,YAAS,aAAU,sBAAmB,GAC1D,IAAM;IACR;IACA;IACA;IACA;IACA,WAAW,EAAc,CAAS;IAClC,SAAS,EAAc,CAAO;IAC9B,WAAW,EAAU,CAAK;IAC1B,IAAW,YAAY,EAAU,CAAQ,MAAM;IAC/C,IAAiB,eAAe,EAAU,CAAc,MAAM;IAC9D,4BAAW,IAAI,KAAK,GACf,YAAY,EACZ,QAAQ,SAAS,EAAE,EACnB,QAAQ,WAAW,EAAE;IAC1B,OAAO,OAAO,WAAW,EAAE;IAC3B;IACA;GACJ,EACK,OAAO,OAAO,EACd,KAAK,MAAM,GAEV,IAAO,IAAI,KAAK,CAAC,CAAG,GAAG,EAAE,MAAM,8BAA8B,CAAC,GAC9D,IAAM,IAAI,gBAAgB,CAAI,GAC9B,IAAI,SAAS,cAAc,GAAG;GAIpC,AAHA,EAAE,OAAO,GACT,EAAE,WAAW,GAAG,EAAM,QAAQ,oBAAoB,EAAE,EAAE,OACtD,EAAE,MAAM,GACR,IAAI,gBAAgB,CAAG;EAC3B,GAEM,UAA2B;GAC7B,IAAM,IAAQ,EAAS,MAAM;GAC7B,IAAI,CAAC,GACD;GAEJ,IAAM,EAAE,UAAO,cAAW,YAAS,aAAU,sBAAmB,GAC1D,IAAQ,EAAc,CAAS,GAC/B,IAAM,EAAc,CAAO,GAC3B,IAAS,IAAI,gBAAgB;IAC/B,QAAQ;IACR,MAAM;IACN,OAAO,GAAG,EAAM,GAAG;GACvB,CAAC;GAOD,AANI,KACA,EAAO,IAAI,YAAY,CAAQ,GAE/B,KACA,EAAO,IAAI,WAAW,CAAc,GAExC,OAAO,KACH,+CAA+C,EAAO,SAAS,KAC/D,QACJ;EACJ,GAEM,UAAoB;GACtB,IAAM,IAAQ,EAAS,MAAM;GAC7B,IAAI,CAAC,GACD;GAEJ,IAAM,EAAE,UAAO,cAAW,YAAS,aAAU,sBAAmB,GAC1D,IAAS,IAAI,gBAAgB;IAC/B,SAAS;IACT,SAAS;IACT,OAAO;GACX,CAAC;GAOD,AANI,KACA,EAAO,IAAI,YAAY,CAAQ,GAE/B,KACA,EAAO,IAAI,QAAQ,CAAc,GAErC,OAAO,KACH,wDAAwD,EAAO,SAAS,KACxE,QACJ;EACJ,GAEM,UAAkB;GACpB,IAAM,IAAQ,EAAS,MAAM;GAC7B,IAAI,CAAC,GACD;GAEJ,IAAM,IAAQ,CAAC,EAAM,OAAO,EAAY,KAAK;GAO7C,AANI,EAAM,YACN,EAAM,KAAK,EAAM,QAAQ,GAEzB,EAAM,kBACN,EAAM,KAAK,EAAM,cAAc,GAEnC,EAAK,EAAM,KAAK,IAAI,CAAC;EACzB;;;UAKU,EAAA,OAAU,SAAA,EAAA,GADpB,EAgGM,OAhGN,GAgGM,CA7FF,EAsCM,OAtCN,GAsCM;IApCF,EAAwD,GAAA;KAAhD,MAAK;KAAyB,OAAM;;IAC5C,EAAkE,UAAlE,GAAkE,EAArCA,EAAAA,GAAE,qBAAA,CAAA,GAAA,CAAA;IAC/B,EAiCgB,GAAA;KAjCD,WAAU;KAAU,OAAM;;sBAKZ,CAJzB,EAIyB,GAAA;MAHrB,WAAU;MACT,MAAM,EAAA,CAAA,IAAM,kBAAA;MACZ,OAAO,EAAA,CAAA,IAASA,EAAAA,GAAE,eAAA,IAAoBA,EAAAA,GAAE,aAAA;MACxC,SAAO;qCACZ,EA0Ba,GAAA,EAAA,EAzBD;;;;;;MAMP,CAAA,GAAA;MAKU,OAAK,QAIO;OAHnB,EAGmB,GAAA,EAHA,SAAO,EAAkB,GAAA;yBACR,CAAhC,EAAgC,GAAA,EAAxB,MAAK,iBAAgB,CAAA,GAAA,AAAA,EAAA,OAAA,EAAG,qBAEpC,EAAA,CAAA,CAAA;;;OACA,EAGmB,GAAA,EAHA,SAAO,EAAW,GAAA;yBACE,CAAnC,EAAmC,GAAA,EAA3B,MAAK,oBAAmB,CAAA,GAAA,AAAA,EAAA,OAAA,EAAG,aAEvC,EAAA,CAAA,CAAA;;;OACA,EAGmB,GAAA,EAHA,SAAO,EAAW,GAAA;yBACC,CAAlC,EAAkC,GAAA,EAA1B,MAAK,mBAAkB,CAAA,GAAA,EAAG,MAClC,EAAGA,EAAAA,GAAE,oBAAA,CAAA,GAAA,CAAA,CAAA,CAAA;;;;uBAZ6B,CAH1C,EAG0C,GAAA;OAFtC,MAAK;OACL,WAAU;OACT,OAAOA,EAAAA,GAAE,sBAAA;;;;;;OAkB1B,EAqDM,OArDN,GAqDM,CApDF,EAUM,OAVN,GAUM,CARF,EAGM,OAHN,GAGM,EADC,EAAA,KAAa,GAAA,CAAA,GAEpB,EAGM,OAHN,GAGM,EADC,EAAA,KAAW,GAAA,CAAA,CAAA,CAAA,GAGtB,EAwCM,OAxCN,GAwCM;IAvCF,EAEI,KAFJ,GAEI,EADG,EAAA,MAAS,MAAM,KAAK,GAAA,CAAA;IAE3B,EAKM,OALN,GAKM,CAJF,EAAuD,GAAA;KAA/C,MAAK;KAAe,OAAM;QAClC,EAES,QAAA,EAFF,UAAU,EAAA,MAAS,MAAM,UAAA,GAAA,EAC5B,EAAA,KAAW,GAAA,GAAA,CAAA,CAAA,CAAA;IAIT,EAAA,MAAS,MAAM,YAAA,EAAA,GADzB,EAqBM,OArBN,GAqBM,CAlBF,EAA0D,GAAA;KAAlD,MAAK;KAAkB,OAAM;QAE3B,EAAA,MAAS,MAAM,SAAS,WAAU,MAAA,KAAA,EAAA,GAD5C,EAeI,KAAA;;KAbC,MAAM,EAAA,MAAS,MAAM;KACrB,QAAqC,EAAA,CAAA,EAAW,EAAA,MAAS,MAAM,QAAQ,IAAoC,KAAA,IAAA;KAK3G,KAAkC,EAAA,CAAA,EAAW,EAAA,MAAS,MAAM,QAAQ,IAAoC,KAAA,IAAA;KAKzG,OAAM;SACH,EAAA,MAAS,MAAM,QAAQ,GAAA,GAAA,CAAA,MAAA,EAAA,GAE9B,EAAiD,QAAA,GAAA,EAAjC,EAAA,MAAS,MAAM,QAAQ,GAAA,CAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA;IAGjC,EAAA,MAAS,MAAM,kBAAA,EAAA,GADzB,EAOM,OAPN,GAOM,CAJF,EAEoC,GAAA;KADhC,MAAK;KACL,OAAM;QACV,EAAgD,QAAA,MAAA,EAAvC,EAAA,MAAS,MAAM,cAAc,GAAA,CAAA,CAAA,CAAA,KAAA,EAAA,IAAA,EAAA"}
|
|
1
|
+
{"version":3,"file":"PkToolShowCalendarEvent-BuTDY0xa.js","names":["$t"],"sources":["../../../../packages/components/src/chat/PkToolShowCalendarEvent.vue","../../../../packages/components/src/chat/PkToolShowCalendarEvent.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed } from 'vue'\n import { useI18n } from 'vue-i18n'\n import { useClipboard } from '@vueuse/core'\n import { isSameSite } from 'utils'\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const { copy, copied } = useClipboard()\n const { d } = useI18n()\n\n const toolPart = computed(() => {\n const part = props.part as {\n input?: {\n title: string\n startDate: string\n endDate: string\n location?: string\n additionalInfo?: string\n allDay?: boolean\n }\n }\n return part\n })\n\n const dateDisplay = computed(() => {\n const input = toolPart.value.input\n if (!input) {\n return ''\n }\n const { startDate, endDate, allDay } = input\n const start = new Date(startDate)\n const end = new Date(endDate)\n const startDay = startDate.slice(0, 10)\n const endDay = endDate.slice(0, 10)\n if (allDay) {\n if (startDay === endDay) {\n return d(start, 'date-medium')\n }\n return `${d(start, 'date-medium')} - ${d(end, 'date-medium')}`\n }\n if (startDay === endDay) {\n return `${d(start, 'date-time-medium')} - ${d(end, 'time')}`\n }\n return `${d(start, 'date-time-medium')} - ${d(end, 'date-time-medium')}`\n })\n\n const calendarStart = computed(() =>\n toolPart.value.input ? new Date(toolPart.value.input.startDate) : null,\n )\n\n const calendarDay = computed(\n () => calendarStart.value?.getDate().toString() ?? '',\n )\n\n const calendarMonth = computed(() =>\n calendarStart.value ? d(calendarStart.value, 'month-short') : '',\n )\n\n // Floating time: remove dashes/colons without converting to UTC\n const toIcsDateTime = (iso: string) =>\n iso.replace(/[-:]/g, '').replace(/\\.\\d{3}$/, '')\n\n const escapeIcs = (str: string) =>\n str\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/;/g, '\\\\;')\n .replace(/,/g, '\\\\,')\n .replace(/\\n/g, '\\\\n')\n\n const generateIcs = () => {\n const input = toolPart.value.input\n if (!input) {\n return\n }\n const { title, startDate, endDate, location, additionalInfo } = input\n const ics = [\n 'BEGIN:VCALENDAR',\n 'VERSION:2.0',\n 'PRODID:-//8wave//8bot//EN',\n 'BEGIN:VEVENT',\n `DTSTART:${toIcsDateTime(startDate)}`,\n `DTEND:${toIcsDateTime(endDate)}`,\n `SUMMARY:${escapeIcs(title)}`,\n location ? `LOCATION:${escapeIcs(location)}` : '',\n additionalInfo ? `DESCRIPTION:${escapeIcs(additionalInfo)}` : '',\n `DTSTAMP:${new Date()\n .toISOString()\n .replace(/[-:]/g, '')\n .replace(/\\.\\d{3}/, '')}`,\n `UID:${crypto.randomUUID()}@8bot.ai`,\n 'END:VEVENT',\n 'END:VCALENDAR',\n ]\n .filter(Boolean)\n .join('\\r\\n')\n\n const blob = new Blob([ics], { type: 'text/calendar;charset=utf-8' })\n const url = URL.createObjectURL(blob)\n const a = document.createElement('a')\n a.href = url\n a.download = `${title.replace(/[^a-zA-Z0-9\\s-]/g, '')}.ics`\n a.click()\n URL.revokeObjectURL(url)\n }\n\n const openGoogleCalendar = () => {\n const input = toolPart.value.input\n if (!input) {\n return\n }\n const { title, startDate, endDate, location, additionalInfo } = input\n const start = toIcsDateTime(startDate)\n const end = toIcsDateTime(endDate)\n const params = new URLSearchParams({\n action: 'TEMPLATE',\n text: title,\n dates: `${start}/${end}`,\n })\n if (location) {\n params.set('location', location)\n }\n if (additionalInfo) {\n params.set('details', additionalInfo)\n }\n window.open(\n `https://calendar.google.com/calendar/render?${params.toString()}`,\n '_blank',\n )\n }\n\n const openOutlook = () => {\n const input = toolPart.value.input\n if (!input) {\n return\n }\n const { title, startDate, endDate, location, additionalInfo } = input\n const params = new URLSearchParams({\n subject: title,\n startdt: startDate,\n enddt: endDate,\n })\n if (location) {\n params.set('location', location)\n }\n if (additionalInfo) {\n params.set('body', additionalInfo)\n }\n window.open(\n `https://outlook.office.com/calendar/0/action/compose?${params.toString()}`,\n '_blank',\n )\n }\n\n const copyEvent = () => {\n const input = toolPart.value.input\n if (!input) {\n return\n }\n const lines = [input.title, dateDisplay.value]\n if (input.location) {\n lines.push(input.location)\n }\n if (input.additionalInfo) {\n lines.push(input.additionalInfo)\n }\n copy(lines.join('\\n'))\n }\n</script>\n\n<template>\n <div\n v-if=\"toolPart?.input\"\n class=\"border border-surface-3 rounded-xl w-full overflow-hidden\">\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\">\n <VvIcon name=\"ri:calendar-event-line\" class=\"text-16\" />\n <strong class=\"font-bold\">{{ $t('label.calendarEvent') }}</strong>\n <VvButtonGroup modifiers=\"compact\" class=\"ml-auto shrink-0\">\n <VvButton\n modifiers=\"action-quiet-small\"\n :icon=\"copied ? 'ri:check-line' : 'ri:file-copy-line'\"\n :label=\"copied ? $t('action.copied') : $t('action.copy')\"\n @click=\"copyEvent\" />\n <VvDropdown\n v-bind=\"{\n placement: 'bottom-end',\n modifiers: 'menu',\n flip: true,\n offset: 3,\n strategy: 'fixed',\n }\">\n <VvButton\n icon=\"ri:calendar-line\"\n modifiers=\"action-quiet-small\"\n :label=\"$t('action.addToCalendar')\" />\n <template #items>\n <VvDropdownAction @click=\"openGoogleCalendar\">\n <VvIcon name=\"ri:google-line\" />\n Google Calendar\n </VvDropdownAction>\n <VvDropdownAction @click=\"openOutlook\">\n <VvIcon name=\"ri:microsoft-line\" />\n Outlook\n </VvDropdownAction>\n <VvDropdownAction @click=\"generateIcs\">\n <VvIcon name=\"ri:download-line\" />\n {{ $t('action.downloadIcs') }}\n </VvDropdownAction>\n </template>\n </VvDropdown>\n </VvButtonGroup>\n </div>\n <div class=\"p-sm flex gap-sm items-start\">\n <div\n class=\"shrink-0 w-44 rounded-lg overflow-hidden border border-surface-3 text-center select-none\">\n <div\n class=\"bg-brand px-8 py-2 text-white text-10 font-bold uppercase tracking-wide\">\n {{ calendarMonth }}\n </div>\n <div\n class=\"bg-surface-1 py-4 text-word-1 text-24 font-bold leading-none\">\n {{ calendarDay }}\n </div>\n </div>\n <div class=\"flex flex-col gap-4 min-w-0\">\n <p class=\"font-semibold text-word-1 text-14\">\n {{ toolPart.input.title }}\n </p>\n <div class=\"flex items-center gap-8 text-12 text-word-3\">\n <VvIcon name=\"ri:time-line\" class=\"text-14 shrink-0\" />\n <time :datetime=\"toolPart.input.startDate\">{{\n dateDisplay\n }}</time>\n </div>\n <div\n v-if=\"toolPart.input.location\"\n class=\"flex items-center gap-8 text-12 text-word-3\">\n <VvIcon name=\"ri:map-pin-line\" class=\"text-14 shrink-0\" />\n <a\n v-if=\"toolPart.input.location.startsWith('http')\"\n :href=\"toolPart.input.location\"\n :target=\"\n isSameSite(toolPart.input.location)\n ? undefined\n : '_blank'\n \"\n :rel=\"\n isSameSite(toolPart.input.location)\n ? undefined\n : 'noopener noreferrer'\n \"\n class=\"underline truncate\">\n {{ toolPart.input.location }}\n </a>\n <span v-else>{{ toolPart.input.location }}</span>\n </div>\n <div\n v-if=\"toolPart.input.additionalInfo\"\n class=\"flex items-start gap-8 text-12 text-word-3\">\n <VvIcon\n name=\"ri:sticky-note-line\"\n class=\"text-14 shrink-0 mt-1\" />\n <span>{{ toolPart.input.additionalInfo }}</span>\n </div>\n </div>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\n import { computed } from 'vue'\n import { useI18n } from 'vue-i18n'\n import { useClipboard } from '@vueuse/core'\n import { isSameSite } from 'utils'\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const { copy, copied } = useClipboard()\n const { d } = useI18n()\n\n const toolPart = computed(() => {\n const part = props.part as {\n input?: {\n title: string\n startDate: string\n endDate: string\n location?: string\n additionalInfo?: string\n allDay?: boolean\n }\n }\n return part\n })\n\n const dateDisplay = computed(() => {\n const input = toolPart.value.input\n if (!input) {\n return ''\n }\n const { startDate, endDate, allDay } = input\n const start = new Date(startDate)\n const end = new Date(endDate)\n const startDay = startDate.slice(0, 10)\n const endDay = endDate.slice(0, 10)\n if (allDay) {\n if (startDay === endDay) {\n return d(start, 'date-medium')\n }\n return `${d(start, 'date-medium')} - ${d(end, 'date-medium')}`\n }\n if (startDay === endDay) {\n return `${d(start, 'date-time-medium')} - ${d(end, 'time')}`\n }\n return `${d(start, 'date-time-medium')} - ${d(end, 'date-time-medium')}`\n })\n\n const calendarStart = computed(() =>\n toolPart.value.input ? new Date(toolPart.value.input.startDate) : null,\n )\n\n const calendarDay = computed(\n () => calendarStart.value?.getDate().toString() ?? '',\n )\n\n const calendarMonth = computed(() =>\n calendarStart.value ? d(calendarStart.value, 'month-short') : '',\n )\n\n // Floating time: remove dashes/colons without converting to UTC\n const toIcsDateTime = (iso: string) =>\n iso.replace(/[-:]/g, '').replace(/\\.\\d{3}$/, '')\n\n const escapeIcs = (str: string) =>\n str\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/;/g, '\\\\;')\n .replace(/,/g, '\\\\,')\n .replace(/\\n/g, '\\\\n')\n\n const generateIcs = () => {\n const input = toolPart.value.input\n if (!input) {\n return\n }\n const { title, startDate, endDate, location, additionalInfo } = input\n const ics = [\n 'BEGIN:VCALENDAR',\n 'VERSION:2.0',\n 'PRODID:-//8wave//8bot//EN',\n 'BEGIN:VEVENT',\n `DTSTART:${toIcsDateTime(startDate)}`,\n `DTEND:${toIcsDateTime(endDate)}`,\n `SUMMARY:${escapeIcs(title)}`,\n location ? `LOCATION:${escapeIcs(location)}` : '',\n additionalInfo ? `DESCRIPTION:${escapeIcs(additionalInfo)}` : '',\n `DTSTAMP:${new Date()\n .toISOString()\n .replace(/[-:]/g, '')\n .replace(/\\.\\d{3}/, '')}`,\n `UID:${crypto.randomUUID()}@8bot.ai`,\n 'END:VEVENT',\n 'END:VCALENDAR',\n ]\n .filter(Boolean)\n .join('\\r\\n')\n\n const blob = new Blob([ics], { type: 'text/calendar;charset=utf-8' })\n const url = URL.createObjectURL(blob)\n const a = document.createElement('a')\n a.href = url\n a.download = `${title.replace(/[^a-zA-Z0-9\\s-]/g, '')}.ics`\n a.click()\n URL.revokeObjectURL(url)\n }\n\n const openGoogleCalendar = () => {\n const input = toolPart.value.input\n if (!input) {\n return\n }\n const { title, startDate, endDate, location, additionalInfo } = input\n const start = toIcsDateTime(startDate)\n const end = toIcsDateTime(endDate)\n const params = new URLSearchParams({\n action: 'TEMPLATE',\n text: title,\n dates: `${start}/${end}`,\n })\n if (location) {\n params.set('location', location)\n }\n if (additionalInfo) {\n params.set('details', additionalInfo)\n }\n window.open(\n `https://calendar.google.com/calendar/render?${params.toString()}`,\n '_blank',\n )\n }\n\n const openOutlook = () => {\n const input = toolPart.value.input\n if (!input) {\n return\n }\n const { title, startDate, endDate, location, additionalInfo } = input\n const params = new URLSearchParams({\n subject: title,\n startdt: startDate,\n enddt: endDate,\n })\n if (location) {\n params.set('location', location)\n }\n if (additionalInfo) {\n params.set('body', additionalInfo)\n }\n window.open(\n `https://outlook.office.com/calendar/0/action/compose?${params.toString()}`,\n '_blank',\n )\n }\n\n const copyEvent = () => {\n const input = toolPart.value.input\n if (!input) {\n return\n }\n const lines = [input.title, dateDisplay.value]\n if (input.location) {\n lines.push(input.location)\n }\n if (input.additionalInfo) {\n lines.push(input.additionalInfo)\n }\n copy(lines.join('\\n'))\n }\n</script>\n\n<template>\n <div\n v-if=\"toolPart?.input\"\n class=\"border border-surface-3 rounded-xl w-full overflow-hidden\">\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\">\n <VvIcon name=\"ri:calendar-event-line\" class=\"text-16\" />\n <strong class=\"font-bold\">{{ $t('label.calendarEvent') }}</strong>\n <VvButtonGroup modifiers=\"compact\" class=\"ml-auto shrink-0\">\n <VvButton\n modifiers=\"action-quiet-small\"\n :icon=\"copied ? 'ri:check-line' : 'ri:file-copy-line'\"\n :label=\"copied ? $t('action.copied') : $t('action.copy')\"\n @click=\"copyEvent\" />\n <VvDropdown\n v-bind=\"{\n placement: 'bottom-end',\n modifiers: 'menu',\n flip: true,\n offset: 3,\n strategy: 'fixed',\n }\">\n <VvButton\n icon=\"ri:calendar-line\"\n modifiers=\"action-quiet-small\"\n :label=\"$t('action.addToCalendar')\" />\n <template #items>\n <VvDropdownAction @click=\"openGoogleCalendar\">\n <VvIcon name=\"ri:google-line\" />\n Google Calendar\n </VvDropdownAction>\n <VvDropdownAction @click=\"openOutlook\">\n <VvIcon name=\"ri:microsoft-line\" />\n Outlook\n </VvDropdownAction>\n <VvDropdownAction @click=\"generateIcs\">\n <VvIcon name=\"ri:download-line\" />\n {{ $t('action.downloadIcs') }}\n </VvDropdownAction>\n </template>\n </VvDropdown>\n </VvButtonGroup>\n </div>\n <div class=\"p-sm flex gap-sm items-start\">\n <div\n class=\"shrink-0 w-44 rounded-lg overflow-hidden border border-surface-3 text-center select-none\">\n <div\n class=\"bg-brand px-8 py-2 text-white text-10 font-bold uppercase tracking-wide\">\n {{ calendarMonth }}\n </div>\n <div\n class=\"bg-surface-1 py-4 text-word-1 text-24 font-bold leading-none\">\n {{ calendarDay }}\n </div>\n </div>\n <div class=\"flex flex-col gap-4 min-w-0\">\n <p class=\"font-semibold text-word-1 text-14\">\n {{ toolPart.input.title }}\n </p>\n <div class=\"flex items-center gap-8 text-12 text-word-3\">\n <VvIcon name=\"ri:time-line\" class=\"text-14 shrink-0\" />\n <time :datetime=\"toolPart.input.startDate\">{{\n dateDisplay\n }}</time>\n </div>\n <div\n v-if=\"toolPart.input.location\"\n class=\"flex items-center gap-8 text-12 text-word-3\">\n <VvIcon name=\"ri:map-pin-line\" class=\"text-14 shrink-0\" />\n <a\n v-if=\"toolPart.input.location.startsWith('http')\"\n :href=\"toolPart.input.location\"\n :target=\"\n isSameSite(toolPart.input.location)\n ? undefined\n : '_blank'\n \"\n :rel=\"\n isSameSite(toolPart.input.location)\n ? undefined\n : 'noopener noreferrer'\n \"\n class=\"underline truncate\">\n {{ toolPart.input.location }}\n </a>\n <span v-else>{{ toolPart.input.location }}</span>\n </div>\n <div\n v-if=\"toolPart.input.additionalInfo\"\n class=\"flex items-start gap-8 text-12 text-word-3\">\n <VvIcon\n name=\"ri:sticky-note-line\"\n class=\"text-14 shrink-0 mt-1\" />\n <span>{{ toolPart.input.additionalInfo }}</span>\n </div>\n </div>\n </div>\n </div>\n</template>\n"],"mappings":"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"}
|
package/dist-vue/_chunks/{PkToolShowComparison-CZ3kO6PT.js → PkToolShowComparison-By5K23oe.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { o as e } from "./useChatbotStore-
|
|
1
|
+
import { o as e } from "./useChatbotStore-DE8leYO8.js";
|
|
2
2
|
import { VvButton as t, VvButtonGroup as n, VvIcon as r } from "@volverjs/ui-vue/components";
|
|
3
3
|
import { Fragment as i, computed as a, createCommentVNode as o, createElementBlock as s, createElementVNode as c, createTextVNode as l, createVNode as u, defineComponent as d, normalizeClass as f, openBlock as p, renderList as m, toDisplayString as h, unref as g, withCtx as _ } from "vue";
|
|
4
4
|
import { useClipboard as v } from "@vueuse/core";
|
|
@@ -55,11 +55,11 @@ var y = {
|
|
|
55
55
|
"text-danger": n.values[e] === "✗",
|
|
56
56
|
"text-word-2": n.values[e] !== "✓" && n.values[e] !== "✗"
|
|
57
57
|
}])
|
|
58
|
-
}, h(n.values[e] ?? "
|
|
58
|
+
}, h(n.values[e] ?? "-"), 3))), 128))], 2))), 128))])])])])) : o("", !0);
|
|
59
59
|
};
|
|
60
60
|
}
|
|
61
61
|
}), E = /* @__PURE__ */ e({ default: () => D }), D = T;
|
|
62
62
|
//#endregion
|
|
63
63
|
export { E as n, D as t };
|
|
64
64
|
|
|
65
|
-
//# sourceMappingURL=PkToolShowComparison-
|
|
65
|
+
//# sourceMappingURL=PkToolShowComparison-By5K23oe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PkToolShowComparison-By5K23oe.js","names":["$t"],"sources":["../../../../packages/components/src/chat/PkToolShowComparison.vue","../../../../packages/components/src/chat/PkToolShowComparison.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed } from 'vue'\n import { useClipboard } from '@vueuse/core'\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const { copy, copied } = useClipboard()\n\n const toolPart = computed(() => {\n const part = props.part as {\n input?: {\n title?: string\n items: Array<{\n name: string\n values: Record<string, string>\n highlighted?: boolean\n }>\n }\n }\n return part\n })\n\n const features = computed(() => {\n const items = toolPart.value.input?.items\n if (!items || items.length === 0) {\n return []\n }\n return Object.keys(items[0].values)\n })\n\n const copyTable = () => {\n const items = toolPart.value.input?.items\n if (!items) {\n return\n }\n const header = ['', ...items.map((i) => i.name)].join('\\t')\n const rows = features.value.map((f) =>\n [f.replace(/_/g, ' '), ...items.map((i) => i.values[f] ?? '')].join(\n '\\t',\n ),\n )\n copy([header, ...rows].join('\\n'))\n }\n</script>\n\n<template>\n <div\n v-if=\"toolPart?.input?.items?.length\"\n class=\"border border-surface-3 rounded-xl w-full overflow-hidden\">\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\">\n <VvIcon name=\"ri:scales-line\" class=\"text-16\" />\n <strong class=\"font-bold\">{{\n toolPart.input.title ?? $t('label.comparison')\n }}</strong>\n <VvButtonGroup modifiers=\"compact\" class=\"ml-auto shrink-0\">\n <VvButton\n modifiers=\"action-quiet-small\"\n :icon=\"copied ? 'ri:check-line' : 'ri:file-copy-line'\"\n :label=\"copied ? $t('action.copied') : $t('action.copy')\"\n @click=\"copyTable\" />\n </VvButtonGroup>\n </div>\n <div class=\"overflow-x-auto\">\n <table class=\"w-full text-12 border-collapse\">\n <thead>\n <tr>\n <th\n class=\"text-left text-word-3 font-medium p-8 border-b border-surface-3 min-w-32\"></th>\n <th\n v-for=\"item in toolPart.input.items\"\n :key=\"item.name\"\n class=\"text-center font-semibold text-word-1 p-8 border-b border-surface-3 min-w-24\"\n :class=\"\n item.highlighted\n ? 'bg-primary/5 border-primary/20'\n : ''\n \">\n {{ item.name }}\n <span v-if=\"item.highlighted\" class=\"ml-4\">⭐</span>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n v-for=\"(feature, fIdx) in features\"\n :key=\"feature\"\n :class=\"{ 'bg-surface-1': fIdx % 2 !== 0 }\">\n <td\n class=\"text-word-3 font-medium p-8 whitespace-nowrap\"\n :class=\"{\n 'border-b border-surface-3':\n fIdx !== features.length - 1,\n }\">\n {{ feature.replace(/_/g, ' ') }}\n </td>\n <td\n v-for=\"item in toolPart.input.items\"\n :key=\"item.name\"\n class=\"text-center p-8\"\n :class=\"{\n 'border-b border-surface-3':\n fIdx !== features.length - 1,\n 'bg-surface-info': item.highlighted,\n 'text-success': item.values[feature] === '✓',\n 'text-danger':\n item.values[feature] === '\\u2717',\n 'text-word-2':\n item.values[feature] !== '✓' &&\n item.values[feature] !== '\\u2717',\n }\">\n {{ item.values[feature] ?? '-' }}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\n import { computed } from 'vue'\n import { useClipboard } from '@vueuse/core'\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const { copy, copied } = useClipboard()\n\n const toolPart = computed(() => {\n const part = props.part as {\n input?: {\n title?: string\n items: Array<{\n name: string\n values: Record<string, string>\n highlighted?: boolean\n }>\n }\n }\n return part\n })\n\n const features = computed(() => {\n const items = toolPart.value.input?.items\n if (!items || items.length === 0) {\n return []\n }\n return Object.keys(items[0].values)\n })\n\n const copyTable = () => {\n const items = toolPart.value.input?.items\n if (!items) {\n return\n }\n const header = ['', ...items.map((i) => i.name)].join('\\t')\n const rows = features.value.map((f) =>\n [f.replace(/_/g, ' '), ...items.map((i) => i.values[f] ?? '')].join(\n '\\t',\n ),\n )\n copy([header, ...rows].join('\\n'))\n }\n</script>\n\n<template>\n <div\n v-if=\"toolPart?.input?.items?.length\"\n class=\"border border-surface-3 rounded-xl w-full overflow-hidden\">\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\">\n <VvIcon name=\"ri:scales-line\" class=\"text-16\" />\n <strong class=\"font-bold\">{{\n toolPart.input.title ?? $t('label.comparison')\n }}</strong>\n <VvButtonGroup modifiers=\"compact\" class=\"ml-auto shrink-0\">\n <VvButton\n modifiers=\"action-quiet-small\"\n :icon=\"copied ? 'ri:check-line' : 'ri:file-copy-line'\"\n :label=\"copied ? $t('action.copied') : $t('action.copy')\"\n @click=\"copyTable\" />\n </VvButtonGroup>\n </div>\n <div class=\"overflow-x-auto\">\n <table class=\"w-full text-12 border-collapse\">\n <thead>\n <tr>\n <th\n class=\"text-left text-word-3 font-medium p-8 border-b border-surface-3 min-w-32\"></th>\n <th\n v-for=\"item in toolPart.input.items\"\n :key=\"item.name\"\n class=\"text-center font-semibold text-word-1 p-8 border-b border-surface-3 min-w-24\"\n :class=\"\n item.highlighted\n ? 'bg-primary/5 border-primary/20'\n : ''\n \">\n {{ item.name }}\n <span v-if=\"item.highlighted\" class=\"ml-4\">⭐</span>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n v-for=\"(feature, fIdx) in features\"\n :key=\"feature\"\n :class=\"{ 'bg-surface-1': fIdx % 2 !== 0 }\">\n <td\n class=\"text-word-3 font-medium p-8 whitespace-nowrap\"\n :class=\"{\n 'border-b border-surface-3':\n fIdx !== features.length - 1,\n }\">\n {{ feature.replace(/_/g, ' ') }}\n </td>\n <td\n v-for=\"item in toolPart.input.items\"\n :key=\"item.name\"\n class=\"text-center p-8\"\n :class=\"{\n 'border-b border-surface-3':\n fIdx !== features.length - 1,\n 'bg-surface-info': item.highlighted,\n 'text-success': item.values[feature] === '✓',\n 'text-danger':\n item.values[feature] === '\\u2717',\n 'text-word-2':\n item.values[feature] !== '✓' &&\n item.values[feature] !== '\\u2717',\n }\">\n {{ item.values[feature] ?? '-' }}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;EAII,IAAM,IAAQ,GAIR,EAAE,SAAM,cAAW,EAAa,GAEhC,IAAW,QACA,EAAM,IAWtB,GAEK,IAAW,QAAe;GAC5B,IAAM,IAAQ,EAAS,MAAM,OAAO;GAIpC,OAHI,CAAC,KAAS,EAAM,WAAW,IACpB,CAAC,IAEL,OAAO,KAAK,EAAM,GAAG,MAAM;EACtC,CAAC,GAEK,UAAkB;GACpB,IAAM,IAAQ,EAAS,MAAM,OAAO;GAC/B,KASL,EAAK,CANU,CAAC,IAAI,GAAG,EAAM,KAAK,MAAM,EAAE,IAAI,CAAC,EAAE,KAAK,GAMhD,GAAQ,GALD,EAAS,MAAM,KAAK,MAC7B,CAAC,EAAE,QAAQ,MAAM,GAAG,GAAG,GAAG,EAAM,KAAK,MAAM,EAAE,OAAO,MAAM,EAAE,CAAC,EAAE,KAC3D,GACJ,CAEa,CAAI,EAAE,KAAK,IAAI,CAAC;EACrC;;;UAKU,EAAA,OAAU,OAAO,OAAO,UAAA,EAAA,GADlC,EAuEM,OAvEN,GAuEM,CApEF,EAaM,OAbN,GAaM;IAXF,EAAgD,GAAA;KAAxC,MAAK;KAAiB,OAAM;;IACpC,EAEW,UAFX,GAEW,EADP,EAAA,MAAS,MAAM,SAASA,EAAAA,GAAE,kBAAA,CAAA,GAAA,CAAA;IAE9B,EAMgB,GAAA;KAND,WAAU;KAAU,OAAM;;sBAKZ,CAJzB,EAIyB,GAAA;MAHrB,WAAU;MACT,MAAM,EAAA,CAAA,IAAM,kBAAA;MACZ,OAAO,EAAA,CAAA,IAASA,EAAAA,GAAE,eAAA,IAAoBA,EAAAA,GAAE,aAAA;MACxC,SAAO;;;;OAGpB,EAqDM,OArDN,GAqDM,CApDF,EAmDQ,SAnDR,GAmDQ,CAlDJ,EAiBQ,SAAA,MAAA,CAhBJ,EAeK,MAAA,MAAA,CAAA,AAAA,EAAA,OAdD,EAC0F,MAAA,EAAtF,OAAM,2EAA0E,GAAA,MAAA,EAAA,IAAA,EAAA,EAAA,GACpF,EAWK,GAAA,MAAA,EAVc,EAAA,MAAS,MAAM,QAAvB,YADX,EAWK,MAAA;IATA,KAAK,EAAK;IACX,OAAK,EAAA,CAAC,gFACmC,EAAK,cAAA,mCAAA,EAAA,CAAA;WAK3C,EAAK,IAAI,IAAG,KACf,CAAA,GAAY,EAAK,eAAA,EAAA,GAAjB,EAAmD,QAAnD,GAA2C,GAAC,KAAA,EAAA,IAAA,EAAA,CAAA,GAAA,CAAA,gBAIxD,EA+BQ,SAAA,MAAA,EAAA,EAAA,EAAA,GA9BJ,EA6BK,GAAA,MAAA,EA5ByB,EAAA,QAAlB,GAAS,YADrB,EA6BK,MAAA;IA3BA,KAAK;IACL,OAAK,EAAA,EAAA,gBAAoB,IAAI,KAAA,EAAA,CAAA;OAC9B,EAOK,MAAA,EAND,OAAK,EAAA,CAAC,iDAA+C,EAAA,6BACsD,MAAS,EAAA,MAAS,SAAM,EAAA,CAAA,CAAA,EAAA,GAAA,EAIhI,EAAQ,QAAO,MAAA,GAAA,CAAA,GAAA,CAAA,IAAA,EAAA,EAAA,GAEtB,EAgBK,GAAA,MAAA,EAfc,EAAA,MAAS,MAAM,QAAvB,YADX,EAgBK,MAAA;IAdA,KAAK,EAAK;IACX,OAAK,EAAA,CAAC,mBAAiB;kCACoF,MAAS,EAAA,MAAS,SAAM;wBAAyD,EAAK;qBAA6D,EAAK,OAAO,OAAO;oBAA8F,EAAK,OAAO,OAAO;oBAAmG,EAAK,OAAO,OAAO,OAAiD,EAAK,OAAO,OAAO;;QAWzjB,EAAK,OAAO,MAAO,GAAA,GAAA,CAAA"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { o as e } from "./useChatbotStore-DE8leYO8.js";
|
|
2
|
+
import { l as t, m as n, v as r } from "./schemas-iFPUt2Jr.js";
|
|
3
|
+
import { t as i } from "./useSafeLocalStorage-BL5mqfb7.js";
|
|
4
|
+
import { t as a } from "./useLocalizedString-CW0dVF2K.js";
|
|
5
|
+
import { t as o } from "./PkStreamingMarkdown-BUiAi-qv.js";
|
|
6
|
+
import { n as s } from "./PkChatbotFeedbackForm-Buzwweuj.js";
|
|
7
|
+
import { VvButton as c, VvIcon as l } from "@volverjs/ui-vue/components";
|
|
8
|
+
import { Transition as u, computed as d, createElementBlock as f, createElementVNode as p, createVNode as m, defineComponent as h, isRef as g, openBlock as _, toDisplayString as v, unref as y, watch as b, withCtx as x } from "vue";
|
|
9
|
+
import { useI18n as S } from "vue-i18n";
|
|
10
|
+
//#region ../../packages/components/src/chat/PkToolShowContactForm.vue?vue&type=script&setup=true&lang.ts
|
|
11
|
+
var C = { class: "border border-surface-3 rounded-xl w-full overflow-hidden" }, w = { 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" }, T = { class: "font-bold" }, E = {
|
|
12
|
+
key: 0,
|
|
13
|
+
class: "p-sm"
|
|
14
|
+
}, D = { class: "flex justify-between items-center gap-16 mt-xs" }, O = { class: "text-smaller text-word-3 flex items-center gap-8" }, k = {
|
|
15
|
+
key: 1,
|
|
16
|
+
class: "p-sm"
|
|
17
|
+
}, A = { class: "flex items-center gap-sm" }, j = { class: "font-semibold block text-success" }, M = { class: "text-word-3" }, N = /* @__PURE__ */ h({
|
|
18
|
+
__name: "PkToolShowContactForm",
|
|
19
|
+
props: {
|
|
20
|
+
part: {},
|
|
21
|
+
submitted: { type: Boolean },
|
|
22
|
+
loading: { type: Boolean },
|
|
23
|
+
error: {},
|
|
24
|
+
readonly: { type: Boolean },
|
|
25
|
+
privacyPolicyNotice: {}
|
|
26
|
+
},
|
|
27
|
+
emits: ["submit"],
|
|
28
|
+
setup(e, { emit: h }) {
|
|
29
|
+
let { t: N } = S({ useScope: "global" }), P = e, F = d(() => P.part), I = d(() => F.value.input), L = i(d(() => `${F.value.toolCallId}-${F.value.type}-submitted`), !1), R = n({
|
|
30
|
+
name: r().min(1).max(255).default(""),
|
|
31
|
+
email: t().max(255).default(""),
|
|
32
|
+
phone: r().max(50).regex(/^[+0-9\s\-.()]*$/, N("validation.invalidPhoneNumber")).optional()
|
|
33
|
+
}), z = h, { VvForm: B, VvFormField: V, formData: H } = s(R, { lazyLoad: !0 });
|
|
34
|
+
b(I, (e) => {
|
|
35
|
+
H.value = {
|
|
36
|
+
name: e?.name || "",
|
|
37
|
+
email: e?.email || "",
|
|
38
|
+
phone: e?.phone || ""
|
|
39
|
+
};
|
|
40
|
+
}, { immediate: !0 }), b(() => P.submitted, (e) => {
|
|
41
|
+
e && (L.value = !0);
|
|
42
|
+
}, { immediate: !0 });
|
|
43
|
+
let U = d(() => P.submitted || L.value), W = async (e) => {
|
|
44
|
+
z("submit", {
|
|
45
|
+
...e,
|
|
46
|
+
metadata: I.value?.conversationContext
|
|
47
|
+
});
|
|
48
|
+
}, G = a(() => P.privacyPolicyNotice, "message.defaultPrivacyPolicyNotice");
|
|
49
|
+
return (t, n) => {
|
|
50
|
+
let r = l, i = c;
|
|
51
|
+
return _(), f("div", C, [p("div", w, [m(r, {
|
|
52
|
+
name: "ri:send-plane-2-line",
|
|
53
|
+
class: "text-16"
|
|
54
|
+
}), p("strong", T, v(y(N)("label.contactUs")), 1)]), m(u, { mode: "out-in" }, {
|
|
55
|
+
default: x(() => [U.value ? (_(), f("div", k, [p("div", A, [m(r, {
|
|
56
|
+
name: "ri:mail-check-line",
|
|
57
|
+
class: "text-24 text-success"
|
|
58
|
+
}), p("div", null, [p("strong", j, v(y(N)("message.leadSubmittedTitle")), 1), p("p", M, v(y(N)("message.leadSubmittedMessage")), 1)])])])) : (_(), f("div", E, [m(y(B), {
|
|
59
|
+
modelValue: y(H),
|
|
60
|
+
"onUpdate:modelValue": n[0] ||= (e) => g(H) ? H.value = e : null,
|
|
61
|
+
readonly: e.readonly,
|
|
62
|
+
onSubmit: W
|
|
63
|
+
}, {
|
|
64
|
+
default: x(() => [
|
|
65
|
+
m(y(V), {
|
|
66
|
+
name: "name",
|
|
67
|
+
type: "text",
|
|
68
|
+
label: y(N)("label.name"),
|
|
69
|
+
placeholder: y(N)("placeholder.name"),
|
|
70
|
+
icon: "ri:user-line",
|
|
71
|
+
modifiers: "compact no-label",
|
|
72
|
+
class: "mb-md"
|
|
73
|
+
}, null, 8, ["label", "placeholder"]),
|
|
74
|
+
m(y(V), {
|
|
75
|
+
name: "email",
|
|
76
|
+
type: "email",
|
|
77
|
+
label: y(N)("label.email"),
|
|
78
|
+
placeholder: y(N)("placeholder.email"),
|
|
79
|
+
icon: "ri:mail-line",
|
|
80
|
+
modifiers: "compact no-label",
|
|
81
|
+
class: "mb-md"
|
|
82
|
+
}, null, 8, ["label", "placeholder"]),
|
|
83
|
+
m(y(V), {
|
|
84
|
+
name: "phone",
|
|
85
|
+
type: "tel",
|
|
86
|
+
label: y(N)("label.phone"),
|
|
87
|
+
placeholder: y(N)("placeholder.phone"),
|
|
88
|
+
icon: "ri:phone-line",
|
|
89
|
+
class: "mb-md",
|
|
90
|
+
modifiers: "compact no-label"
|
|
91
|
+
}, null, 8, ["label", "placeholder"]),
|
|
92
|
+
p("div", D, [p("div", O, [m(r, {
|
|
93
|
+
name: "ri:shield-check-line",
|
|
94
|
+
class: "text-16 shrink-0"
|
|
95
|
+
}), m(o, {
|
|
96
|
+
markdown: y(G),
|
|
97
|
+
class: "wysiwyg"
|
|
98
|
+
}, null, 8, ["markdown"])]), m(i, {
|
|
99
|
+
type: "submit",
|
|
100
|
+
modifiers: "primary",
|
|
101
|
+
loading: e.loading,
|
|
102
|
+
disabled: e.loading || e.readonly,
|
|
103
|
+
"icon-position": "right",
|
|
104
|
+
class: "shrink-0",
|
|
105
|
+
label: y(N)("action.submit")
|
|
106
|
+
}, null, 8, [
|
|
107
|
+
"loading",
|
|
108
|
+
"disabled",
|
|
109
|
+
"label"
|
|
110
|
+
])])
|
|
111
|
+
]),
|
|
112
|
+
_: 1
|
|
113
|
+
}, 8, ["modelValue", "readonly"])]))]),
|
|
114
|
+
_: 1
|
|
115
|
+
})]);
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
}), P = /* @__PURE__ */ e({ default: () => F }), F = N;
|
|
119
|
+
//#endregion
|
|
120
|
+
export { P as n, F as t };
|
|
121
|
+
|
|
122
|
+
//# sourceMappingURL=PkToolShowContactForm-D9mmqNvI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PkToolShowContactForm-D9mmqNvI.js","names":[],"sources":["../../../../packages/components/src/chat/PkToolShowContactForm.vue","../../../../packages/components/src/chat/PkToolShowContactForm.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed, watch } from 'vue'\n import { useI18n } from 'vue-i18n'\n import { useForm } from '@volverjs/form-vue'\n import * as z from 'zod'\n import { useSafeLocalStorage, useLocalizedString } from 'composables'\n import type { LocalizedString } from 'models'\n import PkStreamingMarkdown from './PkStreamingMarkdown.vue'\n\n const { t: $t } = useI18n({ useScope: 'global' })\n\n const props = defineProps<{\n part: unknown\n submitted?: boolean\n loading?: boolean\n error?: string\n readonly?: boolean\n privacyPolicyNotice?: LocalizedString\n }>()\n\n const toolPart = computed(() => {\n const part = props.part as {\n type: string\n toolCallId: string\n input?: {\n name: string\n email: string\n phone?: string\n conversationContext?: Record<string, unknown>\n }\n }\n return part\n })\n\n const input = computed(() => toolPart.value.input)\n\n const localSubmitted = useSafeLocalStorage<boolean>(\n computed(\n () =>\n `${toolPart.value.toolCallId}-${toolPart.value.type}-submitted`,\n ),\n false,\n )\n\n const LeadFormSchema = z.object({\n name: z.string().min(1).max(255).default(''),\n email: z.email().max(255).default(''),\n phone: z\n .string()\n .max(50)\n .regex(/^[+0-9\\s\\-.()]*$/, $t('validation.invalidPhoneNumber'))\n .optional(),\n })\n\n const emit = defineEmits<{\n submit: [data: Record<string, unknown>]\n }>()\n\n const { VvForm, VvFormField, formData } = useForm(LeadFormSchema, {\n lazyLoad: true,\n })\n\n // Pre-populate form with input values\n watch(\n input,\n (newInput) => {\n formData.value = {\n name: newInput?.name || '',\n email: newInput?.email || '',\n phone: newInput?.phone || '',\n }\n },\n { immediate: true },\n )\n\n watch(\n () => props.submitted,\n (submitted) => {\n if (submitted) {\n localSubmitted.value = true\n }\n },\n { immediate: true },\n )\n\n const isSubmitted = computed(() => {\n return props.submitted || localSubmitted.value\n })\n\n const submitLead = async (data: Record<string, unknown>): Promise<void> => {\n emit('submit', { ...data, metadata: input.value?.conversationContext })\n }\n\n const privacyNotice = useLocalizedString(\n () => props.privacyPolicyNotice,\n 'message.defaultPrivacyPolicyNotice',\n )\n</script>\n\n<template>\n <div class=\"border border-surface-3 rounded-xl w-full overflow-hidden\">\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:send-plane-2-line\" class=\"text-16\" />\n <strong class=\"font-bold\">{{ $t('label.contactUs') }}</strong>\n </div>\n\n <Transition mode=\"out-in\">\n <div v-if=\"!isSubmitted\" class=\"p-sm\">\n <VvForm v-model=\"formData\" :readonly @submit=\"submitLead\">\n <VvFormField\n name=\"name\"\n type=\"text\"\n :label=\"$t('label.name')\"\n :placeholder=\"$t('placeholder.name')\"\n icon=\"ri:user-line\"\n modifiers=\"compact no-label\"\n class=\"mb-md\" />\n <VvFormField\n name=\"email\"\n type=\"email\"\n :label=\"$t('label.email')\"\n :placeholder=\"$t('placeholder.email')\"\n icon=\"ri:mail-line\"\n modifiers=\"compact no-label\"\n class=\"mb-md\" />\n <VvFormField\n name=\"phone\"\n type=\"tel\"\n :label=\"$t('label.phone')\"\n :placeholder=\"$t('placeholder.phone')\"\n icon=\"ri:phone-line\"\n class=\"mb-md\"\n modifiers=\"compact no-label\" />\n\n <div class=\"flex justify-between items-center gap-16 mt-xs\">\n <div\n class=\"text-smaller text-word-3 flex items-center gap-8\">\n <VvIcon\n name=\"ri:shield-check-line\"\n class=\"text-16 shrink-0\" />\n <PkStreamingMarkdown\n :markdown=\"privacyNotice\"\n class=\"wysiwyg\" />\n </div>\n <VvButton\n type=\"submit\"\n modifiers=\"primary\"\n :loading\n :disabled=\"loading || readonly\"\n icon-position=\"right\"\n class=\"shrink-0\"\n :label=\"$t('action.submit')\" />\n </div>\n </VvForm>\n </div>\n <div v-else class=\"p-sm\">\n <div class=\"flex items-center gap-sm\">\n <VvIcon\n name=\"ri:mail-check-line\"\n class=\"text-24 text-success\" />\n <div>\n <strong class=\"font-semibold block text-success\">\n {{ $t('message.leadSubmittedTitle') }}\n </strong>\n <p class=\"text-word-3\">\n {{ $t('message.leadSubmittedMessage') }}\n </p>\n </div>\n </div>\n </div>\n </Transition>\n </div>\n</template>\n","<script setup lang=\"ts\">\n import { computed, watch } from 'vue'\n import { useI18n } from 'vue-i18n'\n import { useForm } from '@volverjs/form-vue'\n import * as z from 'zod'\n import { useSafeLocalStorage, useLocalizedString } from 'composables'\n import type { LocalizedString } from 'models'\n import PkStreamingMarkdown from './PkStreamingMarkdown.vue'\n\n const { t: $t } = useI18n({ useScope: 'global' })\n\n const props = defineProps<{\n part: unknown\n submitted?: boolean\n loading?: boolean\n error?: string\n readonly?: boolean\n privacyPolicyNotice?: LocalizedString\n }>()\n\n const toolPart = computed(() => {\n const part = props.part as {\n type: string\n toolCallId: string\n input?: {\n name: string\n email: string\n phone?: string\n conversationContext?: Record<string, unknown>\n }\n }\n return part\n })\n\n const input = computed(() => toolPart.value.input)\n\n const localSubmitted = useSafeLocalStorage<boolean>(\n computed(\n () =>\n `${toolPart.value.toolCallId}-${toolPart.value.type}-submitted`,\n ),\n false,\n )\n\n const LeadFormSchema = z.object({\n name: z.string().min(1).max(255).default(''),\n email: z.email().max(255).default(''),\n phone: z\n .string()\n .max(50)\n .regex(/^[+0-9\\s\\-.()]*$/, $t('validation.invalidPhoneNumber'))\n .optional(),\n })\n\n const emit = defineEmits<{\n submit: [data: Record<string, unknown>]\n }>()\n\n const { VvForm, VvFormField, formData } = useForm(LeadFormSchema, {\n lazyLoad: true,\n })\n\n // Pre-populate form with input values\n watch(\n input,\n (newInput) => {\n formData.value = {\n name: newInput?.name || '',\n email: newInput?.email || '',\n phone: newInput?.phone || '',\n }\n },\n { immediate: true },\n )\n\n watch(\n () => props.submitted,\n (submitted) => {\n if (submitted) {\n localSubmitted.value = true\n }\n },\n { immediate: true },\n )\n\n const isSubmitted = computed(() => {\n return props.submitted || localSubmitted.value\n })\n\n const submitLead = async (data: Record<string, unknown>): Promise<void> => {\n emit('submit', { ...data, metadata: input.value?.conversationContext })\n }\n\n const privacyNotice = useLocalizedString(\n () => props.privacyPolicyNotice,\n 'message.defaultPrivacyPolicyNotice',\n )\n</script>\n\n<template>\n <div class=\"border border-surface-3 rounded-xl w-full overflow-hidden\">\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:send-plane-2-line\" class=\"text-16\" />\n <strong class=\"font-bold\">{{ $t('label.contactUs') }}</strong>\n </div>\n\n <Transition mode=\"out-in\">\n <div v-if=\"!isSubmitted\" class=\"p-sm\">\n <VvForm v-model=\"formData\" :readonly @submit=\"submitLead\">\n <VvFormField\n name=\"name\"\n type=\"text\"\n :label=\"$t('label.name')\"\n :placeholder=\"$t('placeholder.name')\"\n icon=\"ri:user-line\"\n modifiers=\"compact no-label\"\n class=\"mb-md\" />\n <VvFormField\n name=\"email\"\n type=\"email\"\n :label=\"$t('label.email')\"\n :placeholder=\"$t('placeholder.email')\"\n icon=\"ri:mail-line\"\n modifiers=\"compact no-label\"\n class=\"mb-md\" />\n <VvFormField\n name=\"phone\"\n type=\"tel\"\n :label=\"$t('label.phone')\"\n :placeholder=\"$t('placeholder.phone')\"\n icon=\"ri:phone-line\"\n class=\"mb-md\"\n modifiers=\"compact no-label\" />\n\n <div class=\"flex justify-between items-center gap-16 mt-xs\">\n <div\n class=\"text-smaller text-word-3 flex items-center gap-8\">\n <VvIcon\n name=\"ri:shield-check-line\"\n class=\"text-16 shrink-0\" />\n <PkStreamingMarkdown\n :markdown=\"privacyNotice\"\n class=\"wysiwyg\" />\n </div>\n <VvButton\n type=\"submit\"\n modifiers=\"primary\"\n :loading\n :disabled=\"loading || readonly\"\n icon-position=\"right\"\n class=\"shrink-0\"\n :label=\"$t('action.submit')\" />\n </div>\n </VvForm>\n </div>\n <div v-else class=\"p-sm\">\n <div class=\"flex items-center gap-sm\">\n <VvIcon\n name=\"ri:mail-check-line\"\n class=\"text-24 text-success\" />\n <div>\n <strong class=\"font-semibold block text-success\">\n {{ $t('message.leadSubmittedTitle') }}\n </strong>\n <p class=\"text-word-3\">\n {{ $t('message.leadSubmittedMessage') }}\n </p>\n </div>\n </div>\n </div>\n </Transition>\n </div>\n</template>\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { o as e } from "./useChatbotStore-
|
|
1
|
+
import { o as e } from "./useChatbotStore-DE8leYO8.js";
|
|
2
2
|
import { VvButton as t, VvButtonGroup as n, VvDropdown as r, VvDropdownAction as i, VvIcon as a } from "@volverjs/ui-vue/components";
|
|
3
3
|
import { computed as o, createElementBlock as s, createElementVNode as c, createTextVNode as l, createVNode as u, defineComponent as d, guardReactiveProps as f, normalizeProps as p, openBlock as m, toDisplayString as h, unref as g, withCtx as _ } from "vue";
|
|
4
4
|
import { useClipboard as v } from "@vueuse/core";
|
|
@@ -86,4 +86,4 @@ var y = { class: "border border-surface-3 rounded-xl w-full overflow-hidden" },
|
|
|
86
86
|
//#endregion
|
|
87
87
|
export { k as n, A as t };
|
|
88
88
|
|
|
89
|
-
//# sourceMappingURL=PkToolShowEmail-
|
|
89
|
+
//# sourceMappingURL=PkToolShowEmail-DFM6ClX-.js.map
|