@8wave/ai-elements 0.84.0 → 0.85.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +109 -0
- package/dist/_chunks/Media-Cu3QLEp0.js +120 -0
- package/dist/_chunks/Media-Cu3QLEp0.js.map +1 -0
- package/dist/_chunks/{PkStreamingMarkdown-SVWv4Oye.js → PkStreamingMarkdown-C_fNNe9O.js} +307 -295
- package/dist/_chunks/PkStreamingMarkdown-C_fNNe9O.js.map +1 -0
- package/dist/_chunks/PkToolRequestConfirm-DfRFlvE0.js +48 -0
- package/dist/_chunks/PkToolRequestConfirm-DfRFlvE0.js.map +1 -0
- package/dist/_chunks/PkToolRequestGeolocation-BpH3Ev71.js +67 -0
- package/dist/_chunks/PkToolRequestGeolocation-BpH3Ev71.js.map +1 -0
- package/dist/_chunks/PkToolRequestOAuthConnection-Ctz50teF.js +63 -0
- package/dist/_chunks/PkToolRequestOAuthConnection-Ctz50teF.js.map +1 -0
- package/dist/_chunks/{PkToolShowArtifact-Ddz3DsWl.js → PkToolShowArtifact-Drp_zW-3.js} +33 -33
- package/dist/_chunks/{PkToolShowArtifact-Ddz3DsWl.js.map → PkToolShowArtifact-Drp_zW-3.js.map} +1 -1
- package/dist/_chunks/{PkToolShowCalendarEvent-Kl7HolAK.js → PkToolShowCalendarEvent-D1XYExcQ.js} +40 -40
- package/dist/_chunks/{PkToolShowCalendarEvent-Kl7HolAK.js.map → PkToolShowCalendarEvent-D1XYExcQ.js.map} +1 -1
- package/dist/_chunks/PkToolShowComparison-DjK4sXS0.js +64 -0
- package/dist/_chunks/{PkToolShowComparison-BzyqEIMV.js.map → PkToolShowComparison-DjK4sXS0.js.map} +1 -1
- package/dist/_chunks/PkToolShowContactForm-DresTyBD.js +119 -0
- package/dist/_chunks/PkToolShowContactForm-DresTyBD.js.map +1 -0
- package/dist/_chunks/PkToolShowDiagram-Bg6gQn7r.js +228 -0
- package/dist/_chunks/PkToolShowDiagram-Bg6gQn7r.js.map +1 -0
- package/dist/_chunks/{PkToolShowEmail-DsmUAss-.js → PkToolShowEmail-DGCKzD3s.js} +31 -31
- package/dist/_chunks/{PkToolShowEmail-DsmUAss-.js.map → PkToolShowEmail-DGCKzD3s.js.map} +1 -1
- package/dist/_chunks/{PkToolShowImageGallery-BDKm1kSX.js → PkToolShowImageGallery-BhyAMaes.js} +19 -19
- package/dist/_chunks/{PkToolShowImageGallery-BDKm1kSX.js.map → PkToolShowImageGallery-BhyAMaes.js.map} +1 -1
- package/dist/_chunks/PkToolShowLocation-BDVFw7qK.js +1140 -0
- package/dist/_chunks/PkToolShowLocation-BDVFw7qK.js.map +1 -0
- package/dist/_chunks/{PkToolShowMessage-xy09z85p.js → PkToolShowMessage-BqH-tE8K.js} +27 -27
- package/dist/_chunks/{PkToolShowMessage-xy09z85p.js.map → PkToolShowMessage-BqH-tE8K.js.map} +1 -1
- package/dist/_chunks/PkToolShowMultipleChoice-DNfjzGxI.js +81 -0
- package/dist/_chunks/PkToolShowMultipleChoice-DNfjzGxI.js.map +1 -0
- package/dist/_chunks/{PkToolShowProductList-Al_csZaz.js → PkToolShowProductList-DeU4qyZp.js} +26 -26
- package/dist/_chunks/{PkToolShowProductList-Al_csZaz.js.map → PkToolShowProductList-DeU4qyZp.js.map} +1 -1
- package/dist/_chunks/{PkToolShowQrCode-RUJ3enlC.js → PkToolShowQrCode-BrljSubk.js} +22 -22
- package/dist/_chunks/{PkToolShowQrCode-RUJ3enlC.js.map → PkToolShowQrCode-BrljSubk.js.map} +1 -1
- package/dist/_chunks/PkToolShowSources-Ca36N91a.js +396 -0
- package/dist/_chunks/PkToolShowSources-Ca36N91a.js.map +1 -0
- package/dist/_chunks/PkToolShowSuggestedReply-2lyEikVx.js +47 -0
- package/dist/_chunks/PkToolShowSuggestedReply-2lyEikVx.js.map +1 -0
- package/dist/_chunks/{PkToolShowWeather-CSua0gHs.js → PkToolShowWeather-CnTyMQTT.js} +63 -63
- package/dist/_chunks/{PkToolShowWeather-CSua0gHs.js.map → PkToolShowWeather-CnTyMQTT.js.map} +1 -1
- package/dist/_chunks/{PkToolShowWebPages-8GWslqfY.js → PkToolShowWebPages-X0tkNJhc.js} +19 -19
- package/dist/_chunks/{PkToolShowWebPages-8GWslqfY.js.map → PkToolShowWebPages-X0tkNJhc.js.map} +1 -1
- package/dist/_chunks/{PkUrl-CeYapZ9E.js → PkUrl-ChRoceUn.js} +12 -12
- package/dist/_chunks/{PkUrl-CeYapZ9E.js.map → PkUrl-ChRoceUn.js.map} +1 -1
- package/dist/_chunks/{VvCheckbox.es-kAXSBkfn.js → VvCheckbox.es-CjtdGRKd.js} +63 -63
- package/dist/_chunks/{VvCheckbox.es-kAXSBkfn.js.map → VvCheckbox.es-CjtdGRKd.js.map} +1 -1
- package/dist/_chunks/{VvCheckboxGroup.es-Db-bLs2D.js → VvCheckboxGroup.es-DYHTVBaF.js} +91 -91
- package/dist/_chunks/{VvCheckboxGroup.es-Db-bLs2D.js.map → VvCheckboxGroup.es-DYHTVBaF.js.map} +1 -1
- package/dist/_chunks/VvCombobox.es-BxxQaz48.js +1998 -0
- package/dist/_chunks/{VvCombobox.es-CUUNtqyJ.js.map → VvCombobox.es-BxxQaz48.js.map} +1 -1
- package/dist/_chunks/{VvInputText.es-DeAexenB.js → VvInputText.es-B13qbrJj.js} +420 -420
- package/dist/_chunks/{VvInputText.es-DeAexenB.js.map → VvInputText.es-B13qbrJj.js.map} +1 -1
- package/dist/_chunks/{VvRadio.es-lb_BYfq5.js → VvRadio.es-DuSk75Cl.js} +117 -117
- package/dist/_chunks/{VvRadio.es-lb_BYfq5.js.map → VvRadio.es-DuSk75Cl.js.map} +1 -1
- package/dist/_chunks/{VvRadioGroup.es-BjvxDtU_.js → VvRadioGroup.es-BjPz7xfR.js} +91 -91
- package/dist/_chunks/{VvRadioGroup.es-BjvxDtU_.js.map → VvRadioGroup.es-BjPz7xfR.js.map} +1 -1
- package/dist/_chunks/{VvSelect.es-C9hkmhJf.js → VvSelect.es-CKFBoQN-.js} +119 -119
- package/dist/_chunks/{VvSelect.es-C9hkmhJf.js.map → VvSelect.es-CKFBoQN-.js.map} +1 -1
- package/dist/_chunks/VvTextarea.es-CICFo2Rh.js +1110 -0
- package/dist/_chunks/{VvTextarea.es-B5txwRRm.js.map → VvTextarea.es-CICFo2Rh.js.map} +1 -1
- package/dist/_chunks/dist-Dplp2WfI.js +799 -0
- package/dist/_chunks/{dist-DHG50RNO.js.map → dist-Dplp2WfI.js.map} +1 -1
- package/dist/_chunks/{esm-8uCGyZon.js → esm-CtL6xvv9.js} +19 -19
- package/dist/_chunks/{esm-8uCGyZon.js.map → esm-CtL6xvv9.js.map} +1 -1
- package/dist/_chunks/{floating-ui.vue-bC-fUl9J.js → floating-ui.vue-BWkka9Fn.js} +6 -6
- package/dist/_chunks/{floating-ui.vue-bC-fUl9J.js.map → floating-ui.vue-BWkka9Fn.js.map} +1 -1
- package/dist/_chunks/{iconify-B2ZQHsNr.js → iconify-DlYsYC8z.js} +5 -5
- package/dist/_chunks/{iconify-B2ZQHsNr.js.map → iconify-DlYsYC8z.js.map} +1 -1
- package/dist/_chunks/{index.es-CusxIi0s.js → index.es-9_Td6lnP.js} +2306 -2306
- package/dist/_chunks/{index.es-CusxIi0s.js.map → index.es-9_Td6lnP.js.map} +1 -1
- package/dist/_chunks/index.es-BC4SxvmK.js +994 -0
- package/dist/_chunks/index.es-BC4SxvmK.js.map +1 -0
- package/dist/_chunks/{src-RaVs-PqK.js → src-L9Jq1dyr.js} +11 -11
- package/dist/_chunks/{src-RaVs-PqK.js.map → src-L9Jq1dyr.js.map} +1 -1
- package/dist/_chunks/{useLightbox-C7JFztx4.js → useLightbox-kKLPhYUx.js} +9 -7
- package/dist/_chunks/{useLightbox-C7JFztx4.js.map → useLightbox-kKLPhYUx.js.map} +1 -1
- package/dist/_chunks/{vue-i18n-fHp3k8qw.js → vue-i18n-BjaFxqmH.js} +40 -40
- package/dist/_chunks/{vue-i18n-fHp3k8qw.js.map → vue-i18n-BjaFxqmH.js.map} +1 -1
- package/dist/_chunks/{vue.runtime.esm-bundler-7_kt7y9A.js → vue.runtime.esm-bundler-B-iHWsf4.js} +702 -702
- package/dist/_chunks/{vue.runtime.esm-bundler-7_kt7y9A.js.map → vue.runtime.esm-bundler-B-iHWsf4.js.map} +1 -1
- package/dist/ai-elements.es.js +4016 -10669
- package/dist/ai-elements.es.js.map +1 -1
- package/dist-vue/PkChatbot.js +1 -1
- package/dist-vue/PkChatbotFeedbackForm.js +1 -1
- package/dist-vue/PkChatbotFilePreview.js +1 -1
- package/dist-vue/PkChatbotInput.js +1 -1
- package/dist-vue/PkChatbotMessages.js +1 -1
- package/dist-vue/PkChatbotViewChat.js +1 -1
- package/dist-vue/PkChatbotViewConversations.js +1 -1
- package/dist-vue/PkChatbotViewProfile.js +1 -1
- package/dist-vue/_chunks/Media-D5pFbMNh.js +120 -0
- package/dist-vue/_chunks/Media-D5pFbMNh.js.map +1 -0
- package/dist-vue/_chunks/PkChatbot-UDExD81D.js +190 -0
- package/dist-vue/_chunks/PkChatbot-UDExD81D.js.map +1 -0
- package/dist-vue/_chunks/{PkChatbotFeedbackForm-BiVUo4kv.js → PkChatbotFeedbackForm-Dy2ojy2E.js} +1 -1
- package/dist-vue/_chunks/{PkChatbotFeedbackForm-BiVUo4kv.js.map → PkChatbotFeedbackForm-Dy2ojy2E.js.map} +1 -1
- package/dist-vue/_chunks/{PkChatbotFilePreview-0N9ASbIp.js → PkChatbotFilePreview-7hRouK9o.js} +5 -3
- package/dist-vue/_chunks/PkChatbotFilePreview-7hRouK9o.js.map +1 -0
- package/dist-vue/_chunks/{PkChatbotInput-CsazCkTA.js → PkChatbotInput-Dn4KFNfx.js} +3 -3
- package/dist-vue/_chunks/{PkChatbotInput-CsazCkTA.js.map → PkChatbotInput-Dn4KFNfx.js.map} +1 -1
- package/dist-vue/_chunks/{PkChatbotMessages-BDziUgck.js → PkChatbotMessages-DUOrit9Y.js} +47 -33
- package/dist-vue/_chunks/PkChatbotMessages-DUOrit9Y.js.map +1 -0
- package/dist-vue/_chunks/PkChatbotViewChat-BgH9Op_G.js +225 -0
- package/dist-vue/_chunks/PkChatbotViewChat-BgH9Op_G.js.map +1 -0
- package/dist-vue/_chunks/{PkChatbotViewConversations-kIc1reZT.js → PkChatbotViewConversations-B9KC-0ir.js} +13 -13
- package/dist-vue/_chunks/{PkChatbotViewConversations-kIc1reZT.js.map → PkChatbotViewConversations-B9KC-0ir.js.map} +1 -1
- package/dist-vue/_chunks/{PkChatbotViewProfile-pSKOgtIR.js → PkChatbotViewProfile-C0q898hz.js} +2 -2
- package/dist-vue/_chunks/{PkChatbotViewProfile-pSKOgtIR.js.map → PkChatbotViewProfile-C0q898hz.js.map} +1 -1
- package/dist-vue/_chunks/{PkStreamingMarkdown-BUiAi-qv.js → PkStreamingMarkdown-BDtjktHX.js} +296 -284
- package/dist-vue/_chunks/PkStreamingMarkdown-BDtjktHX.js.map +1 -0
- package/dist-vue/_chunks/PkSvgViewer-DoClMDnF.js +125 -0
- package/dist-vue/_chunks/PkSvgViewer-DoClMDnF.js.map +1 -0
- package/dist-vue/_chunks/PkToolRequestConfirm-BcZ10rMb.js +48 -0
- package/dist-vue/_chunks/{PkToolRequestConfirm-BsHpoI-c.js.map → PkToolRequestConfirm-BcZ10rMb.js.map} +1 -1
- package/dist-vue/_chunks/PkToolRequestGeolocation-DXSqWFTR.js +67 -0
- package/dist-vue/_chunks/PkToolRequestGeolocation-DXSqWFTR.js.map +1 -0
- package/dist-vue/_chunks/PkToolRequestOAuthConnection-CIrFBhxL.js +63 -0
- package/dist-vue/_chunks/{PkToolRequestOAuthConnection-shcJXxtk.js.map → PkToolRequestOAuthConnection-CIrFBhxL.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowArtifact-D4BVWuMi.js → PkToolShowArtifact-BVFPfZT8.js} +3 -3
- package/dist-vue/_chunks/{PkToolShowArtifact-D4BVWuMi.js.map → PkToolShowArtifact-BVFPfZT8.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowCalendarEvent-Q_2-tXmC.js → PkToolShowCalendarEvent-9jaBqWBJ.js} +3 -3
- package/dist-vue/_chunks/{PkToolShowCalendarEvent-Q_2-tXmC.js.map → PkToolShowCalendarEvent-9jaBqWBJ.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowComparison-BpYZb-z5.js → PkToolShowComparison-D1YHzvyy.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowComparison-BpYZb-z5.js.map → PkToolShowComparison-D1YHzvyy.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowContactForm-DuOeYoCU.js → PkToolShowContactForm-BVtuQVGs.js} +5 -5
- package/dist-vue/_chunks/{PkToolShowContactForm-DuOeYoCU.js.map → PkToolShowContactForm-BVtuQVGs.js.map} +1 -1
- package/dist-vue/_chunks/PkToolShowDiagram-CLyYku9I.js +112 -0
- package/dist-vue/_chunks/PkToolShowDiagram-CLyYku9I.js.map +1 -0
- package/dist-vue/_chunks/{PkToolShowEmail-CDR-Cw-s.js → PkToolShowEmail-BZzv2-6y.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowEmail-CDR-Cw-s.js.map → PkToolShowEmail-BZzv2-6y.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowImageGallery-DhGmTPMP.js → PkToolShowImageGallery-Bt7QNtGe.js} +4 -4
- package/dist-vue/_chunks/{PkToolShowImageGallery-DhGmTPMP.js.map → PkToolShowImageGallery-Bt7QNtGe.js.map} +1 -1
- package/dist-vue/_chunks/PkToolShowLocation-DAg9HeYq.js +143 -0
- package/dist-vue/_chunks/PkToolShowLocation-DAg9HeYq.js.map +1 -0
- package/dist-vue/_chunks/{PkToolShowMessage-Cqb0WP-x.js → PkToolShowMessage-DvnO4DDb.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowMessage-Cqb0WP-x.js.map → PkToolShowMessage-DvnO4DDb.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowMultipleChoice-x7hNm6I2.js → PkToolShowMultipleChoice-BEWDze3p.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowMultipleChoice-x7hNm6I2.js.map → PkToolShowMultipleChoice-BEWDze3p.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowProductList-CMFBvHAY.js → PkToolShowProductList-Cyh_fdTh.js} +3 -3
- package/dist-vue/_chunks/{PkToolShowProductList-CMFBvHAY.js.map → PkToolShowProductList-Cyh_fdTh.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowQrCode-LFCfdWyu.js → PkToolShowQrCode-Dz3HlJGs.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowQrCode-LFCfdWyu.js.map → PkToolShowQrCode-Dz3HlJGs.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowSources-D0wbYpTR.js → PkToolShowSources-cFvwqgDz.js} +21 -21
- package/dist-vue/_chunks/{PkToolShowSources-D0wbYpTR.js.map → PkToolShowSources-cFvwqgDz.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowSuggestedReply-CIP1xfB1.js → PkToolShowSuggestedReply-DIrmkOUq.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowSuggestedReply-CIP1xfB1.js.map → PkToolShowSuggestedReply-DIrmkOUq.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowWeather-zT-4E-aX.js → PkToolShowWeather-CKFmoP6M.js} +1 -1
- package/dist-vue/_chunks/{PkToolShowWeather-zT-4E-aX.js.map → PkToolShowWeather-CKFmoP6M.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowWebPages-DLc-5nE0.js → PkToolShowWebPages-DDsErkru.js} +4 -4
- package/dist-vue/_chunks/{PkToolShowWebPages-DLc-5nE0.js.map → PkToolShowWebPages-DDsErkru.js.map} +1 -1
- package/dist-vue/_chunks/{PkUrl-Da1k1VEM.js → PkUrl-DdRprvPJ.js} +1 -1
- package/dist-vue/_chunks/{PkUrl-Da1k1VEM.js.map → PkUrl-DdRprvPJ.js.map} +1 -1
- package/dist-vue/_chunks/{apl-gZJv8aE0.js → apl-CiKuf38q.js} +1 -1
- package/dist-vue/_chunks/{apl-gZJv8aE0.js.map → apl-CiKuf38q.js.map} +1 -1
- package/dist-vue/_chunks/{asciiarmor-BKzT2CxY.js → asciiarmor-Cv_figT_.js} +1 -1
- package/dist-vue/_chunks/{asciiarmor-BKzT2CxY.js.map → asciiarmor-Cv_figT_.js.map} +1 -1
- package/dist-vue/_chunks/{asn1-CUOx9oeT.js → asn1-o22T4Rhb.js} +1 -1
- package/dist-vue/_chunks/{asn1-CUOx9oeT.js.map → asn1-o22T4Rhb.js.map} +1 -1
- package/dist-vue/_chunks/{asterisk-CtQouKe4.js → asterisk-BVQJUqvD.js} +1 -1
- package/dist-vue/_chunks/{asterisk-CtQouKe4.js.map → asterisk-BVQJUqvD.js.map} +1 -1
- package/dist-vue/_chunks/{brainfuck-C6v-NuzS.js → brainfuck-BUjoLd18.js} +1 -1
- package/dist-vue/_chunks/{brainfuck-C6v-NuzS.js.map → brainfuck-BUjoLd18.js.map} +1 -1
- package/dist-vue/_chunks/{clike-DBPD1mz3.js → clike-DnfYdh2t.js} +1 -1
- package/dist-vue/_chunks/{clike-DBPD1mz3.js.map → clike-DnfYdh2t.js.map} +1 -1
- package/dist-vue/_chunks/{clojure-xtczAEDV.js → clojure-Spy-VDMe.js} +1 -1
- package/dist-vue/_chunks/{clojure-xtczAEDV.js.map → clojure-Spy-VDMe.js.map} +1 -1
- package/dist-vue/_chunks/{cmake-DdDZ3JWF.js → cmake-Ctp7rWzy.js} +1 -1
- package/dist-vue/_chunks/{cmake-DdDZ3JWF.js.map → cmake-Ctp7rWzy.js.map} +1 -1
- package/dist-vue/_chunks/{cobol-BAMxIfCa.js → cobol-DX59jXra.js} +1 -1
- package/dist-vue/_chunks/{cobol-BAMxIfCa.js.map → cobol-DX59jXra.js.map} +1 -1
- package/dist-vue/_chunks/{coffeescript-CGTuQQp6.js → coffeescript-Bq4R3kBT.js} +1 -1
- package/dist-vue/_chunks/{coffeescript-CGTuQQp6.js.map → coffeescript-Bq4R3kBT.js.map} +1 -1
- package/dist-vue/_chunks/{commonlisp-Ccb03OgK.js → commonlisp-qnCvPlJb.js} +1 -1
- package/dist-vue/_chunks/{commonlisp-Ccb03OgK.js.map → commonlisp-qnCvPlJb.js.map} +1 -1
- package/dist-vue/_chunks/{createChatbotApiClient-C_E35aQf.js → createChatbotApiClient-C-jT5hE0.js} +96 -95
- package/dist-vue/_chunks/createChatbotApiClient-C-jT5hE0.js.map +1 -0
- package/dist-vue/_chunks/{crystal-DdoSQSAv.js → crystal-B02ya4cQ.js} +1 -1
- package/dist-vue/_chunks/{crystal-DdoSQSAv.js.map → crystal-B02ya4cQ.js.map} +1 -1
- package/dist-vue/_chunks/{css-TU14Ca1R.js → css-CzWlO-Xb.js} +1 -1
- package/dist-vue/_chunks/{css-TU14Ca1R.js.map → css-CzWlO-Xb.js.map} +1 -1
- package/dist-vue/_chunks/{cypher-CXLa4pI5.js → cypher-CLyYkG2-.js} +1 -1
- package/dist-vue/_chunks/{cypher-CXLa4pI5.js.map → cypher-CLyYkG2-.js.map} +1 -1
- package/dist-vue/_chunks/{d-BArAGMlp.js → d-DGUXRLLi.js} +1 -1
- package/dist-vue/_chunks/{d-BArAGMlp.js.map → d-DGUXRLLi.js.map} +1 -1
- package/dist-vue/_chunks/{diff-C3LIbTwG.js → diff-DRe8JdWk.js} +1 -1
- package/dist-vue/_chunks/{diff-C3LIbTwG.js.map → diff-DRe8JdWk.js.map} +1 -1
- package/dist-vue/_chunks/{dist-CUYb2Ykk.js → dist-7BKkikZw.js} +2 -2
- package/dist-vue/_chunks/{dist-CUYb2Ykk.js.map → dist-7BKkikZw.js.map} +1 -1
- package/dist-vue/_chunks/{dist-DlMrwhCk.js → dist-7u7jBD-H.js} +1 -1
- package/dist-vue/_chunks/{dist-DlMrwhCk.js.map → dist-7u7jBD-H.js.map} +1 -1
- package/dist-vue/_chunks/{dist-Bj32YA2b.js → dist-8BVnK6QW.js} +4 -4
- package/dist-vue/_chunks/{dist-Bj32YA2b.js.map → dist-8BVnK6QW.js.map} +1 -1
- package/dist-vue/_chunks/{dist-BtzPY8uU.js → dist-9IwNDEHQ.js} +2 -2
- package/dist-vue/_chunks/{dist-BtzPY8uU.js.map → dist-9IwNDEHQ.js.map} +1 -1
- package/dist-vue/_chunks/{dist-BMTTRExI.js → dist-BGTESNxJ.js} +1 -1
- package/dist-vue/_chunks/{dist-BMTTRExI.js.map → dist-BGTESNxJ.js.map} +1 -1
- package/dist-vue/_chunks/{dist-BUm8Nt7d.js → dist-BWdaSTBW.js} +2 -2
- package/dist-vue/_chunks/{dist-BUm8Nt7d.js.map → dist-BWdaSTBW.js.map} +1 -1
- package/dist-vue/_chunks/{dist-tDt7-5Hh.js → dist-BtFxPYCM.js} +1 -1
- package/dist-vue/_chunks/{dist-tDt7-5Hh.js.map → dist-BtFxPYCM.js.map} +1 -1
- package/dist-vue/_chunks/{dist-BM3i3wHC.js → dist-BwrhMmQA.js} +1 -1
- package/dist-vue/_chunks/{dist-BM3i3wHC.js.map → dist-BwrhMmQA.js.map} +1 -1
- package/dist-vue/_chunks/{dist-B_3TGJwf.js → dist-Cm-J5l4S2.js} +1 -1
- package/dist-vue/_chunks/dist-Cm-J5l4S2.js.map +1 -0
- package/dist-vue/_chunks/{dist-CUah0Xys.js → dist-CnmeOb2N.js} +3 -3
- package/dist-vue/_chunks/{dist-CUah0Xys.js.map → dist-CnmeOb2N.js.map} +1 -1
- package/dist-vue/_chunks/{dist-DI-XHVdE.js → dist-D34LRAfv.js} +2 -2
- package/dist-vue/_chunks/{dist-DI-XHVdE.js.map → dist-D34LRAfv.js.map} +1 -1
- package/dist-vue/_chunks/{dist-DACzskoy2.js → dist-D35h9xud2.js} +3 -3
- package/dist-vue/_chunks/{dist-DACzskoy2.js.map → dist-D35h9xud2.js.map} +1 -1
- package/dist-vue/_chunks/dist-DMKuVADK2.js +441 -0
- package/dist-vue/_chunks/dist-DMKuVADK2.js.map +1 -0
- package/dist-vue/_chunks/{dist-CwWFe7zF.js → dist-Dg1nGvwP.js} +1 -1
- package/dist-vue/_chunks/{dist-CwWFe7zF.js.map → dist-Dg1nGvwP.js.map} +1 -1
- package/dist-vue/_chunks/{dist-B2nNrire.js → dist-YcwJuFBx.js} +2 -2
- package/dist-vue/_chunks/{dist-B2nNrire.js.map → dist-YcwJuFBx.js.map} +1 -1
- package/dist-vue/_chunks/{dist-2JsKACZj.js → dist-b5CbbjSp.js} +1 -1
- package/dist-vue/_chunks/{dist-2JsKACZj.js.map → dist-b5CbbjSp.js.map} +1 -1
- package/dist-vue/_chunks/{dist-Cr5fwgdD.js → dist-kywGQjza.js} +2 -2
- package/dist-vue/_chunks/{dist-Cr5fwgdD.js.map → dist-kywGQjza.js.map} +1 -1
- package/dist-vue/_chunks/{dist-Df_bnb-v.js → dist-l6sREGf7.js} +1 -1
- package/dist-vue/_chunks/{dist-Df_bnb-v.js.map → dist-l6sREGf7.js.map} +1 -1
- package/dist-vue/_chunks/{dist-B1Xwe66S.js → dist-x5C6fPIQ.js} +2 -2
- package/dist-vue/_chunks/{dist-B1Xwe66S.js.map → dist-x5C6fPIQ.js.map} +1 -1
- package/dist-vue/_chunks/{dist-BgntOJ9J.js → dist-x73cXb-w.js} +3 -3
- package/dist-vue/_chunks/{dist-BgntOJ9J.js.map → dist-x73cXb-w.js.map} +1 -1
- package/dist-vue/_chunks/{dockerfile-DzujQve1.js → dockerfile-BpKVodrd.js} +2 -2
- package/dist-vue/_chunks/{dockerfile-DzujQve1.js.map → dockerfile-BpKVodrd.js.map} +1 -1
- package/dist-vue/_chunks/{dtd-B1f0YqWO.js → dtd-q9vHTxZ1.js} +1 -1
- package/dist-vue/_chunks/{dtd-B1f0YqWO.js.map → dtd-q9vHTxZ1.js.map} +1 -1
- package/dist-vue/_chunks/{dylan-bedk9ukf.js → dylan-CTRyD_yN.js} +1 -1
- package/dist-vue/_chunks/{dylan-bedk9ukf.js.map → dylan-CTRyD_yN.js.map} +1 -1
- package/dist-vue/_chunks/{ebnf-Cs5X8R8U.js → ebnf-DPw9AGDC.js} +1 -1
- package/dist-vue/_chunks/{ebnf-Cs5X8R8U.js.map → ebnf-DPw9AGDC.js.map} +1 -1
- package/dist-vue/_chunks/{ecl-CXPqOJjc.js → ecl-CuLlc0XE.js} +1 -1
- package/dist-vue/_chunks/{ecl-CXPqOJjc.js.map → ecl-CuLlc0XE.js.map} +1 -1
- package/dist-vue/_chunks/{eiffel-Oa4yGKHO.js → eiffel-DYyjt7F3.js} +1 -1
- package/dist-vue/_chunks/{eiffel-Oa4yGKHO.js.map → eiffel-DYyjt7F3.js.map} +1 -1
- package/dist-vue/_chunks/{elm-CEbGa4zC.js → elm-DcYv6ZJY.js} +1 -1
- package/dist-vue/_chunks/{elm-CEbGa4zC.js.map → elm-DcYv6ZJY.js.map} +1 -1
- package/dist-vue/_chunks/{erlang-BNnTSw8C.js → erlang-nipePvRg.js} +1 -1
- package/dist-vue/_chunks/{erlang-BNnTSw8C.js.map → erlang-nipePvRg.js.map} +1 -1
- package/dist-vue/_chunks/{factor-BIER3ncI.js → factor-C_jm0Hi8.js} +2 -2
- package/dist-vue/_chunks/{factor-BIER3ncI.js.map → factor-C_jm0Hi8.js.map} +1 -1
- package/dist-vue/_chunks/{fcl-HxmGK-W5.js → fcl-CqmPhDgo.js} +1 -1
- package/dist-vue/_chunks/{fcl-HxmGK-W5.js.map → fcl-CqmPhDgo.js.map} +1 -1
- package/dist-vue/_chunks/{forth-BoRU1oYL.js → forth-GAg6IwF6.js} +1 -1
- package/dist-vue/_chunks/{forth-BoRU1oYL.js.map → forth-GAg6IwF6.js.map} +1 -1
- package/dist-vue/_chunks/{fortran-8E8eLx-x.js → fortran-DyrSTiy7.js} +1 -1
- package/dist-vue/_chunks/{fortran-8E8eLx-x.js.map → fortran-DyrSTiy7.js.map} +1 -1
- package/dist-vue/_chunks/{gas-DzrG9cIr.js → gas-CBY6LBUu.js} +1 -1
- package/dist-vue/_chunks/{gas-DzrG9cIr.js.map → gas-CBY6LBUu.js.map} +1 -1
- package/dist-vue/_chunks/{gherkin-d-xjbPN9.js → gherkin-F6vIWaV0.js} +1 -1
- package/dist-vue/_chunks/{gherkin-d-xjbPN9.js.map → gherkin-F6vIWaV0.js.map} +1 -1
- package/dist-vue/_chunks/{groovy-DluoS5pg.js → groovy-DBvpslJE.js} +1 -1
- package/dist-vue/_chunks/{groovy-DluoS5pg.js.map → groovy-DBvpslJE.js.map} +1 -1
- package/dist-vue/_chunks/{haskell-DWzSrwGO.js → haskell-CzcXTuY3.js} +1 -1
- package/dist-vue/_chunks/{haskell-DWzSrwGO.js.map → haskell-CzcXTuY3.js.map} +1 -1
- package/dist-vue/_chunks/{haxe-nucWqdAl.js → haxe-C0K87vd-.js} +1 -1
- package/dist-vue/_chunks/{haxe-nucWqdAl.js.map → haxe-C0K87vd-.js.map} +1 -1
- package/dist-vue/_chunks/{http-wcQY3fv1.js → http-lhCYiIUK.js} +1 -1
- package/dist-vue/_chunks/{http-wcQY3fv1.js.map → http-lhCYiIUK.js.map} +1 -1
- package/dist-vue/_chunks/{idl-BZjtu2uP.js → idl-DiwlVJ2e.js} +1 -1
- package/dist-vue/_chunks/{idl-BZjtu2uP.js.map → idl-DiwlVJ2e.js.map} +1 -1
- package/dist-vue/_chunks/{javascript-D-DeSYfi.js → javascript-DoLQ_01m.js} +1 -1
- package/dist-vue/_chunks/{javascript-D-DeSYfi.js.map → javascript-DoLQ_01m.js.map} +1 -1
- package/dist-vue/_chunks/{julia-BdkHYLKN.js → julia-D-9kev9I.js} +1 -1
- package/dist-vue/_chunks/{julia-BdkHYLKN.js.map → julia-D-9kev9I.js.map} +1 -1
- package/dist-vue/_chunks/{livescript-B-rE2yGH.js → livescript-BXKPrYL1.js} +1 -1
- package/dist-vue/_chunks/{livescript-B-rE2yGH.js.map → livescript-BXKPrYL1.js.map} +1 -1
- package/dist-vue/_chunks/{lua-8MR4kmO6.js → lua-CmoiUImJ.js} +1 -1
- package/dist-vue/_chunks/{lua-8MR4kmO6.js.map → lua-CmoiUImJ.js.map} +1 -1
- package/dist-vue/_chunks/{mathematica-DsQZ56s1.js → mathematica-C0zVH3hb.js} +1 -1
- package/dist-vue/_chunks/{mathematica-DsQZ56s1.js.map → mathematica-C0zVH3hb.js.map} +1 -1
- package/dist-vue/_chunks/{mbox-BlqAOSZk.js → mbox-BQjArxBt.js} +1 -1
- package/dist-vue/_chunks/{mbox-BlqAOSZk.js.map → mbox-BQjArxBt.js.map} +1 -1
- package/dist-vue/_chunks/{mirc-CeWiL7Xj.js → mirc-CH7vSjBP.js} +1 -1
- package/dist-vue/_chunks/{mirc-CeWiL7Xj.js.map → mirc-CH7vSjBP.js.map} +1 -1
- package/dist-vue/_chunks/{mllike-B4w9rV72.js → mllike-BtNDtwtH.js} +1 -1
- package/dist-vue/_chunks/{mllike-B4w9rV72.js.map → mllike-BtNDtwtH.js.map} +1 -1
- package/dist-vue/_chunks/{modelica-BeZSjbWb.js → modelica-D0D4gw71.js} +1 -1
- package/dist-vue/_chunks/{modelica-BeZSjbWb.js.map → modelica-D0D4gw71.js.map} +1 -1
- package/dist-vue/_chunks/{mscgen-Diy4rp5E.js → mscgen-BREuUTcQ.js} +1 -1
- package/dist-vue/_chunks/{mscgen-Diy4rp5E.js.map → mscgen-BREuUTcQ.js.map} +1 -1
- package/dist-vue/_chunks/{mumps-DHp_hepw.js → mumps-Cj1f6cBa.js} +1 -1
- package/dist-vue/_chunks/{mumps-DHp_hepw.js.map → mumps-Cj1f6cBa.js.map} +1 -1
- package/dist-vue/_chunks/{nginx-ZUseZ3KV.js → nginx-CTa-DOcs.js} +1 -1
- package/dist-vue/_chunks/{nginx-ZUseZ3KV.js.map → nginx-CTa-DOcs.js.map} +1 -1
- package/dist-vue/_chunks/{nsis-g-2nkKRi.js → nsis-BWAOyRUP.js} +2 -2
- package/dist-vue/_chunks/{nsis-g-2nkKRi.js.map → nsis-BWAOyRUP.js.map} +1 -1
- package/dist-vue/_chunks/{ntriples-COZl-CW9.js → ntriples-zIN_qrIe.js} +1 -1
- package/dist-vue/_chunks/{ntriples-COZl-CW9.js.map → ntriples-zIN_qrIe.js.map} +1 -1
- package/dist-vue/_chunks/{octave-qefefCKI.js → octave-DIV6S7Pt.js} +1 -1
- package/dist-vue/_chunks/{octave-qefefCKI.js.map → octave-DIV6S7Pt.js.map} +1 -1
- package/dist-vue/_chunks/{oz-B7xBKeTb.js → oz-5rNpxapS.js} +1 -1
- package/dist-vue/_chunks/{oz-B7xBKeTb.js.map → oz-5rNpxapS.js.map} +1 -1
- package/dist-vue/_chunks/{pascal-B0deIU4R.js → pascal-7C5712Nh.js} +1 -1
- package/dist-vue/_chunks/{pascal-B0deIU4R.js.map → pascal-7C5712Nh.js.map} +1 -1
- package/dist-vue/_chunks/{perl-CrEeHa0-.js → perl-eAVlqDxG.js} +1 -1
- package/dist-vue/_chunks/{perl-CrEeHa0-.js.map → perl-eAVlqDxG.js.map} +1 -1
- package/dist-vue/_chunks/{pig-CQcAmjLr.js → pig-C6AL_r8r.js} +1 -1
- package/dist-vue/_chunks/{pig-CQcAmjLr.js.map → pig-C6AL_r8r.js.map} +1 -1
- package/dist-vue/_chunks/{powershell-CEOsLn17.js → powershell-DsA9A7ee.js} +1 -1
- package/dist-vue/_chunks/{powershell-CEOsLn17.js.map → powershell-DsA9A7ee.js.map} +1 -1
- package/dist-vue/_chunks/{properties-CIZ3QFxD.js → properties-DuF6jBwF.js} +1 -1
- package/dist-vue/_chunks/{properties-CIZ3QFxD.js.map → properties-DuF6jBwF.js.map} +1 -1
- package/dist-vue/_chunks/{protobuf-B9FrV1JK.js → protobuf-nlPU8ZM-.js} +1 -1
- package/dist-vue/_chunks/{protobuf-B9FrV1JK.js.map → protobuf-nlPU8ZM-.js.map} +1 -1
- package/dist-vue/_chunks/{pug-Dn8VvwH3.js → pug-C1RwTStM.js} +2 -2
- package/dist-vue/_chunks/{pug-Dn8VvwH3.js.map → pug-C1RwTStM.js.map} +1 -1
- package/dist-vue/_chunks/{puppet-C6TXtx4p.js → puppet-DFYbyNW2.js} +1 -1
- package/dist-vue/_chunks/{puppet-C6TXtx4p.js.map → puppet-DFYbyNW2.js.map} +1 -1
- package/dist-vue/_chunks/{python-DcAJJ0JG.js → python-Dv1DGCiz.js} +1 -1
- package/dist-vue/_chunks/{python-DcAJJ0JG.js.map → python-Dv1DGCiz.js.map} +1 -1
- package/dist-vue/_chunks/{q-WbmgnnmF.js → q-X1HLKyVv.js} +1 -1
- package/dist-vue/_chunks/{q-WbmgnnmF.js.map → q-X1HLKyVv.js.map} +1 -1
- package/dist-vue/_chunks/{r-C22XZ_AN.js → r-BZGUCY-c.js} +1 -1
- package/dist-vue/_chunks/{r-C22XZ_AN.js.map → r-BZGUCY-c.js.map} +1 -1
- package/dist-vue/_chunks/{rpm-B9APie5d.js → rpm-CDLCwfOD.js} +1 -1
- package/dist-vue/_chunks/{rpm-B9APie5d.js.map → rpm-CDLCwfOD.js.map} +1 -1
- package/dist-vue/_chunks/{ruby-D24Ax8EE.js → ruby-cVyKV-zg.js} +1 -1
- package/dist-vue/_chunks/{ruby-D24Ax8EE.js.map → ruby-cVyKV-zg.js.map} +1 -1
- package/dist-vue/_chunks/{sas-D4-twsz3.js → sas-BDPIwc3L.js} +1 -1
- package/dist-vue/_chunks/{sas-D4-twsz3.js.map → sas-BDPIwc3L.js.map} +1 -1
- package/dist-vue/_chunks/{scheme-CCmbAfjG.js → scheme-6m6S6r1m.js} +1 -1
- package/dist-vue/_chunks/{scheme-CCmbAfjG.js.map → scheme-6m6S6r1m.js.map} +1 -1
- package/dist-vue/_chunks/{shell-oVzTSWfo.js → shell-Dcuubvcg.js} +1 -1
- package/dist-vue/_chunks/{shell-oVzTSWfo.js.map → shell-Dcuubvcg.js.map} +1 -1
- package/dist-vue/_chunks/{sieve-DUlxvKqS.js → sieve-C0Ec4mOZ.js} +1 -1
- package/dist-vue/_chunks/{sieve-DUlxvKqS.js.map → sieve-C0Ec4mOZ.js.map} +1 -1
- package/dist-vue/_chunks/{simple-mode-B6svE9zR.js → simple-mode-CaO_UoX6.js} +1 -1
- package/dist-vue/_chunks/{simple-mode-B6svE9zR.js.map → simple-mode-CaO_UoX6.js.map} +1 -1
- package/dist-vue/_chunks/{smalltalk-9-Xd93Rn.js → smalltalk-C8mY0f87.js} +1 -1
- package/dist-vue/_chunks/{smalltalk-9-Xd93Rn.js.map → smalltalk-C8mY0f87.js.map} +1 -1
- package/dist-vue/_chunks/{solr-DzeE5sFM.js → solr-jbM7m8s0.js} +1 -1
- package/dist-vue/_chunks/{solr-DzeE5sFM.js.map → solr-jbM7m8s0.js.map} +1 -1
- package/dist-vue/_chunks/{sparql-GFDxBmFa.js → sparql-DJZXdQFZ.js} +1 -1
- package/dist-vue/_chunks/{sparql-GFDxBmFa.js.map → sparql-DJZXdQFZ.js.map} +1 -1
- package/dist-vue/_chunks/{spreadsheet-BD6sBFg8.js → spreadsheet-iKWvNdRt.js} +1 -1
- package/dist-vue/_chunks/{spreadsheet-BD6sBFg8.js.map → spreadsheet-iKWvNdRt.js.map} +1 -1
- package/dist-vue/_chunks/{sql-JuMmsoSB.js → sql-BQ2tj9MP.js} +1 -1
- package/dist-vue/_chunks/{sql-JuMmsoSB.js.map → sql-BQ2tj9MP.js.map} +1 -1
- package/dist-vue/_chunks/{src-EtGd6cRz.js → src-DW4YojFN.js} +10 -10
- package/dist-vue/_chunks/{src-EtGd6cRz.js.map → src-DW4YojFN.js.map} +1 -1
- package/dist-vue/_chunks/{stex-Cy057UFl.js → stex-BEcrdSPS.js} +1 -1
- package/dist-vue/_chunks/{stex-Cy057UFl.js.map → stex-BEcrdSPS.js.map} +1 -1
- package/dist-vue/_chunks/{stylus-0KIe3uMX.js → stylus-b5gEI930.js} +1 -1
- package/dist-vue/_chunks/{stylus-0KIe3uMX.js.map → stylus-b5gEI930.js.map} +1 -1
- package/dist-vue/_chunks/{swift-tYMDqvYT.js → swift-RNJNWQs6.js} +1 -1
- package/dist-vue/_chunks/{swift-tYMDqvYT.js.map → swift-RNJNWQs6.js.map} +1 -1
- package/dist-vue/_chunks/{tcl-CSbjfJ81.js → tcl-BbY3AuDS.js} +1 -1
- package/dist-vue/_chunks/{tcl-CSbjfJ81.js.map → tcl-BbY3AuDS.js.map} +1 -1
- package/dist-vue/_chunks/{textile-Qe0pFxF7.js → textile-BM2q07iw.js} +1 -1
- package/dist-vue/_chunks/{textile-Qe0pFxF7.js.map → textile-BM2q07iw.js.map} +1 -1
- package/dist-vue/_chunks/{tiddlywiki-CYhUSC90.js → tiddlywiki-Bu7ffwvE.js} +1 -1
- package/dist-vue/_chunks/{tiddlywiki-CYhUSC90.js.map → tiddlywiki-Bu7ffwvE.js.map} +1 -1
- package/dist-vue/_chunks/{tiki-jtNVir5w.js → tiki-BSMiLiXp.js} +1 -1
- package/dist-vue/_chunks/{tiki-jtNVir5w.js.map → tiki-BSMiLiXp.js.map} +1 -1
- package/dist-vue/_chunks/{toml-C3FMZ9FE.js → toml-D3U9uI6V.js} +1 -1
- package/dist-vue/_chunks/{toml-C3FMZ9FE.js.map → toml-D3U9uI6V.js.map} +1 -1
- package/dist-vue/_chunks/{troff-FdVM_sPB.js → troff-DK_RaQh-.js} +1 -1
- package/dist-vue/_chunks/{troff-FdVM_sPB.js.map → troff-DK_RaQh-.js.map} +1 -1
- package/dist-vue/_chunks/{ttcn-Tmx7e7xS.js → ttcn-DVxr7ZdN.js} +1 -1
- package/dist-vue/_chunks/{ttcn-Tmx7e7xS.js.map → ttcn-DVxr7ZdN.js.map} +1 -1
- package/dist-vue/_chunks/{ttcn-cfg-BP7MXn1J.js → ttcn-cfg-CJG9xdrY.js} +1 -1
- package/dist-vue/_chunks/{ttcn-cfg-BP7MXn1J.js.map → ttcn-cfg-CJG9xdrY.js.map} +1 -1
- package/dist-vue/_chunks/{turtle-BtDXIrpF.js → turtle-Cj5kMy4D.js} +1 -1
- package/dist-vue/_chunks/{turtle-BtDXIrpF.js.map → turtle-Cj5kMy4D.js.map} +1 -1
- package/dist-vue/_chunks/{useChatbotStore-BXi-Gx7b.js → useChatbotStore-DCCWlutT.js} +1244 -1217
- package/dist-vue/_chunks/useChatbotStore-DCCWlutT.js.map +1 -0
- package/dist-vue/_chunks/{useSafeLocalStorage-BL5mqfb7.js → useSafeLocalStorage-DmA2eEi6.js} +2 -2
- package/dist-vue/_chunks/{useSafeLocalStorage-BL5mqfb7.js.map → useSafeLocalStorage-DmA2eEi6.js.map} +1 -1
- package/dist-vue/_chunks/{utils-CRojvghU.js → utils-UX35fb5C.js} +13 -13
- package/dist-vue/_chunks/{utils-CRojvghU.js.map → utils-UX35fb5C.js.map} +1 -1
- package/dist-vue/_chunks/{vb-DZ7E2F9i.js → vb-RlGsZALV.js} +1 -1
- package/dist-vue/_chunks/{vb-DZ7E2F9i.js.map → vb-RlGsZALV.js.map} +1 -1
- package/dist-vue/_chunks/{vbscript-DmYal433.js → vbscript-C6LN5bsX.js} +1 -1
- package/dist-vue/_chunks/{vbscript-DmYal433.js.map → vbscript-C6LN5bsX.js.map} +1 -1
- package/dist-vue/_chunks/{velocity-Dwi9C1bZ.js → velocity-7A5nvZTA.js} +1 -1
- package/dist-vue/_chunks/{velocity-Dwi9C1bZ.js.map → velocity-7A5nvZTA.js.map} +1 -1
- package/dist-vue/_chunks/{verilog-6XMMKLGD.js → verilog-CoPTkjsM.js} +1 -1
- package/dist-vue/_chunks/{verilog-6XMMKLGD.js.map → verilog-CoPTkjsM.js.map} +1 -1
- package/dist-vue/_chunks/{vhdl-BczymJF3.js → vhdl-BRtaeCKx.js} +1 -1
- package/dist-vue/_chunks/{vhdl-BczymJF3.js.map → vhdl-BRtaeCKx.js.map} +1 -1
- package/dist-vue/_chunks/{webidl-CaC70GJ2.js → webidl-BVwPXw7k.js} +1 -1
- package/dist-vue/_chunks/{webidl-CaC70GJ2.js.map → webidl-BVwPXw7k.js.map} +1 -1
- package/dist-vue/_chunks/{xquery-JS07XjNe.js → xquery-CXV9KVdL.js} +1 -1
- package/dist-vue/_chunks/{xquery-JS07XjNe.js.map → xquery-CXV9KVdL.js.map} +1 -1
- package/dist-vue/_chunks/{yacas-BXZNhOsZ.js → yacas-5ByKKRqf.js} +1 -1
- package/dist-vue/_chunks/{yacas-BXZNhOsZ.js.map → yacas-5ByKKRqf.js.map} +1 -1
- package/dist-vue/_chunks/{z80-Dtc8Q5vA.js → z80-wbH4fW7-.js} +1 -1
- package/dist-vue/_chunks/{z80-Dtc8Q5vA.js.map → z80-wbH4fW7-.js.map} +1 -1
- package/dist-vue/api.js +1 -1
- package/dist-vue/apps/web-component/src/components/EmbeddedChatWidget.ce.d.ts +8 -5
- package/dist-vue/apps/web-component/src/components/FloatingChatWidget.ce.d.ts +8 -1
- package/dist-vue/apps/web-component/src/composables/useChatbotAuth.d.ts +4 -0
- package/dist-vue/apps/web-component/src/lib.d.ts +34 -0
- package/dist-vue/apps/web-component/src/utils/emitWidgetEvent.d.ts +10 -0
- package/dist-vue/composables.js +4 -4
- package/dist-vue/index.js +8628 -4422
- package/dist-vue/index.js.map +1 -1
- package/dist-vue/locales.js +106 -62
- package/dist-vue/packages/auth/src/index.d.ts +12 -12
- package/dist-vue/packages/components/src/PkEditorJsonSchema.d.ts +36 -0
- package/dist-vue/packages/components/src/PkSchemaField.d.ts +17 -0
- package/dist-vue/packages/components/src/PkSvgViewer.d.ts +8 -0
- package/dist-vue/packages/components/src/chat/PkAgentSettingsPanel.d.ts +5 -2
- package/dist-vue/packages/components/src/chat/PkChatbot.d.ts +2 -0
- package/dist-vue/packages/components/src/chat/PkChatbotMessages.d.ts +1 -0
- package/dist-vue/packages/components/src/chat/PkMessageParts.d.ts +6 -6
- package/dist-vue/packages/components/src/chat/PkStreamingMarkdown.d.ts +2 -0
- package/dist-vue/packages/components/src/chat/PkStreamingMarkdownAutoscroll.d.ts +1 -0
- package/dist-vue/packages/components/src/chat/PkToolShowDiagram.d.ts +8 -0
- package/dist-vue/packages/components/src/chat/PkToolShowLocation.d.ts +2 -0
- package/dist-vue/packages/components/src/chat/constants.d.ts +1 -1
- package/dist-vue/packages/components/src/index.d.ts +4 -1
- package/dist-vue/packages/composable/src/chatbot/useChatbotStore.d.ts +21 -3
- package/dist-vue/packages/composable/src/index.d.ts +1 -0
- package/dist-vue/packages/composable/src/useJsonSchemaEditor.d.ts +45 -0
- package/dist-vue/packages/models/src/schema/Agent.d.ts +4 -0
- package/dist-vue/packages/models/src/schema/Chat.d.ts +3 -0
- package/dist-vue/packages/models/src/schema/Notification.d.ts +6 -0
- package/dist-vue/packages/models/src/schema/ReasoningChat.d.ts +2 -0
- package/dist-vue/packages/models/src/schema/SubAgent.d.ts +2 -0
- package/dist-vue/packages/models/src/schema/constants.d.ts +2 -0
- package/dist-vue/packages/models/src/utils.d.ts +2 -0
- package/dist-vue/style.css +1 -1
- package/package.json +7 -7
- package/dist/_chunks/PkStreamingMarkdown-SVWv4Oye.js.map +0 -1
- package/dist/_chunks/PkToolShowComparison-BzyqEIMV.js +0 -64
- package/dist/_chunks/VvCombobox.es-CUUNtqyJ.js +0 -1998
- package/dist/_chunks/VvTextarea.es-B5txwRRm.js +0 -1110
- package/dist/_chunks/dist-DHG50RNO.js +0 -768
- package/dist/_chunks/marker-icon-2x-Df3ovzYv.js +0 -7
- package/dist/_chunks/marker-icon-2x-Df3ovzYv.js.map +0 -1
- package/dist/_chunks/marker-icon-CCYFvBsS.js +0 -7
- package/dist/_chunks/marker-icon-CCYFvBsS.js.map +0 -1
- package/dist/_chunks/marker-shadow-CHjnGkIt.js +0 -7
- package/dist/_chunks/marker-shadow-CHjnGkIt.js.map +0 -1
- package/dist-vue/_chunks/Media-Dq8UU7iQ.js +0 -120
- package/dist-vue/_chunks/Media-Dq8UU7iQ.js.map +0 -1
- package/dist-vue/_chunks/PkChatbot-CoXx7Rul.js +0 -191
- package/dist-vue/_chunks/PkChatbot-CoXx7Rul.js.map +0 -1
- package/dist-vue/_chunks/PkChatbotFilePreview-0N9ASbIp.js.map +0 -1
- package/dist-vue/_chunks/PkChatbotMessages-BDziUgck.js.map +0 -1
- package/dist-vue/_chunks/PkChatbotViewChat-DMnMkELX.js +0 -278
- package/dist-vue/_chunks/PkChatbotViewChat-DMnMkELX.js.map +0 -1
- package/dist-vue/_chunks/PkStreamingMarkdown-BUiAi-qv.js.map +0 -1
- package/dist-vue/_chunks/PkToolRequestConfirm-BsHpoI-c.js +0 -49
- package/dist-vue/_chunks/PkToolRequestOAuthConnection-shcJXxtk.js +0 -64
- package/dist-vue/_chunks/PkToolShowLocation-DBHdxOFr.js +0 -149
- package/dist-vue/_chunks/PkToolShowLocation-DBHdxOFr.js.map +0 -1
- package/dist-vue/_chunks/createChatbotApiClient-C_E35aQf.js.map +0 -1
- package/dist-vue/_chunks/dist-B_3TGJwf.js.map +0 -1
- package/dist-vue/_chunks/dist-sx4PacBp2.js +0 -440
- package/dist-vue/_chunks/dist-sx4PacBp2.js.map +0 -1
- package/dist-vue/_chunks/useChatbotStore-BXi-Gx7b.js.map +0 -1
- /package/dist/_chunks/{_plugin-vue_export-helper-BWIS0o4o.js → _plugin-vue_export-helper-5qR9iAls.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PkChatbotInput-CsazCkTA.js","names":["$t","$slots","$n"],"sources":["../../../../node_modules/.pnpm/autosize@6.0.1/node_modules/autosize/dist/autosize.esm.js","../../../../packages/components/src/chat/PkChatbotInput.vue","../../../../packages/components/src/chat/PkChatbotInput.vue"],"sourcesContent":["var e=new Map;function t(t){var o=e.get(t);o&&o.destroy()}function o(t){var o=e.get(t);o&&o.update()}var r=null;\"undefined\"==typeof window?((r=function(e){return e}).destroy=function(e){return e},r.update=function(e){return e}):((r=function(t,o){return t&&Array.prototype.forEach.call(t.length?t:[t],function(t){return function(t){if(t&&t.nodeName&&\"TEXTAREA\"===t.nodeName&&!e.has(t)){var o,r=null,n=window.getComputedStyle(t),i=(o=t.value,function(){a({testForHeightReduction:\"\"===o||!t.value.startsWith(o),restoreTextAlign:null}),o=t.value}),l=function(o){t.removeEventListener(\"autosize:destroy\",l),t.removeEventListener(\"autosize:update\",s),t.removeEventListener(\"input\",i),window.removeEventListener(\"resize\",s),Object.keys(o).forEach(function(e){return t.style[e]=o[e]}),e.delete(t)}.bind(t,{height:t.style.height,resize:t.style.resize,textAlign:t.style.textAlign,overflowY:t.style.overflowY,overflowX:t.style.overflowX,wordWrap:t.style.wordWrap});t.addEventListener(\"autosize:destroy\",l),t.addEventListener(\"autosize:update\",s),t.addEventListener(\"input\",i),window.addEventListener(\"resize\",s),t.style.overflowX=\"hidden\",t.style.wordWrap=\"break-word\",e.set(t,{destroy:l,update:s}),s()}function a(e){var o,i,l=e.restoreTextAlign,s=void 0===l?null:l,d=e.testForHeightReduction,u=void 0===d||d,c=n.overflowY;if(0!==t.scrollHeight&&(\"vertical\"===n.resize?t.style.resize=\"none\":\"both\"===n.resize&&(t.style.resize=\"horizontal\"),u&&(o=function(e){for(var t=[];e&&e.parentNode&&e.parentNode instanceof Element;)e.parentNode.scrollTop&&t.push([e.parentNode,e.parentNode.scrollTop]),e=e.parentNode;return function(){return t.forEach(function(e){var t=e[0],o=e[1];t.style.scrollBehavior=\"auto\",t.scrollTop=o,t.style.scrollBehavior=null})}}(t),t.style.height=\"\"),i=\"content-box\"===n.boxSizing?t.scrollHeight-(parseFloat(n.paddingTop)+parseFloat(n.paddingBottom)):t.scrollHeight+parseFloat(n.borderTopWidth)+parseFloat(n.borderBottomWidth),\"none\"!==n.maxHeight&&i>parseFloat(n.maxHeight)?(\"hidden\"===n.overflowY&&(t.style.overflow=\"scroll\"),i=parseFloat(n.maxHeight)):\"hidden\"!==n.overflowY&&(t.style.overflow=\"hidden\"),t.style.height=i+\"px\",s&&(t.style.textAlign=s),o&&o(),r!==i&&(t.dispatchEvent(new Event(\"autosize:resized\",{bubbles:!0})),r=i),c!==n.overflow&&!s)){var v=n.textAlign;\"hidden\"===n.overflow&&(t.style.textAlign=\"start\"===v?\"end\":\"start\"),a({restoreTextAlign:v,testForHeightReduction:!0})}}function s(){a({testForHeightReduction:!0,restoreTextAlign:null})}}(t)}),t}).destroy=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],t),e},r.update=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],o),e});var n=r;export default n;\n","<script setup lang=\"ts\">\n // @ts-expect-error - no types for autosize\n import autosize from 'autosize'\n import {\n computed,\n nextTick,\n onBeforeUnmount,\n onMounted,\n ref,\n useTemplateRef,\n watch,\n } from 'vue'\n import { useDropZone } from '@vueuse/core'\n import type { AgentFileUpload } from 'models'\n import type { PendingAttachment } from 'composables'\n import PkStreamingMarkdown from './PkStreamingMarkdown.vue'\n import PkChatbotFilePreview from './PkChatbotFilePreview.vue'\n\n // --- Models & Props ---\n\n const modelValue = defineModel<string>()\n const pendingAttachments = defineModel<PendingAttachment[]>(\n 'pendingAttachments',\n { default: () => [] },\n )\n\n const emit = defineEmits<{\n submit: []\n 'stop-generation': []\n 'file-select': [file: File]\n }>()\n\n const props = defineProps<{\n placeholder?: string\n dismissableNotice?: string\n status?: 'submitted' | 'streaming' | 'ready' | 'error'\n maxMessageLength?: number\n fileUpload?: AgentFileUpload\n enableDragDrop?: boolean\n }>()\n\n // --- Template refs ---\n\n const textareaEl = useTemplateRef<HTMLTextAreaElement>('textareaEl')\n const fileInputEl = useTemplateRef<HTMLInputElement>('fileInputEl')\n const cameraInputEl = useTemplateRef<HTMLInputElement>('cameraInputEl')\n const formEl = useTemplateRef<HTMLFormElement>('formEl')\n\n // --- Input buffering (decouples typing from reactive model propagation) ---\n\n const localValue = ref(modelValue.value ?? '')\n let syncTimer: ReturnType<typeof setTimeout> | null = null\n\n const cancelSync = () => {\n if (syncTimer !== null) {\n clearTimeout(syncTimer)\n syncTimer = null\n }\n }\n\n const flushSync = () => {\n cancelSync()\n modelValue.value = localValue.value\n }\n\n const scheduleSync = () => {\n cancelSync()\n syncTimer = setTimeout(() => {\n modelValue.value = localValue.value\n syncTimer = null\n }, 300)\n }\n\n const onTextareaInput = () => {\n localValue.value = textareaEl.value?.value ?? ''\n scheduleSync()\n }\n\n watch(modelValue, (v) => {\n if (v !== localValue.value) {\n localValue.value = v ?? ''\n nextTick(() => {\n if (textareaEl.value) {\n autosize.update(textareaEl.value)\n }\n })\n }\n })\n\n // --- Status computeds ---\n\n const isStreaming = computed(() => props.status === 'streaming')\n const isSubmitted = computed(() => props.status === 'submitted')\n const isInputDisabled = computed(\n () => isStreaming.value || isSubmitted.value,\n )\n\n // --- Validation ---\n\n const currentLength = computed(() => localValue.value.length)\n\n const isOverLimit = computed(\n () =>\n props.maxMessageLength !== undefined &&\n currentLength.value > props.maxMessageLength,\n )\n\n const isUploadingAnyFile = computed(() =>\n pendingAttachments.value.some((a) => a.state === 'uploading'),\n )\n\n const isSubmitEnabled = computed(() => {\n if (\n isInputDisabled.value ||\n isUploadingAnyFile.value ||\n isOverLimit.value\n ) {\n return false\n }\n return localValue.value.trim().length > 0\n })\n\n // --- File upload ---\n\n const hasCaptureSupport = 'capture' in document.createElement('input')\n\n const acceptMimeTypes = computed(\n () => props.fileUpload?.allowedMimeTypes?.join(',') ?? '',\n )\n\n const acceptImageMimeTypes = computed(() =>\n (props.fileUpload?.allowedMimeTypes ?? [])\n .filter((m) => m.startsWith('image/'))\n .join(','),\n )\n\n const showCameraOption = computed(\n () => hasCaptureSupport && acceptImageMimeTypes.value.length > 0,\n )\n\n const openFilePicker = () => {\n fileInputEl.value?.click()\n }\n\n const openCameraPicker = () => {\n cameraInputEl.value?.click()\n }\n\n const onFileChange = (event: Event) => {\n const input = event.target as HTMLInputElement\n const file = input.files?.[0]\n if (file) {\n emit('file-select', file)\n }\n input.value = ''\n }\n\n // --- Attachments ---\n\n const removeAttachment = (id: string) => {\n const att = pendingAttachments.value.find((a) => a.id === id)\n if (att) {\n URL.revokeObjectURL(att.localUrl)\n }\n pendingAttachments.value = pendingAttachments.value.filter(\n (a) => a.id !== id,\n )\n }\n\n // --- Drag & drop ---\n\n const isDragDropEnabled = computed(\n () => (props.enableDragDrop ?? true) && !!props.fileUpload?.enabled,\n )\n\n const handleDrop = (files: File[] | null) => {\n if (!isDragDropEnabled.value || !files) {\n return\n }\n for (const file of files) {\n emit('file-select', file)\n }\n }\n\n const { isOverDropZone } = useDropZone(formEl, {\n dataTypes: computed(() => props.fileUpload?.allowedMimeTypes ?? []),\n onDrop: handleDrop,\n })\n\n // --- Dismissable notice ---\n\n const isDismissableNoticeVisible = ref(true)\n const closeDismissableNotice = () => {\n isDismissableNoticeVisible.value = false\n }\n\n // --- Submit ---\n\n const handleSubmit = () => {\n if (!isSubmitEnabled.value) {\n return\n }\n flushSync()\n emit('submit')\n localValue.value = ''\n modelValue.value = ''\n nextTick(() => {\n if (textareaEl.value) {\n textareaEl.value.value = ''\n autosize.update(textareaEl.value)\n }\n })\n }\n\n // --- Lifecycle ---\n\n onMounted(() => {\n if (textareaEl.value) {\n autosize(textareaEl.value)\n }\n })\n\n onBeforeUnmount(() => {\n cancelSync()\n if (textareaEl.value) {\n autosize.destroy(textareaEl.value)\n }\n for (const att of pendingAttachments.value) {\n URL.revokeObjectURL(att.localUrl)\n }\n })\n</script>\n\n<template>\n <div class=\"pk-chatbot-input\">\n <div\n v-if=\"dismissableNotice && isDismissableNoticeVisible\"\n class=\"pk-chatbot-input-dismissable-notice\">\n <PkStreamingMarkdown\n :markdown=\"dismissableNotice\"\n class=\"wysiwyg\" />\n <VvButton\n v-if=\"dismissableNotice\"\n :title=\"$t('action.close')\"\n modifiers=\"action-quiet\"\n icon=\"ri:close-line\"\n class=\"w-18 h-18\"\n @click=\"closeDismissableNotice\" />\n </div>\n <form\n ref=\"formEl\"\n class=\"pk-chatbot-input__form\"\n @submit.prevent=\"handleSubmit\">\n <div\n v-if=\"isOverDropZone && isDragDropEnabled\"\n class=\"pk-chatbot-input__drop-overlay\">\n <VvIcon\n name=\"ri:upload-cloud-2-line\"\n class=\"pk-chatbot-input__drop-overlay-icon\" />\n <span>{{ $t('action.dropFile') }}</span>\n </div>\n <div\n v-if=\"pendingAttachments.length\"\n class=\"pk-chatbot-input__attachments\">\n <PkChatbotFilePreview\n v-for=\"att in pendingAttachments\"\n :key=\"att.id\"\n :media-type=\"att.file.type\"\n :url=\"att.localUrl\"\n :filename=\"att.file.name\"\n :loading=\"att.state === 'uploading'\"\n :error=\"att.state === 'error' ? att.error : undefined\"\n :removable=\"att.state !== 'uploading'\"\n @remove=\"removeAttachment(att.id)\" />\n </div>\n <div class=\"pk-chatbot-input__fieldset\">\n <VvDropdown\n v-if=\"\n fileUpload &&\n fileUpload.enabled &&\n (showCameraOption || $slots['additional-actions'])\n \"\n v-bind=\"{\n placement: 'top-start',\n modifiers: 'menu',\n flip: true,\n offset: 3,\n }\">\n <template #default=\"{ init, toggle, aria }\">\n <button\n :ref=\"(e: any) => init(e)\"\n v-bind=\"aria\"\n class=\"pk-chatbot-input__button\"\n type=\"button\"\n :title=\"$t('action.attachFile')\"\n :disabled=\"isInputDisabled\"\n @click=\"toggle\">\n <VvIcon\n name=\"ri:add-line\"\n class=\"pk-chatbot-input__button-icon\" />\n </button>\n </template>\n <template #items>\n <VvDropdownAction\n v-if=\"showCameraOption\"\n :disabled=\"isInputDisabled\"\n @click=\"openCameraPicker\">\n <VvIcon\n name=\"ri:camera-line\"\n class=\"pk-chatbot-input__dropdown-icon\" />\n {{ $t('action.takePhoto') }}\n </VvDropdownAction>\n <VvDropdownAction\n :disabled=\"isInputDisabled\"\n @click=\"openFilePicker\">\n <VvIcon\n name=\"ri:attachment-line\"\n class=\"pk-chatbot-input__dropdown-icon\" />\n {{ $t('action.attachFile') }}\n </VvDropdownAction>\n <slot name=\"additional-actions\" />\n </template>\n </VvDropdown>\n <button\n v-else-if=\"fileUpload && fileUpload.enabled\"\n class=\"pk-chatbot-input__button\"\n type=\"button\"\n :title=\"$t('action.attachFile')\"\n :disabled=\"isInputDisabled\"\n @click=\"openFilePicker\">\n <VvIcon\n name=\"ri:add-line\"\n class=\"pk-chatbot-input__button-icon\" />\n </button>\n <input\n v-if=\"fileUpload && fileUpload.enabled\"\n ref=\"fileInputEl\"\n type=\"file\"\n hidden\n :accept=\"acceptMimeTypes\"\n @change=\"onFileChange\" />\n <input\n v-if=\"fileUpload && fileUpload.enabled && showCameraOption\"\n ref=\"cameraInputEl\"\n type=\"file\"\n capture=\"environment\"\n hidden\n :accept=\"acceptImageMimeTypes\"\n @change=\"onFileChange\" />\n <div class=\"pk-chatbot-input__content\">\n <textarea\n ref=\"textareaEl\"\n :value=\"localValue\"\n class=\"pk-chatbot-input__textarea\"\n name=\"message\"\n rows=\"1\"\n :placeholder\n @input=\"onTextareaInput\"\n @keydown.enter.prevent=\"handleSubmit\"></textarea>\n </div>\n <div\n v-if=\"maxMessageLength\"\n class=\"pk-chatbot-input__counter\"\n :class=\"{ 'pk-chatbot-input__counter--over': isOverLimit }\">\n {{ $n(currentLength, 'integer') }}/<span\n class=\"opacity-60\"\n >{{ $n(maxMessageLength, 'integer') }}</span\n >\n </div>\n <button\n v-if=\"isStreaming\"\n class=\"pk-chatbot-input__button\"\n type=\"button\"\n :title=\"$t('action.stop')\"\n @click=\"emit('stop-generation')\">\n <VvIcon\n name=\"ri:stop-circle-line\"\n class=\"pk-chatbot-input__button-icon\" />\n </button>\n <button\n v-else\n class=\"pk-chatbot-input__button\"\n type=\"submit\"\n :title=\"\n isSubmitEnabled\n ? $t('action.submit')\n : $t('label.disabled')\n \"\n :disabled=\"!isSubmitEnabled\">\n <VvIcon\n :name=\"\n isSubmitted\n ? 'line-md:loading-loop'\n : isSubmitEnabled\n ? 'ri:send-ins-fill'\n : 'ri:send-ins-line'\n \"\n class=\"pk-chatbot-input__button-icon\" />\n </button>\n </div>\n </form>\n </div>\n</template>\n\n<style lang=\"scss\">\n .pk-chatbot-input {\n position: relative;\n display: flex;\n flex-direction: column;\n margin-inline: var(--spacing-sm);\n margin-bottom: var(--spacing-sm);\n\n &-dismissable-notice {\n position: relative;\n padding: var(--spacing-sm);\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: var(--spacing-sm);\n background-color: var(--color-surface-1);\n border-top-left-radius: var(--rounded-xl);\n border-top-right-radius: var(--rounded-xl);\n transition-property: var(--transition-property-all);\n transition-duration: var(--duration-300);\n transition-timing-function: var(--ease-in-out);\n font-size: var(--text-14);\n color: var(--color-word-2);\n\n &::after {\n content: '';\n display: block;\n position: absolute;\n left: 0;\n right: 0;\n bottom: calc(-1 * var(--spacing-12));\n height: var(--spacing-12);\n background: var(--color-surface-1);\n z-index: 1;\n }\n }\n\n &__form {\n position: relative;\n display: flex;\n z-index: 1;\n flex-direction: column;\n border-radius: var(--rounded-xl);\n border: 1px solid var(--color-surface-3);\n background-color: var(--color-surface);\n padding: var(--spacing-14);\n box-shadow: var(--shadow-lg);\n font-size: var(\n --text-16\n ); // prevent ios zoom on input focus by using a font size >= 16px\n gap: var(--spacing-xs);\n transition: border-color var(--duration-200) var(--ease-in-out);\n\n @include media-breakpoint-up('sm', $breakpoints) {\n font-size: var(--text-14);\n padding: var(--spacing-10);\n }\n\n &:has(:focus-within) {\n border-color: var(--color-word-5);\n }\n }\n\n &__drop-overlay {\n position: absolute;\n inset: 0;\n z-index: 10;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-xs);\n border-radius: var(--rounded-xl);\n background-color: color-mix(\n in srgb,\n var(--color-surface) 85%,\n transparent\n );\n pointer-events: none;\n }\n\n &__fieldset {\n display: flex;\n align-items: center;\n gap: var(--spacing-xs);\n flex: 1;\n }\n\n &__content {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: var(--spacing-4);\n min-width: 0;\n overflow: hidden;\n }\n\n &__textarea {\n display: block;\n border: none;\n outline: none;\n resize: none;\n width: 100%;\n max-height: 200px;\n color: var(--color-word-1);\n background-color: var(--color-surface);\n\n &::placeholder {\n color: var(--color-word-4);\n }\n }\n\n &__attachments {\n display: flex;\n flex-wrap: wrap;\n gap: var(--spacing-4);\n padding-bottom: var(--spacing-xs);\n border-bottom: 1px solid var(--color-surface-2);\n }\n\n &__button {\n background-color: transparent;\n border: none;\n cursor: pointer;\n color: var(--color-word-1);\n padding: var(--spacing-4);\n flex-shrink: 0;\n transition: var(--transition-colors);\n border-radius: var(--rounded);\n\n &:hover {\n background-color: var(--color-surface-2);\n }\n\n &:focus-visible {\n outline: 1px solid var(--color-surface-5);\n outline-offset: 0;\n }\n\n &:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n\n &-icon {\n display: block;\n width: var(--spacing-20);\n height: var(--spacing-20);\n }\n }\n\n &__counter {\n background-color: var(--color-surface-1);\n border: 1px solid var(--color-surface-3);\n border-radius: var(--rounded-md);\n font-size: var(--text-12);\n color: var(--color-word-3);\n line-height: 1;\n padding-inline: var(--spacing-6);\n padding-block: var(--spacing-4);\n z-index: 1;\n font-variant-numeric: tabular-nums;\n font-family: var(--font-mono);\n font-weight: var(--font-bold);\n\n &--over {\n color: var(--color-danger);\n border-color: var(--color-danger-lighten-5);\n font-weight: var(--font-bold);\n }\n }\n }\n</style>\n","<script setup lang=\"ts\">\n // @ts-expect-error - no types for autosize\n import autosize from 'autosize'\n import {\n computed,\n nextTick,\n onBeforeUnmount,\n onMounted,\n ref,\n useTemplateRef,\n watch,\n } from 'vue'\n import { useDropZone } from '@vueuse/core'\n import type { AgentFileUpload } from 'models'\n import type { PendingAttachment } from 'composables'\n import PkStreamingMarkdown from './PkStreamingMarkdown.vue'\n import PkChatbotFilePreview from './PkChatbotFilePreview.vue'\n\n // --- Models & Props ---\n\n const modelValue = defineModel<string>()\n const pendingAttachments = defineModel<PendingAttachment[]>(\n 'pendingAttachments',\n { default: () => [] },\n )\n\n const emit = defineEmits<{\n submit: []\n 'stop-generation': []\n 'file-select': [file: File]\n }>()\n\n const props = defineProps<{\n placeholder?: string\n dismissableNotice?: string\n status?: 'submitted' | 'streaming' | 'ready' | 'error'\n maxMessageLength?: number\n fileUpload?: AgentFileUpload\n enableDragDrop?: boolean\n }>()\n\n // --- Template refs ---\n\n const textareaEl = useTemplateRef<HTMLTextAreaElement>('textareaEl')\n const fileInputEl = useTemplateRef<HTMLInputElement>('fileInputEl')\n const cameraInputEl = useTemplateRef<HTMLInputElement>('cameraInputEl')\n const formEl = useTemplateRef<HTMLFormElement>('formEl')\n\n // --- Input buffering (decouples typing from reactive model propagation) ---\n\n const localValue = ref(modelValue.value ?? '')\n let syncTimer: ReturnType<typeof setTimeout> | null = null\n\n const cancelSync = () => {\n if (syncTimer !== null) {\n clearTimeout(syncTimer)\n syncTimer = null\n }\n }\n\n const flushSync = () => {\n cancelSync()\n modelValue.value = localValue.value\n }\n\n const scheduleSync = () => {\n cancelSync()\n syncTimer = setTimeout(() => {\n modelValue.value = localValue.value\n syncTimer = null\n }, 300)\n }\n\n const onTextareaInput = () => {\n localValue.value = textareaEl.value?.value ?? ''\n scheduleSync()\n }\n\n watch(modelValue, (v) => {\n if (v !== localValue.value) {\n localValue.value = v ?? ''\n nextTick(() => {\n if (textareaEl.value) {\n autosize.update(textareaEl.value)\n }\n })\n }\n })\n\n // --- Status computeds ---\n\n const isStreaming = computed(() => props.status === 'streaming')\n const isSubmitted = computed(() => props.status === 'submitted')\n const isInputDisabled = computed(\n () => isStreaming.value || isSubmitted.value,\n )\n\n // --- Validation ---\n\n const currentLength = computed(() => localValue.value.length)\n\n const isOverLimit = computed(\n () =>\n props.maxMessageLength !== undefined &&\n currentLength.value > props.maxMessageLength,\n )\n\n const isUploadingAnyFile = computed(() =>\n pendingAttachments.value.some((a) => a.state === 'uploading'),\n )\n\n const isSubmitEnabled = computed(() => {\n if (\n isInputDisabled.value ||\n isUploadingAnyFile.value ||\n isOverLimit.value\n ) {\n return false\n }\n return localValue.value.trim().length > 0\n })\n\n // --- File upload ---\n\n const hasCaptureSupport = 'capture' in document.createElement('input')\n\n const acceptMimeTypes = computed(\n () => props.fileUpload?.allowedMimeTypes?.join(',') ?? '',\n )\n\n const acceptImageMimeTypes = computed(() =>\n (props.fileUpload?.allowedMimeTypes ?? [])\n .filter((m) => m.startsWith('image/'))\n .join(','),\n )\n\n const showCameraOption = computed(\n () => hasCaptureSupport && acceptImageMimeTypes.value.length > 0,\n )\n\n const openFilePicker = () => {\n fileInputEl.value?.click()\n }\n\n const openCameraPicker = () => {\n cameraInputEl.value?.click()\n }\n\n const onFileChange = (event: Event) => {\n const input = event.target as HTMLInputElement\n const file = input.files?.[0]\n if (file) {\n emit('file-select', file)\n }\n input.value = ''\n }\n\n // --- Attachments ---\n\n const removeAttachment = (id: string) => {\n const att = pendingAttachments.value.find((a) => a.id === id)\n if (att) {\n URL.revokeObjectURL(att.localUrl)\n }\n pendingAttachments.value = pendingAttachments.value.filter(\n (a) => a.id !== id,\n )\n }\n\n // --- Drag & drop ---\n\n const isDragDropEnabled = computed(\n () => (props.enableDragDrop ?? true) && !!props.fileUpload?.enabled,\n )\n\n const handleDrop = (files: File[] | null) => {\n if (!isDragDropEnabled.value || !files) {\n return\n }\n for (const file of files) {\n emit('file-select', file)\n }\n }\n\n const { isOverDropZone } = useDropZone(formEl, {\n dataTypes: computed(() => props.fileUpload?.allowedMimeTypes ?? []),\n onDrop: handleDrop,\n })\n\n // --- Dismissable notice ---\n\n const isDismissableNoticeVisible = ref(true)\n const closeDismissableNotice = () => {\n isDismissableNoticeVisible.value = false\n }\n\n // --- Submit ---\n\n const handleSubmit = () => {\n if (!isSubmitEnabled.value) {\n return\n }\n flushSync()\n emit('submit')\n localValue.value = ''\n modelValue.value = ''\n nextTick(() => {\n if (textareaEl.value) {\n textareaEl.value.value = ''\n autosize.update(textareaEl.value)\n }\n })\n }\n\n // --- Lifecycle ---\n\n onMounted(() => {\n if (textareaEl.value) {\n autosize(textareaEl.value)\n }\n })\n\n onBeforeUnmount(() => {\n cancelSync()\n if (textareaEl.value) {\n autosize.destroy(textareaEl.value)\n }\n for (const att of pendingAttachments.value) {\n URL.revokeObjectURL(att.localUrl)\n }\n })\n</script>\n\n<template>\n <div class=\"pk-chatbot-input\">\n <div\n v-if=\"dismissableNotice && isDismissableNoticeVisible\"\n class=\"pk-chatbot-input-dismissable-notice\">\n <PkStreamingMarkdown\n :markdown=\"dismissableNotice\"\n class=\"wysiwyg\" />\n <VvButton\n v-if=\"dismissableNotice\"\n :title=\"$t('action.close')\"\n modifiers=\"action-quiet\"\n icon=\"ri:close-line\"\n class=\"w-18 h-18\"\n @click=\"closeDismissableNotice\" />\n </div>\n <form\n ref=\"formEl\"\n class=\"pk-chatbot-input__form\"\n @submit.prevent=\"handleSubmit\">\n <div\n v-if=\"isOverDropZone && isDragDropEnabled\"\n class=\"pk-chatbot-input__drop-overlay\">\n <VvIcon\n name=\"ri:upload-cloud-2-line\"\n class=\"pk-chatbot-input__drop-overlay-icon\" />\n <span>{{ $t('action.dropFile') }}</span>\n </div>\n <div\n v-if=\"pendingAttachments.length\"\n class=\"pk-chatbot-input__attachments\">\n <PkChatbotFilePreview\n v-for=\"att in pendingAttachments\"\n :key=\"att.id\"\n :media-type=\"att.file.type\"\n :url=\"att.localUrl\"\n :filename=\"att.file.name\"\n :loading=\"att.state === 'uploading'\"\n :error=\"att.state === 'error' ? att.error : undefined\"\n :removable=\"att.state !== 'uploading'\"\n @remove=\"removeAttachment(att.id)\" />\n </div>\n <div class=\"pk-chatbot-input__fieldset\">\n <VvDropdown\n v-if=\"\n fileUpload &&\n fileUpload.enabled &&\n (showCameraOption || $slots['additional-actions'])\n \"\n v-bind=\"{\n placement: 'top-start',\n modifiers: 'menu',\n flip: true,\n offset: 3,\n }\">\n <template #default=\"{ init, toggle, aria }\">\n <button\n :ref=\"(e: any) => init(e)\"\n v-bind=\"aria\"\n class=\"pk-chatbot-input__button\"\n type=\"button\"\n :title=\"$t('action.attachFile')\"\n :disabled=\"isInputDisabled\"\n @click=\"toggle\">\n <VvIcon\n name=\"ri:add-line\"\n class=\"pk-chatbot-input__button-icon\" />\n </button>\n </template>\n <template #items>\n <VvDropdownAction\n v-if=\"showCameraOption\"\n :disabled=\"isInputDisabled\"\n @click=\"openCameraPicker\">\n <VvIcon\n name=\"ri:camera-line\"\n class=\"pk-chatbot-input__dropdown-icon\" />\n {{ $t('action.takePhoto') }}\n </VvDropdownAction>\n <VvDropdownAction\n :disabled=\"isInputDisabled\"\n @click=\"openFilePicker\">\n <VvIcon\n name=\"ri:attachment-line\"\n class=\"pk-chatbot-input__dropdown-icon\" />\n {{ $t('action.attachFile') }}\n </VvDropdownAction>\n <slot name=\"additional-actions\" />\n </template>\n </VvDropdown>\n <button\n v-else-if=\"fileUpload && fileUpload.enabled\"\n class=\"pk-chatbot-input__button\"\n type=\"button\"\n :title=\"$t('action.attachFile')\"\n :disabled=\"isInputDisabled\"\n @click=\"openFilePicker\">\n <VvIcon\n name=\"ri:add-line\"\n class=\"pk-chatbot-input__button-icon\" />\n </button>\n <input\n v-if=\"fileUpload && fileUpload.enabled\"\n ref=\"fileInputEl\"\n type=\"file\"\n hidden\n :accept=\"acceptMimeTypes\"\n @change=\"onFileChange\" />\n <input\n v-if=\"fileUpload && fileUpload.enabled && showCameraOption\"\n ref=\"cameraInputEl\"\n type=\"file\"\n capture=\"environment\"\n hidden\n :accept=\"acceptImageMimeTypes\"\n @change=\"onFileChange\" />\n <div class=\"pk-chatbot-input__content\">\n <textarea\n ref=\"textareaEl\"\n :value=\"localValue\"\n class=\"pk-chatbot-input__textarea\"\n name=\"message\"\n rows=\"1\"\n :placeholder\n @input=\"onTextareaInput\"\n @keydown.enter.prevent=\"handleSubmit\"></textarea>\n </div>\n <div\n v-if=\"maxMessageLength\"\n class=\"pk-chatbot-input__counter\"\n :class=\"{ 'pk-chatbot-input__counter--over': isOverLimit }\">\n {{ $n(currentLength, 'integer') }}/<span\n class=\"opacity-60\"\n >{{ $n(maxMessageLength, 'integer') }}</span\n >\n </div>\n <button\n v-if=\"isStreaming\"\n class=\"pk-chatbot-input__button\"\n type=\"button\"\n :title=\"$t('action.stop')\"\n @click=\"emit('stop-generation')\">\n <VvIcon\n name=\"ri:stop-circle-line\"\n class=\"pk-chatbot-input__button-icon\" />\n </button>\n <button\n v-else\n class=\"pk-chatbot-input__button\"\n type=\"submit\"\n :title=\"\n isSubmitEnabled\n ? $t('action.submit')\n : $t('label.disabled')\n \"\n :disabled=\"!isSubmitEnabled\">\n <VvIcon\n :name=\"\n isSubmitted\n ? 'line-md:loading-loop'\n : isSubmitEnabled\n ? 'ri:send-ins-fill'\n : 'ri:send-ins-line'\n \"\n class=\"pk-chatbot-input__button-icon\" />\n </button>\n </div>\n </form>\n </div>\n</template>\n\n<style lang=\"scss\">\n .pk-chatbot-input {\n position: relative;\n display: flex;\n flex-direction: column;\n margin-inline: var(--spacing-sm);\n margin-bottom: var(--spacing-sm);\n\n &-dismissable-notice {\n position: relative;\n padding: var(--spacing-sm);\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: var(--spacing-sm);\n background-color: var(--color-surface-1);\n border-top-left-radius: var(--rounded-xl);\n border-top-right-radius: var(--rounded-xl);\n transition-property: var(--transition-property-all);\n transition-duration: var(--duration-300);\n transition-timing-function: var(--ease-in-out);\n font-size: var(--text-14);\n color: var(--color-word-2);\n\n &::after {\n content: '';\n display: block;\n position: absolute;\n left: 0;\n right: 0;\n bottom: calc(-1 * var(--spacing-12));\n height: var(--spacing-12);\n background: var(--color-surface-1);\n z-index: 1;\n }\n }\n\n &__form {\n position: relative;\n display: flex;\n z-index: 1;\n flex-direction: column;\n border-radius: var(--rounded-xl);\n border: 1px solid var(--color-surface-3);\n background-color: var(--color-surface);\n padding: var(--spacing-14);\n box-shadow: var(--shadow-lg);\n font-size: var(\n --text-16\n ); // prevent ios zoom on input focus by using a font size >= 16px\n gap: var(--spacing-xs);\n transition: border-color var(--duration-200) var(--ease-in-out);\n\n @include media-breakpoint-up('sm', $breakpoints) {\n font-size: var(--text-14);\n padding: var(--spacing-10);\n }\n\n &:has(:focus-within) {\n border-color: var(--color-word-5);\n }\n }\n\n &__drop-overlay {\n position: absolute;\n inset: 0;\n z-index: 10;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-xs);\n border-radius: var(--rounded-xl);\n background-color: color-mix(\n in srgb,\n var(--color-surface) 85%,\n transparent\n );\n pointer-events: none;\n }\n\n &__fieldset {\n display: flex;\n align-items: center;\n gap: var(--spacing-xs);\n flex: 1;\n }\n\n &__content {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: var(--spacing-4);\n min-width: 0;\n overflow: hidden;\n }\n\n &__textarea {\n display: block;\n border: none;\n outline: none;\n resize: none;\n width: 100%;\n max-height: 200px;\n color: var(--color-word-1);\n background-color: var(--color-surface);\n\n &::placeholder {\n color: var(--color-word-4);\n }\n }\n\n &__attachments {\n display: flex;\n flex-wrap: wrap;\n gap: var(--spacing-4);\n padding-bottom: var(--spacing-xs);\n border-bottom: 1px solid var(--color-surface-2);\n }\n\n &__button {\n background-color: transparent;\n border: none;\n cursor: pointer;\n color: var(--color-word-1);\n padding: var(--spacing-4);\n flex-shrink: 0;\n transition: var(--transition-colors);\n border-radius: var(--rounded);\n\n &:hover {\n background-color: var(--color-surface-2);\n }\n\n &:focus-visible {\n outline: 1px solid var(--color-surface-5);\n outline-offset: 0;\n }\n\n &:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n\n &-icon {\n display: block;\n width: var(--spacing-20);\n height: var(--spacing-20);\n }\n }\n\n &__counter {\n background-color: var(--color-surface-1);\n border: 1px solid var(--color-surface-3);\n border-radius: var(--rounded-md);\n font-size: var(--text-12);\n color: var(--color-word-3);\n line-height: 1;\n padding-inline: var(--spacing-6);\n padding-block: var(--spacing-4);\n z-index: 1;\n font-variant-numeric: tabular-nums;\n font-family: var(--font-mono);\n font-weight: var(--font-bold);\n\n &--over {\n color: var(--color-danger);\n border-color: var(--color-danger-lighten-5);\n font-weight: var(--font-bold);\n }\n }\n }\n</style>\n"],"x_google_ignoreList":[0],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PkChatbotInput-Dn4KFNfx.js","names":["$t","$slots","$n"],"sources":["../../../../node_modules/.pnpm/autosize@6.0.1/node_modules/autosize/dist/autosize.esm.js","../../../../packages/components/src/chat/PkChatbotInput.vue","../../../../packages/components/src/chat/PkChatbotInput.vue"],"sourcesContent":["var e=new Map;function t(t){var o=e.get(t);o&&o.destroy()}function o(t){var o=e.get(t);o&&o.update()}var r=null;\"undefined\"==typeof window?((r=function(e){return e}).destroy=function(e){return e},r.update=function(e){return e}):((r=function(t,o){return t&&Array.prototype.forEach.call(t.length?t:[t],function(t){return function(t){if(t&&t.nodeName&&\"TEXTAREA\"===t.nodeName&&!e.has(t)){var o,r=null,n=window.getComputedStyle(t),i=(o=t.value,function(){a({testForHeightReduction:\"\"===o||!t.value.startsWith(o),restoreTextAlign:null}),o=t.value}),l=function(o){t.removeEventListener(\"autosize:destroy\",l),t.removeEventListener(\"autosize:update\",s),t.removeEventListener(\"input\",i),window.removeEventListener(\"resize\",s),Object.keys(o).forEach(function(e){return t.style[e]=o[e]}),e.delete(t)}.bind(t,{height:t.style.height,resize:t.style.resize,textAlign:t.style.textAlign,overflowY:t.style.overflowY,overflowX:t.style.overflowX,wordWrap:t.style.wordWrap});t.addEventListener(\"autosize:destroy\",l),t.addEventListener(\"autosize:update\",s),t.addEventListener(\"input\",i),window.addEventListener(\"resize\",s),t.style.overflowX=\"hidden\",t.style.wordWrap=\"break-word\",e.set(t,{destroy:l,update:s}),s()}function a(e){var o,i,l=e.restoreTextAlign,s=void 0===l?null:l,d=e.testForHeightReduction,u=void 0===d||d,c=n.overflowY;if(0!==t.scrollHeight&&(\"vertical\"===n.resize?t.style.resize=\"none\":\"both\"===n.resize&&(t.style.resize=\"horizontal\"),u&&(o=function(e){for(var t=[];e&&e.parentNode&&e.parentNode instanceof Element;)e.parentNode.scrollTop&&t.push([e.parentNode,e.parentNode.scrollTop]),e=e.parentNode;return function(){return t.forEach(function(e){var t=e[0],o=e[1];t.style.scrollBehavior=\"auto\",t.scrollTop=o,t.style.scrollBehavior=null})}}(t),t.style.height=\"\"),i=\"content-box\"===n.boxSizing?t.scrollHeight-(parseFloat(n.paddingTop)+parseFloat(n.paddingBottom)):t.scrollHeight+parseFloat(n.borderTopWidth)+parseFloat(n.borderBottomWidth),\"none\"!==n.maxHeight&&i>parseFloat(n.maxHeight)?(\"hidden\"===n.overflowY&&(t.style.overflow=\"scroll\"),i=parseFloat(n.maxHeight)):\"hidden\"!==n.overflowY&&(t.style.overflow=\"hidden\"),t.style.height=i+\"px\",s&&(t.style.textAlign=s),o&&o(),r!==i&&(t.dispatchEvent(new Event(\"autosize:resized\",{bubbles:!0})),r=i),c!==n.overflow&&!s)){var v=n.textAlign;\"hidden\"===n.overflow&&(t.style.textAlign=\"start\"===v?\"end\":\"start\"),a({restoreTextAlign:v,testForHeightReduction:!0})}}function s(){a({testForHeightReduction:!0,restoreTextAlign:null})}}(t)}),t}).destroy=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],t),e},r.update=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],o),e});var n=r;export default n;\n","<script setup lang=\"ts\">\n // @ts-expect-error - no types for autosize\n import autosize from 'autosize'\n import {\n computed,\n nextTick,\n onBeforeUnmount,\n onMounted,\n ref,\n useTemplateRef,\n watch,\n } from 'vue'\n import { useDropZone } from '@vueuse/core'\n import type { AgentFileUpload } from 'models'\n import type { PendingAttachment } from 'composables'\n import PkStreamingMarkdown from './PkStreamingMarkdown.vue'\n import PkChatbotFilePreview from './PkChatbotFilePreview.vue'\n\n // --- Models & Props ---\n\n const modelValue = defineModel<string>()\n const pendingAttachments = defineModel<PendingAttachment[]>(\n 'pendingAttachments',\n { default: () => [] },\n )\n\n const emit = defineEmits<{\n submit: []\n 'stop-generation': []\n 'file-select': [file: File]\n }>()\n\n const props = defineProps<{\n placeholder?: string\n dismissableNotice?: string\n status?: 'submitted' | 'streaming' | 'ready' | 'error'\n maxMessageLength?: number\n fileUpload?: AgentFileUpload\n enableDragDrop?: boolean\n }>()\n\n // --- Template refs ---\n\n const textareaEl = useTemplateRef<HTMLTextAreaElement>('textareaEl')\n const fileInputEl = useTemplateRef<HTMLInputElement>('fileInputEl')\n const cameraInputEl = useTemplateRef<HTMLInputElement>('cameraInputEl')\n const formEl = useTemplateRef<HTMLFormElement>('formEl')\n\n // --- Input buffering (decouples typing from reactive model propagation) ---\n\n const localValue = ref(modelValue.value ?? '')\n let syncTimer: ReturnType<typeof setTimeout> | null = null\n\n const cancelSync = () => {\n if (syncTimer !== null) {\n clearTimeout(syncTimer)\n syncTimer = null\n }\n }\n\n const flushSync = () => {\n cancelSync()\n modelValue.value = localValue.value\n }\n\n const scheduleSync = () => {\n cancelSync()\n syncTimer = setTimeout(() => {\n modelValue.value = localValue.value\n syncTimer = null\n }, 300)\n }\n\n const onTextareaInput = () => {\n localValue.value = textareaEl.value?.value ?? ''\n scheduleSync()\n }\n\n watch(modelValue, (v) => {\n if (v !== localValue.value) {\n localValue.value = v ?? ''\n nextTick(() => {\n if (textareaEl.value) {\n autosize.update(textareaEl.value)\n }\n })\n }\n })\n\n // --- Status computeds ---\n\n const isStreaming = computed(() => props.status === 'streaming')\n const isSubmitted = computed(() => props.status === 'submitted')\n const isInputDisabled = computed(\n () => isStreaming.value || isSubmitted.value,\n )\n\n // --- Validation ---\n\n const currentLength = computed(() => localValue.value.length)\n\n const isOverLimit = computed(\n () =>\n props.maxMessageLength !== undefined &&\n currentLength.value > props.maxMessageLength,\n )\n\n const isUploadingAnyFile = computed(() =>\n pendingAttachments.value.some((a) => a.state === 'uploading'),\n )\n\n const isSubmitEnabled = computed(() => {\n if (\n isInputDisabled.value ||\n isUploadingAnyFile.value ||\n isOverLimit.value\n ) {\n return false\n }\n return localValue.value.trim().length > 0\n })\n\n // --- File upload ---\n\n const hasCaptureSupport = 'capture' in document.createElement('input')\n\n const acceptMimeTypes = computed(\n () => props.fileUpload?.allowedMimeTypes?.join(',') ?? '',\n )\n\n const acceptImageMimeTypes = computed(() =>\n (props.fileUpload?.allowedMimeTypes ?? [])\n .filter((m) => m.startsWith('image/'))\n .join(','),\n )\n\n const showCameraOption = computed(\n () => hasCaptureSupport && acceptImageMimeTypes.value.length > 0,\n )\n\n const openFilePicker = () => {\n fileInputEl.value?.click()\n }\n\n const openCameraPicker = () => {\n cameraInputEl.value?.click()\n }\n\n const onFileChange = (event: Event) => {\n const input = event.target as HTMLInputElement\n const file = input.files?.[0]\n if (file) {\n emit('file-select', file)\n }\n input.value = ''\n }\n\n // --- Attachments ---\n\n const removeAttachment = (id: string) => {\n const att = pendingAttachments.value.find((a) => a.id === id)\n if (att) {\n URL.revokeObjectURL(att.localUrl)\n }\n pendingAttachments.value = pendingAttachments.value.filter(\n (a) => a.id !== id,\n )\n }\n\n // --- Drag & drop ---\n\n const isDragDropEnabled = computed(\n () => (props.enableDragDrop ?? true) && !!props.fileUpload?.enabled,\n )\n\n const handleDrop = (files: File[] | null) => {\n if (!isDragDropEnabled.value || !files) {\n return\n }\n for (const file of files) {\n emit('file-select', file)\n }\n }\n\n const { isOverDropZone } = useDropZone(formEl, {\n dataTypes: computed(() => props.fileUpload?.allowedMimeTypes ?? []),\n onDrop: handleDrop,\n })\n\n // --- Dismissable notice ---\n\n const isDismissableNoticeVisible = ref(true)\n const closeDismissableNotice = () => {\n isDismissableNoticeVisible.value = false\n }\n\n // --- Submit ---\n\n const handleSubmit = () => {\n if (!isSubmitEnabled.value) {\n return\n }\n flushSync()\n emit('submit')\n localValue.value = ''\n modelValue.value = ''\n nextTick(() => {\n if (textareaEl.value) {\n textareaEl.value.value = ''\n autosize.update(textareaEl.value)\n }\n })\n }\n\n // --- Lifecycle ---\n\n onMounted(() => {\n if (textareaEl.value) {\n autosize(textareaEl.value)\n }\n })\n\n onBeforeUnmount(() => {\n cancelSync()\n if (textareaEl.value) {\n autosize.destroy(textareaEl.value)\n }\n for (const att of pendingAttachments.value) {\n URL.revokeObjectURL(att.localUrl)\n }\n })\n</script>\n\n<template>\n <div class=\"pk-chatbot-input\">\n <div\n v-if=\"dismissableNotice && isDismissableNoticeVisible\"\n class=\"pk-chatbot-input-dismissable-notice\">\n <PkStreamingMarkdown\n :markdown=\"dismissableNotice\"\n class=\"wysiwyg\" />\n <VvButton\n v-if=\"dismissableNotice\"\n :title=\"$t('action.close')\"\n modifiers=\"action-quiet\"\n icon=\"ri:close-line\"\n class=\"w-18 h-18\"\n @click=\"closeDismissableNotice\" />\n </div>\n <form\n ref=\"formEl\"\n class=\"pk-chatbot-input__form\"\n @submit.prevent=\"handleSubmit\">\n <div\n v-if=\"isOverDropZone && isDragDropEnabled\"\n class=\"pk-chatbot-input__drop-overlay\">\n <VvIcon\n name=\"ri:upload-cloud-2-line\"\n class=\"pk-chatbot-input__drop-overlay-icon\" />\n <span>{{ $t('action.dropFile') }}</span>\n </div>\n <div\n v-if=\"pendingAttachments.length\"\n class=\"pk-chatbot-input__attachments\">\n <PkChatbotFilePreview\n v-for=\"att in pendingAttachments\"\n :key=\"att.id\"\n :media-type=\"att.file.type\"\n :url=\"att.localUrl\"\n :filename=\"att.file.name\"\n :loading=\"att.state === 'uploading'\"\n :error=\"att.state === 'error' ? att.error : undefined\"\n :removable=\"att.state !== 'uploading'\"\n @remove=\"removeAttachment(att.id)\" />\n </div>\n <div class=\"pk-chatbot-input__fieldset\">\n <VvDropdown\n v-if=\"\n fileUpload &&\n fileUpload.enabled &&\n (showCameraOption || $slots['additional-actions'])\n \"\n v-bind=\"{\n placement: 'top-start',\n modifiers: 'menu',\n flip: true,\n offset: 3,\n }\">\n <template #default=\"{ init, toggle, aria }\">\n <button\n :ref=\"(e: any) => init(e)\"\n v-bind=\"aria\"\n class=\"pk-chatbot-input__button\"\n type=\"button\"\n :title=\"$t('action.attachFile')\"\n :disabled=\"isInputDisabled\"\n @click=\"toggle\">\n <VvIcon\n name=\"ri:add-line\"\n class=\"pk-chatbot-input__button-icon\" />\n </button>\n </template>\n <template #items>\n <VvDropdownAction\n v-if=\"showCameraOption\"\n :disabled=\"isInputDisabled\"\n @click=\"openCameraPicker\">\n <VvIcon\n name=\"ri:camera-line\"\n class=\"pk-chatbot-input__dropdown-icon\" />\n {{ $t('action.takePhoto') }}\n </VvDropdownAction>\n <VvDropdownAction\n :disabled=\"isInputDisabled\"\n @click=\"openFilePicker\">\n <VvIcon\n name=\"ri:attachment-line\"\n class=\"pk-chatbot-input__dropdown-icon\" />\n {{ $t('action.attachFile') }}\n </VvDropdownAction>\n <slot name=\"additional-actions\" />\n </template>\n </VvDropdown>\n <button\n v-else-if=\"fileUpload && fileUpload.enabled\"\n class=\"pk-chatbot-input__button\"\n type=\"button\"\n :title=\"$t('action.attachFile')\"\n :disabled=\"isInputDisabled\"\n @click=\"openFilePicker\">\n <VvIcon\n name=\"ri:add-line\"\n class=\"pk-chatbot-input__button-icon\" />\n </button>\n <input\n v-if=\"fileUpload && fileUpload.enabled\"\n ref=\"fileInputEl\"\n type=\"file\"\n hidden\n :accept=\"acceptMimeTypes\"\n @change=\"onFileChange\" />\n <input\n v-if=\"fileUpload && fileUpload.enabled && showCameraOption\"\n ref=\"cameraInputEl\"\n type=\"file\"\n capture=\"environment\"\n hidden\n :accept=\"acceptImageMimeTypes\"\n @change=\"onFileChange\" />\n <div class=\"pk-chatbot-input__content\">\n <textarea\n ref=\"textareaEl\"\n :value=\"localValue\"\n class=\"pk-chatbot-input__textarea\"\n name=\"message\"\n rows=\"1\"\n :placeholder\n @input=\"onTextareaInput\"\n @keydown.enter.prevent=\"handleSubmit\"></textarea>\n </div>\n <div\n v-if=\"maxMessageLength\"\n class=\"pk-chatbot-input__counter\"\n :class=\"{ 'pk-chatbot-input__counter--over': isOverLimit }\">\n {{ $n(currentLength, 'integer') }}/<span\n class=\"opacity-60\"\n >{{ $n(maxMessageLength, 'integer') }}</span\n >\n </div>\n <button\n v-if=\"isStreaming\"\n class=\"pk-chatbot-input__button\"\n type=\"button\"\n :title=\"$t('action.stop')\"\n @click=\"emit('stop-generation')\">\n <VvIcon\n name=\"ri:stop-circle-line\"\n class=\"pk-chatbot-input__button-icon\" />\n </button>\n <button\n v-else\n class=\"pk-chatbot-input__button\"\n type=\"submit\"\n :title=\"\n isSubmitEnabled\n ? $t('action.submit')\n : $t('label.disabled')\n \"\n :disabled=\"!isSubmitEnabled\">\n <VvIcon\n :name=\"\n isSubmitted\n ? 'line-md:loading-loop'\n : isSubmitEnabled\n ? 'ri:send-ins-fill'\n : 'ri:send-ins-line'\n \"\n class=\"pk-chatbot-input__button-icon\" />\n </button>\n </div>\n </form>\n </div>\n</template>\n\n<style lang=\"scss\">\n .pk-chatbot-input {\n position: relative;\n display: flex;\n flex-direction: column;\n margin-inline: var(--spacing-sm);\n margin-bottom: var(--spacing-sm);\n\n &-dismissable-notice {\n position: relative;\n padding: var(--spacing-sm);\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: var(--spacing-sm);\n background-color: var(--color-surface-1);\n border-top-left-radius: var(--rounded-xl);\n border-top-right-radius: var(--rounded-xl);\n transition-property: var(--transition-property-all);\n transition-duration: var(--duration-300);\n transition-timing-function: var(--ease-in-out);\n font-size: var(--text-14);\n color: var(--color-word-2);\n\n &::after {\n content: '';\n display: block;\n position: absolute;\n left: 0;\n right: 0;\n bottom: calc(-1 * var(--spacing-12));\n height: var(--spacing-12);\n background: var(--color-surface-1);\n z-index: 1;\n }\n }\n\n &__form {\n position: relative;\n display: flex;\n z-index: 1;\n flex-direction: column;\n border-radius: var(--rounded-xl);\n border: 1px solid var(--color-surface-3);\n background-color: var(--color-surface);\n padding: var(--spacing-14);\n box-shadow: var(--shadow-lg);\n font-size: var(\n --text-16\n ); // prevent ios zoom on input focus by using a font size >= 16px\n gap: var(--spacing-xs);\n transition: border-color var(--duration-200) var(--ease-in-out);\n\n @include media-breakpoint-up('sm', $breakpoints) {\n font-size: var(--text-14);\n padding: var(--spacing-10);\n }\n\n &:has(:focus-within) {\n border-color: var(--color-word-5);\n }\n }\n\n &__drop-overlay {\n position: absolute;\n inset: 0;\n z-index: 10;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-xs);\n border-radius: var(--rounded-xl);\n background-color: color-mix(\n in srgb,\n var(--color-surface) 85%,\n transparent\n );\n pointer-events: none;\n }\n\n &__fieldset {\n display: flex;\n align-items: center;\n gap: var(--spacing-xs);\n flex: 1;\n }\n\n &__content {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: var(--spacing-4);\n min-width: 0;\n overflow: hidden;\n }\n\n &__textarea {\n display: block;\n border: none;\n outline: none;\n resize: none;\n width: 100%;\n max-height: 200px;\n color: var(--color-word-1);\n background-color: var(--color-surface);\n\n &::placeholder {\n color: var(--color-word-4);\n }\n }\n\n &__attachments {\n display: flex;\n flex-wrap: wrap;\n gap: var(--spacing-4);\n padding-bottom: var(--spacing-xs);\n border-bottom: 1px solid var(--color-surface-2);\n }\n\n &__button {\n background-color: transparent;\n border: none;\n cursor: pointer;\n color: var(--color-word-1);\n padding: var(--spacing-4);\n flex-shrink: 0;\n transition: var(--transition-colors);\n border-radius: var(--rounded);\n\n &:hover {\n background-color: var(--color-surface-2);\n }\n\n &:focus-visible {\n outline: 1px solid var(--color-surface-5);\n outline-offset: 0;\n }\n\n &:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n\n &-icon {\n display: block;\n width: var(--spacing-20);\n height: var(--spacing-20);\n }\n }\n\n &__counter {\n background-color: var(--color-surface-1);\n border: 1px solid var(--color-surface-3);\n border-radius: var(--rounded-md);\n font-size: var(--text-12);\n color: var(--color-word-3);\n line-height: 1;\n padding-inline: var(--spacing-6);\n padding-block: var(--spacing-4);\n z-index: 1;\n font-variant-numeric: tabular-nums;\n font-family: var(--font-mono);\n font-weight: var(--font-bold);\n\n &--over {\n color: var(--color-danger);\n border-color: var(--color-danger-lighten-5);\n font-weight: var(--font-bold);\n }\n }\n }\n</style>\n","<script setup lang=\"ts\">\n // @ts-expect-error - no types for autosize\n import autosize from 'autosize'\n import {\n computed,\n nextTick,\n onBeforeUnmount,\n onMounted,\n ref,\n useTemplateRef,\n watch,\n } from 'vue'\n import { useDropZone } from '@vueuse/core'\n import type { AgentFileUpload } from 'models'\n import type { PendingAttachment } from 'composables'\n import PkStreamingMarkdown from './PkStreamingMarkdown.vue'\n import PkChatbotFilePreview from './PkChatbotFilePreview.vue'\n\n // --- Models & Props ---\n\n const modelValue = defineModel<string>()\n const pendingAttachments = defineModel<PendingAttachment[]>(\n 'pendingAttachments',\n { default: () => [] },\n )\n\n const emit = defineEmits<{\n submit: []\n 'stop-generation': []\n 'file-select': [file: File]\n }>()\n\n const props = defineProps<{\n placeholder?: string\n dismissableNotice?: string\n status?: 'submitted' | 'streaming' | 'ready' | 'error'\n maxMessageLength?: number\n fileUpload?: AgentFileUpload\n enableDragDrop?: boolean\n }>()\n\n // --- Template refs ---\n\n const textareaEl = useTemplateRef<HTMLTextAreaElement>('textareaEl')\n const fileInputEl = useTemplateRef<HTMLInputElement>('fileInputEl')\n const cameraInputEl = useTemplateRef<HTMLInputElement>('cameraInputEl')\n const formEl = useTemplateRef<HTMLFormElement>('formEl')\n\n // --- Input buffering (decouples typing from reactive model propagation) ---\n\n const localValue = ref(modelValue.value ?? '')\n let syncTimer: ReturnType<typeof setTimeout> | null = null\n\n const cancelSync = () => {\n if (syncTimer !== null) {\n clearTimeout(syncTimer)\n syncTimer = null\n }\n }\n\n const flushSync = () => {\n cancelSync()\n modelValue.value = localValue.value\n }\n\n const scheduleSync = () => {\n cancelSync()\n syncTimer = setTimeout(() => {\n modelValue.value = localValue.value\n syncTimer = null\n }, 300)\n }\n\n const onTextareaInput = () => {\n localValue.value = textareaEl.value?.value ?? ''\n scheduleSync()\n }\n\n watch(modelValue, (v) => {\n if (v !== localValue.value) {\n localValue.value = v ?? ''\n nextTick(() => {\n if (textareaEl.value) {\n autosize.update(textareaEl.value)\n }\n })\n }\n })\n\n // --- Status computeds ---\n\n const isStreaming = computed(() => props.status === 'streaming')\n const isSubmitted = computed(() => props.status === 'submitted')\n const isInputDisabled = computed(\n () => isStreaming.value || isSubmitted.value,\n )\n\n // --- Validation ---\n\n const currentLength = computed(() => localValue.value.length)\n\n const isOverLimit = computed(\n () =>\n props.maxMessageLength !== undefined &&\n currentLength.value > props.maxMessageLength,\n )\n\n const isUploadingAnyFile = computed(() =>\n pendingAttachments.value.some((a) => a.state === 'uploading'),\n )\n\n const isSubmitEnabled = computed(() => {\n if (\n isInputDisabled.value ||\n isUploadingAnyFile.value ||\n isOverLimit.value\n ) {\n return false\n }\n return localValue.value.trim().length > 0\n })\n\n // --- File upload ---\n\n const hasCaptureSupport = 'capture' in document.createElement('input')\n\n const acceptMimeTypes = computed(\n () => props.fileUpload?.allowedMimeTypes?.join(',') ?? '',\n )\n\n const acceptImageMimeTypes = computed(() =>\n (props.fileUpload?.allowedMimeTypes ?? [])\n .filter((m) => m.startsWith('image/'))\n .join(','),\n )\n\n const showCameraOption = computed(\n () => hasCaptureSupport && acceptImageMimeTypes.value.length > 0,\n )\n\n const openFilePicker = () => {\n fileInputEl.value?.click()\n }\n\n const openCameraPicker = () => {\n cameraInputEl.value?.click()\n }\n\n const onFileChange = (event: Event) => {\n const input = event.target as HTMLInputElement\n const file = input.files?.[0]\n if (file) {\n emit('file-select', file)\n }\n input.value = ''\n }\n\n // --- Attachments ---\n\n const removeAttachment = (id: string) => {\n const att = pendingAttachments.value.find((a) => a.id === id)\n if (att) {\n URL.revokeObjectURL(att.localUrl)\n }\n pendingAttachments.value = pendingAttachments.value.filter(\n (a) => a.id !== id,\n )\n }\n\n // --- Drag & drop ---\n\n const isDragDropEnabled = computed(\n () => (props.enableDragDrop ?? true) && !!props.fileUpload?.enabled,\n )\n\n const handleDrop = (files: File[] | null) => {\n if (!isDragDropEnabled.value || !files) {\n return\n }\n for (const file of files) {\n emit('file-select', file)\n }\n }\n\n const { isOverDropZone } = useDropZone(formEl, {\n dataTypes: computed(() => props.fileUpload?.allowedMimeTypes ?? []),\n onDrop: handleDrop,\n })\n\n // --- Dismissable notice ---\n\n const isDismissableNoticeVisible = ref(true)\n const closeDismissableNotice = () => {\n isDismissableNoticeVisible.value = false\n }\n\n // --- Submit ---\n\n const handleSubmit = () => {\n if (!isSubmitEnabled.value) {\n return\n }\n flushSync()\n emit('submit')\n localValue.value = ''\n modelValue.value = ''\n nextTick(() => {\n if (textareaEl.value) {\n textareaEl.value.value = ''\n autosize.update(textareaEl.value)\n }\n })\n }\n\n // --- Lifecycle ---\n\n onMounted(() => {\n if (textareaEl.value) {\n autosize(textareaEl.value)\n }\n })\n\n onBeforeUnmount(() => {\n cancelSync()\n if (textareaEl.value) {\n autosize.destroy(textareaEl.value)\n }\n for (const att of pendingAttachments.value) {\n URL.revokeObjectURL(att.localUrl)\n }\n })\n</script>\n\n<template>\n <div class=\"pk-chatbot-input\">\n <div\n v-if=\"dismissableNotice && isDismissableNoticeVisible\"\n class=\"pk-chatbot-input-dismissable-notice\">\n <PkStreamingMarkdown\n :markdown=\"dismissableNotice\"\n class=\"wysiwyg\" />\n <VvButton\n v-if=\"dismissableNotice\"\n :title=\"$t('action.close')\"\n modifiers=\"action-quiet\"\n icon=\"ri:close-line\"\n class=\"w-18 h-18\"\n @click=\"closeDismissableNotice\" />\n </div>\n <form\n ref=\"formEl\"\n class=\"pk-chatbot-input__form\"\n @submit.prevent=\"handleSubmit\">\n <div\n v-if=\"isOverDropZone && isDragDropEnabled\"\n class=\"pk-chatbot-input__drop-overlay\">\n <VvIcon\n name=\"ri:upload-cloud-2-line\"\n class=\"pk-chatbot-input__drop-overlay-icon\" />\n <span>{{ $t('action.dropFile') }}</span>\n </div>\n <div\n v-if=\"pendingAttachments.length\"\n class=\"pk-chatbot-input__attachments\">\n <PkChatbotFilePreview\n v-for=\"att in pendingAttachments\"\n :key=\"att.id\"\n :media-type=\"att.file.type\"\n :url=\"att.localUrl\"\n :filename=\"att.file.name\"\n :loading=\"att.state === 'uploading'\"\n :error=\"att.state === 'error' ? att.error : undefined\"\n :removable=\"att.state !== 'uploading'\"\n @remove=\"removeAttachment(att.id)\" />\n </div>\n <div class=\"pk-chatbot-input__fieldset\">\n <VvDropdown\n v-if=\"\n fileUpload &&\n fileUpload.enabled &&\n (showCameraOption || $slots['additional-actions'])\n \"\n v-bind=\"{\n placement: 'top-start',\n modifiers: 'menu',\n flip: true,\n offset: 3,\n }\">\n <template #default=\"{ init, toggle, aria }\">\n <button\n :ref=\"(e: any) => init(e)\"\n v-bind=\"aria\"\n class=\"pk-chatbot-input__button\"\n type=\"button\"\n :title=\"$t('action.attachFile')\"\n :disabled=\"isInputDisabled\"\n @click=\"toggle\">\n <VvIcon\n name=\"ri:add-line\"\n class=\"pk-chatbot-input__button-icon\" />\n </button>\n </template>\n <template #items>\n <VvDropdownAction\n v-if=\"showCameraOption\"\n :disabled=\"isInputDisabled\"\n @click=\"openCameraPicker\">\n <VvIcon\n name=\"ri:camera-line\"\n class=\"pk-chatbot-input__dropdown-icon\" />\n {{ $t('action.takePhoto') }}\n </VvDropdownAction>\n <VvDropdownAction\n :disabled=\"isInputDisabled\"\n @click=\"openFilePicker\">\n <VvIcon\n name=\"ri:attachment-line\"\n class=\"pk-chatbot-input__dropdown-icon\" />\n {{ $t('action.attachFile') }}\n </VvDropdownAction>\n <slot name=\"additional-actions\" />\n </template>\n </VvDropdown>\n <button\n v-else-if=\"fileUpload && fileUpload.enabled\"\n class=\"pk-chatbot-input__button\"\n type=\"button\"\n :title=\"$t('action.attachFile')\"\n :disabled=\"isInputDisabled\"\n @click=\"openFilePicker\">\n <VvIcon\n name=\"ri:add-line\"\n class=\"pk-chatbot-input__button-icon\" />\n </button>\n <input\n v-if=\"fileUpload && fileUpload.enabled\"\n ref=\"fileInputEl\"\n type=\"file\"\n hidden\n :accept=\"acceptMimeTypes\"\n @change=\"onFileChange\" />\n <input\n v-if=\"fileUpload && fileUpload.enabled && showCameraOption\"\n ref=\"cameraInputEl\"\n type=\"file\"\n capture=\"environment\"\n hidden\n :accept=\"acceptImageMimeTypes\"\n @change=\"onFileChange\" />\n <div class=\"pk-chatbot-input__content\">\n <textarea\n ref=\"textareaEl\"\n :value=\"localValue\"\n class=\"pk-chatbot-input__textarea\"\n name=\"message\"\n rows=\"1\"\n :placeholder\n @input=\"onTextareaInput\"\n @keydown.enter.prevent=\"handleSubmit\"></textarea>\n </div>\n <div\n v-if=\"maxMessageLength\"\n class=\"pk-chatbot-input__counter\"\n :class=\"{ 'pk-chatbot-input__counter--over': isOverLimit }\">\n {{ $n(currentLength, 'integer') }}/<span\n class=\"opacity-60\"\n >{{ $n(maxMessageLength, 'integer') }}</span\n >\n </div>\n <button\n v-if=\"isStreaming\"\n class=\"pk-chatbot-input__button\"\n type=\"button\"\n :title=\"$t('action.stop')\"\n @click=\"emit('stop-generation')\">\n <VvIcon\n name=\"ri:stop-circle-line\"\n class=\"pk-chatbot-input__button-icon\" />\n </button>\n <button\n v-else\n class=\"pk-chatbot-input__button\"\n type=\"submit\"\n :title=\"\n isSubmitEnabled\n ? $t('action.submit')\n : $t('label.disabled')\n \"\n :disabled=\"!isSubmitEnabled\">\n <VvIcon\n :name=\"\n isSubmitted\n ? 'line-md:loading-loop'\n : isSubmitEnabled\n ? 'ri:send-ins-fill'\n : 'ri:send-ins-line'\n \"\n class=\"pk-chatbot-input__button-icon\" />\n </button>\n </div>\n </form>\n </div>\n</template>\n\n<style lang=\"scss\">\n .pk-chatbot-input {\n position: relative;\n display: flex;\n flex-direction: column;\n margin-inline: var(--spacing-sm);\n margin-bottom: var(--spacing-sm);\n\n &-dismissable-notice {\n position: relative;\n padding: var(--spacing-sm);\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: var(--spacing-sm);\n background-color: var(--color-surface-1);\n border-top-left-radius: var(--rounded-xl);\n border-top-right-radius: var(--rounded-xl);\n transition-property: var(--transition-property-all);\n transition-duration: var(--duration-300);\n transition-timing-function: var(--ease-in-out);\n font-size: var(--text-14);\n color: var(--color-word-2);\n\n &::after {\n content: '';\n display: block;\n position: absolute;\n left: 0;\n right: 0;\n bottom: calc(-1 * var(--spacing-12));\n height: var(--spacing-12);\n background: var(--color-surface-1);\n z-index: 1;\n }\n }\n\n &__form {\n position: relative;\n display: flex;\n z-index: 1;\n flex-direction: column;\n border-radius: var(--rounded-xl);\n border: 1px solid var(--color-surface-3);\n background-color: var(--color-surface);\n padding: var(--spacing-14);\n box-shadow: var(--shadow-lg);\n font-size: var(\n --text-16\n ); // prevent ios zoom on input focus by using a font size >= 16px\n gap: var(--spacing-xs);\n transition: border-color var(--duration-200) var(--ease-in-out);\n\n @include media-breakpoint-up('sm', $breakpoints) {\n font-size: var(--text-14);\n padding: var(--spacing-10);\n }\n\n &:has(:focus-within) {\n border-color: var(--color-word-5);\n }\n }\n\n &__drop-overlay {\n position: absolute;\n inset: 0;\n z-index: 10;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--spacing-xs);\n border-radius: var(--rounded-xl);\n background-color: color-mix(\n in srgb,\n var(--color-surface) 85%,\n transparent\n );\n pointer-events: none;\n }\n\n &__fieldset {\n display: flex;\n align-items: center;\n gap: var(--spacing-xs);\n flex: 1;\n }\n\n &__content {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: var(--spacing-4);\n min-width: 0;\n overflow: hidden;\n }\n\n &__textarea {\n display: block;\n border: none;\n outline: none;\n resize: none;\n width: 100%;\n max-height: 200px;\n color: var(--color-word-1);\n background-color: var(--color-surface);\n\n &::placeholder {\n color: var(--color-word-4);\n }\n }\n\n &__attachments {\n display: flex;\n flex-wrap: wrap;\n gap: var(--spacing-4);\n padding-bottom: var(--spacing-xs);\n border-bottom: 1px solid var(--color-surface-2);\n }\n\n &__button {\n background-color: transparent;\n border: none;\n cursor: pointer;\n color: var(--color-word-1);\n padding: var(--spacing-4);\n flex-shrink: 0;\n transition: var(--transition-colors);\n border-radius: var(--rounded);\n\n &:hover {\n background-color: var(--color-surface-2);\n }\n\n &:focus-visible {\n outline: 1px solid var(--color-surface-5);\n outline-offset: 0;\n }\n\n &:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n\n &-icon {\n display: block;\n width: var(--spacing-20);\n height: var(--spacing-20);\n }\n }\n\n &__counter {\n background-color: var(--color-surface-1);\n border: 1px solid var(--color-surface-3);\n border-radius: var(--rounded-md);\n font-size: var(--text-12);\n color: var(--color-word-3);\n line-height: 1;\n padding-inline: var(--spacing-6);\n padding-block: var(--spacing-4);\n z-index: 1;\n font-variant-numeric: tabular-nums;\n font-family: var(--font-mono);\n font-weight: var(--font-bold);\n\n &--over {\n color: var(--color-danger);\n border-color: var(--color-danger-lighten-5);\n font-weight: var(--font-bold);\n }\n }\n }\n</style>\n"],"x_google_ignoreList":[0],"mappings":"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"}
|
|
@@ -1,37 +1,39 @@
|
|
|
1
1
|
import { t as e } from "./PkChatbotError-CN_PPVAc.js";
|
|
2
|
-
import {
|
|
2
|
+
import { d as t, l as n, m as r, o as i, p as a } from "./src-DW4YojFN.js";
|
|
3
3
|
import { t as o } from "./PkRelativeTime-WZ2aPcp_.js";
|
|
4
|
-
import { t as s } from "./PkStreamingMarkdown-
|
|
5
|
-
import { t as c } from "./PkChatbotFilePreview-
|
|
6
|
-
import { t as l } from "./PkChatbotFeedbackForm-
|
|
7
|
-
import { a as u, n as d, o as f, r as p, s as m, t as h } from "./utils-
|
|
4
|
+
import { t as s } from "./PkStreamingMarkdown-BDtjktHX.js";
|
|
5
|
+
import { t as c } from "./PkChatbotFilePreview-7hRouK9o.js";
|
|
6
|
+
import { t as l } from "./PkChatbotFeedbackForm-Dy2ojy2E.js";
|
|
7
|
+
import { a as u, n as d, o as f, r as p, s as m, t as h } from "./utils-UX35fb5C.js";
|
|
8
8
|
import { VvButton as g, VvButtonGroup as _, VvIcon as v } from "@volverjs/ui-vue/components";
|
|
9
9
|
import { Fragment as y, Transition as b, computed as x, createBlock as S, createCommentVNode as C, createElementBlock as w, createElementVNode as T, createTextVNode as E, createVNode as D, defineAsyncComponent as O, defineComponent as k, mergeProps as ee, nextTick as A, normalizeClass as j, normalizeStyle as M, onBeforeUnmount as N, onMounted as P, openBlock as F, ref as I, renderList as te, renderSlot as ne, resolveDynamicComponent as re, toDisplayString as L, unref as R, useSlots as ie, useTemplateRef as ae, watch as z, withCtx as B, withModifiers as V } from "vue";
|
|
10
10
|
import { useI18n as oe } from "vue-i18n";
|
|
11
11
|
//#region ../../packages/components/src/chat/toolComponentMap.ts
|
|
12
12
|
var H = {
|
|
13
|
-
requestConfirm: O(() => import("./PkToolRequestConfirm-
|
|
14
|
-
requestOAuthConnection: O(() => import("./PkToolRequestOAuthConnection-
|
|
15
|
-
showArtifact: O(() => import("./PkToolShowArtifact-
|
|
16
|
-
showCalendarEvent: O(() => import("./PkToolShowCalendarEvent-
|
|
17
|
-
showComparison: O(() => import("./PkToolShowComparison-
|
|
18
|
-
showContactForm: O(() => import("./PkToolShowContactForm-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
13
|
+
requestConfirm: O(() => import("./PkToolRequestConfirm-BcZ10rMb.js")),
|
|
14
|
+
requestOAuthConnection: O(() => import("./PkToolRequestOAuthConnection-CIrFBhxL.js")),
|
|
15
|
+
showArtifact: O(() => import("./PkToolShowArtifact-BVFPfZT8.js").then((e) => e.n)),
|
|
16
|
+
showCalendarEvent: O(() => import("./PkToolShowCalendarEvent-9jaBqWBJ.js").then((e) => e.n)),
|
|
17
|
+
showComparison: O(() => import("./PkToolShowComparison-D1YHzvyy.js").then((e) => e.n)),
|
|
18
|
+
showContactForm: O(() => import("./PkToolShowContactForm-BVtuQVGs.js").then((e) => e.n)),
|
|
19
|
+
showDiagram: O(() => import("./PkToolShowDiagram-CLyYku9I.js")),
|
|
20
|
+
showEmail: O(() => import("./PkToolShowEmail-BZzv2-6y.js").then((e) => e.n)),
|
|
21
|
+
showImageGallery: O(() => import("./PkToolShowImageGallery-Bt7QNtGe.js").then((e) => e.n)),
|
|
22
|
+
showLocation: O(() => import("./PkToolShowLocation-DAg9HeYq.js").then((e) => e.n)),
|
|
23
|
+
showMessage: O(() => import("./PkToolShowMessage-DvnO4DDb.js").then((e) => e.n)),
|
|
24
|
+
showMultipleChoice: O(() => import("./PkToolShowMultipleChoice-BEWDze3p.js").then((e) => e.n)),
|
|
25
|
+
showProductList: O(() => import("./PkToolShowProductList-Cyh_fdTh.js").then((e) => e.n)),
|
|
26
|
+
showQrCode: O(() => import("./PkToolShowQrCode-Dz3HlJGs.js").then((e) => e.n)),
|
|
27
|
+
showSources: O(() => import("./PkToolShowSources-cFvwqgDz.js").then((e) => e.n)),
|
|
28
|
+
showSuggestedReply: O(() => import("./PkToolShowSuggestedReply-DIrmkOUq.js").then((e) => e.n)),
|
|
29
|
+
showWeather: O(() => import("./PkToolShowWeather-CKFmoP6M.js")),
|
|
30
|
+
showWebPages: O(() => import("./PkToolShowWebPages-DDsErkru.js").then((e) => e.n))
|
|
30
31
|
}, se = /* @__PURE__ */ k({
|
|
31
32
|
__name: "PkStreamingMarkdownAutoscroll",
|
|
32
33
|
props: {
|
|
33
34
|
markdown: {},
|
|
34
|
-
innerClass: {}
|
|
35
|
+
innerClass: {},
|
|
36
|
+
isDark: { type: Boolean }
|
|
35
37
|
},
|
|
36
38
|
setup(e) {
|
|
37
39
|
let t = e, n = I(), r = I(0), i = I(!1), a = () => {
|
|
@@ -48,8 +50,13 @@ var H = {
|
|
|
48
50
|
onScroll: a
|
|
49
51
|
}, [D(s, {
|
|
50
52
|
markdown: e.markdown,
|
|
53
|
+
"is-dark": e.isDark,
|
|
51
54
|
class: j(e.innerClass)
|
|
52
|
-
}, null, 8, [
|
|
55
|
+
}, null, 8, [
|
|
56
|
+
"markdown",
|
|
57
|
+
"is-dark",
|
|
58
|
+
"class"
|
|
59
|
+
])], 544));
|
|
53
60
|
}
|
|
54
61
|
}), U = 30, W = 50, G = 500;
|
|
55
62
|
function ce(e) {
|
|
@@ -146,6 +153,7 @@ var le = { class: "pk-chatbot-messages__wrapper" }, ue = {
|
|
|
146
153
|
showMessageDateTime: { type: Boolean },
|
|
147
154
|
showMessageTokensCount: { type: Boolean },
|
|
148
155
|
showAllMessageParts: { type: Boolean },
|
|
156
|
+
isDark: { type: Boolean },
|
|
149
157
|
feedbackMessageId: {},
|
|
150
158
|
feedbackLoading: { type: Boolean },
|
|
151
159
|
feedbackSubmitted: { type: Boolean },
|
|
@@ -195,7 +203,7 @@ var le = { class: "pk-chatbot-messages__wrapper" }, ue = {
|
|
|
195
203
|
return h(e);
|
|
196
204
|
}), je = (e) => N.messages?.findIndex((t) => t.id === e), Z = (e) => e === void 0 || !N.messages ? !1 : e === (N.messages?.length ?? 0) - 1, Me = (e) => Z(e) && N.status === "ready" && N.actions?.includes("regenerate"), Q = (e, t) => (Z(t) && N.status === "ready" || !Z(t)) && N.actions?.includes(e), Ne = (e) => {
|
|
197
205
|
let t = e.parts[e.parts.length - 1];
|
|
198
|
-
return
|
|
206
|
+
return a(t);
|
|
199
207
|
}, $ = (e) => e.role === "assistant", Pe = (e) => e.role === "user", Fe = (e) => N.messages?.slice(0, e).reverse().find((e) => $(e)), Ie = (e) => N.messages?.slice(e + 1).find((e) => $(e)), Le = (e) => {
|
|
200
208
|
let t = Fe(e), n = Ie(e);
|
|
201
209
|
if (!t?.metadata?.createdAt || !n?.metadata?.createdAt) return !1;
|
|
@@ -234,7 +242,7 @@ var le = { class: "pk-chatbot-messages__wrapper" }, ue = {
|
|
|
234
242
|
class: j(["pk-chatbot-message", [`pk-chatbot-message--${e.role}`, { "pk-chatbot-message--loading": X.value && Z(g) && $(e) }]]),
|
|
235
243
|
style: M({ minHeight: Z(g) && $(e) && !Oe.value ? `${K.value}px` : void 0 })
|
|
236
244
|
}, [
|
|
237
|
-
(F(!0), w(y, null, te(De(e), (o, l) => (F(), w(y, { key: l }, [R(
|
|
245
|
+
(F(!0), w(y, null, te(De(e), (o, l) => (F(), w(y, { key: l }, [R(a)(o) && o.text.trim() ? (F(), S(b, {
|
|
238
246
|
key: 0,
|
|
239
247
|
appear: "",
|
|
240
248
|
name: "pk-chatbot-part"
|
|
@@ -248,10 +256,15 @@ var le = { class: "pk-chatbot-messages__wrapper" }, ue = {
|
|
|
248
256
|
key: 0,
|
|
249
257
|
class: "wysiwyg",
|
|
250
258
|
markdown: o.text,
|
|
259
|
+
"is-dark": O.isDark,
|
|
251
260
|
loading: g === (O.messages?.length ?? 0) - 1 && O.status === "streaming"
|
|
252
|
-
}, null, 8, [
|
|
261
|
+
}, null, 8, [
|
|
262
|
+
"markdown",
|
|
263
|
+
"is-dark",
|
|
264
|
+
"loading"
|
|
265
|
+
])) : (F(), w(y, { key: 1 }, [E(L(o.text), 1)], 64))])])]),
|
|
253
266
|
_: 2
|
|
254
|
-
}, 1024)) : R(
|
|
267
|
+
}, 1024)) : R(t)(o) ? (F(), S(b, {
|
|
255
268
|
key: 1,
|
|
256
269
|
appear: "",
|
|
257
270
|
name: "pk-chatbot-part"
|
|
@@ -266,12 +279,12 @@ var le = { class: "pk-chatbot-messages__wrapper" }, ue = {
|
|
|
266
279
|
"filename"
|
|
267
280
|
])]),
|
|
268
281
|
_: 2
|
|
269
|
-
}, 1024)) : R(
|
|
282
|
+
}, 1024)) : R(r)(o) && !R(u)(o) && (R(H)[R(n)(o)] || R(W)[o.type] || O.showAllMessageParts) ? (F(), S(b, {
|
|
270
283
|
key: 2,
|
|
271
284
|
appear: "",
|
|
272
285
|
name: "pk-chatbot-part"
|
|
273
286
|
}, {
|
|
274
|
-
default: B(() => [!R(W)[o.type] && R(H)[R(
|
|
287
|
+
default: B(() => [!R(W)[o.type] && R(H)[R(n)(o)] ? (F(), S(re(R(H)[R(n)(o)]), {
|
|
275
288
|
key: `component-${l}-${R(d)(o)}`,
|
|
276
289
|
part: o
|
|
277
290
|
}, null, 8, ["part"])) : ne(f.$slots, o.type, ee({
|
|
@@ -286,7 +299,7 @@ var le = { class: "pk-chatbot-messages__wrapper" }, ue = {
|
|
|
286
299
|
key: 0,
|
|
287
300
|
name: R(h)(o),
|
|
288
301
|
class: "shrink-0"
|
|
289
|
-
}, null, 8, ["name"])) : C("", !0), T("code", he, L(R(
|
|
302
|
+
}, null, 8, ["name"])) : C("", !0), T("code", he, L(R(i)(o.type)), 1)])])) : C("", !0)])]),
|
|
290
303
|
_: 2
|
|
291
304
|
}, 1024)) : C("", !0)], 64))), 128)),
|
|
292
305
|
D(b, {
|
|
@@ -320,9 +333,10 @@ var le = { class: "pk-chatbot-messages__wrapper" }, ue = {
|
|
|
320
333
|
default: B(() => [Y.value && "text" in Y.value && Y.value.text.trim() ? (F(), S(se, {
|
|
321
334
|
key: 0,
|
|
322
335
|
markdown: Y.value.text,
|
|
336
|
+
"is-dark": O.isDark,
|
|
323
337
|
"inner-class": "wysiwyg",
|
|
324
338
|
class: "border border-surface-4 rounded p-4 mt-8 bg-surface-1 max-h-64 text-10 w-full"
|
|
325
|
-
}, null, 8, ["markdown"])) : C("", !0)]),
|
|
339
|
+
}, null, 8, ["markdown", "is-dark"])) : C("", !0)]),
|
|
326
340
|
_: 1
|
|
327
341
|
})])) : C("", !0)]),
|
|
328
342
|
_: 2
|
|
@@ -470,4 +484,4 @@ var le = { class: "pk-chatbot-messages__wrapper" }, ue = {
|
|
|
470
484
|
//#endregion
|
|
471
485
|
export { se as n, xe as t };
|
|
472
486
|
|
|
473
|
-
//# sourceMappingURL=PkChatbotMessages-
|
|
487
|
+
//# sourceMappingURL=PkChatbotMessages-DUOrit9Y.js.map
|