@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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composables.js","names":[],"sources":["../src/utils/cookie.ts","../src/utils/index.ts","../src/composables/useChatbotAgent.ts","../src/composables/useChatbotAuth.ts","../src/composables/useFocusTrapBypass.ts"],"sourcesContent":["import { logger } from 'utils'\n\nconst DEFAULT_COOKIE_NAME = 'eight-wave-ai'\nconst DEFAULT_USER_ID_COOKIE_SUFFIX = '-uid'\nconst MAX_AGE_ONE_YEAR = 31536000\n\nfunction setCookie(name: string, value: string, maxAge: number) {\n try {\n document.cookie = `${name}=${value}; path=/; max-age=${maxAge}; SameSite=Lax; Secure`\n } catch (error) {\n logger.warn(\n '[cookie] setCookie blocked (cross-origin/tracking protection)',\n error,\n )\n }\n}\n\nfunction getCookie(name: string): string {\n try {\n return (\n document.cookie\n .split('; ')\n .find((row) => row.startsWith(`${name}=`))\n ?.split('=')[1] ?? ''\n )\n } catch (error) {\n logger.warn(\n '[cookie] getCookie blocked (cross-origin/tracking protection)',\n error,\n )\n return ''\n }\n}\n\n// create first-party session cookie for authentication with 1 year expiry\nexport function setSessionCookie(\n token: string,\n cookieName: string = DEFAULT_COOKIE_NAME,\n) {\n setCookie(cookieName, token, MAX_AGE_ONE_YEAR)\n}\n\n// retrieve first-party session cookie\nexport function getSessionCookie(cookieName: string = DEFAULT_COOKIE_NAME) {\n return getCookie(cookieName)\n}\n\n// persist anonymous userId alongside session token to enable re-auth after session expiry\nexport function setAnonymousUserIdCookie(\n userId: string,\n cookieName: string = DEFAULT_COOKIE_NAME,\n) {\n setCookie(\n `${cookieName}${DEFAULT_USER_ID_COOKIE_SUFFIX}`,\n userId,\n MAX_AGE_ONE_YEAR,\n )\n}\n\n// retrieve persisted anonymous userId\nexport function getAnonymousUserIdCookie(\n cookieName: string = DEFAULT_COOKIE_NAME,\n) {\n return getCookie(`${cookieName}${DEFAULT_USER_ID_COOKIE_SUFFIX}`)\n}\n\n// TODO: call this when an anonymous user links a real account (onLinkAccount flow on the client side)\nexport function clearAnonymousUserIdCookie(\n cookieName: string = DEFAULT_COOKIE_NAME,\n) {\n setCookie(`${cookieName}${DEFAULT_USER_ID_COOKIE_SUFFIX}`, '', 0)\n}\n","export * from './cookie'\n\nexport const BACKEND_URL: string = import.meta.env.VITE_BACKEND_URL\nexport const AUTH_BASE_PATH = 'auth'\n","import type { MaybeRefOrGetter } from 'vue'\nimport { computed, ref, toValue, watch } from 'vue'\nimport type { AgentPublic } from 'models'\nimport { createChatbotApiClient } from 'composables'\nimport { resolveContrastColor } from 'components/src/chat/utils'\nimport { BACKEND_URL } from '~/utils'\n\nexport function useChatbotAgent(options: {\n baseUrl?: string\n basePath?: string\n organizationSlug?: MaybeRefOrGetter<string>\n agentId?: MaybeRefOrGetter<string>\n headers?: MaybeRefOrGetter<Record<string, string> | undefined>\n}) {\n const agent = ref<AgentPublic>()\n\n watch(\n [\n () => toValue(options.organizationSlug),\n () => toValue(options.agentId),\n ],\n async ([newOrganizationSlug, newAgentId]) => {\n if (!newOrganizationSlug || !newAgentId) {\n return\n }\n const apiClient = createChatbotApiClient({\n baseUrl: options.baseUrl ?? BACKEND_URL,\n basePath: options.basePath,\n headers: () => toValue(options.headers),\n })\n try {\n agent.value = await apiClient.getAgent(\n newOrganizationSlug,\n newAgentId,\n )\n } catch {\n agent.value = undefined\n }\n },\n { immediate: true },\n )\n\n const contrastColor = computed(() =>\n resolveContrastColor(\n agent.value?.interface.textColor,\n agent.value?.interface.mainColor,\n ),\n )\n const mainColor = computed(() => agent.value?.interface.mainColor)\n\n const themeClass = computed(() => {\n const theme = agent.value?.interface.theme\n if (!theme || theme === 'auto') {\n return ['theme']\n }\n return ['theme', `theme--${theme}`]\n })\n\n const themeStyle = computed(() =>\n agent.value\n ? {\n '--chatbot-main-color': mainColor.value,\n '--chatbot-contrast-color': contrastColor.value,\n }\n : undefined,\n )\n\n return {\n agent,\n contrastColor,\n mainColor,\n themeClass,\n themeStyle,\n }\n}\n","import type { MaybeRefOrGetter } from 'vue'\nimport type { BetterAuthClientPlugin } from 'better-auth/client'\nimport type { auth } from 'auth'\nimport { computed, ref, watch, toValue } from 'vue'\nimport { createAuthClient } from 'better-auth/vue'\nimport {\n inferAdditionalFields,\n anonymousClient,\n} from 'better-auth/client/plugins'\nimport {\n getSessionCookie,\n setSessionCookie,\n getAnonymousUserIdCookie,\n setAnonymousUserIdCookie,\n BACKEND_URL,\n AUTH_BASE_PATH,\n} from '~/utils'\n\nfunction anonymousReauthClient() {\n return {\n id: 'anonymous-reauth' as const,\n getActions: ($fetch) => ({\n signIn: {\n anonymousReauth: async (data: { userId: string }) => {\n return $fetch<{\n token: string\n user: Record<string, unknown>\n }>('/sign-in/anonymous-reauth', {\n method: 'POST',\n body: data,\n })\n },\n },\n }),\n pathMethods: {\n '/sign-in/anonymous-reauth': 'POST' as const,\n },\n } satisfies BetterAuthClientPlugin\n}\n\nfunction externalAuthClient() {\n return {\n id: 'external-auth' as const,\n getActions: ($fetch) => ({\n signIn: {\n externalToken: async (data: { token: string }) => {\n return $fetch<{\n token: string\n user: Record<string, unknown>\n }>('/sign-in/external-token', {\n method: 'POST',\n body: data,\n })\n },\n },\n }),\n pathMethods: {\n '/sign-in/external-token': 'POST' as const,\n },\n atomListeners: [\n {\n matcher: (path: string) => path === '/sign-in/external-token',\n signal: '$sessionSignal' as const,\n },\n ],\n } satisfies BetterAuthClientPlugin\n}\n\ntype AuthClientOptions = {\n baseURL?: string\n basePath?: string\n plugins: [\n ReturnType<typeof anonymousClient>,\n ReturnType<typeof anonymousReauthClient>,\n ReturnType<typeof externalAuthClient>,\n ]\n}\n\nexport type AuthClient = ReturnType<typeof createAuthClient<AuthClientOptions>>\n\nexport function useChatbotAuth(\n options: {\n baseUrl?: string\n basePath?: string\n externalToken?: MaybeRefOrGetter<string | undefined>\n awaitExternalToken?: boolean\n isActive?: MaybeRefOrGetter<boolean>\n cookieName?: string\n } = {},\n) {\n const _token = ref(getSessionCookie(options.cookieName))\n\n const token = computed({\n get: () => _token.value,\n set: (token: string) => {\n setSessionCookie(token, options.cookieName)\n _token.value = token\n },\n })\n\n const headers = computed(() =>\n token.value ? { Authorization: `Bearer ${token.value}` } : undefined,\n )\n\n const client = createAuthClient({\n baseURL: options.baseUrl ?? BACKEND_URL,\n basePath: options.basePath ?? AUTH_BASE_PATH,\n plugins: [\n inferAdditionalFields<typeof auth>(),\n anonymousClient(),\n anonymousReauthClient(),\n externalAuthClient(),\n ],\n fetchOptions: {\n onSuccess: (ctx) => {\n const newTokenFromHeader =\n ctx.response.headers.get('set-auth-token')\n if (newTokenFromHeader) {\n token.value = newTokenFromHeader\n }\n },\n auth: {\n type: 'Bearer',\n token: () => token.value,\n },\n },\n }) as AuthClient\n\n const session = client.useSession()\n const isAuthenticating = ref(false)\n const externalToken = computed(() => toValue(options.externalToken))\n const isActive = computed(() => toValue(options.isActive) ?? true)\n\n async function signInAnonymously(): Promise<void> {\n const { data } = await client.signIn.anonymous()\n if (data?.token) {\n token.value = data.token\n if (data.user?.id) {\n setAnonymousUserIdCookie(\n data.user.id as string,\n options.cookieName,\n )\n }\n }\n }\n\n /**\n * Attempts to create a new session for an existing anonymous user.\n * Returns true if re-auth succeeded, false otherwise.\n */\n async function tryAnonymousReauth(): Promise<boolean> {\n const storedUserId = getAnonymousUserIdCookie(options.cookieName)\n if (!storedUserId) {\n return false\n }\n try {\n const { data } = await client.signIn.anonymousReauth({\n userId: storedUserId,\n })\n if (data?.token) {\n token.value = data.token\n await session.value.refetch()\n return true\n }\n } catch {\n // user record may have been deleted — fall back to creating a new one\n }\n return false\n }\n\n async function signInWithExternalToken(\n newExternalToken: string,\n ): Promise<void> {\n if (isAuthenticating.value) {\n return\n }\n isAuthenticating.value = true\n try {\n const { data } = await client.signIn.externalToken({\n token: newExternalToken,\n })\n if (data?.token) {\n token.value = data.token\n await session.value.refetch()\n return\n }\n await signInAnonymously()\n } catch {\n await signInAnonymously()\n } finally {\n isAuthenticating.value = false\n }\n }\n\n async function signInAnonymouslyWithFallback(): Promise<void> {\n if (isAuthenticating.value) {\n return\n }\n isAuthenticating.value = true\n try {\n const reauthed = await tryAnonymousReauth()\n if (!reauthed) {\n await signInAnonymously()\n }\n } finally {\n isAuthenticating.value = false\n }\n }\n\n watch(\n [isActive, session],\n ([newIsActive, newSession]) => {\n if (!newIsActive) {\n return\n }\n if (\n !newSession.isPending &&\n !newSession.isRefetching &&\n !isAuthenticating.value &&\n !newSession.data\n ) {\n if (externalToken.value) {\n signInWithExternalToken(externalToken.value)\n return\n }\n if (options.awaitExternalToken) {\n return\n }\n signInAnonymouslyWithFallback()\n return\n }\n\n // Backfill userId cookie for existing anonymous sessions\n const user = newSession.data?.user\n if (\n user?.isAnonymous &&\n user.id &&\n !getAnonymousUserIdCookie(options.cookieName)\n ) {\n setAnonymousUserIdCookie(user.id as string, options.cookieName)\n }\n },\n { immediate: true },\n )\n\n watch(externalToken, (newToken) => {\n if (newToken && isActive.value) {\n signInWithExternalToken(newToken)\n }\n })\n\n function onError(error: { type: string; title: string; status: number }) {\n if (error.status === 401) {\n if (externalToken.value) {\n signInWithExternalToken(externalToken.value)\n return\n }\n signInAnonymouslyWithFallback()\n }\n }\n\n const userId = computed(() => session.value.data?.user?.id)\n\n return {\n client,\n session,\n isAuthenticating,\n token,\n headers,\n onError,\n userId,\n }\n}\n","import { getCurrentInstance, onBeforeUnmount, onMounted } from 'vue'\n\n/**\n * Prevents external focus-trapping libraries (e.g. Bootstrap 5 modals) from\n * stealing focus away from elements inside this custom element's shadow root.\n *\n * Bootstrap modals attach a `focusin` listener on `document` that pulls focus\n * back whenever it leaves the modal subtree. Because our custom element lives\n * outside the modal in the DOM, every focus event that escapes the shadow root\n * is treated as a \"focus escape\" and gets redirected back into the modal.\n *\n * Fix: intercept `focusin` at the shadow root boundary in the **bubble phase**\n * and stop its propagation. The event still reaches every internal element\n * normally (capture → target → bubble up through the shadow tree), but is\n * stopped at the shadow root before it can re-target and continue to `document`.\n *\n * Must be called inside a `.ce.vue` root component's `<script setup>`.\n */\nexport function useFocusTrapBypass() {\n let shadowRoot: ShadowRoot | null = null\n\n const stopFocusPropagation = (event: Event) => {\n event.stopPropagation()\n }\n\n onMounted(() => {\n const instance = getCurrentInstance()\n const rootNode = instance?.proxy?.$el?.getRootNode()\n\n if (!(rootNode instanceof ShadowRoot)) {\n return\n }\n\n shadowRoot = rootNode\n shadowRoot.addEventListener('focusin', stopFocusPropagation)\n })\n\n onBeforeUnmount(() => {\n if (!shadowRoot) {\n return\n }\n\n shadowRoot.removeEventListener('focusin', stopFocusPropagation)\n shadowRoot = null\n })\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"composables.js","names":[],"sources":["../src/utils/cookie.ts","../src/utils/index.ts","../src/composables/useChatbotAgent.ts","../src/composables/useChatbotAuth.ts","../src/composables/useFocusTrapBypass.ts"],"sourcesContent":["import { logger } from 'utils'\n\nconst DEFAULT_COOKIE_NAME = 'eight-wave-ai'\nconst DEFAULT_USER_ID_COOKIE_SUFFIX = '-uid'\nconst MAX_AGE_ONE_YEAR = 31536000\n\nfunction setCookie(name: string, value: string, maxAge: number) {\n try {\n document.cookie = `${name}=${value}; path=/; max-age=${maxAge}; SameSite=Lax; Secure`\n } catch (error) {\n logger.warn(\n '[cookie] setCookie blocked (cross-origin/tracking protection)',\n error,\n )\n }\n}\n\nfunction getCookie(name: string): string {\n try {\n return (\n document.cookie\n .split('; ')\n .find((row) => row.startsWith(`${name}=`))\n ?.split('=')[1] ?? ''\n )\n } catch (error) {\n logger.warn(\n '[cookie] getCookie blocked (cross-origin/tracking protection)',\n error,\n )\n return ''\n }\n}\n\n// create first-party session cookie for authentication with 1 year expiry\nexport function setSessionCookie(\n token: string,\n cookieName: string = DEFAULT_COOKIE_NAME,\n) {\n setCookie(cookieName, token, MAX_AGE_ONE_YEAR)\n}\n\n// retrieve first-party session cookie\nexport function getSessionCookie(cookieName: string = DEFAULT_COOKIE_NAME) {\n return getCookie(cookieName)\n}\n\n// persist anonymous userId alongside session token to enable re-auth after session expiry\nexport function setAnonymousUserIdCookie(\n userId: string,\n cookieName: string = DEFAULT_COOKIE_NAME,\n) {\n setCookie(\n `${cookieName}${DEFAULT_USER_ID_COOKIE_SUFFIX}`,\n userId,\n MAX_AGE_ONE_YEAR,\n )\n}\n\n// retrieve persisted anonymous userId\nexport function getAnonymousUserIdCookie(\n cookieName: string = DEFAULT_COOKIE_NAME,\n) {\n return getCookie(`${cookieName}${DEFAULT_USER_ID_COOKIE_SUFFIX}`)\n}\n\n// TODO: call this when an anonymous user links a real account (onLinkAccount flow on the client side)\nexport function clearAnonymousUserIdCookie(\n cookieName: string = DEFAULT_COOKIE_NAME,\n) {\n setCookie(`${cookieName}${DEFAULT_USER_ID_COOKIE_SUFFIX}`, '', 0)\n}\n","export * from './cookie'\n\nexport const BACKEND_URL: string = import.meta.env.VITE_BACKEND_URL\nexport const AUTH_BASE_PATH = 'auth'\n","import type { MaybeRefOrGetter } from 'vue'\nimport { computed, ref, toValue, watch } from 'vue'\nimport type { AgentPublic } from 'models'\nimport { createChatbotApiClient } from 'composables'\nimport { resolveContrastColor } from 'components/src/chat/utils'\nimport { BACKEND_URL } from '~/utils'\n\nexport function useChatbotAgent(options: {\n baseUrl?: string\n basePath?: string\n organizationSlug?: MaybeRefOrGetter<string>\n agentId?: MaybeRefOrGetter<string>\n headers?: MaybeRefOrGetter<Record<string, string> | undefined>\n}) {\n const agent = ref<AgentPublic>()\n\n watch(\n [\n () => toValue(options.organizationSlug),\n () => toValue(options.agentId),\n ],\n async ([newOrganizationSlug, newAgentId]) => {\n if (!newOrganizationSlug || !newAgentId) {\n return\n }\n const apiClient = createChatbotApiClient({\n baseUrl: options.baseUrl ?? BACKEND_URL,\n basePath: options.basePath,\n headers: () => toValue(options.headers),\n })\n try {\n agent.value = await apiClient.getAgent(\n newOrganizationSlug,\n newAgentId,\n )\n } catch {\n agent.value = undefined\n }\n },\n { immediate: true },\n )\n\n const contrastColor = computed(() =>\n resolveContrastColor(\n agent.value?.interface.textColor,\n agent.value?.interface.mainColor,\n ),\n )\n const mainColor = computed(() => agent.value?.interface.mainColor)\n\n const themeClass = computed(() => {\n const theme = agent.value?.interface.theme\n if (!theme || theme === 'auto') {\n return ['theme']\n }\n return ['theme', `theme--${theme}`]\n })\n\n const themeStyle = computed(() =>\n agent.value\n ? {\n '--chatbot-main-color': mainColor.value,\n '--chatbot-contrast-color': contrastColor.value,\n }\n : undefined,\n )\n\n return {\n agent,\n contrastColor,\n mainColor,\n themeClass,\n themeStyle,\n }\n}\n","import type { MaybeRefOrGetter } from 'vue'\nimport type { BetterAuthClientPlugin } from 'better-auth/client'\nimport type { auth } from 'auth'\nimport { computed, ref, watch, toValue } from 'vue'\nimport { createAuthClient } from 'better-auth/vue'\nimport {\n inferAdditionalFields,\n anonymousClient,\n} from 'better-auth/client/plugins'\nimport {\n getSessionCookie,\n setSessionCookie,\n getAnonymousUserIdCookie,\n setAnonymousUserIdCookie,\n BACKEND_URL,\n AUTH_BASE_PATH,\n} from '~/utils'\n\nfunction anonymousReauthClient() {\n return {\n id: 'anonymous-reauth' as const,\n getActions: ($fetch) => ({\n signIn: {\n anonymousReauth: async (data: { userId: string }) => {\n return $fetch<{\n token: string\n user: Record<string, unknown>\n }>('/sign-in/anonymous-reauth', {\n method: 'POST',\n body: data,\n })\n },\n },\n }),\n pathMethods: {\n '/sign-in/anonymous-reauth': 'POST' as const,\n },\n } satisfies BetterAuthClientPlugin\n}\n\nfunction externalAuthClient() {\n return {\n id: 'external-auth' as const,\n getActions: ($fetch) => ({\n signIn: {\n externalToken: async (data: { token: string }) => {\n return $fetch<{\n token: string\n user: Record<string, unknown>\n }>('/sign-in/external-token', {\n method: 'POST',\n body: data,\n })\n },\n },\n }),\n pathMethods: {\n '/sign-in/external-token': 'POST' as const,\n },\n atomListeners: [\n {\n matcher: (path: string) => path === '/sign-in/external-token',\n signal: '$sessionSignal' as const,\n },\n ],\n } satisfies BetterAuthClientPlugin\n}\n\ntype AuthClientOptions = {\n baseURL?: string\n basePath?: string\n plugins: [\n ReturnType<typeof anonymousClient>,\n ReturnType<typeof anonymousReauthClient>,\n ReturnType<typeof externalAuthClient>,\n ]\n}\n\nexport type AuthClient = ReturnType<typeof createAuthClient<AuthClientOptions>>\n\nexport function useChatbotAuth(\n options: {\n baseUrl?: string\n basePath?: string\n externalToken?: MaybeRefOrGetter<string | undefined>\n awaitExternalToken?: boolean\n isActive?: MaybeRefOrGetter<boolean>\n cookieName?: string\n } = {},\n) {\n const _token = ref(getSessionCookie(options.cookieName))\n\n const token = computed({\n get: () => _token.value,\n set: (token: string) => {\n setSessionCookie(token, options.cookieName)\n _token.value = token\n },\n })\n\n const headers = computed(() =>\n token.value ? { Authorization: `Bearer ${token.value}` } : undefined,\n )\n\n const client = createAuthClient({\n baseURL: options.baseUrl ?? BACKEND_URL,\n basePath: options.basePath ?? AUTH_BASE_PATH,\n plugins: [\n inferAdditionalFields<typeof auth>(),\n anonymousClient(),\n anonymousReauthClient(),\n externalAuthClient(),\n ],\n fetchOptions: {\n onSuccess: (ctx) => {\n const newTokenFromHeader =\n ctx.response.headers.get('set-auth-token')\n if (newTokenFromHeader) {\n token.value = newTokenFromHeader\n }\n },\n auth: {\n type: 'Bearer',\n token: () => token.value,\n },\n },\n }) as AuthClient\n\n const session = client.useSession()\n const isAuthenticating = ref(false)\n const externalToken = computed(() => toValue(options.externalToken))\n const isActive = computed(() => toValue(options.isActive) ?? true)\n\n async function signInAnonymously(): Promise<void> {\n const { data } = await client.signIn.anonymous()\n if (data?.token) {\n token.value = data.token\n if (data.user?.id) {\n setAnonymousUserIdCookie(\n data.user.id as string,\n options.cookieName,\n )\n }\n }\n }\n\n /**\n * Attempts to create a new session for an existing anonymous user.\n * Returns true if re-auth succeeded, false otherwise.\n */\n async function tryAnonymousReauth(): Promise<boolean> {\n const storedUserId = getAnonymousUserIdCookie(options.cookieName)\n if (!storedUserId) {\n return false\n }\n try {\n const { data } = await client.signIn.anonymousReauth({\n userId: storedUserId,\n })\n if (data?.token) {\n token.value = data.token\n await session.value.refetch()\n return true\n }\n } catch {\n // user record may have been deleted — fall back to creating a new one\n }\n return false\n }\n\n async function signInWithExternalToken(\n newExternalToken: string,\n ): Promise<void> {\n if (isAuthenticating.value) {\n return\n }\n isAuthenticating.value = true\n try {\n const { data } = await client.signIn.externalToken({\n token: newExternalToken,\n })\n if (data?.token) {\n token.value = data.token\n await session.value.refetch()\n return\n }\n await signInAnonymously()\n } catch {\n await signInAnonymously()\n } finally {\n isAuthenticating.value = false\n }\n }\n\n async function signInAnonymouslyWithFallback(): Promise<void> {\n if (isAuthenticating.value) {\n return\n }\n isAuthenticating.value = true\n try {\n const reauthed = await tryAnonymousReauth()\n if (!reauthed) {\n await signInAnonymously()\n }\n } finally {\n isAuthenticating.value = false\n }\n }\n\n watch(\n [isActive, session],\n ([newIsActive, newSession]) => {\n if (!newIsActive) {\n return\n }\n if (\n !newSession.isPending &&\n !newSession.isRefetching &&\n !isAuthenticating.value &&\n !newSession.data\n ) {\n if (externalToken.value) {\n signInWithExternalToken(externalToken.value)\n return\n }\n if (options.awaitExternalToken) {\n return\n }\n signInAnonymouslyWithFallback()\n return\n }\n\n // Backfill userId cookie for existing anonymous sessions\n const user = newSession.data?.user\n if (\n user?.isAnonymous &&\n user.id &&\n !getAnonymousUserIdCookie(options.cookieName)\n ) {\n setAnonymousUserIdCookie(user.id as string, options.cookieName)\n }\n },\n { immediate: true },\n )\n\n watch(externalToken, (newToken) => {\n if (newToken && isActive.value) {\n signInWithExternalToken(newToken)\n }\n })\n\n function onError(error: { type: string; title: string; status: number }) {\n if (error.status === 401) {\n if (externalToken.value) {\n signInWithExternalToken(externalToken.value)\n return\n }\n signInAnonymouslyWithFallback()\n }\n }\n\n const userId = computed(() => session.value.data?.user?.id)\n\n return {\n client,\n session,\n isAuthenticating,\n token,\n headers,\n onError,\n userId,\n }\n}\n","import { getCurrentInstance, onBeforeUnmount, onMounted } from 'vue'\n\n/**\n * Prevents external focus-trapping libraries (e.g. Bootstrap 5 modals) from\n * stealing focus away from elements inside this custom element's shadow root.\n *\n * Bootstrap modals attach a `focusin` listener on `document` that pulls focus\n * back whenever it leaves the modal subtree. Because our custom element lives\n * outside the modal in the DOM, every focus event that escapes the shadow root\n * is treated as a \"focus escape\" and gets redirected back into the modal.\n *\n * Fix: intercept `focusin` at the shadow root boundary in the **bubble phase**\n * and stop its propagation. The event still reaches every internal element\n * normally (capture → target → bubble up through the shadow tree), but is\n * stopped at the shadow root before it can re-target and continue to `document`.\n *\n * Must be called inside a `.ce.vue` root component's `<script setup>`.\n */\nexport function useFocusTrapBypass() {\n let shadowRoot: ShadowRoot | null = null\n\n const stopFocusPropagation = (event: Event) => {\n event.stopPropagation()\n }\n\n onMounted(() => {\n const instance = getCurrentInstance()\n const rootNode = instance?.proxy?.$el?.getRootNode()\n\n if (!(rootNode instanceof ShadowRoot)) {\n return\n }\n\n shadowRoot = rootNode\n shadowRoot.addEventListener('focusin', stopFocusPropagation)\n })\n\n onBeforeUnmount(() => {\n if (!shadowRoot) {\n return\n }\n\n shadowRoot.removeEventListener('focusin', stopFocusPropagation)\n shadowRoot = null\n })\n}\n"],"mappings":"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"}
|