@8wave/ai-elements 0.69.0 → 0.70.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (427) hide show
  1. package/README.md +30 -5
  2. package/dist/_chunks/{PkStreamingMarkdown-C0BpOvli.js → PkStreamingMarkdown-CCD_gifi.js} +2 -2
  3. package/dist/_chunks/{PkStreamingMarkdown-C0BpOvli.js.map → PkStreamingMarkdown-CCD_gifi.js.map} +1 -1
  4. package/dist/_chunks/{PkToolShowArtifact-DzNIkKvZ.js → PkToolShowArtifact-BZ9-wuXH.js} +12 -11
  5. package/dist/_chunks/PkToolShowArtifact-BZ9-wuXH.js.map +1 -0
  6. package/dist/_chunks/{PkToolShowCalendarEvent-Dolb7MTf.js → PkToolShowCalendarEvent-BFHzjM9E.js} +2 -2
  7. package/dist/_chunks/{PkToolShowCalendarEvent-Dolb7MTf.js.map → PkToolShowCalendarEvent-BFHzjM9E.js.map} +1 -1
  8. package/dist/_chunks/{PkToolShowComparison-BWwQPM6d.js → PkToolShowComparison-D-cY7yXE.js} +1 -1
  9. package/dist/_chunks/{PkToolShowComparison-BWwQPM6d.js.map → PkToolShowComparison-D-cY7yXE.js.map} +1 -1
  10. package/dist/_chunks/PkToolShowContactForm-B5Zuup-c.js +2 -0
  11. package/dist/_chunks/PkToolShowContactForm-izy_eJOv.js +1102 -0
  12. package/dist/_chunks/PkToolShowContactForm-izy_eJOv.js.map +1 -0
  13. package/dist/_chunks/{PkToolShowEmail-BrBJY7Op.js → PkToolShowEmail-BhGdH4Ig.js} +1 -1
  14. package/dist/_chunks/{PkToolShowEmail-BrBJY7Op.js.map → PkToolShowEmail-BhGdH4Ig.js.map} +1 -1
  15. package/dist/_chunks/{PkToolShowImageGallery-dnCkJaK8.js → PkToolShowImageGallery-CiN2M02m.js} +3 -3
  16. package/dist/_chunks/{PkToolShowImageGallery-dnCkJaK8.js.map → PkToolShowImageGallery-CiN2M02m.js.map} +1 -1
  17. package/dist/_chunks/PkToolShowLocation-CbaF2oBf.js +2 -0
  18. package/dist/_chunks/PkToolShowLocation-gQtxMrSM.js +4996 -0
  19. package/dist/_chunks/PkToolShowLocation-gQtxMrSM.js.map +1 -0
  20. package/dist/_chunks/{PkToolShowMessage-D0hwYIlo.js → PkToolShowMessage-5Luc042T.js} +1 -1
  21. package/dist/_chunks/{PkToolShowMessage-D0hwYIlo.js.map → PkToolShowMessage-5Luc042T.js.map} +1 -1
  22. package/dist/_chunks/PkToolShowMultipleChoice-DgfLPaKE.js +2 -0
  23. package/dist/_chunks/PkToolShowMultipleChoice-WBsP83PW.js +44 -0
  24. package/dist/_chunks/PkToolShowMultipleChoice-WBsP83PW.js.map +1 -0
  25. package/dist/_chunks/{PkToolShowProductList-C-t2Q6vG.js → PkToolShowProductList-BSLTdM8w.js} +2 -2
  26. package/dist/_chunks/{PkToolShowProductList-C-t2Q6vG.js.map → PkToolShowProductList-BSLTdM8w.js.map} +1 -1
  27. package/dist/_chunks/{PkToolShowQrCode-pX-2NQ0q.js → PkToolShowQrCode-DLSOtaV9.js} +1 -1
  28. package/dist/_chunks/{PkToolShowQrCode-pX-2NQ0q.js.map → PkToolShowQrCode-DLSOtaV9.js.map} +1 -1
  29. package/dist/_chunks/PkToolShowSources-BZyYFWu6.js +490 -0
  30. package/dist/_chunks/PkToolShowSources-BZyYFWu6.js.map +1 -0
  31. package/dist/_chunks/PkToolShowSources-C0Edf43F.js +2 -0
  32. package/dist/_chunks/PkToolShowSuggestedReply-CMIWzymE.js +2 -0
  33. package/dist/_chunks/PkToolShowSuggestedReply-PyXHjIMg.js +40 -0
  34. package/dist/_chunks/PkToolShowSuggestedReply-PyXHjIMg.js.map +1 -0
  35. package/dist/_chunks/{PkToolShowWeather-BlxQ4-di.js → PkToolShowWeather-BmB6I1CQ.js} +1 -1
  36. package/dist/_chunks/{PkToolShowWeather-BlxQ4-di.js.map → PkToolShowWeather-BmB6I1CQ.js.map} +1 -1
  37. package/dist/_chunks/{PkToolShowWebPages-CflGTyAq.js → PkToolShowWebPages-BQEuy2SB.js} +3 -3
  38. package/dist/_chunks/{PkToolShowWebPages-CflGTyAq.js.map → PkToolShowWebPages-BQEuy2SB.js.map} +1 -1
  39. package/dist/_chunks/{PkUrl-BiCK2gUF.js → PkUrl-DbCzf0TH.js} +5 -8
  40. package/dist/_chunks/{PkUrl-BiCK2gUF.js.map → PkUrl-DbCzf0TH.js.map} +1 -1
  41. package/dist/_chunks/{VvCheckbox.es-BB__5AQf.js → VvCheckbox.es-xoDP7xfG.js} +1 -1
  42. package/dist/_chunks/{VvCheckbox.es-BB__5AQf.js.map → VvCheckbox.es-xoDP7xfG.js.map} +1 -1
  43. package/dist/_chunks/{VvCheckboxGroup.es-B8vNssFt.js → VvCheckboxGroup.es-CqmkSf32.js} +1 -1
  44. package/dist/_chunks/{VvCheckboxGroup.es-B8vNssFt.js.map → VvCheckboxGroup.es-CqmkSf32.js.map} +1 -1
  45. package/dist/_chunks/{VvCombobox.es-B3EXD0qk.js → VvCombobox.es-8c5A9J7u.js} +1 -1
  46. package/dist/_chunks/{VvCombobox.es-B3EXD0qk.js.map → VvCombobox.es-8c5A9J7u.js.map} +1 -1
  47. package/dist/_chunks/{VvInputText.es-Dz2nJhHg.js → VvInputText.es-C3DasKVI.js} +1 -1
  48. package/dist/_chunks/{VvInputText.es-Dz2nJhHg.js.map → VvInputText.es-C3DasKVI.js.map} +1 -1
  49. package/dist/_chunks/{VvRadio.es-CBNUR8-A.js → VvRadio.es-DWCbGLSw.js} +1 -1
  50. package/dist/_chunks/{VvRadio.es-CBNUR8-A.js.map → VvRadio.es-DWCbGLSw.js.map} +1 -1
  51. package/dist/_chunks/{VvRadioGroup.es-C3cxLQie.js → VvRadioGroup.es-DeZPOSLg.js} +1 -1
  52. package/dist/_chunks/{VvRadioGroup.es-C3cxLQie.js.map → VvRadioGroup.es-DeZPOSLg.js.map} +1 -1
  53. package/dist/_chunks/{VvSelect.es-DhnVYyFM.js → VvSelect.es-Cbdxv0hL.js} +1 -1
  54. package/dist/_chunks/{VvSelect.es-DhnVYyFM.js.map → VvSelect.es-Cbdxv0hL.js.map} +1 -1
  55. package/dist/_chunks/{VvTextarea.es-CqwOOwHn.js → VvTextarea.es-G6PqQj_w.js} +1 -1
  56. package/dist/_chunks/{VvTextarea.es-CqwOOwHn.js.map → VvTextarea.es-G6PqQj_w.js.map} +1 -1
  57. package/dist/_chunks/_plugin-vue_export-helper-C6kC663S.js +8 -0
  58. package/dist/_chunks/marker-icon-2x-B5zK5Qr3.js +7 -0
  59. package/dist/_chunks/marker-icon-2x-B5zK5Qr3.js.map +1 -0
  60. package/dist/_chunks/marker-icon-C9YVKiza.js +7 -0
  61. package/dist/_chunks/marker-icon-C9YVKiza.js.map +1 -0
  62. package/dist/_chunks/marker-shadow-C69K8Z1K.js +7 -0
  63. package/dist/_chunks/marker-shadow-C69K8Z1K.js.map +1 -0
  64. package/dist/_chunks/schemas-BzxsvNFR.js +3117 -0
  65. package/dist/_chunks/schemas-BzxsvNFR.js.map +1 -0
  66. package/dist/_chunks/{src-BRYn66N3.js → src-B7wQQMx2.js} +1 -1
  67. package/dist/_chunks/{src-BRYn66N3.js.map → src-B7wQQMx2.js.map} +1 -1
  68. package/dist/_chunks/{useLightbox-RmU8z981.js → useLightbox-krdR1Z0n.js} +2 -2
  69. package/dist/_chunks/{useLightbox-RmU8z981.js.map → useLightbox-krdR1Z0n.js.map} +1 -1
  70. package/dist/ai-elements.es.js +7433 -12095
  71. package/dist/ai-elements.es.js.map +1 -1
  72. package/dist-vue/PkChatbot.js +1 -1
  73. package/dist-vue/PkChatbotError.js +1 -1
  74. package/dist-vue/PkChatbotFeedbackForm.js +1 -1
  75. package/dist-vue/PkChatbotFilePreview.js +1 -1
  76. package/dist-vue/PkChatbotInput.js +1 -1
  77. package/dist-vue/PkChatbotMessages.js +1 -1
  78. package/dist-vue/PkChatbotViewChat.js +1 -1
  79. package/dist-vue/PkChatbotViewConversations.js +1 -1
  80. package/dist-vue/PkChatbotViewProfile.js +1 -1
  81. package/dist-vue/_chunks/Media-COOsOMMv.js +120 -0
  82. package/dist-vue/_chunks/Media-COOsOMMv.js.map +1 -0
  83. package/dist-vue/_chunks/{PkChatbot-Cy7p5UI_.js → PkChatbot-h7EIb9Y5.js} +61 -60
  84. package/dist-vue/_chunks/{PkChatbot-Cy7p5UI_.js.map → PkChatbot-h7EIb9Y5.js.map} +1 -1
  85. package/dist-vue/_chunks/{PkChatbotError-DOkNTDsc.js → PkChatbotError-CBQaRNse.js} +1 -1
  86. package/dist-vue/_chunks/{PkChatbotError-DOkNTDsc.js.map → PkChatbotError-CBQaRNse.js.map} +1 -1
  87. package/dist-vue/_chunks/PkChatbotFeedbackForm-C5QLJeUc.js +91 -0
  88. package/dist-vue/_chunks/PkChatbotFeedbackForm-C5QLJeUc.js.map +1 -0
  89. package/dist-vue/_chunks/{PkChatbotFilePreview-zHYZ0F7j.js → PkChatbotFilePreview-0ow1cjom.js} +2 -2
  90. package/dist-vue/_chunks/{PkChatbotFilePreview-zHYZ0F7j.js.map → PkChatbotFilePreview-0ow1cjom.js.map} +1 -1
  91. package/dist-vue/_chunks/{PkChatbotInput-CXydKByS.js → PkChatbotInput-DjUU_5_9.js} +3 -3
  92. package/dist-vue/_chunks/{PkChatbotInput-CXydKByS.js.map → PkChatbotInput-DjUU_5_9.js.map} +1 -1
  93. package/dist-vue/_chunks/{PkChatbotMessages-C7-ZtU0-.js → PkChatbotMessages-DJngZXIX.js} +130 -121
  94. package/dist-vue/_chunks/PkChatbotMessages-DJngZXIX.js.map +1 -0
  95. package/dist-vue/_chunks/PkChatbotViewChat-LdHOe19w.js +246 -0
  96. package/dist-vue/_chunks/PkChatbotViewChat-LdHOe19w.js.map +1 -0
  97. package/dist-vue/_chunks/{PkChatbotViewConversations-Ct0TbDrg.js → PkChatbotViewConversations-BAU8tPTf.js} +4 -4
  98. package/dist-vue/_chunks/{PkChatbotViewConversations-Ct0TbDrg.js.map → PkChatbotViewConversations-BAU8tPTf.js.map} +1 -1
  99. package/dist-vue/_chunks/{PkChatbotViewProfile-BhdCxVSX.js → PkChatbotViewProfile-B_TpBkAf.js} +2 -2
  100. package/dist-vue/_chunks/{PkChatbotViewProfile-BhdCxVSX.js.map → PkChatbotViewProfile-B_TpBkAf.js.map} +1 -1
  101. package/dist-vue/_chunks/{PkRelativeTime-Bzh37jv5.js → PkRelativeTime-ivIkVQRR.js} +1 -1
  102. package/dist-vue/_chunks/{PkRelativeTime-Bzh37jv5.js.map → PkRelativeTime-ivIkVQRR.js.map} +1 -1
  103. package/dist-vue/_chunks/{PkStreamingMarkdown-C-XHB63C.js → PkStreamingMarkdown-CGEZEVZF.js} +2 -2
  104. package/dist-vue/_chunks/{PkStreamingMarkdown-C-XHB63C.js.map → PkStreamingMarkdown-CGEZEVZF.js.map} +1 -1
  105. package/dist-vue/_chunks/{PkToolShowArtifact-pTS7wzhw.js → PkToolShowArtifact-D1PnI-E1.js} +14 -13
  106. package/dist-vue/_chunks/PkToolShowArtifact-D1PnI-E1.js.map +1 -0
  107. package/dist-vue/_chunks/{PkToolShowCalendarEvent-DQ--fzwb.js → PkToolShowCalendarEvent-HiRf_hSv.js} +3 -3
  108. package/dist-vue/_chunks/{PkToolShowCalendarEvent-DQ--fzwb.js.map → PkToolShowCalendarEvent-HiRf_hSv.js.map} +1 -1
  109. package/dist-vue/_chunks/{PkToolShowComparison-CzRUrjbP.js → PkToolShowComparison-Bll3lc1g.js} +2 -2
  110. package/dist-vue/_chunks/{PkToolShowComparison-CzRUrjbP.js.map → PkToolShowComparison-Bll3lc1g.js.map} +1 -1
  111. package/dist-vue/_chunks/PkToolShowContactForm-DQDXyNco.js +130 -0
  112. package/dist-vue/_chunks/PkToolShowContactForm-DQDXyNco.js.map +1 -0
  113. package/dist-vue/_chunks/{PkToolShowEmail-htn0ivwY.js → PkToolShowEmail-DzYBtaIE.js} +2 -2
  114. package/dist-vue/_chunks/{PkToolShowEmail-htn0ivwY.js.map → PkToolShowEmail-DzYBtaIE.js.map} +1 -1
  115. package/dist-vue/_chunks/{PkToolShowImageGallery-CpU183SC.js → PkToolShowImageGallery-BQtLChsM.js} +4 -4
  116. package/dist-vue/_chunks/{PkToolShowImageGallery-CpU183SC.js.map → PkToolShowImageGallery-BQtLChsM.js.map} +1 -1
  117. package/dist-vue/_chunks/PkToolShowLocation-CaG0Txb6.js +148 -0
  118. package/dist-vue/_chunks/PkToolShowLocation-CaG0Txb6.js.map +1 -0
  119. package/dist-vue/_chunks/{PkToolShowMessage-DtGDm3pq.js → PkToolShowMessage-C4os87fJ.js} +2 -2
  120. package/dist-vue/_chunks/{PkToolShowMessage-DtGDm3pq.js.map → PkToolShowMessage-C4os87fJ.js.map} +1 -1
  121. package/dist-vue/_chunks/PkToolShowMultipleChoice-DB5ZvvhS.js +45 -0
  122. package/dist-vue/_chunks/PkToolShowMultipleChoice-DB5ZvvhS.js.map +1 -0
  123. package/dist-vue/_chunks/{PkToolShowProductList-BlkUdbtV.js → PkToolShowProductList-BR14mmfl.js} +3 -3
  124. package/dist-vue/_chunks/{PkToolShowProductList-BlkUdbtV.js.map → PkToolShowProductList-BR14mmfl.js.map} +1 -1
  125. package/dist-vue/_chunks/{PkToolShowQrCode-BUyhM_MN.js → PkToolShowQrCode-CTfDrItd.js} +2 -2
  126. package/dist-vue/_chunks/{PkToolShowQrCode-BUyhM_MN.js.map → PkToolShowQrCode-CTfDrItd.js.map} +1 -1
  127. package/dist-vue/_chunks/PkToolShowSources-B_UfP0QT.js +377 -0
  128. package/dist-vue/_chunks/PkToolShowSources-B_UfP0QT.js.map +1 -0
  129. package/dist-vue/_chunks/PkToolShowSuggestedReply-BVa6p4DJ.js +40 -0
  130. package/dist-vue/_chunks/PkToolShowSuggestedReply-BVa6p4DJ.js.map +1 -0
  131. package/dist-vue/_chunks/{PkToolShowWeather-iAV7Hn_J.js → PkToolShowWeather-D3MyAnH4.js} +1 -1
  132. package/dist-vue/_chunks/{PkToolShowWeather-iAV7Hn_J.js.map → PkToolShowWeather-D3MyAnH4.js.map} +1 -1
  133. package/dist-vue/_chunks/{PkToolShowWebPages-BQp9A4vb.js → PkToolShowWebPages-0pwK7psA.js} +4 -4
  134. package/dist-vue/_chunks/{PkToolShowWebPages-BQp9A4vb.js.map → PkToolShowWebPages-0pwK7psA.js.map} +1 -1
  135. package/dist-vue/_chunks/{PkUrl-C9annqfF.js → PkUrl-tuHTaGCy.js} +1 -1
  136. package/dist-vue/_chunks/{PkUrl-C9annqfF.js.map → PkUrl-tuHTaGCy.js.map} +1 -1
  137. package/dist-vue/_chunks/{ZodError-B3AvmUCJ.js → ZodError-DkVfTODd.js} +1 -1
  138. package/dist-vue/_chunks/{ZodError-B3AvmUCJ.js.map → ZodError-DkVfTODd.js.map} +1 -1
  139. package/dist-vue/_chunks/{apl-Bkqrrr3v.js → apl-j-tvtpTP.js} +1 -1
  140. package/dist-vue/_chunks/{apl-Bkqrrr3v.js.map → apl-j-tvtpTP.js.map} +1 -1
  141. package/dist-vue/_chunks/{asciiarmor-DMBg7NdB.js → asciiarmor-JNKKTtQt.js} +1 -1
  142. package/dist-vue/_chunks/{asciiarmor-DMBg7NdB.js.map → asciiarmor-JNKKTtQt.js.map} +1 -1
  143. package/dist-vue/_chunks/{asn1-WRfjxqL1.js → asn1-DBQ_amwa.js} +1 -1
  144. package/dist-vue/_chunks/{asn1-WRfjxqL1.js.map → asn1-DBQ_amwa.js.map} +1 -1
  145. package/dist-vue/_chunks/{asterisk-DYv-EHWB.js → asterisk-Di3iYNR-.js} +1 -1
  146. package/dist-vue/_chunks/{asterisk-DYv-EHWB.js.map → asterisk-Di3iYNR-.js.map} +1 -1
  147. package/dist-vue/_chunks/{brainfuck-hzOnKOH7.js → brainfuck-D8mwwQut.js} +1 -1
  148. package/dist-vue/_chunks/{brainfuck-hzOnKOH7.js.map → brainfuck-D8mwwQut.js.map} +1 -1
  149. package/dist-vue/_chunks/{clike-r66wHNGT.js → clike-I6ihTsJ5.js} +1 -1
  150. package/dist-vue/_chunks/{clike-r66wHNGT.js.map → clike-I6ihTsJ5.js.map} +1 -1
  151. package/dist-vue/_chunks/{clojure-BDb_WsAm.js → clojure-CGENQS-R.js} +1 -1
  152. package/dist-vue/_chunks/{clojure-BDb_WsAm.js.map → clojure-CGENQS-R.js.map} +1 -1
  153. package/dist-vue/_chunks/{cmake-Curqstum.js → cmake-D2jqXHLk.js} +1 -1
  154. package/dist-vue/_chunks/{cmake-Curqstum.js.map → cmake-D2jqXHLk.js.map} +1 -1
  155. package/dist-vue/_chunks/{cobol-BAx4MdII.js → cobol-Db3IHNru.js} +1 -1
  156. package/dist-vue/_chunks/{cobol-BAx4MdII.js.map → cobol-Db3IHNru.js.map} +1 -1
  157. package/dist-vue/_chunks/{coffeescript-jbcF4nR3.js → coffeescript-B4Rd3RcP.js} +1 -1
  158. package/dist-vue/_chunks/{coffeescript-jbcF4nR3.js.map → coffeescript-B4Rd3RcP.js.map} +1 -1
  159. package/dist-vue/_chunks/{commonlisp-BXKJxcTF.js → commonlisp-B-ehiawF.js} +1 -1
  160. package/dist-vue/_chunks/{commonlisp-BXKJxcTF.js.map → commonlisp-B-ehiawF.js.map} +1 -1
  161. package/dist-vue/_chunks/createChatbotApiClient-C520OTrB.js +521 -0
  162. package/dist-vue/_chunks/createChatbotApiClient-C520OTrB.js.map +1 -0
  163. package/dist-vue/_chunks/{crystal-Dq4io9oq.js → crystal-Bj2fwY3J.js} +1 -1
  164. package/dist-vue/_chunks/{crystal-Dq4io9oq.js.map → crystal-Bj2fwY3J.js.map} +1 -1
  165. package/dist-vue/_chunks/{css-Bd9Y1kSi.js → css-CDqbdUZS.js} +1 -1
  166. package/dist-vue/_chunks/{css-Bd9Y1kSi.js.map → css-CDqbdUZS.js.map} +1 -1
  167. package/dist-vue/_chunks/{cypher-D14rILSd.js → cypher-BPgl78lW.js} +1 -1
  168. package/dist-vue/_chunks/{cypher-D14rILSd.js.map → cypher-BPgl78lW.js.map} +1 -1
  169. package/dist-vue/_chunks/{d-B-E6YUkN.js → d-_9PAw1JO.js} +1 -1
  170. package/dist-vue/_chunks/{d-B-E6YUkN.js.map → d-_9PAw1JO.js.map} +1 -1
  171. package/dist-vue/_chunks/{diff-BPPcQvHC.js → diff-C_qwk3ek.js} +1 -1
  172. package/dist-vue/_chunks/{diff-BPPcQvHC.js.map → diff-C_qwk3ek.js.map} +1 -1
  173. package/dist-vue/_chunks/{dist-CJYiwDlx.js → dist-2RCoY9yL.js} +2 -2
  174. package/dist-vue/_chunks/{dist-CJYiwDlx.js.map → dist-2RCoY9yL.js.map} +1 -1
  175. package/dist-vue/_chunks/{dist-DEe8jwtO.js → dist-B504iqq4.js} +3 -3
  176. package/dist-vue/_chunks/{dist-DEe8jwtO.js.map → dist-B504iqq4.js.map} +1 -1
  177. package/dist-vue/_chunks/{dist-BHuX2VvC.js → dist-BbACD7ZF.js} +3 -3
  178. package/dist-vue/_chunks/{dist-BHuX2VvC.js.map → dist-BbACD7ZF.js.map} +1 -1
  179. package/dist-vue/_chunks/{dist-Bh5Q6aSI2.js → dist-BfWfkbOA.js} +2 -2
  180. package/dist-vue/_chunks/dist-BfWfkbOA.js.map +1 -0
  181. package/dist-vue/_chunks/{dist-Qq_6SbFF.js → dist-BnR5Kl9J.js} +3 -3
  182. package/dist-vue/_chunks/{dist-Qq_6SbFF.js.map → dist-BnR5Kl9J.js.map} +1 -1
  183. package/dist-vue/_chunks/{dist-KPI2eL8F.js → dist-Bx_jrcne.js} +2 -2
  184. package/dist-vue/_chunks/{dist-KPI2eL8F.js.map → dist-Bx_jrcne.js.map} +1 -1
  185. package/dist-vue/_chunks/{dist-CAXUIcdd.js → dist-C4DKJxXu.js} +4 -4
  186. package/dist-vue/_chunks/{dist-CAXUIcdd.js.map → dist-C4DKJxXu.js.map} +1 -1
  187. package/dist-vue/_chunks/{dist-CAZOa5qs2.js → dist-C9oRomIQ.js} +3 -3
  188. package/dist-vue/_chunks/dist-C9oRomIQ.js.map +1 -0
  189. package/dist-vue/_chunks/{dist-DfEAZDKB.js → dist-COvC03Xx.js} +3 -3
  190. package/dist-vue/_chunks/{dist-DfEAZDKB.js.map → dist-COvC03Xx.js.map} +1 -1
  191. package/dist-vue/_chunks/{dist-D-VT7gvP.js → dist-CwB_dFae.js} +3 -3
  192. package/dist-vue/_chunks/{dist-D-VT7gvP.js.map → dist-CwB_dFae.js.map} +1 -1
  193. package/dist-vue/_chunks/{dist-BaIe783A.js → dist-Cz8slHpf.js} +2 -2
  194. package/dist-vue/_chunks/{dist-BaIe783A.js.map → dist-Cz8slHpf.js.map} +1 -1
  195. package/dist-vue/_chunks/{dist-DV82RztV.js → dist-D-G-983p.js} +3 -3
  196. package/dist-vue/_chunks/{dist-DV82RztV.js.map → dist-D-G-983p.js.map} +1 -1
  197. package/dist-vue/_chunks/{dist-BNLIqE7O.js → dist-DGsr6BFK.js} +2 -2
  198. package/dist-vue/_chunks/{dist-BNLIqE7O.js.map → dist-DGsr6BFK.js.map} +1 -1
  199. package/dist-vue/_chunks/{dist-DMP9Xsk0.js → dist-DJFxbNlz.js} +2 -2
  200. package/dist-vue/_chunks/{dist-DMP9Xsk0.js.map → dist-DJFxbNlz.js.map} +1 -1
  201. package/dist-vue/_chunks/{dist-bUGhZmKp.js → dist-DKeYnhzh.js} +5 -5
  202. package/dist-vue/_chunks/{dist-bUGhZmKp.js.map → dist-DKeYnhzh.js.map} +1 -1
  203. package/dist-vue/_chunks/{dist--mE2E_mM.js → dist-DL84m6GA.js} +1 -1
  204. package/dist-vue/_chunks/{dist--mE2E_mM.js.map → dist-DL84m6GA.js.map} +1 -1
  205. package/dist-vue/_chunks/{dist-QbFF3eM_.js → dist-DS-IY-lt.js} +4 -4
  206. package/dist-vue/_chunks/{dist-QbFF3eM_.js.map → dist-DS-IY-lt.js.map} +1 -1
  207. package/dist-vue/_chunks/{dist-s_XUA-aw.js → dist-DZloX6N0.js} +3 -3
  208. package/dist-vue/_chunks/{dist-s_XUA-aw.js.map → dist-DZloX6N0.js.map} +1 -1
  209. package/dist-vue/_chunks/{dist-jVwgEJDw.js → dist-DapfuoOT.js} +3 -3
  210. package/dist-vue/_chunks/{dist-jVwgEJDw.js.map → dist-DapfuoOT.js.map} +1 -1
  211. package/dist-vue/_chunks/{dist-BWXfA4NS.js → dist-DmUxIVrQ.js} +5 -5
  212. package/dist-vue/_chunks/{dist-BWXfA4NS.js.map → dist-DmUxIVrQ.js.map} +1 -1
  213. package/dist-vue/_chunks/{dist-BQRG0D3Y.js → dist-LX3EryGA.js} +2 -2
  214. package/dist-vue/_chunks/{dist-BQRG0D3Y.js.map → dist-LX3EryGA.js.map} +1 -1
  215. package/dist-vue/_chunks/{dist-afJW4ohP2.js → dist-Z_cFz9nA.js} +2 -2
  216. package/dist-vue/_chunks/dist-Z_cFz9nA.js.map +1 -0
  217. package/dist-vue/_chunks/{dist-DVM_p-M1.js → dist-mJVylhvZ.js} +4 -4
  218. package/dist-vue/_chunks/{dist-DVM_p-M1.js.map → dist-mJVylhvZ.js.map} +1 -1
  219. package/dist-vue/_chunks/{dockerfile-CGxYmrOo.js → dockerfile-nMSg2tXY.js} +2 -2
  220. package/dist-vue/_chunks/{dockerfile-CGxYmrOo.js.map → dockerfile-nMSg2tXY.js.map} +1 -1
  221. package/dist-vue/_chunks/{dtd-ztbg9nev.js → dtd-BhtRjlzo.js} +1 -1
  222. package/dist-vue/_chunks/{dtd-ztbg9nev.js.map → dtd-BhtRjlzo.js.map} +1 -1
  223. package/dist-vue/_chunks/{dylan-Do2p-AA-.js → dylan-DyLL0Sxl.js} +1 -1
  224. package/dist-vue/_chunks/{dylan-Do2p-AA-.js.map → dylan-DyLL0Sxl.js.map} +1 -1
  225. package/dist-vue/_chunks/{ebnf-ChJPn51D.js → ebnf-DcBh-k1T.js} +1 -1
  226. package/dist-vue/_chunks/{ebnf-ChJPn51D.js.map → ebnf-DcBh-k1T.js.map} +1 -1
  227. package/dist-vue/_chunks/{ecl-ztl4D9j5.js → ecl-C-A1gGx7.js} +1 -1
  228. package/dist-vue/_chunks/{ecl-ztl4D9j5.js.map → ecl-C-A1gGx7.js.map} +1 -1
  229. package/dist-vue/_chunks/{eiffel-BYAAf3D8.js → eiffel-DwgfvIBI.js} +1 -1
  230. package/dist-vue/_chunks/{eiffel-BYAAf3D8.js.map → eiffel-DwgfvIBI.js.map} +1 -1
  231. package/dist-vue/_chunks/{elm-DFquGUxW.js → elm-RPF69bOV.js} +1 -1
  232. package/dist-vue/_chunks/{elm-DFquGUxW.js.map → elm-RPF69bOV.js.map} +1 -1
  233. package/dist-vue/_chunks/{erlang-BIndT8-8.js → erlang-BvNh96Ir.js} +1 -1
  234. package/dist-vue/_chunks/{erlang-BIndT8-8.js.map → erlang-BvNh96Ir.js.map} +1 -1
  235. package/dist-vue/_chunks/{factor-DqGzyyvS.js → factor-B_mOIxzF.js} +2 -2
  236. package/dist-vue/_chunks/{factor-DqGzyyvS.js.map → factor-B_mOIxzF.js.map} +1 -1
  237. package/dist-vue/_chunks/{fcl-MTt_AC1b.js → fcl-C9ulsEA4.js} +1 -1
  238. package/dist-vue/_chunks/{fcl-MTt_AC1b.js.map → fcl-C9ulsEA4.js.map} +1 -1
  239. package/dist-vue/_chunks/{forth-BPoSoJYE.js → forth-CFaZGhGS.js} +1 -1
  240. package/dist-vue/_chunks/{forth-BPoSoJYE.js.map → forth-CFaZGhGS.js.map} +1 -1
  241. package/dist-vue/_chunks/{fortran-BmHZEBN4.js → fortran-Cjm6fEBu.js} +1 -1
  242. package/dist-vue/_chunks/{fortran-BmHZEBN4.js.map → fortran-Cjm6fEBu.js.map} +1 -1
  243. package/dist-vue/_chunks/{gas-7ZHFSr9Y.js → gas-C3adNyJH.js} +1 -1
  244. package/dist-vue/_chunks/{gas-7ZHFSr9Y.js.map → gas-C3adNyJH.js.map} +1 -1
  245. package/dist-vue/_chunks/{gherkin-DiGPpFIT.js → gherkin-DFFRCqQB.js} +1 -1
  246. package/dist-vue/_chunks/{gherkin-DiGPpFIT.js.map → gherkin-DFFRCqQB.js.map} +1 -1
  247. package/dist-vue/_chunks/{groovy-DdKIH6vq.js → groovy-BHcqGGgZ.js} +1 -1
  248. package/dist-vue/_chunks/{groovy-DdKIH6vq.js.map → groovy-BHcqGGgZ.js.map} +1 -1
  249. package/dist-vue/_chunks/{haskell-DAISwZqR.js → haskell-BB45MUCR.js} +1 -1
  250. package/dist-vue/_chunks/{haskell-DAISwZqR.js.map → haskell-BB45MUCR.js.map} +1 -1
  251. package/dist-vue/_chunks/{haxe-CcCnoX02.js → haxe-QBohTRDI.js} +1 -1
  252. package/dist-vue/_chunks/{haxe-CcCnoX02.js.map → haxe-QBohTRDI.js.map} +1 -1
  253. package/dist-vue/_chunks/{http-Dy51A1Ji.js → http-HqJENFoz.js} +1 -1
  254. package/dist-vue/_chunks/{http-Dy51A1Ji.js.map → http-HqJENFoz.js.map} +1 -1
  255. package/dist-vue/_chunks/{idl-Cf5JG3Ez.js → idl-DZZwNvlw.js} +1 -1
  256. package/dist-vue/_chunks/{idl-Cf5JG3Ez.js.map → idl-DZZwNvlw.js.map} +1 -1
  257. package/dist-vue/_chunks/index.es-CikrfdXD.js +950 -0
  258. package/dist-vue/_chunks/index.es-CikrfdXD.js.map +1 -0
  259. package/dist-vue/_chunks/{javascript-CzLVX0gM.js → javascript-C85sLH7Y.js} +1 -1
  260. package/dist-vue/_chunks/{javascript-CzLVX0gM.js.map → javascript-C85sLH7Y.js.map} +1 -1
  261. package/dist-vue/_chunks/{julia-B2PXBujh.js → julia-ChIE7-ml.js} +1 -1
  262. package/dist-vue/_chunks/{julia-B2PXBujh.js.map → julia-ChIE7-ml.js.map} +1 -1
  263. package/dist-vue/_chunks/{livescript-2I87cCXG.js → livescript-BCs3u_kv.js} +1 -1
  264. package/dist-vue/_chunks/{livescript-2I87cCXG.js.map → livescript-BCs3u_kv.js.map} +1 -1
  265. package/dist-vue/_chunks/{lua-C3mMI1er.js → lua-DzZVFmfH.js} +1 -1
  266. package/dist-vue/_chunks/{lua-C3mMI1er.js.map → lua-DzZVFmfH.js.map} +1 -1
  267. package/dist-vue/_chunks/{mathematica-fQn4Bu4o.js → mathematica-Zz2lXOfW.js} +1 -1
  268. package/dist-vue/_chunks/{mathematica-fQn4Bu4o.js.map → mathematica-Zz2lXOfW.js.map} +1 -1
  269. package/dist-vue/_chunks/{mbox-DKAPFpEV.js → mbox-CuPDY4hp.js} +1 -1
  270. package/dist-vue/_chunks/{mbox-DKAPFpEV.js.map → mbox-CuPDY4hp.js.map} +1 -1
  271. package/dist-vue/_chunks/{mirc-BjO0qN2s.js → mirc-DwrsqNtD.js} +1 -1
  272. package/dist-vue/_chunks/{mirc-BjO0qN2s.js.map → mirc-DwrsqNtD.js.map} +1 -1
  273. package/dist-vue/_chunks/{mllike-BlZyj79n.js → mllike-76cVByXA.js} +1 -1
  274. package/dist-vue/_chunks/{mllike-BlZyj79n.js.map → mllike-76cVByXA.js.map} +1 -1
  275. package/dist-vue/_chunks/{modelica-QjIv2_JC.js → modelica-kytS8Bwg.js} +1 -1
  276. package/dist-vue/_chunks/{modelica-QjIv2_JC.js.map → modelica-kytS8Bwg.js.map} +1 -1
  277. package/dist-vue/_chunks/{mscgen-LfC5dXDe.js → mscgen-CoPuHfjN.js} +1 -1
  278. package/dist-vue/_chunks/{mscgen-LfC5dXDe.js.map → mscgen-CoPuHfjN.js.map} +1 -1
  279. package/dist-vue/_chunks/{mumps-Dv1DAXnR.js → mumps-B2uz6FeJ.js} +1 -1
  280. package/dist-vue/_chunks/{mumps-Dv1DAXnR.js.map → mumps-B2uz6FeJ.js.map} +1 -1
  281. package/dist-vue/_chunks/{nginx-3DgpfXl3.js → nginx-BSBpB1IU.js} +1 -1
  282. package/dist-vue/_chunks/{nginx-3DgpfXl3.js.map → nginx-BSBpB1IU.js.map} +1 -1
  283. package/dist-vue/_chunks/{nsis-K3Sov04-.js → nsis-R5ELJwT9.js} +2 -2
  284. package/dist-vue/_chunks/{nsis-K3Sov04-.js.map → nsis-R5ELJwT9.js.map} +1 -1
  285. package/dist-vue/_chunks/{ntriples-BEnyXf7m.js → ntriples-CAwEARBj.js} +1 -1
  286. package/dist-vue/_chunks/{ntriples-BEnyXf7m.js.map → ntriples-CAwEARBj.js.map} +1 -1
  287. package/dist-vue/_chunks/{octave-CyLDdHqN.js → octave-Ufq41PR2.js} +1 -1
  288. package/dist-vue/_chunks/{octave-CyLDdHqN.js.map → octave-Ufq41PR2.js.map} +1 -1
  289. package/dist-vue/_chunks/{oz-D5CDtCy5.js → oz-gzP8z3Q6.js} +1 -1
  290. package/dist-vue/_chunks/{oz-D5CDtCy5.js.map → oz-gzP8z3Q6.js.map} +1 -1
  291. package/dist-vue/_chunks/{pascal-BSLSyZrm.js → pascal-Ccg4lI6j.js} +1 -1
  292. package/dist-vue/_chunks/{pascal-BSLSyZrm.js.map → pascal-Ccg4lI6j.js.map} +1 -1
  293. package/dist-vue/_chunks/{perl-DBW5T0Wn.js → perl-64iNbjRD.js} +1 -1
  294. package/dist-vue/_chunks/{perl-DBW5T0Wn.js.map → perl-64iNbjRD.js.map} +1 -1
  295. package/dist-vue/_chunks/{pig-C5Bshhgj.js → pig-CsJsXnem.js} +1 -1
  296. package/dist-vue/_chunks/{pig-C5Bshhgj.js.map → pig-CsJsXnem.js.map} +1 -1
  297. package/dist-vue/_chunks/{powershell-BEB8cXp1.js → powershell-CPnsuu0v.js} +1 -1
  298. package/dist-vue/_chunks/{powershell-BEB8cXp1.js.map → powershell-CPnsuu0v.js.map} +1 -1
  299. package/dist-vue/_chunks/{properties-Dywxo8ET.js → properties-CEGInQuZ.js} +1 -1
  300. package/dist-vue/_chunks/{properties-Dywxo8ET.js.map → properties-CEGInQuZ.js.map} +1 -1
  301. package/dist-vue/_chunks/{protobuf-236BAJ7w.js → protobuf-BGU8l-K6.js} +1 -1
  302. package/dist-vue/_chunks/{protobuf-236BAJ7w.js.map → protobuf-BGU8l-K6.js.map} +1 -1
  303. package/dist-vue/_chunks/{pug-cbZddqK7.js → pug-DMZOuiBR.js} +2 -2
  304. package/dist-vue/_chunks/{pug-cbZddqK7.js.map → pug-DMZOuiBR.js.map} +1 -1
  305. package/dist-vue/_chunks/{puppet-C2NL98jI.js → puppet-CT38RAOR.js} +1 -1
  306. package/dist-vue/_chunks/{puppet-C2NL98jI.js.map → puppet-CT38RAOR.js.map} +1 -1
  307. package/dist-vue/_chunks/{python-CwQbjwek.js → python-BmpRibCQ.js} +1 -1
  308. package/dist-vue/_chunks/{python-CwQbjwek.js.map → python-BmpRibCQ.js.map} +1 -1
  309. package/dist-vue/_chunks/{q-BSTDwNDO.js → q-CtSYDlyO.js} +1 -1
  310. package/dist-vue/_chunks/{q-BSTDwNDO.js.map → q-CtSYDlyO.js.map} +1 -1
  311. package/dist-vue/_chunks/{r-DFZgsfAZ.js → r-oVGiwSoK.js} +1 -1
  312. package/dist-vue/_chunks/{r-DFZgsfAZ.js.map → r-oVGiwSoK.js.map} +1 -1
  313. package/dist-vue/_chunks/{rpm-C0LbsDPX.js → rpm-B5gOa5-q.js} +1 -1
  314. package/dist-vue/_chunks/{rpm-C0LbsDPX.js.map → rpm-B5gOa5-q.js.map} +1 -1
  315. package/dist-vue/_chunks/{ruby-Bier99ao.js → ruby-34fuN336.js} +1 -1
  316. package/dist-vue/_chunks/{ruby-Bier99ao.js.map → ruby-34fuN336.js.map} +1 -1
  317. package/dist-vue/_chunks/{sas-VrUpo2iQ.js → sas-BlnUKWuD.js} +1 -1
  318. package/dist-vue/_chunks/{sas-VrUpo2iQ.js.map → sas-BlnUKWuD.js.map} +1 -1
  319. package/dist-vue/_chunks/{scheme-D6LSF3th.js → scheme-Ba-z_mxe.js} +1 -1
  320. package/dist-vue/_chunks/{scheme-D6LSF3th.js.map → scheme-Ba-z_mxe.js.map} +1 -1
  321. package/dist-vue/_chunks/{shell-Pil6sZYj.js → shell-B-EgOeQy.js} +1 -1
  322. package/dist-vue/_chunks/{shell-Pil6sZYj.js.map → shell-B-EgOeQy.js.map} +1 -1
  323. package/dist-vue/_chunks/{sieve-BP6vUMh6.js → sieve-DsG7bfYX.js} +1 -1
  324. package/dist-vue/_chunks/{sieve-BP6vUMh6.js.map → sieve-DsG7bfYX.js.map} +1 -1
  325. package/dist-vue/_chunks/{simple-mode-BG7WQO3g.js → simple-mode-wQYx-pPa.js} +1 -1
  326. package/dist-vue/_chunks/{simple-mode-BG7WQO3g.js.map → simple-mode-wQYx-pPa.js.map} +1 -1
  327. package/dist-vue/_chunks/{smalltalk-BnTD_-u6.js → smalltalk-ChZvyDpP.js} +1 -1
  328. package/dist-vue/_chunks/{smalltalk-BnTD_-u6.js.map → smalltalk-ChZvyDpP.js.map} +1 -1
  329. package/dist-vue/_chunks/{solr-VuxI6OR2.js → solr-Dqcv2AYp.js} +1 -1
  330. package/dist-vue/_chunks/{solr-VuxI6OR2.js.map → solr-Dqcv2AYp.js.map} +1 -1
  331. package/dist-vue/_chunks/{sparql-7LilzgeP.js → sparql-DqMXm2dv.js} +1 -1
  332. package/dist-vue/_chunks/{sparql-7LilzgeP.js.map → sparql-DqMXm2dv.js.map} +1 -1
  333. package/dist-vue/_chunks/{spreadsheet-CMp1pfGY.js → spreadsheet-DZEh4bps.js} +1 -1
  334. package/dist-vue/_chunks/{spreadsheet-CMp1pfGY.js.map → spreadsheet-DZEh4bps.js.map} +1 -1
  335. package/dist-vue/_chunks/{sql-7pX-pbPB.js → sql-MyS5CFp1.js} +1 -1
  336. package/dist-vue/_chunks/{sql-7pX-pbPB.js.map → sql-MyS5CFp1.js.map} +1 -1
  337. package/dist-vue/_chunks/{src-DjRNH9vV.js → src-BteqqLGW.js} +1 -1
  338. package/dist-vue/_chunks/{src-DjRNH9vV.js.map → src-BteqqLGW.js.map} +1 -1
  339. package/dist-vue/_chunks/{stex-Bb7D4YTq.js → stex-CuUykOIw.js} +1 -1
  340. package/dist-vue/_chunks/{stex-Bb7D4YTq.js.map → stex-CuUykOIw.js.map} +1 -1
  341. package/dist-vue/_chunks/{stylus-DtQ7d5hI.js → stylus-BIh9GBXG.js} +1 -1
  342. package/dist-vue/_chunks/{stylus-DtQ7d5hI.js.map → stylus-BIh9GBXG.js.map} +1 -1
  343. package/dist-vue/_chunks/{swift-BUw5YtkI.js → swift-En1d22e-.js} +1 -1
  344. package/dist-vue/_chunks/{swift-BUw5YtkI.js.map → swift-En1d22e-.js.map} +1 -1
  345. package/dist-vue/_chunks/{tcl-DXJDyEhN.js → tcl-CA3XR2Sh.js} +1 -1
  346. package/dist-vue/_chunks/{tcl-DXJDyEhN.js.map → tcl-CA3XR2Sh.js.map} +1 -1
  347. package/dist-vue/_chunks/{textile-CFJlGF4J.js → textile-CKe5SU6F.js} +1 -1
  348. package/dist-vue/_chunks/{textile-CFJlGF4J.js.map → textile-CKe5SU6F.js.map} +1 -1
  349. package/dist-vue/_chunks/{tiddlywiki-BcfgI-U0.js → tiddlywiki-UOzNZSPW.js} +1 -1
  350. package/dist-vue/_chunks/{tiddlywiki-BcfgI-U0.js.map → tiddlywiki-UOzNZSPW.js.map} +1 -1
  351. package/dist-vue/_chunks/{tiki-Ck3ovlwE.js → tiki-CTiuYP9v.js} +1 -1
  352. package/dist-vue/_chunks/{tiki-Ck3ovlwE.js.map → tiki-CTiuYP9v.js.map} +1 -1
  353. package/dist-vue/_chunks/{toml-Cj82erLE.js → toml-DDNufn3M.js} +1 -1
  354. package/dist-vue/_chunks/{toml-Cj82erLE.js.map → toml-DDNufn3M.js.map} +1 -1
  355. package/dist-vue/_chunks/{troff-CizaXfug.js → troff-DW8Y_3S4.js} +1 -1
  356. package/dist-vue/_chunks/{troff-CizaXfug.js.map → troff-DW8Y_3S4.js.map} +1 -1
  357. package/dist-vue/_chunks/{ttcn-mPO-QsiQ.js → ttcn-C-DIoNCg.js} +1 -1
  358. package/dist-vue/_chunks/{ttcn-mPO-QsiQ.js.map → ttcn-C-DIoNCg.js.map} +1 -1
  359. package/dist-vue/_chunks/{ttcn-cfg-c_AW8b7V.js → ttcn-cfg-B4ziRnM-.js} +1 -1
  360. package/dist-vue/_chunks/{ttcn-cfg-c_AW8b7V.js.map → ttcn-cfg-B4ziRnM-.js.map} +1 -1
  361. package/dist-vue/_chunks/{turtle-BF5AsFbP.js → turtle-CARqpYpc.js} +1 -1
  362. package/dist-vue/_chunks/{turtle-BF5AsFbP.js.map → turtle-CARqpYpc.js.map} +1 -1
  363. package/dist-vue/_chunks/{useChatbotStore-ys9uGP5v.js → useChatbotStore-C9xj40sY.js} +24 -24
  364. package/dist-vue/_chunks/{useChatbotStore-ys9uGP5v.js.map → useChatbotStore-C9xj40sY.js.map} +1 -1
  365. package/dist-vue/_chunks/{useLightbox-CRpWDdlN.js → useLightbox-CsBDIq4B.js} +2 -2
  366. package/dist-vue/_chunks/{useLightbox-CRpWDdlN.js.map → useLightbox-CsBDIq4B.js.map} +1 -1
  367. package/dist-vue/_chunks/useSafeLocalStorage-C1GCM7nD.js +15 -0
  368. package/dist-vue/_chunks/useSafeLocalStorage-C1GCM7nD.js.map +1 -0
  369. package/dist-vue/_chunks/{utils-DBd_X5-V.js → utils-D1pBqT-n.js} +2 -2
  370. package/dist-vue/_chunks/{utils-DBd_X5-V.js.map → utils-D1pBqT-n.js.map} +1 -1
  371. package/dist-vue/_chunks/{vb-CeqEYgxc.js → vb-jy9Yl8VS.js} +1 -1
  372. package/dist-vue/_chunks/{vb-CeqEYgxc.js.map → vb-jy9Yl8VS.js.map} +1 -1
  373. package/dist-vue/_chunks/{vbscript-Dy7to0l6.js → vbscript-srk6lbz5.js} +1 -1
  374. package/dist-vue/_chunks/{vbscript-Dy7to0l6.js.map → vbscript-srk6lbz5.js.map} +1 -1
  375. package/dist-vue/_chunks/{velocity-CKubdsu-.js → velocity-DYmMYLwp.js} +1 -1
  376. package/dist-vue/_chunks/{velocity-CKubdsu-.js.map → velocity-DYmMYLwp.js.map} +1 -1
  377. package/dist-vue/_chunks/{verilog-BhlfpzOZ.js → verilog-UsIZeNkB.js} +1 -1
  378. package/dist-vue/_chunks/{verilog-BhlfpzOZ.js.map → verilog-UsIZeNkB.js.map} +1 -1
  379. package/dist-vue/_chunks/{vhdl-8WXkWtGM.js → vhdl-DNCP7Bn1.js} +1 -1
  380. package/dist-vue/_chunks/{vhdl-8WXkWtGM.js.map → vhdl-DNCP7Bn1.js.map} +1 -1
  381. package/dist-vue/_chunks/{webidl-Jc36v0Y0.js → webidl-DOqqk_0y.js} +1 -1
  382. package/dist-vue/_chunks/{webidl-Jc36v0Y0.js.map → webidl-DOqqk_0y.js.map} +1 -1
  383. package/dist-vue/_chunks/{xquery-H0oz85f3.js → xquery-DJDJrmLG.js} +1 -1
  384. package/dist-vue/_chunks/{xquery-H0oz85f3.js.map → xquery-DJDJrmLG.js.map} +1 -1
  385. package/dist-vue/_chunks/{yacas-BdW11VL8.js → yacas-BSgkPzcj.js} +1 -1
  386. package/dist-vue/_chunks/{yacas-BdW11VL8.js.map → yacas-BSgkPzcj.js.map} +1 -1
  387. package/dist-vue/_chunks/{z80-GK9AbKDL.js → z80-C0-Mg9L3.js} +1 -1
  388. package/dist-vue/_chunks/{z80-GK9AbKDL.js.map → z80-C0-Mg9L3.js.map} +1 -1
  389. package/dist-vue/api.js +1 -1
  390. package/dist-vue/apps/web-component/src/composables/useChatbotAuth.d.ts +2 -1
  391. package/dist-vue/composables.js +92 -80
  392. package/dist-vue/composables.js.map +1 -1
  393. package/dist-vue/index.js +874 -857
  394. package/dist-vue/index.js.map +1 -1
  395. package/dist-vue/locales.js +1 -0
  396. package/dist-vue/packages/ability/src/types.d.ts +3 -1
  397. package/dist-vue/packages/components/src/chat/PkChatbotMessages.d.ts +10 -3
  398. package/dist-vue/packages/components/src/chat/PkCopyBlock.d.ts +4 -2
  399. package/dist-vue/packages/components/src/chat/PkMessageParts.d.ts +5 -1
  400. package/dist-vue/packages/components/src/chat/PkToolShowLocation.d.ts +5 -0
  401. package/dist-vue/packages/components/src/index.d.ts +2 -1
  402. package/dist-vue/packages/composable/src/chatbot/api/createChatbotApiClient.d.ts +5 -0
  403. package/dist-vue/packages/composable/src/index.d.ts +1 -0
  404. package/dist-vue/packages/composable/src/useSafeLocalStorage.d.ts +7 -0
  405. package/dist-vue/packages/models/src/schema/AgentEndpoint.d.ts +108 -0
  406. package/dist-vue/packages/models/src/schema/AgentEndpointLog.d.ts +48 -0
  407. package/dist-vue/packages/models/src/schema/index.d.ts +2 -0
  408. package/dist-vue/style.css +1 -1
  409. package/package.json +3 -2
  410. package/dist/_chunks/PkToolShowArtifact-DzNIkKvZ.js.map +0 -1
  411. package/dist/_chunks/PkToolShowLocation-BsBiA4jV.js +0 -134
  412. package/dist/_chunks/PkToolShowLocation-BsBiA4jV.js.map +0 -1
  413. package/dist/_chunks/vue-leaflet.es-BT-uRmMx.js +0 -1738
  414. package/dist/_chunks/vue-leaflet.es-BT-uRmMx.js.map +0 -1
  415. package/dist-vue/_chunks/PkChatbotFeedbackForm-Dl1pWKbb.js +0 -1035
  416. package/dist-vue/_chunks/PkChatbotFeedbackForm-Dl1pWKbb.js.map +0 -1
  417. package/dist-vue/_chunks/PkChatbotMessages-C7-ZtU0-.js.map +0 -1
  418. package/dist-vue/_chunks/PkChatbotViewChat-EWotdJkz.js +0 -792
  419. package/dist-vue/_chunks/PkChatbotViewChat-EWotdJkz.js.map +0 -1
  420. package/dist-vue/_chunks/PkToolShowArtifact-pTS7wzhw.js.map +0 -1
  421. package/dist-vue/_chunks/PkToolShowLocation-DSZvW68g.js +0 -135
  422. package/dist-vue/_chunks/PkToolShowLocation-DSZvW68g.js.map +0 -1
  423. package/dist-vue/_chunks/createChatbotApiClient-BJL1_AVi.js +0 -630
  424. package/dist-vue/_chunks/createChatbotApiClient-BJL1_AVi.js.map +0 -1
  425. package/dist-vue/_chunks/dist-Bh5Q6aSI2.js.map +0 -1
  426. package/dist-vue/_chunks/dist-CAZOa5qs2.js.map +0 -1
  427. package/dist-vue/_chunks/dist-afJW4ohP2.js.map +0 -1
@@ -1,6 +1,6 @@
1
- import { u as e } from "./useChatbotStore-ys9uGP5v.js";
2
- import { n as t } from "./src-DjRNH9vV.js";
3
- import { n, t as r } from "./useLightbox-CRpWDdlN.js";
1
+ import { u as e } from "./useChatbotStore-C9xj40sY.js";
2
+ import { n as t } from "./src-BteqqLGW.js";
3
+ import { n, t as r } from "./useLightbox-CsBDIq4B.js";
4
4
  import { Fragment as i, computed as a, createCommentVNode as o, createElementBlock as s, createElementVNode as c, createVNode as l, defineComponent as u, normalizeClass as d, onMounted as f, openBlock as p, ref as m, renderList as h, toDisplayString as g, unref as _ } from "vue";
5
5
  import { VvIcon as v } from "@volverjs/ui-vue/components";
6
6
  //#region ../../packages/components/src/chat/PkToolShowImageGallery.vue?vue&type=script&setup=true&lang.ts
@@ -61,4 +61,4 @@ var y = {
61
61
  //#endregion
62
62
  export { D as n, O as t };
63
63
 
64
- //# sourceMappingURL=PkToolShowImageGallery-CpU183SC.js.map
64
+ //# sourceMappingURL=PkToolShowImageGallery-BQtLChsM.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PkToolShowImageGallery-CpU183SC.js","names":["$t"],"sources":["../../../../packages/components/src/chat/PkToolShowImageGallery.vue","../../../../packages/components/src/chat/PkToolShowImageGallery.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed, ref, onMounted } from 'vue'\n import { isSameSite } from 'utils'\n import { useLightbox, useImageSizes } from '../composables/useLightbox'\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const toolPart = computed(() => {\n const part = props.part as {\n input?: {\n images: Array<{\n url: string\n caption?: string\n alt?: string\n }>\n }\n }\n return part\n })\n\n const galleryRef = ref<HTMLElement>()\n const { preload, getSize } = useImageSizes()\n\n const images = computed(() => toolPart.value.input?.images ?? [])\n\n const hiddenCount = computed(() =>\n images.value.length > 6 ? images.value.length - 5 : 0,\n )\n\n const gridCols = computed(() => {\n const count = images.value.length\n if (count === 1) {\n return 'grid-cols-1'\n }\n if (count === 2) {\n return 'grid-cols-2'\n }\n return 'grid-cols-3'\n })\n\n const { init } = useLightbox({ gallery: galleryRef })\n\n onMounted(async () => {\n preload(images.value)\n await init()\n })\n</script>\n\n<template>\n <div\n v-if=\"images.length\"\n class=\"border border-surface-3 rounded-xl w-full overflow-hidden\">\n <div\n class=\"px-sm py-6 bg-surface-1 text-12 border-b border-surface-3 text-word-3 flex items-center gap-8 min-h-40\">\n <VvIcon name=\"ri:image-line\" class=\"text-16\" />\n <strong class=\"font-bold\">\n {{ $t('label.gallery', { count: images.length }) }}\n </strong>\n </div>\n <div class=\"p-sm\">\n <div ref=\"galleryRef\" class=\"grid gap-8\" :class=\"gridCols\">\n <a\n v-for=\"(image, index) in images\"\n :key=\"image.url\"\n :href=\"image.url\"\n :data-pswp-src=\"image.url\"\n :data-pswp-width=\"getSize(image.url).width\"\n :data-pswp-height=\"getSize(image.url).height\"\n :data-pswp-caption=\"image.caption ?? image.alt ?? ''\"\n :data-cropped=\"true\"\n class=\"relative block aspect-square overflow-hidden rounded-lg cursor-pointer group\"\n :class=\"index >= 5 && hiddenCount > 0 ? 'hidden' : ''\"\n :title=\"image.caption ?? image.alt ?? ''\"\n :target=\"isSameSite(image.url) ? undefined : '_blank'\"\n :rel=\"\n isSameSite(image.url)\n ? undefined\n : 'noopener noreferrer'\n \">\n <img\n :src=\"image.url\"\n :alt=\"image.alt ?? image.caption ?? ''\"\n class=\"w-full h-full object-cover transition-opacity group-hover:opacity-80\" />\n <!-- +N overlay on last visible thumbnail when there are more hidden images -->\n <div\n v-if=\"hiddenCount > 0 && index === 4\"\n class=\"absolute inset-0 bg-black/50 flex items-center justify-center text-white font-semibold text-16 rounded-lg\">\n +{{ hiddenCount }}\n </div>\n </a>\n </div>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\n import { computed, ref, onMounted } from 'vue'\n import { isSameSite } from 'utils'\n import { useLightbox, useImageSizes } from '../composables/useLightbox'\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const toolPart = computed(() => {\n const part = props.part as {\n input?: {\n images: Array<{\n url: string\n caption?: string\n alt?: string\n }>\n }\n }\n return part\n })\n\n const galleryRef = ref<HTMLElement>()\n const { preload, getSize } = useImageSizes()\n\n const images = computed(() => toolPart.value.input?.images ?? [])\n\n const hiddenCount = computed(() =>\n images.value.length > 6 ? images.value.length - 5 : 0,\n )\n\n const gridCols = computed(() => {\n const count = images.value.length\n if (count === 1) {\n return 'grid-cols-1'\n }\n if (count === 2) {\n return 'grid-cols-2'\n }\n return 'grid-cols-3'\n })\n\n const { init } = useLightbox({ gallery: galleryRef })\n\n onMounted(async () => {\n preload(images.value)\n await init()\n })\n</script>\n\n<template>\n <div\n v-if=\"images.length\"\n class=\"border border-surface-3 rounded-xl w-full overflow-hidden\">\n <div\n class=\"px-sm py-6 bg-surface-1 text-12 border-b border-surface-3 text-word-3 flex items-center gap-8 min-h-40\">\n <VvIcon name=\"ri:image-line\" class=\"text-16\" />\n <strong class=\"font-bold\">\n {{ $t('label.gallery', { count: images.length }) }}\n </strong>\n </div>\n <div class=\"p-sm\">\n <div ref=\"galleryRef\" class=\"grid gap-8\" :class=\"gridCols\">\n <a\n v-for=\"(image, index) in images\"\n :key=\"image.url\"\n :href=\"image.url\"\n :data-pswp-src=\"image.url\"\n :data-pswp-width=\"getSize(image.url).width\"\n :data-pswp-height=\"getSize(image.url).height\"\n :data-pswp-caption=\"image.caption ?? image.alt ?? ''\"\n :data-cropped=\"true\"\n class=\"relative block aspect-square overflow-hidden rounded-lg cursor-pointer group\"\n :class=\"index >= 5 && hiddenCount > 0 ? 'hidden' : ''\"\n :title=\"image.caption ?? image.alt ?? ''\"\n :target=\"isSameSite(image.url) ? undefined : '_blank'\"\n :rel=\"\n isSameSite(image.url)\n ? undefined\n : 'noopener noreferrer'\n \">\n <img\n :src=\"image.url\"\n :alt=\"image.alt ?? image.caption ?? ''\"\n class=\"w-full h-full object-cover transition-opacity group-hover:opacity-80\" />\n <!-- +N overlay on last visible thumbnail when there are more hidden images -->\n <div\n v-if=\"hiddenCount > 0 && index === 4\"\n class=\"absolute inset-0 bg-black/50 flex items-center justify-center text-white font-semibold text-16 rounded-lg\">\n +{{ hiddenCount }}\n </div>\n </a>\n </div>\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;EAKI,IAAM,IAAQ,GAIR,IAAW,QACA,EAAM,KAUtB,EAEK,IAAa,GAAiB,EAC9B,EAAE,YAAS,eAAY,GAAc,EAErC,IAAS,QAAe,EAAS,MAAM,OAAO,UAAU,EAAE,CAAA,EAE1D,IAAc,QAChB,EAAO,MAAM,SAAS,IAAI,EAAO,MAAM,SAAS,IAAI,EACxD,EAEM,IAAW,QAAe;GAC5B,IAAM,IAAQ,EAAO,MAAM;AAO3B,UANI,MAAU,IACH,gBAEP,MAAU,IACH,gBAEJ;IACV,EAEK,EAAE,YAAS,EAAY,EAAE,SAAS,GAAY,CAAA;SAEpD,EAAU,YAAY;AAElB,GADA,EAAQ,EAAO,MAAK,EACpB,MAAM,GAAK;IACd;;UAKS,EAAA,MAAO,UAAA,GAAA,EADjB,EA2CM,OA3CN,GA2CM,CAxCF,EAMM,OANN,GAMM,CAJF,EAA+C,GAAA;IAAvC,MAAK;IAAgB,OAAM;OACnC,EAES,UAFT,GAES,EADFA,EAAAA,GAAE,iBAAA,EAAA,OAA2B,EAAA,MAAO,QAAM,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,EAGrD,EAgCM,OAhCN,GAgCM,CA/BF,EA8BM,OAAA;aA9BG;IAAJ,KAAI;IAAa,OAAK,EAAA,CAAC,cAAqB,EAAA,MAAQ,CAAA;eACrD,EA4BI,GAAA,MAAA,EA3ByB,EAAA,QAAjB,GAAO,YADnB,EA4BI,KAAA;IA1BC,KAAK,EAAM;IACX,MAAM,EAAM;IACZ,iBAAe,EAAM;IACrB,mBAAiB,EAAA,EAAO,CAAC,EAAM,IAAG,CAAE;IACpC,oBAAkB,EAAA,EAAO,CAAC,EAAM,IAAG,CAAE;IACrC,qBAAmB,EAAM,WAAW,EAAM,OAAG;IAC7C,gBAAc;IACf,OAAK,EAAA,CAAC,gFACE,KAAK,KAAS,EAAA,QAAW,IAAA,WAAA,GAAA,CAAA;IAChC,OAAO,EAAM,WAAW,EAAM,OAAG;IACjC,QAAQ,EAAA,EAAU,CAAC,EAAM,IAAG,GAAI,KAAA,IAAS;IACzC,KAA8B,EAAA,EAAU,CAAC,EAAM,IAAG,GAAgC,KAAA,IAAA;OAKnF,EAGmF,OAAA;IAF9E,KAAK,EAAM;IACX,KAAK,EAAM,OAAO,EAAM,WAAO;IAChC,OAAM;mBAGA,EAAA,QAAW,KAAQ,MAAK,KAAA,GAAA,EADlC,EAIM,OAJN,GAEsH,OACjH,EAAG,EAAA,MAAW,EAAA,EAAA,IAAA,EAAA,IAAA,GAAA,CAAA,EAAA,IAAA,EAAA"}
1
+ {"version":3,"file":"PkToolShowImageGallery-BQtLChsM.js","names":["$t"],"sources":["../../../../packages/components/src/chat/PkToolShowImageGallery.vue","../../../../packages/components/src/chat/PkToolShowImageGallery.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed, ref, onMounted } from 'vue'\n import { isSameSite } from 'utils'\n import { useLightbox, useImageSizes } from '../composables/useLightbox'\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const toolPart = computed(() => {\n const part = props.part as {\n input?: {\n images: Array<{\n url: string\n caption?: string\n alt?: string\n }>\n }\n }\n return part\n })\n\n const galleryRef = ref<HTMLElement>()\n const { preload, getSize } = useImageSizes()\n\n const images = computed(() => toolPart.value.input?.images ?? [])\n\n const hiddenCount = computed(() =>\n images.value.length > 6 ? images.value.length - 5 : 0,\n )\n\n const gridCols = computed(() => {\n const count = images.value.length\n if (count === 1) {\n return 'grid-cols-1'\n }\n if (count === 2) {\n return 'grid-cols-2'\n }\n return 'grid-cols-3'\n })\n\n const { init } = useLightbox({ gallery: galleryRef })\n\n onMounted(async () => {\n preload(images.value)\n await init()\n })\n</script>\n\n<template>\n <div\n v-if=\"images.length\"\n class=\"border border-surface-3 rounded-xl w-full overflow-hidden\">\n <div\n class=\"px-sm py-6 bg-surface-1 text-12 border-b border-surface-3 text-word-3 flex items-center gap-8 min-h-40\">\n <VvIcon name=\"ri:image-line\" class=\"text-16\" />\n <strong class=\"font-bold\">\n {{ $t('label.gallery', { count: images.length }) }}\n </strong>\n </div>\n <div class=\"p-sm\">\n <div ref=\"galleryRef\" class=\"grid gap-8\" :class=\"gridCols\">\n <a\n v-for=\"(image, index) in images\"\n :key=\"image.url\"\n :href=\"image.url\"\n :data-pswp-src=\"image.url\"\n :data-pswp-width=\"getSize(image.url).width\"\n :data-pswp-height=\"getSize(image.url).height\"\n :data-pswp-caption=\"image.caption ?? image.alt ?? ''\"\n :data-cropped=\"true\"\n class=\"relative block aspect-square overflow-hidden rounded-lg cursor-pointer group\"\n :class=\"index >= 5 && hiddenCount > 0 ? 'hidden' : ''\"\n :title=\"image.caption ?? image.alt ?? ''\"\n :target=\"isSameSite(image.url) ? undefined : '_blank'\"\n :rel=\"\n isSameSite(image.url)\n ? undefined\n : 'noopener noreferrer'\n \">\n <img\n :src=\"image.url\"\n :alt=\"image.alt ?? image.caption ?? ''\"\n class=\"w-full h-full object-cover transition-opacity group-hover:opacity-80\" />\n <!-- +N overlay on last visible thumbnail when there are more hidden images -->\n <div\n v-if=\"hiddenCount > 0 && index === 4\"\n class=\"absolute inset-0 bg-black/50 flex items-center justify-center text-white font-semibold text-16 rounded-lg\">\n +{{ hiddenCount }}\n </div>\n </a>\n </div>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\n import { computed, ref, onMounted } from 'vue'\n import { isSameSite } from 'utils'\n import { useLightbox, useImageSizes } from '../composables/useLightbox'\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const toolPart = computed(() => {\n const part = props.part as {\n input?: {\n images: Array<{\n url: string\n caption?: string\n alt?: string\n }>\n }\n }\n return part\n })\n\n const galleryRef = ref<HTMLElement>()\n const { preload, getSize } = useImageSizes()\n\n const images = computed(() => toolPart.value.input?.images ?? [])\n\n const hiddenCount = computed(() =>\n images.value.length > 6 ? images.value.length - 5 : 0,\n )\n\n const gridCols = computed(() => {\n const count = images.value.length\n if (count === 1) {\n return 'grid-cols-1'\n }\n if (count === 2) {\n return 'grid-cols-2'\n }\n return 'grid-cols-3'\n })\n\n const { init } = useLightbox({ gallery: galleryRef })\n\n onMounted(async () => {\n preload(images.value)\n await init()\n })\n</script>\n\n<template>\n <div\n v-if=\"images.length\"\n class=\"border border-surface-3 rounded-xl w-full overflow-hidden\">\n <div\n class=\"px-sm py-6 bg-surface-1 text-12 border-b border-surface-3 text-word-3 flex items-center gap-8 min-h-40\">\n <VvIcon name=\"ri:image-line\" class=\"text-16\" />\n <strong class=\"font-bold\">\n {{ $t('label.gallery', { count: images.length }) }}\n </strong>\n </div>\n <div class=\"p-sm\">\n <div ref=\"galleryRef\" class=\"grid gap-8\" :class=\"gridCols\">\n <a\n v-for=\"(image, index) in images\"\n :key=\"image.url\"\n :href=\"image.url\"\n :data-pswp-src=\"image.url\"\n :data-pswp-width=\"getSize(image.url).width\"\n :data-pswp-height=\"getSize(image.url).height\"\n :data-pswp-caption=\"image.caption ?? image.alt ?? ''\"\n :data-cropped=\"true\"\n class=\"relative block aspect-square overflow-hidden rounded-lg cursor-pointer group\"\n :class=\"index >= 5 && hiddenCount > 0 ? 'hidden' : ''\"\n :title=\"image.caption ?? image.alt ?? ''\"\n :target=\"isSameSite(image.url) ? undefined : '_blank'\"\n :rel=\"\n isSameSite(image.url)\n ? undefined\n : 'noopener noreferrer'\n \">\n <img\n :src=\"image.url\"\n :alt=\"image.alt ?? image.caption ?? ''\"\n class=\"w-full h-full object-cover transition-opacity group-hover:opacity-80\" />\n <!-- +N overlay on last visible thumbnail when there are more hidden images -->\n <div\n v-if=\"hiddenCount > 0 && index === 4\"\n class=\"absolute inset-0 bg-black/50 flex items-center justify-center text-white font-semibold text-16 rounded-lg\">\n +{{ hiddenCount }}\n </div>\n </a>\n </div>\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;EAKI,IAAM,IAAQ,GAIR,IAAW,QACA,EAAM,KAUtB,EAEK,IAAa,GAAiB,EAC9B,EAAE,YAAS,eAAY,GAAc,EAErC,IAAS,QAAe,EAAS,MAAM,OAAO,UAAU,EAAE,CAAA,EAE1D,IAAc,QAChB,EAAO,MAAM,SAAS,IAAI,EAAO,MAAM,SAAS,IAAI,EACxD,EAEM,IAAW,QAAe;GAC5B,IAAM,IAAQ,EAAO,MAAM;AAO3B,UANI,MAAU,IACH,gBAEP,MAAU,IACH,gBAEJ;IACV,EAEK,EAAE,YAAS,EAAY,EAAE,SAAS,GAAY,CAAA;SAEpD,EAAU,YAAY;AAElB,GADA,EAAQ,EAAO,MAAK,EACpB,MAAM,GAAK;IACd;;UAKS,EAAA,MAAO,UAAA,GAAA,EADjB,EA2CM,OA3CN,GA2CM,CAxCF,EAMM,OANN,GAMM,CAJF,EAA+C,GAAA;IAAvC,MAAK;IAAgB,OAAM;OACnC,EAES,UAFT,GAES,EADFA,EAAAA,GAAE,iBAAA,EAAA,OAA2B,EAAA,MAAO,QAAM,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,EAGrD,EAgCM,OAhCN,GAgCM,CA/BF,EA8BM,OAAA;aA9BG;IAAJ,KAAI;IAAa,OAAK,EAAA,CAAC,cAAqB,EAAA,MAAQ,CAAA;eACrD,EA4BI,GAAA,MAAA,EA3ByB,EAAA,QAAjB,GAAO,YADnB,EA4BI,KAAA;IA1BC,KAAK,EAAM;IACX,MAAM,EAAM;IACZ,iBAAe,EAAM;IACrB,mBAAiB,EAAA,EAAO,CAAC,EAAM,IAAG,CAAE;IACpC,oBAAkB,EAAA,EAAO,CAAC,EAAM,IAAG,CAAE;IACrC,qBAAmB,EAAM,WAAW,EAAM,OAAG;IAC7C,gBAAc;IACf,OAAK,EAAA,CAAC,gFACE,KAAK,KAAS,EAAA,QAAW,IAAA,WAAA,GAAA,CAAA;IAChC,OAAO,EAAM,WAAW,EAAM,OAAG;IACjC,QAAQ,EAAA,EAAU,CAAC,EAAM,IAAG,GAAI,KAAA,IAAS;IACzC,KAA8B,EAAA,EAAU,CAAC,EAAM,IAAG,GAAgC,KAAA,IAAA;OAKnF,EAGmF,OAAA;IAF9E,KAAK,EAAM;IACX,KAAK,EAAM,OAAO,EAAM,WAAO;IAChC,OAAM;mBAGA,EAAA,QAAW,KAAQ,MAAK,KAAA,GAAA,EADlC,EAIM,OAJN,GAEsH,OACjH,EAAG,EAAA,MAAW,EAAA,EAAA,IAAA,EAAA,IAAA,GAAA,CAAA,EAAA,IAAA,EAAA"}
@@ -0,0 +1,148 @@
1
+ import { u as e } from "./useChatbotStore-C9xj40sY.js";
2
+ import { v as t, y as n } from "./src-BteqqLGW.js";
3
+ import { computed as r, createCommentVNode as i, createElementBlock as a, createElementVNode as o, createTextVNode as s, createVNode as c, defineComponent as l, getCurrentInstance as u, guardReactiveProps as d, normalizeProps as f, onMounted as p, openBlock as m, ref as h, toDisplayString as g, unref as _, watchEffect as v, withCtx as y } from "vue";
4
+ import { VvButton as b, VvButtonGroup as x, VvDropdown as S, VvDropdownAction as C, VvIcon as w } from "@volverjs/ui-vue/components";
5
+ import { useClipboard as T } from "@vueuse/core";
6
+ import { Icon as E } from "leaflet";
7
+ import { LMap as D, LMarker as O, LPopup as k, LTileLayer as A } from "@maxel01/vue-leaflet";
8
+ import j from "leaflet/dist/images/marker-icon.png";
9
+ import M from "leaflet/dist/images/marker-icon-2x.png";
10
+ import N from "leaflet/dist/images/marker-shadow.png";
11
+ //#region ../../packages/components/src/chat/PkToolShowLocation.vue?vue&type=script&setup=true&lang.ts
12
+ var P = {
13
+ key: 0,
14
+ class: "border border-surface-3 rounded-xl w-full overflow-hidden"
15
+ }, F = { class: "px-sm py-6 bg-surface-1 text-12 border-b border-surface-3 text-word-3 flex items-center gap-8" }, I = { class: "font-bold" }, L = {
16
+ key: 0,
17
+ class: "h-224 border-b border-surface-3"
18
+ }, R = { class: "p-sm flex flex-col gap-4" }, z = { class: "font-semibold text-word-1 text-14" }, B = { class: "text-12 text-word-3" }, V = {
19
+ key: 0,
20
+ class: "text-12 text-word-4"
21
+ }, H = /* @__PURE__ */ l({
22
+ __name: "PkToolShowLocation",
23
+ props: {
24
+ part: {},
25
+ forwardGeocode: { type: Function }
26
+ },
27
+ setup(e) {
28
+ delete E.Default.prototype._getIconUrl, E.Default.mergeOptions({
29
+ iconUrl: j,
30
+ iconRetinaUrl: M,
31
+ shadowUrl: N
32
+ });
33
+ let l = e, { copy: H, copied: U } = T(), W = r(() => l.part), G = h(null);
34
+ p(() => {
35
+ n("https://cdn.jsdelivr.net/npm/leaflet@2.0.0-alpha.1/dist/leaflet.css", t(u()?.proxy?.$el));
36
+ }), v(async () => {
37
+ let e = W.value.input;
38
+ if (!(!e || e.latitude != null || !e.address) && l.forwardGeocode) try {
39
+ let t = await l.forwardGeocode(e.address);
40
+ t && (G.value = [t.latitude, t.longitude]);
41
+ } catch {}
42
+ });
43
+ let K = r(() => W.value.input?.latitude != null && W.value.input?.longitude != null || G.value != null), q = r(() => W.value.input?.latitude != null && W.value.input?.longitude != null ? [W.value.input.latitude, W.value.input.longitude] : G.value ?? [0, 0]), J = () => {
44
+ let e = W.value.input;
45
+ if (!e) return;
46
+ let t = K.value ? `${q.value[0]},${q.value[1]}` : e.address;
47
+ window.open(`https://www.google.com/maps/dir/?api=1&destination=${encodeURIComponent(t)}`, "_blank");
48
+ }, Y = () => {
49
+ let e = W.value.input;
50
+ if (!e) return;
51
+ let t = K.value ? `${q.value[0]},${q.value[1]}` : e.address;
52
+ window.open(`https://maps.apple.com/?daddr=${encodeURIComponent(t)}`, "_blank");
53
+ }, X = () => {
54
+ let e = W.value.input;
55
+ e && (K.value ? window.open(`https://waze.com/ul?ll=${q.value[0]},${q.value[1]}&navigate=yes`, "_blank") : window.open(`https://waze.com/ul?q=${encodeURIComponent(e.address)}&navigate=yes`, "_blank"));
56
+ }, Z = () => {
57
+ let e = W.value.input;
58
+ e && H(`${e.name}\n${e.address}`);
59
+ };
60
+ return (e, t) => {
61
+ let n = w, r = b, l = C, u = S, p = x;
62
+ return W.value?.input ? (m(), a("div", P, [
63
+ o("div", F, [
64
+ c(n, {
65
+ name: "ri:map-pin-line",
66
+ class: "text-16"
67
+ }),
68
+ o("strong", I, g(e.$t("label.location")), 1),
69
+ c(p, {
70
+ modifiers: "compact",
71
+ class: "ml-auto shrink-0"
72
+ }, {
73
+ default: y(() => [c(r, {
74
+ modifiers: "action-quiet-small",
75
+ icon: _(U) ? "ri:check-line" : "ri:file-copy-line",
76
+ label: _(U) ? e.$t("action.copied") : e.$t("action.copy"),
77
+ onClick: Z
78
+ }, null, 8, ["icon", "label"]), c(u, f(d({
79
+ placement: "bottom-end",
80
+ modifiers: "menu",
81
+ flip: !0,
82
+ offset: 3
83
+ })), {
84
+ items: y(() => [
85
+ c(l, { onClick: J }, {
86
+ default: y(() => [c(n, { name: "ri:map-2-line" }), t[0] ||= s(" Google Maps ", -1)]),
87
+ _: 1
88
+ }),
89
+ c(l, { onClick: Y }, {
90
+ default: y(() => [c(n, { name: "ri:map-line" }), t[1] ||= s(" Apple Maps ", -1)]),
91
+ _: 1
92
+ }),
93
+ c(l, { onClick: X }, {
94
+ default: y(() => [c(n, { name: "ri:navigation-line" }), t[2] ||= s(" Waze ", -1)]),
95
+ _: 1
96
+ })
97
+ ]),
98
+ default: y(() => [c(r, {
99
+ icon: "ri:direction-line",
100
+ modifiers: "action-quiet-small",
101
+ label: e.$t("action.getDirections")
102
+ }, null, 8, ["label"])]),
103
+ _: 1
104
+ }, 16)]),
105
+ _: 1
106
+ })
107
+ ]),
108
+ K.value ? (m(), a("div", L, [c(_(D), {
109
+ zoom: 12,
110
+ center: q.value,
111
+ "use-global-leaflet": !1,
112
+ options: {
113
+ scrollWheelZoom: !1,
114
+ dragging: !0,
115
+ zoomControl: !0,
116
+ attributionControl: !1
117
+ },
118
+ style: {
119
+ height: "100%",
120
+ width: "100%"
121
+ }
122
+ }, {
123
+ default: y(() => [c(_(A), {
124
+ url: "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
125
+ "layer-type": "base",
126
+ name: "OpenStreetMap"
127
+ }), c(_(O), { "lat-lng": q.value }, {
128
+ default: y(() => [c(_(k), null, {
129
+ default: y(() => [s(g(W.value.input.name), 1)]),
130
+ _: 1
131
+ })]),
132
+ _: 1
133
+ }, 8, ["lat-lng"])]),
134
+ _: 1
135
+ }, 8, ["center"])])) : i("", !0),
136
+ o("div", R, [
137
+ o("p", z, g(W.value.input.name), 1),
138
+ o("p", B, g(W.value.input.address), 1),
139
+ W.value.input.additionalInfo ? (m(), a("p", V, g(W.value.input.additionalInfo), 1)) : i("", !0)
140
+ ])
141
+ ])) : i("", !0);
142
+ };
143
+ }
144
+ }), U = /* @__PURE__ */ e({ default: () => W }), W = H;
145
+ //#endregion
146
+ export { U as n, W as t };
147
+
148
+ //# sourceMappingURL=PkToolShowLocation-CaG0Txb6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PkToolShowLocation-CaG0Txb6.js","names":["$t"],"sources":["../../../../packages/components/src/chat/PkToolShowLocation.vue","../../../../packages/components/src/chat/PkToolShowLocation.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import {\n computed,\n ref,\n watchEffect,\n onMounted,\n getCurrentInstance,\n } from 'vue'\n import { useClipboard } from '@vueuse/core'\n import { loadCdnCss, getShadowRoot } from 'utils'\n import { Icon } from 'leaflet'\n import { LMap, LTileLayer, LMarker, LPopup } from '@maxel01/vue-leaflet'\n import markerIcon from 'leaflet/dist/images/marker-icon.png'\n import markerIcon2x from 'leaflet/dist/images/marker-icon-2x.png'\n import markerShadow from 'leaflet/dist/images/marker-shadow.png'\n\n delete Icon.Default.prototype._getIconUrl\n Icon.Default.mergeOptions({\n iconUrl: markerIcon,\n iconRetinaUrl: markerIcon2x,\n shadowUrl: markerShadow,\n })\n\n const props = defineProps<{\n part: unknown\n forwardGeocode?: (\n query: string,\n lang?: string,\n ) => Promise<\n | { latitude: number; longitude: number; displayName: string }\n | undefined\n >\n }>()\n\n const { copy, copied } = useClipboard()\n\n const toolPart = computed(() => {\n const part = props.part as {\n input?: {\n name: string\n address: string\n latitude?: number\n longitude?: number\n additionalInfo?: string\n }\n }\n return part\n })\n\n const geocodedCoords = ref<[number, number] | null>(null)\n\n onMounted(() => {\n loadCdnCss(\n 'https://cdn.jsdelivr.net/npm/leaflet@2.0.0-alpha.1/dist/leaflet.css',\n getShadowRoot(getCurrentInstance()?.proxy?.$el),\n )\n })\n\n watchEffect(async () => {\n const input = toolPart.value.input\n if (!input || input.latitude != null || !input.address) {\n return\n }\n if (!props.forwardGeocode) {\n return\n }\n\n try {\n const result = await props.forwardGeocode(input.address)\n if (result) {\n geocodedCoords.value = [result.latitude, result.longitude]\n }\n } catch {\n // Geocoding failed — fallback to text-only card\n }\n })\n\n const hasCoords = computed(\n () =>\n (toolPart.value.input?.latitude != null &&\n toolPart.value.input?.longitude != null) ||\n geocodedCoords.value != null,\n )\n\n const center = computed<[number, number]>(() => {\n if (\n toolPart.value.input?.latitude != null &&\n toolPart.value.input?.longitude != null\n ) {\n return [\n toolPart.value.input.latitude,\n toolPart.value.input.longitude,\n ]\n }\n return geocodedCoords.value ?? [0, 0]\n })\n\n const openGoogleMaps = () => {\n const input = toolPart.value.input\n if (!input) {\n return\n }\n const destination = hasCoords.value\n ? `${center.value[0]},${center.value[1]}`\n : input.address\n window.open(\n `https://www.google.com/maps/dir/?api=1&destination=${encodeURIComponent(destination)}`,\n '_blank',\n )\n }\n\n const openAppleMaps = () => {\n const input = toolPart.value.input\n if (!input) {\n return\n }\n const destination = hasCoords.value\n ? `${center.value[0]},${center.value[1]}`\n : input.address\n window.open(\n `https://maps.apple.com/?daddr=${encodeURIComponent(destination)}`,\n '_blank',\n )\n }\n\n const openWaze = () => {\n const input = toolPart.value.input\n if (!input) {\n return\n }\n if (hasCoords.value) {\n window.open(\n `https://waze.com/ul?ll=${center.value[0]},${center.value[1]}&navigate=yes`,\n '_blank',\n )\n } else {\n window.open(\n `https://waze.com/ul?q=${encodeURIComponent(input.address)}&navigate=yes`,\n '_blank',\n )\n }\n }\n\n const copyLocation = () => {\n const input = toolPart.value.input\n if (!input) {\n return\n }\n copy(`${input.name}\\n${input.address}`)\n }\n</script>\n\n<template>\n <div\n v-if=\"toolPart?.input\"\n class=\"border border-surface-3 rounded-xl w-full overflow-hidden\">\n <div\n class=\"px-sm py-6 bg-surface-1 text-12 border-b border-surface-3 text-word-3 flex items-center gap-8\">\n <VvIcon name=\"ri:map-pin-line\" class=\"text-16\" />\n <strong class=\"font-bold\">{{ $t('label.location') }}</strong>\n <VvButtonGroup modifiers=\"compact\" class=\"ml-auto shrink-0\">\n <VvButton\n modifiers=\"action-quiet-small\"\n :icon=\"copied ? 'ri:check-line' : 'ri:file-copy-line'\"\n :label=\"copied ? $t('action.copied') : $t('action.copy')\"\n @click=\"copyLocation\" />\n <VvDropdown\n v-bind=\"{\n placement: 'bottom-end',\n modifiers: 'menu',\n flip: true,\n offset: 3,\n }\">\n <VvButton\n icon=\"ri:direction-line\"\n modifiers=\"action-quiet-small\"\n :label=\"$t('action.getDirections')\" />\n <template #items>\n <VvDropdownAction @click=\"openGoogleMaps\">\n <VvIcon name=\"ri:map-2-line\" />\n Google Maps\n </VvDropdownAction>\n <VvDropdownAction @click=\"openAppleMaps\">\n <VvIcon name=\"ri:map-line\" />\n Apple Maps\n </VvDropdownAction>\n <VvDropdownAction @click=\"openWaze\">\n <VvIcon name=\"ri:navigation-line\" />\n Waze\n </VvDropdownAction>\n </template>\n </VvDropdown>\n </VvButtonGroup>\n </div>\n <div v-if=\"hasCoords\" class=\"h-224 border-b border-surface-3\">\n <LMap\n :zoom=\"12\"\n :center\n :use-global-leaflet=\"false\"\n :options=\"{\n scrollWheelZoom: false,\n dragging: true,\n zoomControl: true,\n attributionControl: false,\n }\"\n style=\"height: 100%; width: 100%\">\n <LTileLayer\n url=\"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\"\n layer-type=\"base\"\n name=\"OpenStreetMap\" />\n <LMarker :lat-lng=\"center\">\n <LPopup>{{ toolPart.input.name }}</LPopup>\n </LMarker>\n </LMap>\n </div>\n <div class=\"p-sm flex flex-col gap-4\">\n <p class=\"font-semibold text-word-1 text-14\">\n {{ toolPart.input.name }}\n </p>\n <p class=\"text-12 text-word-3\">{{ toolPart.input.address }}</p>\n <p v-if=\"toolPart.input.additionalInfo\" class=\"text-12 text-word-4\">\n {{ toolPart.input.additionalInfo }}\n </p>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\n import {\n computed,\n ref,\n watchEffect,\n onMounted,\n getCurrentInstance,\n } from 'vue'\n import { useClipboard } from '@vueuse/core'\n import { loadCdnCss, getShadowRoot } from 'utils'\n import { Icon } from 'leaflet'\n import { LMap, LTileLayer, LMarker, LPopup } from '@maxel01/vue-leaflet'\n import markerIcon from 'leaflet/dist/images/marker-icon.png'\n import markerIcon2x from 'leaflet/dist/images/marker-icon-2x.png'\n import markerShadow from 'leaflet/dist/images/marker-shadow.png'\n\n delete Icon.Default.prototype._getIconUrl\n Icon.Default.mergeOptions({\n iconUrl: markerIcon,\n iconRetinaUrl: markerIcon2x,\n shadowUrl: markerShadow,\n })\n\n const props = defineProps<{\n part: unknown\n forwardGeocode?: (\n query: string,\n lang?: string,\n ) => Promise<\n | { latitude: number; longitude: number; displayName: string }\n | undefined\n >\n }>()\n\n const { copy, copied } = useClipboard()\n\n const toolPart = computed(() => {\n const part = props.part as {\n input?: {\n name: string\n address: string\n latitude?: number\n longitude?: number\n additionalInfo?: string\n }\n }\n return part\n })\n\n const geocodedCoords = ref<[number, number] | null>(null)\n\n onMounted(() => {\n loadCdnCss(\n 'https://cdn.jsdelivr.net/npm/leaflet@2.0.0-alpha.1/dist/leaflet.css',\n getShadowRoot(getCurrentInstance()?.proxy?.$el),\n )\n })\n\n watchEffect(async () => {\n const input = toolPart.value.input\n if (!input || input.latitude != null || !input.address) {\n return\n }\n if (!props.forwardGeocode) {\n return\n }\n\n try {\n const result = await props.forwardGeocode(input.address)\n if (result) {\n geocodedCoords.value = [result.latitude, result.longitude]\n }\n } catch {\n // Geocoding failed — fallback to text-only card\n }\n })\n\n const hasCoords = computed(\n () =>\n (toolPart.value.input?.latitude != null &&\n toolPart.value.input?.longitude != null) ||\n geocodedCoords.value != null,\n )\n\n const center = computed<[number, number]>(() => {\n if (\n toolPart.value.input?.latitude != null &&\n toolPart.value.input?.longitude != null\n ) {\n return [\n toolPart.value.input.latitude,\n toolPart.value.input.longitude,\n ]\n }\n return geocodedCoords.value ?? [0, 0]\n })\n\n const openGoogleMaps = () => {\n const input = toolPart.value.input\n if (!input) {\n return\n }\n const destination = hasCoords.value\n ? `${center.value[0]},${center.value[1]}`\n : input.address\n window.open(\n `https://www.google.com/maps/dir/?api=1&destination=${encodeURIComponent(destination)}`,\n '_blank',\n )\n }\n\n const openAppleMaps = () => {\n const input = toolPart.value.input\n if (!input) {\n return\n }\n const destination = hasCoords.value\n ? `${center.value[0]},${center.value[1]}`\n : input.address\n window.open(\n `https://maps.apple.com/?daddr=${encodeURIComponent(destination)}`,\n '_blank',\n )\n }\n\n const openWaze = () => {\n const input = toolPart.value.input\n if (!input) {\n return\n }\n if (hasCoords.value) {\n window.open(\n `https://waze.com/ul?ll=${center.value[0]},${center.value[1]}&navigate=yes`,\n '_blank',\n )\n } else {\n window.open(\n `https://waze.com/ul?q=${encodeURIComponent(input.address)}&navigate=yes`,\n '_blank',\n )\n }\n }\n\n const copyLocation = () => {\n const input = toolPart.value.input\n if (!input) {\n return\n }\n copy(`${input.name}\\n${input.address}`)\n }\n</script>\n\n<template>\n <div\n v-if=\"toolPart?.input\"\n class=\"border border-surface-3 rounded-xl w-full overflow-hidden\">\n <div\n class=\"px-sm py-6 bg-surface-1 text-12 border-b border-surface-3 text-word-3 flex items-center gap-8\">\n <VvIcon name=\"ri:map-pin-line\" class=\"text-16\" />\n <strong class=\"font-bold\">{{ $t('label.location') }}</strong>\n <VvButtonGroup modifiers=\"compact\" class=\"ml-auto shrink-0\">\n <VvButton\n modifiers=\"action-quiet-small\"\n :icon=\"copied ? 'ri:check-line' : 'ri:file-copy-line'\"\n :label=\"copied ? $t('action.copied') : $t('action.copy')\"\n @click=\"copyLocation\" />\n <VvDropdown\n v-bind=\"{\n placement: 'bottom-end',\n modifiers: 'menu',\n flip: true,\n offset: 3,\n }\">\n <VvButton\n icon=\"ri:direction-line\"\n modifiers=\"action-quiet-small\"\n :label=\"$t('action.getDirections')\" />\n <template #items>\n <VvDropdownAction @click=\"openGoogleMaps\">\n <VvIcon name=\"ri:map-2-line\" />\n Google Maps\n </VvDropdownAction>\n <VvDropdownAction @click=\"openAppleMaps\">\n <VvIcon name=\"ri:map-line\" />\n Apple Maps\n </VvDropdownAction>\n <VvDropdownAction @click=\"openWaze\">\n <VvIcon name=\"ri:navigation-line\" />\n Waze\n </VvDropdownAction>\n </template>\n </VvDropdown>\n </VvButtonGroup>\n </div>\n <div v-if=\"hasCoords\" class=\"h-224 border-b border-surface-3\">\n <LMap\n :zoom=\"12\"\n :center\n :use-global-leaflet=\"false\"\n :options=\"{\n scrollWheelZoom: false,\n dragging: true,\n zoomControl: true,\n attributionControl: false,\n }\"\n style=\"height: 100%; width: 100%\">\n <LTileLayer\n url=\"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\"\n layer-type=\"base\"\n name=\"OpenStreetMap\" />\n <LMarker :lat-lng=\"center\">\n <LPopup>{{ toolPart.input.name }}</LPopup>\n </LMarker>\n </LMap>\n </div>\n <div class=\"p-sm flex flex-col gap-4\">\n <p class=\"font-semibold text-word-1 text-14\">\n {{ toolPart.input.name }}\n </p>\n <p class=\"text-12 text-word-3\">{{ toolPart.input.address }}</p>\n <p v-if=\"toolPart.input.additionalInfo\" class=\"text-12 text-word-4\">\n {{ toolPart.input.additionalInfo }}\n </p>\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBI,EADA,OAAO,EAAK,QAAQ,UAAU,aAC9B,EAAK,QAAQ,aAAa;GACtB,SAAS;GACT,eAAe;GACf,WAAW;GACd,CAAA;EAED,IAAM,IAAQ,GAWR,EAAE,SAAM,cAAW,GAAa,EAEhC,IAAW,QACA,EAAM,KAUtB,EAEK,IAAiB,EAA6B,KAAI;AASxD,EAPA,QAAgB;AACZ,KACI,uEACA,EAAc,GAAoB,EAAE,OAAO,IAAI,CACnD;IACH,EAED,EAAY,YAAY;GACpB,IAAM,IAAQ,EAAS,MAAM;AACzB,UAAC,KAAS,EAAM,YAAY,QAAQ,CAAC,EAAM,YAG1C,EAAM,eAIX,KAAI;IACA,IAAM,IAAS,MAAM,EAAM,eAAe,EAAM,QAAO;AACvD,IAAI,MACA,EAAe,QAAQ,CAAC,EAAO,UAAU,EAAO,UAAS;WAEzD;IAGX;EAED,IAAM,IAAY,QAET,EAAS,MAAM,OAAO,YAAY,QAC/B,EAAS,MAAM,OAAO,aAAa,QACvC,EAAe,SAAS,KAChC,EAEM,IAAS,QAEP,EAAS,MAAM,OAAO,YAAY,QAClC,EAAS,MAAM,OAAO,aAAa,OAE5B,CACH,EAAS,MAAM,MAAM,UACrB,EAAS,MAAM,MAAM,UACzB,GAEG,EAAe,SAAS,CAAC,GAAG,EAAC,CACvC,EAEK,UAAuB;GACzB,IAAM,IAAQ,EAAS,MAAM;AAC7B,OAAI,CAAC,EACD;GAEJ,IAAM,IAAc,EAAU,QACxB,GAAG,EAAO,MAAM,GAAG,GAAG,EAAO,MAAM,OACnC,EAAM;AACZ,UAAO,KACH,sDAAsD,mBAAmB,EAAY,IACrF,SACJ;KAGE,UAAsB;GACxB,IAAM,IAAQ,EAAS,MAAM;AAC7B,OAAI,CAAC,EACD;GAEJ,IAAM,IAAc,EAAU,QACxB,GAAG,EAAO,MAAM,GAAG,GAAG,EAAO,MAAM,OACnC,EAAM;AACZ,UAAO,KACH,iCAAiC,mBAAmB,EAAY,IAChE,SACJ;KAGE,UAAiB;GACnB,IAAM,IAAQ,EAAS,MAAM;AACxB,SAGD,EAAU,QACV,OAAO,KACH,0BAA0B,EAAO,MAAM,GAAG,GAAG,EAAO,MAAM,GAAG,gBAC7D,SACJ,GAEA,OAAO,KACH,yBAAyB,mBAAmB,EAAM,QAAQ,CAAC,gBAC3D,SACJ;KAIF,UAAqB;GACvB,IAAM,IAAQ,EAAS,MAAM;AACxB,QAGL,EAAK,GAAG,EAAM,KAAK,IAAI,EAAM,UAAS;;;;UAMhC,EAAA,OAAU,SAAA,GAAA,EADpB,EAuEM,OAvEN,GAuEM;IApEF,EAqCM,OArCN,GAqCM;KAnCF,EAAiD,GAAA;MAAzC,MAAK;MAAkB,OAAM;;KACrC,EAA6D,UAA7D,GAA6D,EAAhCA,EAAAA,GAAE,iBAAA,CAAA,EAAA,EAAA;KAC/B,EAgCgB,GAAA;MAhCD,WAAU;MAAU,OAAM;;uBAKT,CAJ5B,EAI4B,GAAA;OAHxB,WAAU;OACT,MAAM,EAAA,EAAM,GAAA,kBAAA;OACZ,OAAO,EAAA,EAAM,GAAGA,EAAAA,GAAE,gBAAA,GAAoBA,EAAAA,GAAE,cAAA;OACxC,SAAO;sCACZ,EAyBa,GAAA,EAAA,EAxBD;;;;;OAKP,CAAA,CAAA,EAAA;OAKU,OAAK,QAIO;QAHnB,EAGmB,GAAA,EAHA,SAAO,GAAc,EAAA;0BACL,CAA/B,EAA+B,GAAA,EAAvB,MAAK,iBAAe,CAAA,EAAA,AAAA,EAAA,OAAA,EAAG,iBAEnC,GAAA,CAAA,CAAA;;;QACA,EAGmB,GAAA,EAHA,SAAO,GAAa,EAAA;0BACN,CAA7B,EAA6B,GAAA,EAArB,MAAK,eAAa,CAAA,EAAA,AAAA,EAAA,OAAA,EAAG,gBAEjC,GAAA,CAAA,CAAA;;;QACA,EAGmB,GAAA,EAHA,SAAO,GAAQ,EAAA;0BACM,CAApC,EAAoC,GAAA,EAA5B,MAAK,sBAAoB,CAAA,EAAA,AAAA,EAAA,OAAA,EAAG,UAExC,GAAA,CAAA,CAAA;;;;wBAbsC,CAH1C,EAG0C,GAAA;QAFtC,MAAK;QACL,WAAU;QACT,OAAOA,EAAAA,GAAE,uBAAA;;;;;;;IAkBf,EAAA,SAAA,GAAA,EAAX,EAoBM,OApBN,GAoBM,CAnBF,EAkBO,EAAA,EAAA,EAAA;KAjBF,MAAM;KACN,QAAA,EAAA;KACA,sBAAoB;KACpB,SAAS;;;;;MAKT;KACD,OAAA;MAAA,QAAA;MAAA,OAAA;;;sBAI2B,CAH3B,EAG2B,EAAA,EAAA,EAAA;MAFvB,KAAI;MACJ,cAAW;MACX,MAAK;SACT,EAEU,EAAA,EAAA,EAAA,EAFA,WAAS,EAAA,OAAM,EAAA;uBACqB,CAA1C,EAA0C,EAAA,EAAA,EAAA,MAAA;wBAAT,CAAA,EAAA,EAAtB,EAAA,MAAS,MAAM,KAAI,EAAA,EAAA,CAAA,CAAA;;;;;;;IAI1C,EAQM,OARN,GAQM;KAPF,EAEI,KAFJ,GAEI,EADG,EAAA,MAAS,MAAM,KAAI,EAAA,EAAA;KAE1B,EAA+D,KAA/D,GAA+D,EAA7B,EAAA,MAAS,MAAM,QAAO,EAAA,EAAA;KAC/C,EAAA,MAAS,MAAM,kBAAA,GAAA,EAAxB,EAEI,KAFJ,GAEI,EADG,EAAA,MAAS,MAAM,eAAc,EAAA,EAAA,IAAA,EAAA,IAAA,GAAA"}
@@ -1,4 +1,4 @@
1
- import { u as e } from "./useChatbotStore-ys9uGP5v.js";
1
+ import { u as e } from "./useChatbotStore-C9xj40sY.js";
2
2
  import { computed as t, createElementBlock as n, createElementVNode as r, createTextVNode as i, createVNode as a, defineComponent as o, guardReactiveProps as s, normalizeProps as c, openBlock as l, toDisplayString as u, unref as d, withCtx as f } from "vue";
3
3
  import { VvButton as p, VvButtonGroup as m, VvDropdown as h, VvDropdownAction as g, VvIcon as _ } from "@volverjs/ui-vue/components";
4
4
  import { useClipboard as v } from "@vueuse/core";
@@ -73,4 +73,4 @@ var y = { class: "border border-surface-3 rounded-xl w-full overflow-hidden" },
73
73
  //#endregion
74
74
  export { E as n, D as t };
75
75
 
76
- //# sourceMappingURL=PkToolShowMessage-DtGDm3pq.js.map
76
+ //# sourceMappingURL=PkToolShowMessage-C4os87fJ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PkToolShowMessage-DtGDm3pq.js","names":["$t"],"sources":["../../../../packages/components/src/chat/PkToolShowMessage.vue","../../../../packages/components/src/chat/PkToolShowMessage.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed } from 'vue'\n import { useClipboard } from '@vueuse/core'\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const { copy, copied } = useClipboard()\n\n const toolPart = computed(() => {\n const part = props.part as {\n input?: {\n body: string\n }\n }\n return part\n })\n\n const openInWhatsApp = () => {\n if (!toolPart.value.input) {\n return\n }\n const url = `https://wa.me/?text=${encodeURIComponent(toolPart.value.input.body)}`\n window.open(url, '_blank')\n }\n\n const openInTelegram = () => {\n if (!toolPart.value.input) {\n return\n }\n const url = `https://t.me/share/url?text=${encodeURIComponent(toolPart.value.input.body)}`\n window.open(url, '_blank')\n }\n\n const openInSms = () => {\n if (!toolPart.value.input) {\n return\n }\n const url = `sms:?body=${encodeURIComponent(toolPart.value.input.body)}`\n window.open(url)\n }\n</script>\n\n<template>\n <div class=\"border border-surface-3 rounded-xl w-full overflow-hidden\">\n <div\n class=\"px-sm py-6 bg-surface-1 text-12 border-b border-surface-3 text-word-3 flex items-center gap-8\">\n <VvIcon name=\"ri:chat-1-line\" class=\"text-16\" />\n <strong class=\"font-bold\">\n {{ $t('label.message') }}\n </strong>\n <VvButtonGroup modifiers=\"compact\" class=\"ml-auto shrink-0\">\n <VvButton\n modifiers=\"action-quiet-small\"\n :icon=\"copied ? 'ri:check-line' : 'ri:file-copy-line'\"\n :label=\"copied ? $t('action.copied') : $t('action.copy')\"\n @click=\"copy(toolPart?.input?.body ?? '')\" />\n <VvDropdown\n v-bind=\"{\n placement: 'bottom-end',\n modifiers: 'menu',\n flip: true,\n offset: 3,\n }\">\n <VvButton\n icon=\"ri:send-plane-line\"\n modifiers=\"action-quiet-small\"\n :label=\"$t('action.send')\" />\n <template #items>\n <VvDropdownAction @click=\"openInWhatsApp\">\n <VvIcon name=\"ri:whatsapp-line\" />\n {{ $t('action.openInWhatsApp') }}\n </VvDropdownAction>\n <VvDropdownAction @click=\"openInTelegram\">\n <VvIcon name=\"ri:telegram-line\" />\n {{ $t('action.openInTelegram') }}\n </VvDropdownAction>\n <VvDropdownAction @click=\"openInSms\">\n <VvIcon name=\"ri:message-2-line\" />\n {{ $t('action.openInSms') }}\n </VvDropdownAction>\n </template>\n </VvDropdown>\n </VvButtonGroup>\n </div>\n <div class=\"p-sm\">\n <div class=\"text-12 text-word-4 mb-4\">\n {{ $t('label.body') }}\n </div>\n <pre class=\"text-word-2 whitespace-pre-wrap break-words\">{{\n toolPart?.input?.body\n }}</pre>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\n import { computed } from 'vue'\n import { useClipboard } from '@vueuse/core'\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const { copy, copied } = useClipboard()\n\n const toolPart = computed(() => {\n const part = props.part as {\n input?: {\n body: string\n }\n }\n return part\n })\n\n const openInWhatsApp = () => {\n if (!toolPart.value.input) {\n return\n }\n const url = `https://wa.me/?text=${encodeURIComponent(toolPart.value.input.body)}`\n window.open(url, '_blank')\n }\n\n const openInTelegram = () => {\n if (!toolPart.value.input) {\n return\n }\n const url = `https://t.me/share/url?text=${encodeURIComponent(toolPart.value.input.body)}`\n window.open(url, '_blank')\n }\n\n const openInSms = () => {\n if (!toolPart.value.input) {\n return\n }\n const url = `sms:?body=${encodeURIComponent(toolPart.value.input.body)}`\n window.open(url)\n }\n</script>\n\n<template>\n <div class=\"border border-surface-3 rounded-xl w-full overflow-hidden\">\n <div\n class=\"px-sm py-6 bg-surface-1 text-12 border-b border-surface-3 text-word-3 flex items-center gap-8\">\n <VvIcon name=\"ri:chat-1-line\" class=\"text-16\" />\n <strong class=\"font-bold\">\n {{ $t('label.message') }}\n </strong>\n <VvButtonGroup modifiers=\"compact\" class=\"ml-auto shrink-0\">\n <VvButton\n modifiers=\"action-quiet-small\"\n :icon=\"copied ? 'ri:check-line' : 'ri:file-copy-line'\"\n :label=\"copied ? $t('action.copied') : $t('action.copy')\"\n @click=\"copy(toolPart?.input?.body ?? '')\" />\n <VvDropdown\n v-bind=\"{\n placement: 'bottom-end',\n modifiers: 'menu',\n flip: true,\n offset: 3,\n }\">\n <VvButton\n icon=\"ri:send-plane-line\"\n modifiers=\"action-quiet-small\"\n :label=\"$t('action.send')\" />\n <template #items>\n <VvDropdownAction @click=\"openInWhatsApp\">\n <VvIcon name=\"ri:whatsapp-line\" />\n {{ $t('action.openInWhatsApp') }}\n </VvDropdownAction>\n <VvDropdownAction @click=\"openInTelegram\">\n <VvIcon name=\"ri:telegram-line\" />\n {{ $t('action.openInTelegram') }}\n </VvDropdownAction>\n <VvDropdownAction @click=\"openInSms\">\n <VvIcon name=\"ri:message-2-line\" />\n {{ $t('action.openInSms') }}\n </VvDropdownAction>\n </template>\n </VvDropdown>\n </VvButtonGroup>\n </div>\n <div class=\"p-sm\">\n <div class=\"text-12 text-word-4 mb-4\">\n {{ $t('label.body') }}\n </div>\n <pre class=\"text-word-2 whitespace-pre-wrap break-words\">{{\n toolPart?.input?.body\n }}</pre>\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;EAII,IAAM,IAAQ,GAIR,EAAE,SAAM,cAAW,GAAa,EAEhC,IAAW,QACA,EAAM,KAMtB,EAEK,UAAuB;AACzB,OAAI,CAAC,EAAS,MAAM,MAChB;GAEJ,IAAM,IAAM,uBAAuB,mBAAmB,EAAS,MAAM,MAAM,KAAK;AAChF,UAAO,KAAK,GAAK,SAAQ;KAGvB,UAAuB;AACzB,OAAI,CAAC,EAAS,MAAM,MAChB;GAEJ,IAAM,IAAM,+BAA+B,mBAAmB,EAAS,MAAM,MAAM,KAAK;AACxF,UAAO,KAAK,GAAK,SAAQ;KAGvB,UAAkB;AACpB,OAAI,CAAC,EAAS,MAAM,MAChB;GAEJ,IAAM,IAAM,aAAa,mBAAmB,EAAS,MAAM,MAAM,KAAK;AACtE,UAAO,KAAK,EAAG;;;;eAKnB,EAiDM,OAjDN,GAiDM,CAhDF,EAuCM,OAvCN,GAuCM;IArCF,EAAgD,GAAA;KAAxC,MAAK;KAAiB,OAAM;;IACpC,EAES,UAFT,GAES,EADFA,EAAAA,GAAE,gBAAA,CAAA,EAAA,EAAA;IAET,EAgCgB,GAAA;KAhCD,WAAU;KAAU,OAAM;;sBAKY,CAJjD,EAIiD,GAAA;MAH7C,WAAU;MACT,MAAM,EAAA,EAAM,GAAA,kBAAA;MACZ,OAAO,EAAA,EAAM,GAAGA,EAAAA,GAAE,gBAAA,GAAoBA,EAAAA,GAAE,cAAA;MACxC,SAAK,AAAA,EAAA,QAAA,MAAE,EAAA,EAAI,CAAC,EAAA,OAAU,OAAO,QAAI,GAAA;qCACtC,EAyBa,GAAA,EAAA,EAxBD;;;;;MAKP,CAAA,CAAA,EAAA;MAKU,OAAK,QAIO;OAHnB,EAGmB,GAAA,EAHA,SAAO,GAAc,EAAA;yBACF,CAAlC,EAAkC,GAAA,EAA1B,MAAK,oBAAkB,CAAA,EAAA,EAAG,MAClC,EAAGA,EAAAA,GAAE,wBAAA,CAAA,EAAA,EAAA,CAAA,CAAA;;;OAET,EAGmB,GAAA,EAHA,SAAO,GAAc,EAAA;yBACF,CAAlC,EAAkC,GAAA,EAA1B,MAAK,oBAAkB,CAAA,EAAA,EAAG,MAClC,EAAGA,EAAAA,GAAE,wBAAA,CAAA,EAAA,EAAA,CAAA,CAAA;;;OAET,EAGmB,GAAA,EAHA,SAAO,GAAS,EAAA;yBACI,CAAnC,EAAmC,GAAA,EAA3B,MAAK,qBAAmB,CAAA,EAAA,EAAG,MACnC,EAAGA,EAAAA,GAAE,mBAAA,CAAA,EAAA,EAAA,CAAA,CAAA;;;;uBAZoB,CAHjC,EAGiC,GAAA;OAF7B,MAAK;OACL,WAAU;OACT,OAAOA,EAAAA,GAAE,cAAA;;;;;;OAkB1B,EAOM,OAPN,GAOM,CANF,EAEM,OAFN,GAEM,EADCA,EAAAA,GAAE,aAAA,CAAA,EAAA,EAAA,EAET,EAEQ,OAFR,GAEQ,EADJ,EAAA,OAAU,OAAO,KAAI,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"PkToolShowMessage-C4os87fJ.js","names":["$t"],"sources":["../../../../packages/components/src/chat/PkToolShowMessage.vue","../../../../packages/components/src/chat/PkToolShowMessage.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed } from 'vue'\n import { useClipboard } from '@vueuse/core'\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const { copy, copied } = useClipboard()\n\n const toolPart = computed(() => {\n const part = props.part as {\n input?: {\n body: string\n }\n }\n return part\n })\n\n const openInWhatsApp = () => {\n if (!toolPart.value.input) {\n return\n }\n const url = `https://wa.me/?text=${encodeURIComponent(toolPart.value.input.body)}`\n window.open(url, '_blank')\n }\n\n const openInTelegram = () => {\n if (!toolPart.value.input) {\n return\n }\n const url = `https://t.me/share/url?text=${encodeURIComponent(toolPart.value.input.body)}`\n window.open(url, '_blank')\n }\n\n const openInSms = () => {\n if (!toolPart.value.input) {\n return\n }\n const url = `sms:?body=${encodeURIComponent(toolPart.value.input.body)}`\n window.open(url)\n }\n</script>\n\n<template>\n <div class=\"border border-surface-3 rounded-xl w-full overflow-hidden\">\n <div\n class=\"px-sm py-6 bg-surface-1 text-12 border-b border-surface-3 text-word-3 flex items-center gap-8\">\n <VvIcon name=\"ri:chat-1-line\" class=\"text-16\" />\n <strong class=\"font-bold\">\n {{ $t('label.message') }}\n </strong>\n <VvButtonGroup modifiers=\"compact\" class=\"ml-auto shrink-0\">\n <VvButton\n modifiers=\"action-quiet-small\"\n :icon=\"copied ? 'ri:check-line' : 'ri:file-copy-line'\"\n :label=\"copied ? $t('action.copied') : $t('action.copy')\"\n @click=\"copy(toolPart?.input?.body ?? '')\" />\n <VvDropdown\n v-bind=\"{\n placement: 'bottom-end',\n modifiers: 'menu',\n flip: true,\n offset: 3,\n }\">\n <VvButton\n icon=\"ri:send-plane-line\"\n modifiers=\"action-quiet-small\"\n :label=\"$t('action.send')\" />\n <template #items>\n <VvDropdownAction @click=\"openInWhatsApp\">\n <VvIcon name=\"ri:whatsapp-line\" />\n {{ $t('action.openInWhatsApp') }}\n </VvDropdownAction>\n <VvDropdownAction @click=\"openInTelegram\">\n <VvIcon name=\"ri:telegram-line\" />\n {{ $t('action.openInTelegram') }}\n </VvDropdownAction>\n <VvDropdownAction @click=\"openInSms\">\n <VvIcon name=\"ri:message-2-line\" />\n {{ $t('action.openInSms') }}\n </VvDropdownAction>\n </template>\n </VvDropdown>\n </VvButtonGroup>\n </div>\n <div class=\"p-sm\">\n <div class=\"text-12 text-word-4 mb-4\">\n {{ $t('label.body') }}\n </div>\n <pre class=\"text-word-2 whitespace-pre-wrap break-words\">{{\n toolPart?.input?.body\n }}</pre>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\n import { computed } from 'vue'\n import { useClipboard } from '@vueuse/core'\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const { copy, copied } = useClipboard()\n\n const toolPart = computed(() => {\n const part = props.part as {\n input?: {\n body: string\n }\n }\n return part\n })\n\n const openInWhatsApp = () => {\n if (!toolPart.value.input) {\n return\n }\n const url = `https://wa.me/?text=${encodeURIComponent(toolPart.value.input.body)}`\n window.open(url, '_blank')\n }\n\n const openInTelegram = () => {\n if (!toolPart.value.input) {\n return\n }\n const url = `https://t.me/share/url?text=${encodeURIComponent(toolPart.value.input.body)}`\n window.open(url, '_blank')\n }\n\n const openInSms = () => {\n if (!toolPart.value.input) {\n return\n }\n const url = `sms:?body=${encodeURIComponent(toolPart.value.input.body)}`\n window.open(url)\n }\n</script>\n\n<template>\n <div class=\"border border-surface-3 rounded-xl w-full overflow-hidden\">\n <div\n class=\"px-sm py-6 bg-surface-1 text-12 border-b border-surface-3 text-word-3 flex items-center gap-8\">\n <VvIcon name=\"ri:chat-1-line\" class=\"text-16\" />\n <strong class=\"font-bold\">\n {{ $t('label.message') }}\n </strong>\n <VvButtonGroup modifiers=\"compact\" class=\"ml-auto shrink-0\">\n <VvButton\n modifiers=\"action-quiet-small\"\n :icon=\"copied ? 'ri:check-line' : 'ri:file-copy-line'\"\n :label=\"copied ? $t('action.copied') : $t('action.copy')\"\n @click=\"copy(toolPart?.input?.body ?? '')\" />\n <VvDropdown\n v-bind=\"{\n placement: 'bottom-end',\n modifiers: 'menu',\n flip: true,\n offset: 3,\n }\">\n <VvButton\n icon=\"ri:send-plane-line\"\n modifiers=\"action-quiet-small\"\n :label=\"$t('action.send')\" />\n <template #items>\n <VvDropdownAction @click=\"openInWhatsApp\">\n <VvIcon name=\"ri:whatsapp-line\" />\n {{ $t('action.openInWhatsApp') }}\n </VvDropdownAction>\n <VvDropdownAction @click=\"openInTelegram\">\n <VvIcon name=\"ri:telegram-line\" />\n {{ $t('action.openInTelegram') }}\n </VvDropdownAction>\n <VvDropdownAction @click=\"openInSms\">\n <VvIcon name=\"ri:message-2-line\" />\n {{ $t('action.openInSms') }}\n </VvDropdownAction>\n </template>\n </VvDropdown>\n </VvButtonGroup>\n </div>\n <div class=\"p-sm\">\n <div class=\"text-12 text-word-4 mb-4\">\n {{ $t('label.body') }}\n </div>\n <pre class=\"text-word-2 whitespace-pre-wrap break-words\">{{\n toolPart?.input?.body\n }}</pre>\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;EAII,IAAM,IAAQ,GAIR,EAAE,SAAM,cAAW,GAAa,EAEhC,IAAW,QACA,EAAM,KAMtB,EAEK,UAAuB;AACzB,OAAI,CAAC,EAAS,MAAM,MAChB;GAEJ,IAAM,IAAM,uBAAuB,mBAAmB,EAAS,MAAM,MAAM,KAAK;AAChF,UAAO,KAAK,GAAK,SAAQ;KAGvB,UAAuB;AACzB,OAAI,CAAC,EAAS,MAAM,MAChB;GAEJ,IAAM,IAAM,+BAA+B,mBAAmB,EAAS,MAAM,MAAM,KAAK;AACxF,UAAO,KAAK,GAAK,SAAQ;KAGvB,UAAkB;AACpB,OAAI,CAAC,EAAS,MAAM,MAChB;GAEJ,IAAM,IAAM,aAAa,mBAAmB,EAAS,MAAM,MAAM,KAAK;AACtE,UAAO,KAAK,EAAG;;;;eAKnB,EAiDM,OAjDN,GAiDM,CAhDF,EAuCM,OAvCN,GAuCM;IArCF,EAAgD,GAAA;KAAxC,MAAK;KAAiB,OAAM;;IACpC,EAES,UAFT,GAES,EADFA,EAAAA,GAAE,gBAAA,CAAA,EAAA,EAAA;IAET,EAgCgB,GAAA;KAhCD,WAAU;KAAU,OAAM;;sBAKY,CAJjD,EAIiD,GAAA;MAH7C,WAAU;MACT,MAAM,EAAA,EAAM,GAAA,kBAAA;MACZ,OAAO,EAAA,EAAM,GAAGA,EAAAA,GAAE,gBAAA,GAAoBA,EAAAA,GAAE,cAAA;MACxC,SAAK,AAAA,EAAA,QAAA,MAAE,EAAA,EAAI,CAAC,EAAA,OAAU,OAAO,QAAI,GAAA;qCACtC,EAyBa,GAAA,EAAA,EAxBD;;;;;MAKP,CAAA,CAAA,EAAA;MAKU,OAAK,QAIO;OAHnB,EAGmB,GAAA,EAHA,SAAO,GAAc,EAAA;yBACF,CAAlC,EAAkC,GAAA,EAA1B,MAAK,oBAAkB,CAAA,EAAA,EAAG,MAClC,EAAGA,EAAAA,GAAE,wBAAA,CAAA,EAAA,EAAA,CAAA,CAAA;;;OAET,EAGmB,GAAA,EAHA,SAAO,GAAc,EAAA;yBACF,CAAlC,EAAkC,GAAA,EAA1B,MAAK,oBAAkB,CAAA,EAAA,EAAG,MAClC,EAAGA,EAAAA,GAAE,wBAAA,CAAA,EAAA,EAAA,CAAA,CAAA;;;OAET,EAGmB,GAAA,EAHA,SAAO,GAAS,EAAA;yBACI,CAAnC,EAAmC,GAAA,EAA3B,MAAK,qBAAmB,CAAA,EAAA,EAAG,MACnC,EAAGA,EAAAA,GAAE,mBAAA,CAAA,EAAA,EAAA,CAAA,CAAA;;;;uBAZoB,CAHjC,EAGiC,GAAA;OAF7B,MAAK;OACL,WAAU;OACT,OAAOA,EAAAA,GAAE,cAAA;;;;;;OAkB1B,EAOM,OAPN,GAOM,CANF,EAEM,OAFN,GAEM,EADCA,EAAAA,GAAE,aAAA,CAAA,EAAA,EAAA,EAET,EAEQ,OAFR,GAEQ,EADJ,EAAA,OAAU,OAAO,KAAI,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA"}
@@ -0,0 +1,45 @@
1
+ import { u as e } from "./useChatbotStore-C9xj40sY.js";
2
+ import { Fragment as t, computed as n, createBlock as r, createCommentVNode as i, createElementBlock as a, createElementVNode as o, defineComponent as s, normalizeClass as c, openBlock as l, renderList as u, toDisplayString as d, withCtx as f, withModifiers as p } from "vue";
3
+ import { VvButton as m, VvButtonGroup as h } from "@volverjs/ui-vue/components";
4
+ //#region ../../packages/components/src/chat/PkToolShowMultipleChoice.vue?vue&type=script&setup=true&lang.ts
5
+ var g = { class: "px-sm py-10 font-bold bg-surface-1 text-12 border-b border-surface-3 text-word-3" }, _ = { class: "px-sm py-10" }, v = /* @__PURE__ */ s({
6
+ __name: "PkToolShowMultipleChoice",
7
+ props: { part: {} },
8
+ emits: ["select"],
9
+ setup(e, { emit: s }) {
10
+ let v = e, y = s, b = n(() => JSON.parse(JSON.stringify(v.part))), x = n(() => (b.value?.input?.options ?? []).map((e) => typeof e == "string" ? e : e.label)), S = n(() => {
11
+ let e = b.value?.output;
12
+ if (e) return typeof e == "string" ? e : e.label;
13
+ }), C = n(() => b.value?.state || "unknown"), w = n(() => C.value === "input-available");
14
+ return (e, n) => {
15
+ let s = m, v = h;
16
+ return x.value.length ? (l(), a("div", {
17
+ key: C.value,
18
+ class: "border border-surface-3 rounded-xl w-full overflow-hidden"
19
+ }, [o("div", g, d(b.value.input?.question), 1), o("div", _, [(l(), r(v, {
20
+ key: x.value.length,
21
+ modifiers: "vertical",
22
+ class: "w-full"
23
+ }, {
24
+ default: f(() => [(l(!0), a(t, null, u(x.value, (e, t) => (l(), r(s, {
25
+ key: t,
26
+ modifiers: "action-multiline",
27
+ class: c(["whitespace-normal w-full", { pressed: e === S.value }]),
28
+ disabled: !w.value,
29
+ label: e,
30
+ onClick: p((t) => y("select", e), ["stop"])
31
+ }, null, 8, [
32
+ "class",
33
+ "disabled",
34
+ "label",
35
+ "onClick"
36
+ ]))), 128))]),
37
+ _: 1
38
+ }))])])) : i("", !0);
39
+ };
40
+ }
41
+ }), y = /* @__PURE__ */ e({ default: () => b }), b = v;
42
+ //#endregion
43
+ export { y as n, b as t };
44
+
45
+ //# sourceMappingURL=PkToolShowMultipleChoice-DB5ZvvhS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PkToolShowMultipleChoice-DB5ZvvhS.js","names":[],"sources":["../../../../packages/components/src/chat/PkToolShowMultipleChoice.vue","../../../../packages/components/src/chat/PkToolShowMultipleChoice.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed } from 'vue'\n\n type LegacyOption = { id: string; label: string; value: string }\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const emit = defineEmits<{\n select: [option: string]\n }>()\n\n const toolPart = computed(() => {\n return JSON.parse(JSON.stringify(props.part)) as {\n state?: string\n toolCallId?: string\n input?: {\n question: string\n options: string[] | LegacyOption[]\n }\n output?: string | LegacyOption\n }\n })\n\n /** Normalize options to string[] (supports legacy { label } objects) */\n const normalizedOptions = computed(() => {\n return (toolPart.value?.input?.options ?? []).map((o) =>\n typeof o === 'string' ? o : o.label,\n )\n })\n\n /** Normalize output to string (supports legacy { label } objects) */\n const normalizedOutput = computed(() => {\n const out = toolPart.value?.output\n if (!out) {\n return undefined\n }\n return typeof out === 'string' ? out : out.label\n })\n\n const toolState = computed(() => {\n return toolPart.value?.state || 'unknown'\n })\n\n const isInteractive = computed(() => {\n return toolState.value === 'input-available'\n })\n</script>\n\n<template>\n <div\n v-if=\"normalizedOptions.length\"\n :key=\"toolState\"\n class=\"border border-surface-3 rounded-xl w-full overflow-hidden\">\n <div\n class=\"px-sm py-10 font-bold bg-surface-1 text-12 border-b border-surface-3 text-word-3\">\n {{ toolPart.input?.question }}\n </div>\n <div class=\"px-sm py-10\">\n <VvButtonGroup\n :key=\"normalizedOptions.length\"\n modifiers=\"vertical\"\n class=\"w-full\">\n <VvButton\n v-for=\"(option, index) in normalizedOptions\"\n :key=\"index\"\n modifiers=\"action-multiline\"\n class=\"whitespace-normal w-full\"\n :class=\"{\n pressed: option === normalizedOutput,\n }\"\n :disabled=\"!isInteractive\"\n :label=\"option\"\n @click.stop=\"emit('select', option)\" />\n </VvButtonGroup>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\n import { computed } from 'vue'\n\n type LegacyOption = { id: string; label: string; value: string }\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const emit = defineEmits<{\n select: [option: string]\n }>()\n\n const toolPart = computed(() => {\n return JSON.parse(JSON.stringify(props.part)) as {\n state?: string\n toolCallId?: string\n input?: {\n question: string\n options: string[] | LegacyOption[]\n }\n output?: string | LegacyOption\n }\n })\n\n /** Normalize options to string[] (supports legacy { label } objects) */\n const normalizedOptions = computed(() => {\n return (toolPart.value?.input?.options ?? []).map((o) =>\n typeof o === 'string' ? o : o.label,\n )\n })\n\n /** Normalize output to string (supports legacy { label } objects) */\n const normalizedOutput = computed(() => {\n const out = toolPart.value?.output\n if (!out) {\n return undefined\n }\n return typeof out === 'string' ? out : out.label\n })\n\n const toolState = computed(() => {\n return toolPart.value?.state || 'unknown'\n })\n\n const isInteractive = computed(() => {\n return toolState.value === 'input-available'\n })\n</script>\n\n<template>\n <div\n v-if=\"normalizedOptions.length\"\n :key=\"toolState\"\n class=\"border border-surface-3 rounded-xl w-full overflow-hidden\">\n <div\n class=\"px-sm py-10 font-bold bg-surface-1 text-12 border-b border-surface-3 text-word-3\">\n {{ toolPart.input?.question }}\n </div>\n <div class=\"px-sm py-10\">\n <VvButtonGroup\n :key=\"normalizedOptions.length\"\n modifiers=\"vertical\"\n class=\"w-full\">\n <VvButton\n v-for=\"(option, index) in normalizedOptions\"\n :key=\"index\"\n modifiers=\"action-multiline\"\n class=\"whitespace-normal w-full\"\n :class=\"{\n pressed: option === normalizedOutput,\n }\"\n :disabled=\"!isInteractive\"\n :label=\"option\"\n @click.stop=\"emit('select', option)\" />\n </VvButtonGroup>\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;EAKI,IAAM,IAAQ,GAIR,IAAO,GAIP,IAAW,QACN,KAAK,MAAM,KAAK,UAAU,EAAM,KAAK,CAAC,CAShD,EAGK,IAAoB,SACd,EAAS,OAAO,OAAO,WAAW,EAAE,EAAE,KAAK,MAC/C,OAAO,KAAM,WAAW,IAAI,EAAE,MAClC,CACH,EAGK,IAAmB,QAAe;GACpC,IAAM,IAAM,EAAS,OAAO;AACvB,SAGL,QAAO,OAAO,KAAQ,WAAW,IAAM,EAAI;IAC9C,EAEK,IAAY,QACP,EAAS,OAAO,SAAS,UACnC,EAEK,IAAgB,QACX,EAAU,UAAU,kBAC9B;;;UAKS,EAAA,MAAkB,UAAA,GAAA,EAD5B,EA0BM,OAAA;IAxBD,KAAK,EAAA;IACN,OAAM;OACN,EAGM,OAHN,GAGM,EADC,EAAA,MAAS,OAAO,SAAQ,EAAA,EAAA,EAE/B,EAiBM,OAjBN,GAiBM,EAAA,GAAA,EAhBF,EAegB,GAAA;IAdX,KAAK,EAAA,MAAkB;IACxB,WAAU;IACV,OAAM;;qBAE0C,EAAA,EAAA,GAAA,EADhD,EAU2C,GAAA,MAAA,EATb,EAAA,QAAlB,GAAQ,YADpB,EAU2C,GAAA;KARtC,KAAK;KACN,WAAU;KACV,OAAK,EAAA,CAAC,4BAA0B,EAAA,SACW,MAAW,EAAA,OAAA,CAAA,CAAA;KAGrD,UAAQ,CAAG,EAAA;KACX,OAAO;KACP,SAAK,GAAA,MAAO,EAAI,UAAW,EAAM,EAAA,CAAA,OAAA,CAAA"}
@@ -1,5 +1,5 @@
1
- import { u as e } from "./useChatbotStore-ys9uGP5v.js";
2
- import { t } from "./PkUrl-C9annqfF.js";
1
+ import { u as e } from "./useChatbotStore-C9xj40sY.js";
2
+ import { t } from "./PkUrl-tuHTaGCy.js";
3
3
  import { Fragment as n, computed as r, createBlock as i, createCommentVNode as a, createElementBlock as o, createElementVNode as s, createVNode as c, defineComponent as l, normalizeClass as u, openBlock as d, renderList as f, resolveDynamicComponent as p, toDisplayString as m, withCtx as h } from "vue";
4
4
  import { VvIcon as g } from "@volverjs/ui-vue/components";
5
5
  //#region ../../packages/components/src/chat/PkToolShowProductList.vue?vue&type=script&setup=true&lang.ts
@@ -64,4 +64,4 @@ var _ = {
64
64
  //#endregion
65
65
  export { E as n, D as t };
66
66
 
67
- //# sourceMappingURL=PkToolShowProductList-BlkUdbtV.js.map
67
+ //# sourceMappingURL=PkToolShowProductList-BR14mmfl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PkToolShowProductList-BlkUdbtV.js","names":[],"sources":["../../../../packages/components/src/chat/PkToolShowProductList.vue","../../../../packages/components/src/chat/PkToolShowProductList.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed } from 'vue'\n import PkUrl from '../PkUrl.vue'\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const toolPart = computed(() => {\n const part = props.part as {\n input?: {\n products: Array<{\n name: string\n url?: string\n image?: string\n price?: string\n availability?: string\n description?: string\n }>\n }\n }\n return part\n })\n\n const getAvailabilityColor = (availability?: string) => {\n if (!availability) {\n return ''\n }\n const lower = availability.toLowerCase()\n if (\n lower.includes('in stock') ||\n lower.includes('available') ||\n lower.includes('disponibile')\n ) {\n return 'text-success'\n }\n if (\n lower.includes('out of stock') ||\n lower.includes('unavailable') ||\n lower.includes('non disponibile')\n ) {\n return 'text-danger'\n }\n if (\n lower.includes('limited') ||\n lower.includes('low stock') ||\n lower.includes('limitato')\n ) {\n return 'text-warning'\n }\n return 'text-word-3'\n }\n</script>\n\n<template>\n <ul\n v-if=\"toolPart?.input?.products?.length\"\n class=\"flex flex-col gap-xs w-full\">\n <li\n v-for=\"(product, index) in toolPart.input.products\"\n :key=\"index\"\n class=\"border border-surface-3 rounded-lg overflow-hidden hover:border-surface-4 transition-colors\">\n <component\n :is=\"product.url ? 'a' : 'div'\"\n :href=\"product.url\"\n :target=\"product.url ? '_blank' : undefined\"\n :rel=\"product.url ? 'noopener noreferrer' : undefined\"\n class=\"flex gap-8 p-8 hover:bg-surface-1 transition-colors\">\n <img\n v-if=\"product.image\"\n :src=\"product.image\"\n :alt=\"product.name\"\n class=\"w-48 h-48 object-contain rounded shrink-0 border border-surface-3 bg-surface\" />\n <div class=\"flex flex-col gap-4 min-w-0 flex-1\">\n <strong class=\"font-bold text-12 text-word-1 truncate\">\n {{ product.name }}\n </strong>\n <span\n v-if=\"product.url\"\n class=\"text-10 text-word-4 truncate flex items-center gap-4\">\n <VvIcon name=\"ri:link\" class=\"shrink-0 text-12\" />\n <PkUrl :url=\"product.url\" />\n </span>\n <div class=\"flex items-center gap-sm flex-wrap text-12\">\n <span\n v-if=\"product.price\"\n class=\"font-semibold text-word-1\">\n {{ product.price }}\n </span>\n <span\n v-if=\"product.availability\"\n class=\"text-10 font-medium\"\n :class=\"getAvailabilityColor(product.availability)\">\n {{ product.availability }}\n </span>\n </div>\n <p\n v-if=\"product.description\"\n class=\"text-12 text-word-3 line-clamp-2\">\n {{ product.description }}\n </p>\n </div>\n </component>\n </li>\n </ul>\n</template>\n","<script setup lang=\"ts\">\n import { computed } from 'vue'\n import PkUrl from '../PkUrl.vue'\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const toolPart = computed(() => {\n const part = props.part as {\n input?: {\n products: Array<{\n name: string\n url?: string\n image?: string\n price?: string\n availability?: string\n description?: string\n }>\n }\n }\n return part\n })\n\n const getAvailabilityColor = (availability?: string) => {\n if (!availability) {\n return ''\n }\n const lower = availability.toLowerCase()\n if (\n lower.includes('in stock') ||\n lower.includes('available') ||\n lower.includes('disponibile')\n ) {\n return 'text-success'\n }\n if (\n lower.includes('out of stock') ||\n lower.includes('unavailable') ||\n lower.includes('non disponibile')\n ) {\n return 'text-danger'\n }\n if (\n lower.includes('limited') ||\n lower.includes('low stock') ||\n lower.includes('limitato')\n ) {\n return 'text-warning'\n }\n return 'text-word-3'\n }\n</script>\n\n<template>\n <ul\n v-if=\"toolPart?.input?.products?.length\"\n class=\"flex flex-col gap-xs w-full\">\n <li\n v-for=\"(product, index) in toolPart.input.products\"\n :key=\"index\"\n class=\"border border-surface-3 rounded-lg overflow-hidden hover:border-surface-4 transition-colors\">\n <component\n :is=\"product.url ? 'a' : 'div'\"\n :href=\"product.url\"\n :target=\"product.url ? '_blank' : undefined\"\n :rel=\"product.url ? 'noopener noreferrer' : undefined\"\n class=\"flex gap-8 p-8 hover:bg-surface-1 transition-colors\">\n <img\n v-if=\"product.image\"\n :src=\"product.image\"\n :alt=\"product.name\"\n class=\"w-48 h-48 object-contain rounded shrink-0 border border-surface-3 bg-surface\" />\n <div class=\"flex flex-col gap-4 min-w-0 flex-1\">\n <strong class=\"font-bold text-12 text-word-1 truncate\">\n {{ product.name }}\n </strong>\n <span\n v-if=\"product.url\"\n class=\"text-10 text-word-4 truncate flex items-center gap-4\">\n <VvIcon name=\"ri:link\" class=\"shrink-0 text-12\" />\n <PkUrl :url=\"product.url\" />\n </span>\n <div class=\"flex items-center gap-sm flex-wrap text-12\">\n <span\n v-if=\"product.price\"\n class=\"font-semibold text-word-1\">\n {{ product.price }}\n </span>\n <span\n v-if=\"product.availability\"\n class=\"text-10 font-medium\"\n :class=\"getAvailabilityColor(product.availability)\">\n {{ product.availability }}\n </span>\n </div>\n <p\n v-if=\"product.description\"\n class=\"text-12 text-word-3 line-clamp-2\">\n {{ product.description }}\n </p>\n </div>\n </component>\n </li>\n </ul>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;EAII,IAAM,IAAQ,GAIR,IAAW,QACA,EAAM,KAatB,EAEK,KAAwB,MAA0B;AACpD,OAAI,CAAC,EACD,QAAO;GAEX,IAAM,IAAQ,EAAa,aAAY;AAsBvC,UApBI,EAAM,SAAS,WAAW,IAC1B,EAAM,SAAS,YAAY,IAC3B,EAAM,SAAS,cAAa,GAErB,iBAGP,EAAM,SAAS,eAAe,IAC9B,EAAM,SAAS,cAAc,IAC7B,EAAM,SAAS,kBAAiB,GAEzB,gBAGP,EAAM,SAAS,UAAU,IACzB,EAAM,SAAS,YAAY,IAC3B,EAAM,SAAS,WAAU,GAElB,iBAEJ;;;;UAMD,EAAA,OAAU,OAAO,UAAU,UAAA,GAAA,EADrC,EAiDK,MAjDL,GAiDK,EAAA,EAAA,GAAA,EA9CD,EA6CK,GAAA,MAAA,EA5C0B,EAAA,MAAS,MAAM,WAAlC,GAAS,YADrB,EA6CK,MAAA;IA3CA,KAAK;IACN,OAAM;aACN,EAwCY,EAvCH,EAAQ,MAAG,MAAA,MAAA,EAAA;IACf,MAAM,EAAQ;IACd,QAAQ,EAAQ,MAAG,WAAc,KAAA;IACjC,KAAK,EAAQ,MAAG,wBAA2B,KAAA;IAC5C,OAAM;;qBAKqF,CAHjF,EAAQ,SAAA,GAAA,EADlB,EAI2F,OAAA;;KAFtF,KAAK,EAAQ;KACb,KAAK,EAAQ;KACd,OAAM;iCACV,EA4BM,OA5BN,GA4BM;KA3BF,EAES,UAFT,GAES,EADF,EAAQ,KAAI,EAAA,EAAA;KAGT,EAAQ,OAAA,GAAA,EADlB,EAKO,QALP,GAKO,CAFH,EAAkD,GAAA;MAA1C,MAAK;MAAU,OAAM;SAC7B,EAA4B,GAAA,EAApB,KAAK,EAAQ,KAAA,EAAA,MAAA,GAAA,CAAA,MAAA,CAAA,CAAA,CAAA,IAAA,EAAA,IAAA,GAAA;KAEzB,EAYM,OAZN,GAYM,CAVQ,EAAQ,SAAA,GAAA,EADlB,EAIO,QAJP,GAIO,EADA,EAAQ,MAAK,EAAA,EAAA,IAAA,EAAA,IAAA,GAAA,EAGV,EAAQ,gBAAA,GAAA,EADlB,EAKO,QAAA;;MAHH,OAAK,EAAA,CAAC,uBACE,EAAqB,EAAQ,aAAY,CAAA,CAAA;UAC9C,EAAQ,aAAY,EAAA,EAAA,IAAA,EAAA,IAAA,GAAA,CAAA,CAAA;KAIrB,EAAQ,eAAA,GAAA,EADlB,EAII,KAJJ,GAII,EADG,EAAQ,YAAW,EAAA,EAAA,IAAA,EAAA,IAAA,GAAA"}
1
+ {"version":3,"file":"PkToolShowProductList-BR14mmfl.js","names":[],"sources":["../../../../packages/components/src/chat/PkToolShowProductList.vue","../../../../packages/components/src/chat/PkToolShowProductList.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed } from 'vue'\n import PkUrl from '../PkUrl.vue'\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const toolPart = computed(() => {\n const part = props.part as {\n input?: {\n products: Array<{\n name: string\n url?: string\n image?: string\n price?: string\n availability?: string\n description?: string\n }>\n }\n }\n return part\n })\n\n const getAvailabilityColor = (availability?: string) => {\n if (!availability) {\n return ''\n }\n const lower = availability.toLowerCase()\n if (\n lower.includes('in stock') ||\n lower.includes('available') ||\n lower.includes('disponibile')\n ) {\n return 'text-success'\n }\n if (\n lower.includes('out of stock') ||\n lower.includes('unavailable') ||\n lower.includes('non disponibile')\n ) {\n return 'text-danger'\n }\n if (\n lower.includes('limited') ||\n lower.includes('low stock') ||\n lower.includes('limitato')\n ) {\n return 'text-warning'\n }\n return 'text-word-3'\n }\n</script>\n\n<template>\n <ul\n v-if=\"toolPart?.input?.products?.length\"\n class=\"flex flex-col gap-xs w-full\">\n <li\n v-for=\"(product, index) in toolPart.input.products\"\n :key=\"index\"\n class=\"border border-surface-3 rounded-lg overflow-hidden hover:border-surface-4 transition-colors\">\n <component\n :is=\"product.url ? 'a' : 'div'\"\n :href=\"product.url\"\n :target=\"product.url ? '_blank' : undefined\"\n :rel=\"product.url ? 'noopener noreferrer' : undefined\"\n class=\"flex gap-8 p-8 hover:bg-surface-1 transition-colors\">\n <img\n v-if=\"product.image\"\n :src=\"product.image\"\n :alt=\"product.name\"\n class=\"w-48 h-48 object-contain rounded shrink-0 border border-surface-3 bg-surface\" />\n <div class=\"flex flex-col gap-4 min-w-0 flex-1\">\n <strong class=\"font-bold text-12 text-word-1 truncate\">\n {{ product.name }}\n </strong>\n <span\n v-if=\"product.url\"\n class=\"text-10 text-word-4 truncate flex items-center gap-4\">\n <VvIcon name=\"ri:link\" class=\"shrink-0 text-12\" />\n <PkUrl :url=\"product.url\" />\n </span>\n <div class=\"flex items-center gap-sm flex-wrap text-12\">\n <span\n v-if=\"product.price\"\n class=\"font-semibold text-word-1\">\n {{ product.price }}\n </span>\n <span\n v-if=\"product.availability\"\n class=\"text-10 font-medium\"\n :class=\"getAvailabilityColor(product.availability)\">\n {{ product.availability }}\n </span>\n </div>\n <p\n v-if=\"product.description\"\n class=\"text-12 text-word-3 line-clamp-2\">\n {{ product.description }}\n </p>\n </div>\n </component>\n </li>\n </ul>\n</template>\n","<script setup lang=\"ts\">\n import { computed } from 'vue'\n import PkUrl from '../PkUrl.vue'\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const toolPart = computed(() => {\n const part = props.part as {\n input?: {\n products: Array<{\n name: string\n url?: string\n image?: string\n price?: string\n availability?: string\n description?: string\n }>\n }\n }\n return part\n })\n\n const getAvailabilityColor = (availability?: string) => {\n if (!availability) {\n return ''\n }\n const lower = availability.toLowerCase()\n if (\n lower.includes('in stock') ||\n lower.includes('available') ||\n lower.includes('disponibile')\n ) {\n return 'text-success'\n }\n if (\n lower.includes('out of stock') ||\n lower.includes('unavailable') ||\n lower.includes('non disponibile')\n ) {\n return 'text-danger'\n }\n if (\n lower.includes('limited') ||\n lower.includes('low stock') ||\n lower.includes('limitato')\n ) {\n return 'text-warning'\n }\n return 'text-word-3'\n }\n</script>\n\n<template>\n <ul\n v-if=\"toolPart?.input?.products?.length\"\n class=\"flex flex-col gap-xs w-full\">\n <li\n v-for=\"(product, index) in toolPart.input.products\"\n :key=\"index\"\n class=\"border border-surface-3 rounded-lg overflow-hidden hover:border-surface-4 transition-colors\">\n <component\n :is=\"product.url ? 'a' : 'div'\"\n :href=\"product.url\"\n :target=\"product.url ? '_blank' : undefined\"\n :rel=\"product.url ? 'noopener noreferrer' : undefined\"\n class=\"flex gap-8 p-8 hover:bg-surface-1 transition-colors\">\n <img\n v-if=\"product.image\"\n :src=\"product.image\"\n :alt=\"product.name\"\n class=\"w-48 h-48 object-contain rounded shrink-0 border border-surface-3 bg-surface\" />\n <div class=\"flex flex-col gap-4 min-w-0 flex-1\">\n <strong class=\"font-bold text-12 text-word-1 truncate\">\n {{ product.name }}\n </strong>\n <span\n v-if=\"product.url\"\n class=\"text-10 text-word-4 truncate flex items-center gap-4\">\n <VvIcon name=\"ri:link\" class=\"shrink-0 text-12\" />\n <PkUrl :url=\"product.url\" />\n </span>\n <div class=\"flex items-center gap-sm flex-wrap text-12\">\n <span\n v-if=\"product.price\"\n class=\"font-semibold text-word-1\">\n {{ product.price }}\n </span>\n <span\n v-if=\"product.availability\"\n class=\"text-10 font-medium\"\n :class=\"getAvailabilityColor(product.availability)\">\n {{ product.availability }}\n </span>\n </div>\n <p\n v-if=\"product.description\"\n class=\"text-12 text-word-3 line-clamp-2\">\n {{ product.description }}\n </p>\n </div>\n </component>\n </li>\n </ul>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;EAII,IAAM,IAAQ,GAIR,IAAW,QACA,EAAM,KAatB,EAEK,KAAwB,MAA0B;AACpD,OAAI,CAAC,EACD,QAAO;GAEX,IAAM,IAAQ,EAAa,aAAY;AAsBvC,UApBI,EAAM,SAAS,WAAW,IAC1B,EAAM,SAAS,YAAY,IAC3B,EAAM,SAAS,cAAa,GAErB,iBAGP,EAAM,SAAS,eAAe,IAC9B,EAAM,SAAS,cAAc,IAC7B,EAAM,SAAS,kBAAiB,GAEzB,gBAGP,EAAM,SAAS,UAAU,IACzB,EAAM,SAAS,YAAY,IAC3B,EAAM,SAAS,WAAU,GAElB,iBAEJ;;;;UAMD,EAAA,OAAU,OAAO,UAAU,UAAA,GAAA,EADrC,EAiDK,MAjDL,GAiDK,EAAA,EAAA,GAAA,EA9CD,EA6CK,GAAA,MAAA,EA5C0B,EAAA,MAAS,MAAM,WAAlC,GAAS,YADrB,EA6CK,MAAA;IA3CA,KAAK;IACN,OAAM;aACN,EAwCY,EAvCH,EAAQ,MAAG,MAAA,MAAA,EAAA;IACf,MAAM,EAAQ;IACd,QAAQ,EAAQ,MAAG,WAAc,KAAA;IACjC,KAAK,EAAQ,MAAG,wBAA2B,KAAA;IAC5C,OAAM;;qBAKqF,CAHjF,EAAQ,SAAA,GAAA,EADlB,EAI2F,OAAA;;KAFtF,KAAK,EAAQ;KACb,KAAK,EAAQ;KACd,OAAM;iCACV,EA4BM,OA5BN,GA4BM;KA3BF,EAES,UAFT,GAES,EADF,EAAQ,KAAI,EAAA,EAAA;KAGT,EAAQ,OAAA,GAAA,EADlB,EAKO,QALP,GAKO,CAFH,EAAkD,GAAA;MAA1C,MAAK;MAAU,OAAM;SAC7B,EAA4B,GAAA,EAApB,KAAK,EAAQ,KAAA,EAAA,MAAA,GAAA,CAAA,MAAA,CAAA,CAAA,CAAA,IAAA,EAAA,IAAA,GAAA;KAEzB,EAYM,OAZN,GAYM,CAVQ,EAAQ,SAAA,GAAA,EADlB,EAIO,QAJP,GAIO,EADA,EAAQ,MAAK,EAAA,EAAA,IAAA,EAAA,IAAA,GAAA,EAGV,EAAQ,gBAAA,GAAA,EADlB,EAKO,QAAA;;MAHH,OAAK,EAAA,CAAC,uBACE,EAAqB,EAAQ,aAAY,CAAA,CAAA;UAC9C,EAAQ,aAAY,EAAA,EAAA,IAAA,EAAA,IAAA,GAAA,CAAA,CAAA;KAIrB,EAAQ,eAAA,GAAA,EADlB,EAII,KAJJ,GAII,EADG,EAAQ,YAAW,EAAA,EAAA,IAAA,EAAA,IAAA,GAAA"}
@@ -1,4 +1,4 @@
1
- import { u as e } from "./useChatbotStore-ys9uGP5v.js";
1
+ import { u as e } from "./useChatbotStore-C9xj40sY.js";
2
2
  import { computed as t, createCommentVNode as n, createElementBlock as r, createElementVNode as i, createVNode as a, defineComponent as o, onMounted as s, openBlock as c, ref as l, toDisplayString as u, unref as d, withCtx as f } from "vue";
3
3
  import { VvButton as p, VvButtonGroup as m, VvIcon as h } from "@volverjs/ui-vue/components";
4
4
  import { useClipboard as g } from "@vueuse/core";
@@ -69,4 +69,4 @@ var _ = {
69
69
  //#endregion
70
70
  export { w as n, T as t };
71
71
 
72
- //# sourceMappingURL=PkToolShowQrCode-BUyhM_MN.js.map
72
+ //# sourceMappingURL=PkToolShowQrCode-CTfDrItd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PkToolShowQrCode-BUyhM_MN.js","names":["$t"],"sources":["../../../../packages/components/src/chat/PkToolShowQrCode.vue","../../../../packages/components/src/chat/PkToolShowQrCode.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed, ref, onMounted } from 'vue'\n import { useClipboard } from '@vueuse/core'\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const { copy, copied } = useClipboard()\n\n const toolPart = computed(() => {\n const part = props.part as {\n input?: {\n content: string\n label?: string\n }\n }\n return part\n })\n\n const svgContent = ref('')\n const qrContainerRef = ref<HTMLElement>()\n\n onMounted(async () => {\n const content = toolPart.value.input?.content\n if (!content) {\n return\n }\n const { default: QRCode } = await import('qrcode')\n svgContent.value = await QRCode.toString(content, { type: 'svg' })\n })\n\n const downloadQr = async () => {\n const svgEl = qrContainerRef.value?.querySelector('svg')\n if (!svgEl) {\n return\n }\n const svgData = new XMLSerializer().serializeToString(svgEl)\n const svgBlob = new Blob([svgData], {\n type: 'image/svg+xml;charset=utf-8',\n })\n const svgUrl = URL.createObjectURL(svgBlob)\n\n const canvas = document.createElement('canvas')\n canvas.width = 512\n canvas.height = 512\n const ctx = canvas.getContext('2d')\n const img = new Image()\n img.onload = () => {\n ctx?.drawImage(img, 0, 0, 512, 512)\n URL.revokeObjectURL(svgUrl)\n const a = document.createElement('a')\n a.href = canvas.toDataURL('image/png')\n a.download = 'qrcode.png'\n a.click()\n }\n img.src = svgUrl\n }\n</script>\n\n<template>\n <div\n v-if=\"toolPart?.input\"\n class=\"border border-surface-3 rounded-xl w-full overflow-hidden\">\n <div\n class=\"px-sm py-6 bg-surface-1 text-12 border-b border-surface-3 text-word-3 flex items-center gap-8\">\n <VvIcon name=\"ri:qr-code-line\" class=\"text-16\" />\n <strong class=\"font-bold\">{{ $t('label.qrCode') }}</strong>\n <VvButtonGroup modifiers=\"compact\" class=\"ml-auto shrink-0\">\n <VvButton\n modifiers=\"action-quiet-small\"\n :icon=\"copied ? 'ri:check-line' : 'ri:file-copy-line'\"\n :label=\"copied ? $t('action.copied') : $t('action.copy')\"\n @click=\"copy(toolPart?.input?.content ?? '')\" />\n <VvButton\n modifiers=\"action-quiet-small\"\n icon=\"ri:download-line\"\n :label=\"$t('action.download')\"\n @click=\"downloadQr\" />\n </VvButtonGroup>\n </div>\n <div class=\"p-sm flex flex-col items-center\">\n <div ref=\"qrContainerRef\" class=\"w-144 h-144\" v-html=\"svgContent\" />\n <p\n v-if=\"toolPart.input.label\"\n class=\"text-12 text-word-3 text-center\">\n {{ toolPart.input.label }}\n </p>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\n import { computed, ref, onMounted } from 'vue'\n import { useClipboard } from '@vueuse/core'\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const { copy, copied } = useClipboard()\n\n const toolPart = computed(() => {\n const part = props.part as {\n input?: {\n content: string\n label?: string\n }\n }\n return part\n })\n\n const svgContent = ref('')\n const qrContainerRef = ref<HTMLElement>()\n\n onMounted(async () => {\n const content = toolPart.value.input?.content\n if (!content) {\n return\n }\n const { default: QRCode } = await import('qrcode')\n svgContent.value = await QRCode.toString(content, { type: 'svg' })\n })\n\n const downloadQr = async () => {\n const svgEl = qrContainerRef.value?.querySelector('svg')\n if (!svgEl) {\n return\n }\n const svgData = new XMLSerializer().serializeToString(svgEl)\n const svgBlob = new Blob([svgData], {\n type: 'image/svg+xml;charset=utf-8',\n })\n const svgUrl = URL.createObjectURL(svgBlob)\n\n const canvas = document.createElement('canvas')\n canvas.width = 512\n canvas.height = 512\n const ctx = canvas.getContext('2d')\n const img = new Image()\n img.onload = () => {\n ctx?.drawImage(img, 0, 0, 512, 512)\n URL.revokeObjectURL(svgUrl)\n const a = document.createElement('a')\n a.href = canvas.toDataURL('image/png')\n a.download = 'qrcode.png'\n a.click()\n }\n img.src = svgUrl\n }\n</script>\n\n<template>\n <div\n v-if=\"toolPart?.input\"\n class=\"border border-surface-3 rounded-xl w-full overflow-hidden\">\n <div\n class=\"px-sm py-6 bg-surface-1 text-12 border-b border-surface-3 text-word-3 flex items-center gap-8\">\n <VvIcon name=\"ri:qr-code-line\" class=\"text-16\" />\n <strong class=\"font-bold\">{{ $t('label.qrCode') }}</strong>\n <VvButtonGroup modifiers=\"compact\" class=\"ml-auto shrink-0\">\n <VvButton\n modifiers=\"action-quiet-small\"\n :icon=\"copied ? 'ri:check-line' : 'ri:file-copy-line'\"\n :label=\"copied ? $t('action.copied') : $t('action.copy')\"\n @click=\"copy(toolPart?.input?.content ?? '')\" />\n <VvButton\n modifiers=\"action-quiet-small\"\n icon=\"ri:download-line\"\n :label=\"$t('action.download')\"\n @click=\"downloadQr\" />\n </VvButtonGroup>\n </div>\n <div class=\"p-sm flex flex-col items-center\">\n <div ref=\"qrContainerRef\" class=\"w-144 h-144\" v-html=\"svgContent\" />\n <p\n v-if=\"toolPart.input.label\"\n class=\"text-12 text-word-3 text-center\">\n {{ toolPart.input.label }}\n </p>\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;EAII,IAAM,IAAQ,GAIR,EAAE,SAAM,cAAW,GAAa,EAEhC,IAAW,QACA,EAAM,KAOtB,EAEK,IAAa,EAAI,GAAE,EACnB,IAAiB,GAAiB;AAExC,IAAU,YAAY;GAClB,IAAM,IAAU,EAAS,MAAM,OAAO;AACtC,OAAI,CAAC,EACD;GAEJ,IAAM,EAAE,SAAS,MAAW,MAAM,OAAO;AACzC,KAAW,QAAQ,MAAM,EAAO,SAAS,GAAS,EAAE,MAAM,OAAO,CAAA;IACpE;EAED,IAAM,IAAa,YAAY;GAC3B,IAAM,IAAQ,EAAe,OAAO,cAAc,MAAK;AACvD,OAAI,CAAC,EACD;GAEJ,IAAM,IAAU,IAAI,eAAe,CAAC,kBAAkB,EAAK,EACrD,IAAU,IAAI,KAAK,CAAC,EAAQ,EAAE,EAChC,MAAM,+BACT,CAAA,EACK,IAAS,IAAI,gBAAgB,EAAO,EAEpC,IAAS,SAAS,cAAc,SAAQ;AAE9C,GADA,EAAO,QAAQ,KACf,EAAO,SAAS;GAChB,IAAM,IAAM,EAAO,WAAW,KAAI,EAC5B,IAAM,IAAI,OAAM;AAStB,GARA,EAAI,eAAe;AAEf,IADA,GAAK,UAAU,GAAK,GAAG,GAAG,KAAK,IAAG,EAClC,IAAI,gBAAgB,EAAM;IAC1B,IAAM,IAAI,SAAS,cAAc,IAAG;AAGpC,IAFA,EAAE,OAAO,EAAO,UAAU,YAAW,EACrC,EAAE,WAAW,cACb,EAAE,OAAM;MAEZ,EAAI,MAAM;;;;UAMJ,EAAA,OAAU,SAAA,GAAA,EADpB,EA4BM,OA5BN,GA4BM,CAzBF,EAgBM,OAhBN,GAgBM;IAdF,EAAiD,GAAA;KAAzC,MAAK;KAAkB,OAAM;;IACrC,EAA2D,UAA3D,GAA2D,EAA9BA,EAAAA,GAAE,eAAA,CAAA,EAAA,EAAA;IAC/B,EAWgB,GAAA;KAXD,WAAU;KAAU,OAAM;;sBAKe,CAJpD,EAIoD,GAAA;MAHhD,WAAU;MACT,MAAM,EAAA,EAAM,GAAA,kBAAA;MACZ,OAAO,EAAA,EAAM,GAAGA,EAAAA,GAAE,gBAAA,GAAoBA,EAAAA,GAAE,cAAA;MACxC,SAAK,AAAA,EAAA,QAAA,MAAE,EAAA,EAAI,CAAC,EAAA,OAAU,OAAO,WAAO,GAAA;qCACzC,EAI0B,GAAA;MAHtB,WAAU;MACV,MAAK;MACJ,OAAOA,EAAAA,GAAE,kBAAA;MACT,SAAO;;;;OAGpB,EAOM,OAPN,GAOM,CANF,EAAoE,OAAA;aAA3D;IAAJ,KAAI;IAAiB,OAAM;IAAc,WAAQ,EAAA;mBAE5C,EAAA,MAAS,MAAM,SAAA,GAAA,EADzB,EAII,KAJJ,GAII,EADG,EAAA,MAAS,MAAM,MAAK,EAAA,EAAA,IAAA,EAAA,IAAA,GAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EAAA,IAAA,GAAA"}
1
+ {"version":3,"file":"PkToolShowQrCode-CTfDrItd.js","names":["$t"],"sources":["../../../../packages/components/src/chat/PkToolShowQrCode.vue","../../../../packages/components/src/chat/PkToolShowQrCode.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed, ref, onMounted } from 'vue'\n import { useClipboard } from '@vueuse/core'\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const { copy, copied } = useClipboard()\n\n const toolPart = computed(() => {\n const part = props.part as {\n input?: {\n content: string\n label?: string\n }\n }\n return part\n })\n\n const svgContent = ref('')\n const qrContainerRef = ref<HTMLElement>()\n\n onMounted(async () => {\n const content = toolPart.value.input?.content\n if (!content) {\n return\n }\n const { default: QRCode } = await import('qrcode')\n svgContent.value = await QRCode.toString(content, { type: 'svg' })\n })\n\n const downloadQr = async () => {\n const svgEl = qrContainerRef.value?.querySelector('svg')\n if (!svgEl) {\n return\n }\n const svgData = new XMLSerializer().serializeToString(svgEl)\n const svgBlob = new Blob([svgData], {\n type: 'image/svg+xml;charset=utf-8',\n })\n const svgUrl = URL.createObjectURL(svgBlob)\n\n const canvas = document.createElement('canvas')\n canvas.width = 512\n canvas.height = 512\n const ctx = canvas.getContext('2d')\n const img = new Image()\n img.onload = () => {\n ctx?.drawImage(img, 0, 0, 512, 512)\n URL.revokeObjectURL(svgUrl)\n const a = document.createElement('a')\n a.href = canvas.toDataURL('image/png')\n a.download = 'qrcode.png'\n a.click()\n }\n img.src = svgUrl\n }\n</script>\n\n<template>\n <div\n v-if=\"toolPart?.input\"\n class=\"border border-surface-3 rounded-xl w-full overflow-hidden\">\n <div\n class=\"px-sm py-6 bg-surface-1 text-12 border-b border-surface-3 text-word-3 flex items-center gap-8\">\n <VvIcon name=\"ri:qr-code-line\" class=\"text-16\" />\n <strong class=\"font-bold\">{{ $t('label.qrCode') }}</strong>\n <VvButtonGroup modifiers=\"compact\" class=\"ml-auto shrink-0\">\n <VvButton\n modifiers=\"action-quiet-small\"\n :icon=\"copied ? 'ri:check-line' : 'ri:file-copy-line'\"\n :label=\"copied ? $t('action.copied') : $t('action.copy')\"\n @click=\"copy(toolPart?.input?.content ?? '')\" />\n <VvButton\n modifiers=\"action-quiet-small\"\n icon=\"ri:download-line\"\n :label=\"$t('action.download')\"\n @click=\"downloadQr\" />\n </VvButtonGroup>\n </div>\n <div class=\"p-sm flex flex-col items-center\">\n <div ref=\"qrContainerRef\" class=\"w-144 h-144\" v-html=\"svgContent\" />\n <p\n v-if=\"toolPart.input.label\"\n class=\"text-12 text-word-3 text-center\">\n {{ toolPart.input.label }}\n </p>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\n import { computed, ref, onMounted } from 'vue'\n import { useClipboard } from '@vueuse/core'\n\n const props = defineProps<{\n part: unknown\n }>()\n\n const { copy, copied } = useClipboard()\n\n const toolPart = computed(() => {\n const part = props.part as {\n input?: {\n content: string\n label?: string\n }\n }\n return part\n })\n\n const svgContent = ref('')\n const qrContainerRef = ref<HTMLElement>()\n\n onMounted(async () => {\n const content = toolPart.value.input?.content\n if (!content) {\n return\n }\n const { default: QRCode } = await import('qrcode')\n svgContent.value = await QRCode.toString(content, { type: 'svg' })\n })\n\n const downloadQr = async () => {\n const svgEl = qrContainerRef.value?.querySelector('svg')\n if (!svgEl) {\n return\n }\n const svgData = new XMLSerializer().serializeToString(svgEl)\n const svgBlob = new Blob([svgData], {\n type: 'image/svg+xml;charset=utf-8',\n })\n const svgUrl = URL.createObjectURL(svgBlob)\n\n const canvas = document.createElement('canvas')\n canvas.width = 512\n canvas.height = 512\n const ctx = canvas.getContext('2d')\n const img = new Image()\n img.onload = () => {\n ctx?.drawImage(img, 0, 0, 512, 512)\n URL.revokeObjectURL(svgUrl)\n const a = document.createElement('a')\n a.href = canvas.toDataURL('image/png')\n a.download = 'qrcode.png'\n a.click()\n }\n img.src = svgUrl\n }\n</script>\n\n<template>\n <div\n v-if=\"toolPart?.input\"\n class=\"border border-surface-3 rounded-xl w-full overflow-hidden\">\n <div\n class=\"px-sm py-6 bg-surface-1 text-12 border-b border-surface-3 text-word-3 flex items-center gap-8\">\n <VvIcon name=\"ri:qr-code-line\" class=\"text-16\" />\n <strong class=\"font-bold\">{{ $t('label.qrCode') }}</strong>\n <VvButtonGroup modifiers=\"compact\" class=\"ml-auto shrink-0\">\n <VvButton\n modifiers=\"action-quiet-small\"\n :icon=\"copied ? 'ri:check-line' : 'ri:file-copy-line'\"\n :label=\"copied ? $t('action.copied') : $t('action.copy')\"\n @click=\"copy(toolPart?.input?.content ?? '')\" />\n <VvButton\n modifiers=\"action-quiet-small\"\n icon=\"ri:download-line\"\n :label=\"$t('action.download')\"\n @click=\"downloadQr\" />\n </VvButtonGroup>\n </div>\n <div class=\"p-sm flex flex-col items-center\">\n <div ref=\"qrContainerRef\" class=\"w-144 h-144\" v-html=\"svgContent\" />\n <p\n v-if=\"toolPart.input.label\"\n class=\"text-12 text-word-3 text-center\">\n {{ toolPart.input.label }}\n </p>\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;EAII,IAAM,IAAQ,GAIR,EAAE,SAAM,cAAW,GAAa,EAEhC,IAAW,QACA,EAAM,KAOtB,EAEK,IAAa,EAAI,GAAE,EACnB,IAAiB,GAAiB;AAExC,IAAU,YAAY;GAClB,IAAM,IAAU,EAAS,MAAM,OAAO;AACtC,OAAI,CAAC,EACD;GAEJ,IAAM,EAAE,SAAS,MAAW,MAAM,OAAO;AACzC,KAAW,QAAQ,MAAM,EAAO,SAAS,GAAS,EAAE,MAAM,OAAO,CAAA;IACpE;EAED,IAAM,IAAa,YAAY;GAC3B,IAAM,IAAQ,EAAe,OAAO,cAAc,MAAK;AACvD,OAAI,CAAC,EACD;GAEJ,IAAM,IAAU,IAAI,eAAe,CAAC,kBAAkB,EAAK,EACrD,IAAU,IAAI,KAAK,CAAC,EAAQ,EAAE,EAChC,MAAM,+BACT,CAAA,EACK,IAAS,IAAI,gBAAgB,EAAO,EAEpC,IAAS,SAAS,cAAc,SAAQ;AAE9C,GADA,EAAO,QAAQ,KACf,EAAO,SAAS;GAChB,IAAM,IAAM,EAAO,WAAW,KAAI,EAC5B,IAAM,IAAI,OAAM;AAStB,GARA,EAAI,eAAe;AAEf,IADA,GAAK,UAAU,GAAK,GAAG,GAAG,KAAK,IAAG,EAClC,IAAI,gBAAgB,EAAM;IAC1B,IAAM,IAAI,SAAS,cAAc,IAAG;AAGpC,IAFA,EAAE,OAAO,EAAO,UAAU,YAAW,EACrC,EAAE,WAAW,cACb,EAAE,OAAM;MAEZ,EAAI,MAAM;;;;UAMJ,EAAA,OAAU,SAAA,GAAA,EADpB,EA4BM,OA5BN,GA4BM,CAzBF,EAgBM,OAhBN,GAgBM;IAdF,EAAiD,GAAA;KAAzC,MAAK;KAAkB,OAAM;;IACrC,EAA2D,UAA3D,GAA2D,EAA9BA,EAAAA,GAAE,eAAA,CAAA,EAAA,EAAA;IAC/B,EAWgB,GAAA;KAXD,WAAU;KAAU,OAAM;;sBAKe,CAJpD,EAIoD,GAAA;MAHhD,WAAU;MACT,MAAM,EAAA,EAAM,GAAA,kBAAA;MACZ,OAAO,EAAA,EAAM,GAAGA,EAAAA,GAAE,gBAAA,GAAoBA,EAAAA,GAAE,cAAA;MACxC,SAAK,AAAA,EAAA,QAAA,MAAE,EAAA,EAAI,CAAC,EAAA,OAAU,OAAO,WAAO,GAAA;qCACzC,EAI0B,GAAA;MAHtB,WAAU;MACV,MAAK;MACJ,OAAOA,EAAAA,GAAE,kBAAA;MACT,SAAO;;;;OAGpB,EAOM,OAPN,GAOM,CANF,EAAoE,OAAA;aAA3D;IAAJ,KAAI;IAAiB,OAAM;IAAc,WAAQ,EAAA;mBAE5C,EAAA,MAAS,MAAM,SAAA,GAAA,EADzB,EAII,KAJJ,GAII,EADG,EAAA,MAAS,MAAM,MAAK,EAAA,EAAA,IAAA,EAAA,IAAA,GAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EAAA,IAAA,GAAA"}