jodit-pro 4.11.19 → 4.11.22

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 (333) hide show
  1. package/es2015/jodit.css +2 -2
  2. package/es2015/jodit.fat.min.css +1 -1
  3. package/es2015/jodit.fat.min.js +17 -14
  4. package/es2015/jodit.js +45 -13
  5. package/es2015/jodit.min.css +1 -1
  6. package/es2015/jodit.min.js +6 -6
  7. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.css +239 -168
  8. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.js +356 -75
  9. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.min.css +1 -1
  10. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.min.js +42 -39
  11. package/es2015/plugins/autocomplete/autocomplete.js +1 -1
  12. package/es2015/plugins/autocomplete/autocomplete.min.js +1 -1
  13. package/es2015/plugins/backup/backup.css +1 -1
  14. package/es2015/plugins/backup/backup.js +1 -1
  15. package/es2015/plugins/backup/backup.min.js +1 -1
  16. package/es2015/plugins/button-generator/button-generator.css +1 -1
  17. package/es2015/plugins/button-generator/button-generator.js +1 -1
  18. package/es2015/plugins/button-generator/button-generator.min.js +1 -1
  19. package/es2015/plugins/change-case/change-case.js +1 -1
  20. package/es2015/plugins/change-case/change-case.min.js +1 -1
  21. package/es2015/plugins/color-picker/color-picker.css +1 -1
  22. package/es2015/plugins/color-picker/color-picker.js +1 -1
  23. package/es2015/plugins/color-picker/color-picker.min.js +1 -1
  24. package/es2015/plugins/emoji/emoji.css +1 -1
  25. package/es2015/plugins/emoji/emoji.js +1 -1
  26. package/es2015/plugins/emoji/emoji.min.js +1 -1
  27. package/es2015/plugins/export-docs/export-docs.js +1 -1
  28. package/es2015/plugins/export-docs/export-docs.min.js +1 -1
  29. package/es2015/plugins/finder/finder.css +1 -1
  30. package/es2015/plugins/finder/finder.js +10 -4
  31. package/es2015/plugins/finder/finder.min.js +2 -2
  32. package/es2015/plugins/google-maps/google-maps.css +1 -1
  33. package/es2015/plugins/google-maps/google-maps.js +1 -1
  34. package/es2015/plugins/google-maps/google-maps.min.js +1 -1
  35. package/es2015/plugins/google-search/google-search.js +1 -1
  36. package/es2015/plugins/google-search/google-search.min.js +1 -1
  37. package/es2015/plugins/highlight-signature/highlight-signature.js +1 -1
  38. package/es2015/plugins/highlight-signature/highlight-signature.min.js +1 -1
  39. package/es2015/plugins/iframe-editor/iframe-editor.css +1 -1
  40. package/es2015/plugins/iframe-editor/iframe-editor.js +1 -1
  41. package/es2015/plugins/iframe-editor/iframe-editor.min.js +1 -1
  42. package/es2015/plugins/keyboard/keyboard.css +1 -1
  43. package/es2015/plugins/keyboard/keyboard.js +1 -1
  44. package/es2015/plugins/keyboard/keyboard.min.js +1 -1
  45. package/es2015/plugins/mobile-view/mobile-view.js +1 -1
  46. package/es2015/plugins/mobile-view/mobile-view.min.js +1 -1
  47. package/es2015/plugins/page-break/page-break.js +1 -1
  48. package/es2015/plugins/page-break/page-break.min.js +1 -1
  49. package/es2015/plugins/paste-code/paste-code.css +1 -1
  50. package/es2015/plugins/paste-code/paste-code.js +1 -1
  51. package/es2015/plugins/paste-code/paste-code.min.js +1 -1
  52. package/es2015/plugins/paste-from-word/paste-from-word.js +1 -1
  53. package/es2015/plugins/paste-from-word/paste-from-word.min.js +1 -1
  54. package/es2015/plugins/show-blocks/show-blocks.js +1 -1
  55. package/es2015/plugins/show-blocks/show-blocks.min.js +1 -1
  56. package/es2015/plugins/style/style.css +1 -1
  57. package/es2015/plugins/style/style.js +1 -1
  58. package/es2015/plugins/style/style.min.js +1 -1
  59. package/es2015/plugins/templates/templates.css +1 -1
  60. package/es2015/plugins/templates/templates.js +1 -1
  61. package/es2015/plugins/templates/templates.min.js +1 -1
  62. package/es2015/plugins/todo-list/todo-list.css +1 -1
  63. package/es2015/plugins/todo-list/todo-list.js +1 -1
  64. package/es2015/plugins/todo-list/todo-list.min.js +1 -1
  65. package/es2015/plugins/translate/translate.css +1 -1
  66. package/es2015/plugins/translate/translate.js +1 -1
  67. package/es2015/plugins/translate/translate.min.js +1 -1
  68. package/es2015/plugins/tune-block/tune-block.css +1 -1
  69. package/es2015/plugins/tune-block/tune-block.js +1 -1
  70. package/es2015/plugins/tune-block/tune-block.min.js +1 -1
  71. package/es2018/jodit.fat.min.css +1 -1
  72. package/es2018/jodit.fat.min.js +17 -14
  73. package/es2018/jodit.min.css +1 -1
  74. package/es2018/jodit.min.js +6 -6
  75. package/es2018/plugins/ai-assistant-pro/ai-assistant-pro.min.css +1 -1
  76. package/es2018/plugins/ai-assistant-pro/ai-assistant-pro.min.js +49 -46
  77. package/es2018/plugins/autocomplete/autocomplete.min.js +1 -1
  78. package/es2018/plugins/backup/backup.min.js +1 -1
  79. package/es2018/plugins/button-generator/button-generator.min.js +1 -1
  80. package/es2018/plugins/change-case/change-case.min.js +1 -1
  81. package/es2018/plugins/color-picker/color-picker.min.js +1 -1
  82. package/es2018/plugins/emoji/emoji.min.js +1 -1
  83. package/es2018/plugins/export-docs/export-docs.min.js +1 -1
  84. package/es2018/plugins/finder/finder.min.js +2 -2
  85. package/es2018/plugins/google-maps/google-maps.min.js +1 -1
  86. package/es2018/plugins/google-search/google-search.min.js +1 -1
  87. package/es2018/plugins/highlight-signature/highlight-signature.min.js +1 -1
  88. package/es2018/plugins/iframe-editor/iframe-editor.min.js +1 -1
  89. package/es2018/plugins/keyboard/keyboard.min.js +1 -1
  90. package/es2018/plugins/mobile-view/mobile-view.min.js +1 -1
  91. package/es2018/plugins/page-break/page-break.min.js +1 -1
  92. package/es2018/plugins/paste-code/paste-code.min.js +1 -1
  93. package/es2018/plugins/paste-from-word/paste-from-word.min.js +1 -1
  94. package/es2018/plugins/show-blocks/show-blocks.min.js +1 -1
  95. package/es2018/plugins/style/style.min.js +1 -1
  96. package/es2018/plugins/templates/templates.min.js +1 -1
  97. package/es2018/plugins/todo-list/todo-list.min.js +1 -1
  98. package/es2018/plugins/translate/translate.min.js +1 -1
  99. package/es2018/plugins/tune-block/tune-block.min.js +1 -1
  100. package/es2021/jodit.css +2 -2
  101. package/es2021/jodit.fat.min.css +1 -1
  102. package/es2021/jodit.fat.min.js +18 -15
  103. package/es2021/jodit.js +45 -13
  104. package/es2021/jodit.min.css +1 -1
  105. package/es2021/jodit.min.js +6 -6
  106. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.css +239 -168
  107. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.js +350 -73
  108. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.min.css +1 -1
  109. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.min.js +24 -21
  110. package/es2021/plugins/autocomplete/autocomplete.js +1 -1
  111. package/es2021/plugins/autocomplete/autocomplete.min.js +1 -1
  112. package/es2021/plugins/backup/backup.css +1 -1
  113. package/es2021/plugins/backup/backup.js +1 -1
  114. package/es2021/plugins/backup/backup.min.js +1 -1
  115. package/es2021/plugins/button-generator/button-generator.css +1 -1
  116. package/es2021/plugins/button-generator/button-generator.js +1 -1
  117. package/es2021/plugins/button-generator/button-generator.min.js +1 -1
  118. package/es2021/plugins/change-case/change-case.js +1 -1
  119. package/es2021/plugins/change-case/change-case.min.js +1 -1
  120. package/es2021/plugins/color-picker/color-picker.css +1 -1
  121. package/es2021/plugins/color-picker/color-picker.js +1 -1
  122. package/es2021/plugins/color-picker/color-picker.min.js +1 -1
  123. package/es2021/plugins/emoji/emoji.css +1 -1
  124. package/es2021/plugins/emoji/emoji.js +1 -1
  125. package/es2021/plugins/emoji/emoji.min.js +1 -1
  126. package/es2021/plugins/export-docs/export-docs.js +1 -1
  127. package/es2021/plugins/export-docs/export-docs.min.js +1 -1
  128. package/es2021/plugins/finder/finder.css +1 -1
  129. package/es2021/plugins/finder/finder.js +9 -4
  130. package/es2021/plugins/finder/finder.min.js +2 -2
  131. package/es2021/plugins/google-maps/google-maps.css +1 -1
  132. package/es2021/plugins/google-maps/google-maps.js +1 -1
  133. package/es2021/plugins/google-maps/google-maps.min.js +1 -1
  134. package/es2021/plugins/google-search/google-search.js +1 -1
  135. package/es2021/plugins/google-search/google-search.min.js +1 -1
  136. package/es2021/plugins/highlight-signature/highlight-signature.js +1 -1
  137. package/es2021/plugins/highlight-signature/highlight-signature.min.js +1 -1
  138. package/es2021/plugins/iframe-editor/iframe-editor.css +1 -1
  139. package/es2021/plugins/iframe-editor/iframe-editor.js +1 -1
  140. package/es2021/plugins/iframe-editor/iframe-editor.min.js +1 -1
  141. package/es2021/plugins/keyboard/keyboard.css +1 -1
  142. package/es2021/plugins/keyboard/keyboard.js +1 -1
  143. package/es2021/plugins/keyboard/keyboard.min.js +1 -1
  144. package/es2021/plugins/mobile-view/mobile-view.js +1 -1
  145. package/es2021/plugins/mobile-view/mobile-view.min.js +1 -1
  146. package/es2021/plugins/page-break/page-break.js +1 -1
  147. package/es2021/plugins/page-break/page-break.min.js +1 -1
  148. package/es2021/plugins/paste-code/paste-code.css +1 -1
  149. package/es2021/plugins/paste-code/paste-code.js +1 -1
  150. package/es2021/plugins/paste-code/paste-code.min.js +1 -1
  151. package/es2021/plugins/paste-from-word/paste-from-word.js +1 -1
  152. package/es2021/plugins/paste-from-word/paste-from-word.min.js +1 -1
  153. package/es2021/plugins/show-blocks/show-blocks.js +1 -1
  154. package/es2021/plugins/show-blocks/show-blocks.min.js +1 -1
  155. package/es2021/plugins/style/style.css +1 -1
  156. package/es2021/plugins/style/style.js +1 -1
  157. package/es2021/plugins/style/style.min.js +1 -1
  158. package/es2021/plugins/templates/templates.css +1 -1
  159. package/es2021/plugins/templates/templates.js +1 -1
  160. package/es2021/plugins/templates/templates.min.js +1 -1
  161. package/es2021/plugins/todo-list/todo-list.css +1 -1
  162. package/es2021/plugins/todo-list/todo-list.js +1 -1
  163. package/es2021/plugins/todo-list/todo-list.min.js +1 -1
  164. package/es2021/plugins/translate/translate.css +1 -1
  165. package/es2021/plugins/translate/translate.js +1 -1
  166. package/es2021/plugins/translate/translate.min.js +1 -1
  167. package/es2021/plugins/tune-block/tune-block.css +1 -1
  168. package/es2021/plugins/tune-block/tune-block.js +1 -1
  169. package/es2021/plugins/tune-block/tune-block.min.js +1 -1
  170. package/es2021.en/jodit.css +2 -2
  171. package/es2021.en/jodit.fat.min.css +1 -1
  172. package/es2021.en/jodit.fat.min.js +18 -15
  173. package/es2021.en/jodit.js +45 -13
  174. package/es2021.en/jodit.min.css +1 -1
  175. package/es2021.en/jodit.min.js +6 -6
  176. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.css +239 -168
  177. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.js +350 -73
  178. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.min.css +1 -1
  179. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.min.js +24 -21
  180. package/es2021.en/plugins/autocomplete/autocomplete.js +1 -1
  181. package/es2021.en/plugins/autocomplete/autocomplete.min.js +1 -1
  182. package/es2021.en/plugins/backup/backup.css +1 -1
  183. package/es2021.en/plugins/backup/backup.js +1 -1
  184. package/es2021.en/plugins/backup/backup.min.js +1 -1
  185. package/es2021.en/plugins/button-generator/button-generator.css +1 -1
  186. package/es2021.en/plugins/button-generator/button-generator.js +1 -1
  187. package/es2021.en/plugins/button-generator/button-generator.min.js +1 -1
  188. package/es2021.en/plugins/change-case/change-case.js +1 -1
  189. package/es2021.en/plugins/change-case/change-case.min.js +1 -1
  190. package/es2021.en/plugins/color-picker/color-picker.css +1 -1
  191. package/es2021.en/plugins/color-picker/color-picker.js +1 -1
  192. package/es2021.en/plugins/color-picker/color-picker.min.js +1 -1
  193. package/es2021.en/plugins/emoji/emoji.css +1 -1
  194. package/es2021.en/plugins/emoji/emoji.js +1 -1
  195. package/es2021.en/plugins/emoji/emoji.min.js +1 -1
  196. package/es2021.en/plugins/export-docs/export-docs.js +1 -1
  197. package/es2021.en/plugins/export-docs/export-docs.min.js +1 -1
  198. package/es2021.en/plugins/finder/finder.css +1 -1
  199. package/es2021.en/plugins/finder/finder.js +9 -4
  200. package/es2021.en/plugins/finder/finder.min.js +2 -2
  201. package/es2021.en/plugins/google-maps/google-maps.css +1 -1
  202. package/es2021.en/plugins/google-maps/google-maps.js +1 -1
  203. package/es2021.en/plugins/google-maps/google-maps.min.js +1 -1
  204. package/es2021.en/plugins/google-search/google-search.js +1 -1
  205. package/es2021.en/plugins/google-search/google-search.min.js +1 -1
  206. package/es2021.en/plugins/highlight-signature/highlight-signature.js +1 -1
  207. package/es2021.en/plugins/highlight-signature/highlight-signature.min.js +1 -1
  208. package/es2021.en/plugins/iframe-editor/iframe-editor.css +1 -1
  209. package/es2021.en/plugins/iframe-editor/iframe-editor.js +1 -1
  210. package/es2021.en/plugins/iframe-editor/iframe-editor.min.js +1 -1
  211. package/es2021.en/plugins/keyboard/keyboard.css +1 -1
  212. package/es2021.en/plugins/keyboard/keyboard.js +1 -1
  213. package/es2021.en/plugins/keyboard/keyboard.min.js +1 -1
  214. package/es2021.en/plugins/mobile-view/mobile-view.js +1 -1
  215. package/es2021.en/plugins/mobile-view/mobile-view.min.js +1 -1
  216. package/es2021.en/plugins/page-break/page-break.js +1 -1
  217. package/es2021.en/plugins/page-break/page-break.min.js +1 -1
  218. package/es2021.en/plugins/paste-code/paste-code.css +1 -1
  219. package/es2021.en/plugins/paste-code/paste-code.js +1 -1
  220. package/es2021.en/plugins/paste-code/paste-code.min.js +1 -1
  221. package/es2021.en/plugins/paste-from-word/paste-from-word.js +1 -1
  222. package/es2021.en/plugins/paste-from-word/paste-from-word.min.js +1 -1
  223. package/es2021.en/plugins/show-blocks/show-blocks.js +1 -1
  224. package/es2021.en/plugins/show-blocks/show-blocks.min.js +1 -1
  225. package/es2021.en/plugins/style/style.css +1 -1
  226. package/es2021.en/plugins/style/style.js +1 -1
  227. package/es2021.en/plugins/style/style.min.js +1 -1
  228. package/es2021.en/plugins/templates/templates.css +1 -1
  229. package/es2021.en/plugins/templates/templates.js +1 -1
  230. package/es2021.en/plugins/templates/templates.min.js +1 -1
  231. package/es2021.en/plugins/todo-list/todo-list.css +1 -1
  232. package/es2021.en/plugins/todo-list/todo-list.js +1 -1
  233. package/es2021.en/plugins/todo-list/todo-list.min.js +1 -1
  234. package/es2021.en/plugins/translate/translate.css +1 -1
  235. package/es2021.en/plugins/translate/translate.js +1 -1
  236. package/es2021.en/plugins/translate/translate.min.js +1 -1
  237. package/es2021.en/plugins/tune-block/tune-block.css +1 -1
  238. package/es2021.en/plugins/tune-block/tune-block.js +1 -1
  239. package/es2021.en/plugins/tune-block/tune-block.min.js +1 -1
  240. package/es5/jodit.css +3 -3
  241. package/es5/jodit.fat.min.css +1 -1
  242. package/es5/jodit.fat.min.js +2 -2
  243. package/es5/jodit.js +45 -13
  244. package/es5/jodit.min.css +3 -3
  245. package/es5/jodit.min.js +2 -2
  246. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.css +239 -168
  247. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.js +526 -111
  248. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.min.css +1 -1
  249. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.min.js +2 -2
  250. package/es5/plugins/autocomplete/autocomplete.js +1 -1
  251. package/es5/plugins/autocomplete/autocomplete.min.js +1 -1
  252. package/es5/plugins/backup/backup.css +1 -1
  253. package/es5/plugins/backup/backup.js +1 -1
  254. package/es5/plugins/backup/backup.min.js +1 -1
  255. package/es5/plugins/button-generator/button-generator.css +1 -1
  256. package/es5/plugins/button-generator/button-generator.js +1 -1
  257. package/es5/plugins/button-generator/button-generator.min.js +1 -1
  258. package/es5/plugins/change-case/change-case.js +1 -1
  259. package/es5/plugins/change-case/change-case.min.js +1 -1
  260. package/es5/plugins/color-picker/color-picker.css +1 -1
  261. package/es5/plugins/color-picker/color-picker.js +1 -1
  262. package/es5/plugins/color-picker/color-picker.min.js +1 -1
  263. package/es5/plugins/emoji/emoji.css +1 -1
  264. package/es5/plugins/emoji/emoji.js +1 -1
  265. package/es5/plugins/emoji/emoji.min.js +1 -1
  266. package/es5/plugins/export-docs/export-docs.js +1 -1
  267. package/es5/plugins/export-docs/export-docs.min.js +1 -1
  268. package/es5/plugins/finder/finder.css +1 -1
  269. package/es5/plugins/finder/finder.js +10 -5
  270. package/es5/plugins/finder/finder.min.js +2 -2
  271. package/es5/plugins/google-maps/google-maps.css +1 -1
  272. package/es5/plugins/google-maps/google-maps.js +1 -1
  273. package/es5/plugins/google-maps/google-maps.min.js +1 -1
  274. package/es5/plugins/google-search/google-search.js +1 -1
  275. package/es5/plugins/google-search/google-search.min.js +1 -1
  276. package/es5/plugins/highlight-signature/highlight-signature.js +1 -1
  277. package/es5/plugins/highlight-signature/highlight-signature.min.js +1 -1
  278. package/es5/plugins/iframe-editor/iframe-editor.css +1 -1
  279. package/es5/plugins/iframe-editor/iframe-editor.js +1 -1
  280. package/es5/plugins/iframe-editor/iframe-editor.min.js +1 -1
  281. package/es5/plugins/keyboard/keyboard.css +1 -1
  282. package/es5/plugins/keyboard/keyboard.js +1 -1
  283. package/es5/plugins/keyboard/keyboard.min.js +1 -1
  284. package/es5/plugins/mobile-view/mobile-view.js +1 -1
  285. package/es5/plugins/mobile-view/mobile-view.min.js +1 -1
  286. package/es5/plugins/page-break/page-break.js +1 -1
  287. package/es5/plugins/page-break/page-break.min.js +1 -1
  288. package/es5/plugins/paste-code/paste-code.css +1 -1
  289. package/es5/plugins/paste-code/paste-code.js +1 -1
  290. package/es5/plugins/paste-code/paste-code.min.js +1 -1
  291. package/es5/plugins/paste-from-word/paste-from-word.js +1 -1
  292. package/es5/plugins/paste-from-word/paste-from-word.min.js +1 -1
  293. package/es5/plugins/show-blocks/show-blocks.js +1 -1
  294. package/es5/plugins/show-blocks/show-blocks.min.js +1 -1
  295. package/es5/plugins/style/style.css +1 -1
  296. package/es5/plugins/style/style.js +1 -1
  297. package/es5/plugins/style/style.min.js +1 -1
  298. package/es5/plugins/templates/templates.css +1 -1
  299. package/es5/plugins/templates/templates.js +1 -1
  300. package/es5/plugins/templates/templates.min.js +1 -1
  301. package/es5/plugins/todo-list/todo-list.css +1 -1
  302. package/es5/plugins/todo-list/todo-list.js +1 -1
  303. package/es5/plugins/todo-list/todo-list.min.js +1 -1
  304. package/es5/plugins/translate/translate.css +1 -1
  305. package/es5/plugins/translate/translate.js +1 -1
  306. package/es5/plugins/translate/translate.min.js +1 -1
  307. package/es5/plugins/tune-block/tune-block.css +1 -1
  308. package/es5/plugins/tune-block/tune-block.js +1 -1
  309. package/es5/plugins/tune-block/tune-block.min.js +1 -1
  310. package/es5/polyfills.fat.min.js +1 -1
  311. package/es5/polyfills.js +1 -1
  312. package/es5/polyfills.min.js +1 -1
  313. package/esm/plugins/ai-assistant-pro/ai-assistant-pro.d.ts +10 -0
  314. package/esm/plugins/ai-assistant-pro/ai-assistant-pro.js +2 -2
  315. package/esm/plugins/ai-assistant-pro/config.js +1 -1
  316. package/esm/plugins/ai-assistant-pro/core/conversation.d.ts +10 -1
  317. package/esm/plugins/ai-assistant-pro/core/conversation.js +1 -1
  318. package/esm/plugins/ai-assistant-pro/icons/chevron-right.svg.js +1 -0
  319. package/esm/plugins/ai-assistant-pro/icons/shield.svg.js +1 -0
  320. package/esm/plugins/ai-assistant-pro/icons/tool-bolt.svg.js +1 -0
  321. package/esm/plugins/ai-assistant-pro/ui/conversation-list/conversation-list-item.d.ts +6 -1
  322. package/esm/plugins/ai-assistant-pro/ui/conversation-list/conversation-list-item.js +1 -1
  323. package/esm/plugins/ai-assistant-pro/ui/input-area/input-area.js +1 -1
  324. package/esm/plugins/ai-assistant-pro/ui/main-panel/main-panel.d.ts +6 -0
  325. package/esm/plugins/ai-assistant-pro/ui/main-panel/main-panel.js +2 -2
  326. package/esm/plugins/ai-assistant-pro/ui/message-list/item/message-list-item.js +1 -1
  327. package/esm/plugins/ai-assistant-pro/ui/permission-request/permission-request.js +7 -4
  328. package/esm/plugins/finder/helpers/loading-manager.js +1 -1
  329. package/package.json +1 -1
  330. package/types/plugins/ai-assistant-pro/ai-assistant-pro.d.ts +10 -0
  331. package/types/plugins/ai-assistant-pro/core/conversation.d.ts +10 -1
  332. package/types/plugins/ai-assistant-pro/ui/conversation-list/conversation-list-item.d.ts +6 -1
  333. package/types/plugins/ai-assistant-pro/ui/main-panel/main-panel.d.ts +6 -0
@@ -1 +1 @@
1
- var p=Object.defineProperty;var h=(r,t)=>p(r,"name",{value:t,configurable:!0});var a,l=function(r,t,n,o){var s=arguments.length,e=s<3?t:o===null?o=Object.getOwnPropertyDescriptor(t,n):o,i;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")e=Reflect.decorate(r,t,n,o);else for(var d=r.length-1;d>=0;d--)(i=r[d])&&(e=(s<3?i(e):s>3?i(t,n,e):i(t,n))||e);return s>3&&e&&Object.defineProperty(t,n,e),e};import{autobind as v,component as u,watch as m}from"jodit/esm/core/decorators/index.js";import{UIElement as f}from"jodit/esm/core/ui/index.js";import{UIButton as j}from"jodit/esm/core/ui/button/index.js";import{Confirm as _}from"jodit/esm/modules/dialog/confirm.js";let c=(a=class extends f{className(){return"UIConversationListItem"}constructor(t,n,o=!1,s){super(t),this.opts=s,this.conversation=n,this.isActive=o,this.updateContent()}render(){return'<div class="jodit-ui-conversation-list__item"></div>'}setActive(t){this.isActive=t,this.updateContent()}updateContent(){const t=this.container;t.innerHTML="",t.setAttribute("data-id",this.conversation.id),this.isActive?t.classList.add("jodit-ui-conversation-list__item_active"):t.classList.remove("jodit-ui-conversation-list__item_active");const n=this.j.c.div("jodit-ui-conversation-list__item-avatar");n.textContent="AI",t.appendChild(n);const o=this.j.c.div("jodit-ui-conversation-list__item-wrapper"),s=this.j.c.div("jodit-ui-conversation-list__item-content"),e=this.j.c.div("jodit-ui-conversation-list__item-title");if(e.textContent=this.conversation.title,s.appendChild(e),this.opts.showTimestamps){const i=this.j.c.div("jodit-ui-conversation-list__item-meta");i.textContent=this.opts.formatTimestamp(this.conversation.updated,this.j.i18n.bind(this.j)),s.appendChild(i)}if(o.appendChild(s),this.conversation.messageCount>0){const i=this.j.c.div("jodit-ui-conversation-list__item-badge");i.textContent=String(this.conversation.messageCount),o.appendChild(i)}t.appendChild(o),this.deleteButton||(this.deleteButton=new j(this.j,{icon:{name:"bin"},variant:"outline",size:"tiny",tooltip:"Delete conversation"}),this.deleteButton.container.classList.add("jodit-ui-conversation-list__item-delete"),this.deleteButton.onAction(i=>{i.stopPropagation(),this.onDelete()})),t.appendChild(this.deleteButton.container)}onClick(){this.j.e.fire("selectConversation.ai-assistant-pro",this.conversation.id)}onDelete(){_.call(void 0,this.j.i18n("Are you sure you want to delete this conversation?"),this.j.i18n("Delete conversation"),t=>{t&&this.j.e.fire("deleteConversation.ai-assistant-pro",this.conversation.id)})}destruct(){var t;(t=this.deleteButton)===null||t===void 0||t.destruct(),super.destruct()}},h(a,"UIConversationListItem"),a);l([m("container:click")],c.prototype,"onClick",null),l([v],c.prototype,"onDelete",null),c=l([u],c);export{c as UIConversationListItem};
1
+ var p=Object.defineProperty;var l=(r,t)=>p(r,"name",{value:t,configurable:!0});var c,h=function(r,t,n,i){var o=arguments.length,e=o<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,n):i,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")e=Reflect.decorate(r,t,n,i);else for(var u=r.length-1;u>=0;u--)(s=r[u])&&(e=(o<3?s(e):o>3?s(t,n,e):s(t,n))||e);return o>3&&e&&Object.defineProperty(t,n,e),e};import{autobind as d,component as m,watch as v}from"jodit/esm/core/decorators/index.js";import{UIElement as f}from"jodit/esm/core/ui/index.js";import{UIButton as j}from"jodit/esm/core/ui/button/index.js";import{ContextMenu as C}from"jodit/esm/modules/context-menu/context-menu.js";let a=(c=class extends f{className(){return"UIConversationListItem"}constructor(t,n,i=!1,o){super(t),this.opts=o,this.actionsButton=null,this.contextMenu=null,this.titleElement=null,this.isRenaming=!1,this.conversation=n,this.isActive=i,this.contextMenu=new C(this.j),this.updateContent()}render(){return'<div class="jodit-ui-conversation-list__item"></div>'}setActive(t){this.isActive=t,this.updateContent()}updateContent(){const t=this.container;t.innerHTML="",t.setAttribute("data-id",this.conversation.id),this.isActive?t.classList.add("jodit-ui-conversation-list__item_active"):t.classList.remove("jodit-ui-conversation-list__item_active");const n=this.j.c.div("jodit-ui-conversation-list__item-avatar");n.textContent="AI",t.appendChild(n);const i=this.j.c.div("jodit-ui-conversation-list__item-wrapper"),o=this.j.c.div("jodit-ui-conversation-list__item-content"),e=this.j.c.div("jodit-ui-conversation-list__item-title");if(e.textContent=this.conversation.title,this.titleElement=e,o.appendChild(e),this.opts.showTimestamps){const s=this.j.c.div("jodit-ui-conversation-list__item-meta");s.textContent=this.opts.formatTimestamp(this.conversation.updated,this.j.i18n.bind(this.j)),o.appendChild(s)}if(i.appendChild(o),this.conversation.messageCount>0){const s=this.j.c.div("jodit-ui-conversation-list__item-badge");s.textContent=String(this.conversation.messageCount),i.appendChild(s)}t.appendChild(i),this.actionsButton||(this.actionsButton=new j(this.j,{icon:{name:"dots"},tooltip:"Actions",name:"conversationActions",size:"tiny"}),this.actionsButton.container.classList.add("jodit-ui-conversation-list__item-actions"),this.actionsButton.onAction(s=>{s.stopPropagation(),this.showActionsMenu(s)})),t.appendChild(this.actionsButton.container)}onClick(){this.isRenaming||this.j.e.fire("selectConversation.ai-assistant-pro",this.conversation.id)}showActionsMenu(t){if(!this.contextMenu||!this.actionsButton)return;const n=[{title:"Rename",icon:"pencil",exec:l(()=>{this.startInlineRename()},"exec")},{title:"Delete",icon:"bin",exec:l(()=>{this.onDelete()},"exec")}],i=this.actionsButton.container.getBoundingClientRect();this.contextMenu.show(i.left,i.bottom,n),t.stopPropagation()}startInlineRename(){if(this.isRenaming||!this.titleElement)return;this.isRenaming=!0;const t=this.titleElement,n=this.conversation.title,i=this.j.c.element("input");i.type="text",i.value=n,i.className="jodit-ui-conversation-list__item-title-input",t.textContent="",t.appendChild(i),i.focus(),i.select();const o=l(()=>{if(!this.isRenaming)return;const e=i.value.trim();this.isRenaming=!1,e&&e!==n?(t.textContent=e,this.j.e.fire("renameConversation.ai-assistant-pro",this.conversation.id,e)):t.textContent=n},"commit");this.j.e.on(i,"blur",o),this.j.e.on(i,"keydown",e=>{e.key==="Enter"&&(e.preventDefault(),i.blur()),e.key==="Escape"&&(this.isRenaming=!1,t.textContent=n)}),this.j.e.on(i,"click",e=>{e.stopPropagation()})}onDelete(){this.j.e.fire("deleteConversation.ai-assistant-pro",this.conversation.id)}destruct(){var t,n;(t=this.actionsButton)===null||t===void 0||t.destruct(),(n=this.contextMenu)===null||n===void 0||n.destruct(),super.destruct()}},l(c,"UIConversationListItem"),c);h([v("container:click")],a.prototype,"onClick",null),h([d],a.prototype,"showActionsMenu",null),h([d],a.prototype,"startInlineRename",null),h([d],a.prototype,"onDelete",null),a=h([m],a);export{a as UIConversationListItem};
@@ -9,4 +9,4 @@ var v=Object.defineProperty;var h=(d,t)=>v(d,"name",{value:t,configurable:!0});v
9
9
  <div class="&__textarea-wrapper"></div>
10
10
  <div class="&__buttons"></div>
11
11
  </div>
12
- </div>`}onInputRowClick(){var t;this.textarea!==this.j.od.activeElement&&((t=this.textarea)===null||t===void 0||t.focus())}afterRender(){this.contextBadges=this.getElm("context-badges"),this.createControls(),this.attachHandlers()}createControls(){const t=this.getElm("textarea-wrapper"),e=this.getElm("buttons");this.textarea=new B(this.j,{name:"message",placeholder:this.options.placeholderText,resizable:!1}),t.appendChild(this.textarea.container),this.sendButton=new u(this.j,{name:"send-message",icon:{name:"send"},variant:"primary",size:"middle"}),this.stopButton=new u(this.j,{name:"abort-message",icon:{name:"cancel"},variant:"default",size:"middle"}),this.stopButton.container.style.display="none",e.appendChild(this.sendButton.container),e.appendChild(this.stopButton.container)}attachHandlers(){this.j.e.on(this.sendButton,"click",this.onSend),this.j.e.on(this.stopButton,"click",this.onStop),this.j.e.on(this.textarea.nativeInput,"keydown",t=>{const{sendShortcut:e,sendOnEnter:s}=this.options;if(e==="Ctrl+Enter"&&t.ctrlKey&&t.key==="Enter"){t.preventDefault(),this.onSend();return}if(t.key==="Escape"){this.j.e.fire("cancelEditMessage.ai-assistant-pro");return}t.key==="Enter"&&(s?t.shiftKey||(t.preventDefault(),this.onSend()):t.shiftKey&&(t.preventDefault(),this.onSend()))})}onSend(){var t;const e=(t=this.textarea)===null||t===void 0?void 0:t.value.trim();!e||this.isLoading||(this.j.e.fire("sendMessage.ai-assistant-pro",e),this.textarea&&(this.textarea.value="",this.textarea.nativeInput.focus()))}onStop(){this.j.e.fire("abortRequest.ai-assistant-pro")}setContexts(t){this.contexts=t,this.updateContextBadges()}updateContextBadges(){if(this.contextBadges.innerHTML="",this.contexts.length===0){this.contextBadges.style.display="none";return}this.contextBadges.style.display="",this.contexts.forEach((t,e)=>{const s=this.createContextBadge(t,e);this.contextBadges.appendChild(s)})}createContextBadge(t,e){const s=this.j.c.div(this.getFullElName("context-badge")),n=this.j.c.span(),i=t.html.replace(/<[^>]*>/g,"").substring(0,20);n.textContent=t.blockIndex!==void 0?`Block ${t.blockIndex}: ${i}...`:`${i}...`;const a=this.j.c.span(this.getFullElName("context-remove"));return a.textContent="\xD7",a.setAttribute("data-index",String(e)),this.j.e.on(a,"click",()=>{this.j.e.fire("removeContext.ai-assistant-pro",e)}),s.appendChild(n),s.appendChild(a),s}setLoading(t){this.isLoading=t;const{sendButton:e,stopButton:s,textarea:n}=this;g(e&&s&&n,"Buttons must be initialized"),n.setMod("disabled",t),e.setMod("disabled",t),this.setMod("loading",t),t?(e.container.style.display="none",s.container.style.display=""):(e.container.style.display="",s.container.style.display="none")}focus(){var t;(t=this.textarea)===null||t===void 0||t.nativeInput.focus()}setValue(t){this.textarea&&(this.textarea.value=t)}getValue(){var t;return((t=this.textarea)===null||t===void 0?void 0:t.value.trim())||""}destruct(){var t,e,s;(t=this.textarea)===null||t===void 0||t.destruct(),(e=this.sendButton)===null||e===void 0||e.destruct(),(s=this.stopButton)===null||s===void 0||s.destruct(),super.destruct()}},h(r,"UIInputArea"),r);l([m("input-row:click")],o.prototype,"onInputRowClick",null),l([x("ready")],o.prototype,"afterRender",null),l([p],o.prototype,"onSend",null),l([p],o.prototype,"onStop",null),o=l([f],o);export{o as UIInputArea};
12
+ </div>`}onInputRowClick(){var t;this.textarea!==this.j.od.activeElement&&((t=this.textarea)===null||t===void 0||t.focus())}afterRender(){this.contextBadges=this.getElm("context-badges"),this.createControls(),this.attachHandlers()}createControls(){const t=this.getElm("textarea-wrapper"),e=this.getElm("buttons");this.textarea=new B(this.j,{name:"message",placeholder:this.options.placeholderText,resizable:!1}),t.appendChild(this.textarea.container),this.sendButton=new u(this.j,{name:"send-message",icon:{name:"send"},variant:"initial",size:"middle"}),this.stopButton=new u(this.j,{name:"abort-message",icon:{name:"cancel"},variant:"default",size:"middle"}),this.stopButton.container.style.display="none",e.appendChild(this.sendButton.container),e.appendChild(this.stopButton.container)}attachHandlers(){this.j.e.on(this.sendButton,"click",this.onSend),this.j.e.on(this.stopButton,"click",this.onStop),this.j.e.on(this.textarea.nativeInput,"keydown",t=>{const{sendShortcut:e,sendOnEnter:s}=this.options;if(e==="Ctrl+Enter"&&t.ctrlKey&&t.key==="Enter"){t.preventDefault(),this.onSend();return}if(t.key==="Escape"){this.j.e.fire("cancelEditMessage.ai-assistant-pro");return}t.key==="Enter"&&(s?t.shiftKey||(t.preventDefault(),this.onSend()):t.shiftKey&&(t.preventDefault(),this.onSend()))})}onSend(){var t;const e=(t=this.textarea)===null||t===void 0?void 0:t.value.trim();!e||this.isLoading||(this.j.e.fire("sendMessage.ai-assistant-pro",e),this.textarea&&(this.textarea.value="",this.textarea.nativeInput.focus()))}onStop(){this.j.e.fire("abortRequest.ai-assistant-pro")}setContexts(t){this.contexts=t,this.updateContextBadges()}updateContextBadges(){if(this.contextBadges.innerHTML="",this.contexts.length===0){this.contextBadges.style.display="none";return}this.contextBadges.style.display="",this.contexts.forEach((t,e)=>{const s=this.createContextBadge(t,e);this.contextBadges.appendChild(s)})}createContextBadge(t,e){const s=this.j.c.div(this.getFullElName("context-badge")),n=this.j.c.span(),i=t.html.replace(/<[^>]*>/g,"").substring(0,20);n.textContent=t.blockIndex!==void 0?`Block ${t.blockIndex}: ${i}...`:`${i}...`;const a=this.j.c.span(this.getFullElName("context-remove"));return a.textContent="\xD7",a.setAttribute("data-index",String(e)),this.j.e.on(a,"click",()=>{this.j.e.fire("removeContext.ai-assistant-pro",e)}),s.appendChild(n),s.appendChild(a),s}setLoading(t){this.isLoading=t;const{sendButton:e,stopButton:s,textarea:n}=this;g(e&&s&&n,"Buttons must be initialized"),n.setMod("disabled",t),e.setMod("disabled",t),this.setMod("loading",t),t?(e.container.style.display="none",s.container.style.display=""):(e.container.style.display="",s.container.style.display="none")}focus(){var t;(t=this.textarea)===null||t===void 0||t.nativeInput.focus()}setValue(t){this.textarea&&(this.textarea.value=t)}getValue(){var t;return((t=this.textarea)===null||t===void 0?void 0:t.value.trim())||""}destruct(){var t,e,s;(t=this.textarea)===null||t===void 0||t.destruct(),(e=this.sendButton)===null||e===void 0||e.destruct(),(s=this.stopButton)===null||s===void 0||s.destruct(),super.destruct()}},h(r,"UIInputArea"),r);l([m("input-row:click")],o.prototype,"onInputRowClick",null),l([x("ready")],o.prototype,"afterRender",null),l([p],o.prototype,"onSend",null),l([p],o.prototype,"onStop",null),o=l([f],o);export{o as UIInputArea};
@@ -26,10 +26,16 @@ export declare class UIMainPanel extends UIElement<IViewBased> {
26
26
  setParentView(view: IViewBased): this;
27
27
  protected render(): string;
28
28
  addResize(): void;
29
+ private isEditingTitle;
30
+ private conversationActionsButton;
31
+ private headerContextMenu;
29
32
  protected afterRender(): void;
30
33
  protected __onChangeView(): Promise<void>;
31
34
  private createComponents;
32
35
  private createHeaderButtons;
36
+ private setupConversationRenameHandler;
37
+ private showConversationActionsMenu;
38
+ private showRenamePrompt;
33
39
  /**
34
40
  * Check if current display mode is flight
35
41
  */
@@ -1,4 +1,4 @@
1
- var v=Object.defineProperty;var m=(u,t)=>v(u,"name",{value:t,configurable:!0});var d,r=function(u,t,e,s){var i=arguments.length,n=i<3?t:s===null?s=Object.getOwnPropertyDescriptor(t,e):s,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")n=Reflect.decorate(u,t,e,s);else for(var l=u.length-1;l>=0;l--)(o=u[l])&&(n=(i<3?o(n):i>3?o(t,e,n):o(t,e))||n);return i>3&&n&&Object.defineProperty(t,e,n),n};import{UIConversationList as g}from"../conversation-list/conversation-list.js";import{UIInputArea as C}from"../input-area/input-area.js";import{UIMessageList as f}from"../message-list/message-list.js";import{UIPermissionRequest as _}from"../permission-request/permission-request.js";import{UISettingsButton as w}from"../settings-button/index.js";import{UIWelcomeScreen as L}from"../welcome-screen/welcome-screen.js";import{component as R,hook as j,watch as h}from"jodit/esm/core/decorators/index.js";import{Dom as c}from"jodit/esm/core/dom/dom.js";import{UIElement as P}from"jodit/esm/core/ui/index.js";import{UIButton as p}from"jodit/esm/core/ui/button/index.js";let a=(d=class extends P{className(){return"UIMainPanel"}constructor(t,e,s,i){super(t),this.state=e,this.options=s,this.updateConversation=i,this.permissionRequest=null,this.settingsButton=null}setParentView(t){var e,s,i,n,o,l;return(e=this.welcomeScreen)===null||e===void 0||e.setParentView(t),(s=this.conversationList)===null||s===void 0||s.setParentView(t),(i=this.messageList)===null||i===void 0||i.setParentView(t),(n=this.inputArea)===null||n===void 0||n.setParentView(t),(o=this.permissionRequest)===null||o===void 0||o.setParentView(t),(l=this.settingsButton)===null||l===void 0||l.setParentView(t),super.setParentView(t)}render(){return`<div class="&__container">
1
+ var C=Object.defineProperty;var p=(u,t)=>C(u,"name",{value:t,configurable:!0});var d,l=function(u,t,e,s){var i=arguments.length,o=i<3?t:s===null?s=Object.getOwnPropertyDescriptor(t,e):s,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(u,t,e,s);else for(var r=u.length-1;r>=0;r--)(n=u[r])&&(o=(i<3?n(o):i>3?n(t,e,o):n(t,e))||o);return i>3&&o&&Object.defineProperty(t,e,o),o};import{UIConversationList as f}from"../conversation-list/conversation-list.js";import{UIInputArea as w}from"../input-area/input-area.js";import{UIMessageList as _}from"../message-list/message-list.js";import{UIPermissionRequest as R}from"../permission-request/permission-request.js";import{UISettingsButton as L}from"../settings-button/index.js";import{UIWelcomeScreen as j}from"../welcome-screen/welcome-screen.js";import{autobind as g,component as A,hook as P,watch as h}from"jodit/esm/core/decorators/index.js";import{Dom as c}from"jodit/esm/core/dom/dom.js";import{UIElement as E}from"jodit/esm/core/ui/index.js";import{UIButton as m}from"jodit/esm/core/ui/button/index.js";import{ContextMenu as b}from"jodit/esm/modules/context-menu/context-menu.js";let a=(d=class extends E{className(){return"UIMainPanel"}constructor(t,e,s,i){super(t),this.state=e,this.options=s,this.updateConversation=i,this.permissionRequest=null,this.settingsButton=null,this.isEditingTitle=!1,this.conversationActionsButton=null,this.headerContextMenu=null}setParentView(t){var e,s,i,o,n,r;return(e=this.welcomeScreen)===null||e===void 0||e.setParentView(t),(s=this.conversationList)===null||s===void 0||s.setParentView(t),(i=this.messageList)===null||i===void 0||i.setParentView(t),(o=this.inputArea)===null||o===void 0||o.setParentView(t),(n=this.permissionRequest)===null||n===void 0||n.setParentView(t),(r=this.settingsButton)===null||r===void 0||r.setParentView(t),super.setParentView(t)}render(){return`<div class="&__container">
2
2
  <div class="&__header">
3
3
  <div class="&__header-left"></div>
4
4
  <div class="&__header-title"></div>
@@ -9,4 +9,4 @@ var v=Object.defineProperty;var m=(u,t)=>v(u,"name",{value:t,configurable:!0});v
9
9
  <div class="&__loading-spinner"></div>
10
10
  </div>
11
11
  <div class="&__footer"></div>
12
- </div>`}addResize(){}afterRender(){this.content=this.getElm("content"),this.createComponents(),this.createHeaderButtons(),this.__updateView("welcome")}async __onChangeView(){this.__updateView(this.state.currentView,this.state.currentConversation)}createComponents(){this.welcomeScreen=new L(this.j),this.conversationList=new g(this.j,this.options),this.messageList=new f(this.j,this.options),this.inputArea=new C(this.j,this.options),this.getElm("footer").appendChild(this.inputArea.container)}createHeaderButtons(){const t=this.getElm("header-left"),e=this.getElm("header-right"),s=new p(this.j,{icon:{name:"angle-left"},size:"small",variant:"initial"});s.container.classList.add(this.getFullElName("back-button")),this.j.e.on(s,"click",()=>{this.j.e.fire("backToList.ai-assistant-pro")}),t.appendChild(s.container);const i=new p(this.j,{icon:{name:"plus"},size:"small",tooltip:"New chat",variant:"initial"});if(i.container.classList.add(this.getFullElName("new-button")),this.j.e.on(i,"click",()=>{this.j.e.fire("newConversation.ai-assistant-pro")}),e.appendChild(i.container),this.shouldShowSettings()&&(this.settingsButton=new w(this.j,this.state,this.options,()=>this.state.currentConversation,this.updateConversation),this.settingsButton.container.classList.add(this.getFullElName("settings-button")),e.appendChild(this.settingsButton.container)),this.mods.displayMode==="dialog"||!(this.mods.allowClose!==!1))return;const o=new p(this.j,{icon:{name:"cancel"},size:"small",tooltip:"Close",variant:"initial"});o.container.classList.add(this.getFullElName("close-button")),this.j.e.on(o,"click",()=>{this.j.e.fire("closeAIAssistantPro.ai-assistant-pro")}),e.appendChild(o.container)}isFlightMode(){return this.mods.displayMode==="flight"}shouldShowSettings(){const t=this.options,e=t.allowEditDisplayMode||t.allowEditPanelWidth,s=t.allowEditDialogSettings;return e||s}__updateView(t,e=null){var s;(s=this.settingsButton)===null||s===void 0||s.update();const i=this.getElm("header-title");this.setMod("view",t);const n=this.isFlightMode();switch(t){case"welcome":i.textContent=this.j.i18n("AI Assistant"),c.safeRemove(this.conversationList.container),c.safeRemove(this.messageList.container),this.content.appendChild(this.welcomeScreen.container),this.inputArea.focus();break;case"conversationList":i.textContent=this.j.i18n("AI Assistant"),c.safeRemove(this.welcomeScreen.container),c.safeRemove(this.messageList.container),this.conversationList.container.isConnected||this.content.appendChild(this.conversationList.container);break;case"conversation":i.textContent=n?this.j.i18n("AI Assistant"):e?.title||this.j.i18n("Conversation"),c.safeRemove(this.welcomeScreen.container),c.safeRemove(this.conversationList.container),this.messageList.container.isConnected||this.content.appendChild(this.messageList.container),e&&this.messageList.setMessages(e.messages),this.inputArea.focus();break}}onChangeCurrentConversation(){const{currentConversation:t}=this.state;t&&(this.conversationList.setActiveConversation(t.id),this.messageList.setMessages(t.messages))}onChangeConversations(){this.conversationList.setConversations(this.state.conversations)}onChangeSelectionContexts(){this.inputArea.setContexts(this.state.selectionContexts)}onChangeLoading(){this.inputArea.setLoading(this.state.isLoading)}onChangePendingToolCalls(){this.state.pendingToolCalls&&this.state.pendingToolCalls.length>0?this.showPermissionRequest(this.state.pendingToolCalls[0]):this.hidePermissionRequest()}showPermissionRequest(t){this.permissionRequest||(this.permissionRequest=new _(this.j,this.options)),this.permissionRequest.setToolCall(t);const e=this.getElm("footer");e.contains(this.permissionRequest.container)||e.insertBefore(this.permissionRequest.container,this.inputArea.container)}hidePermissionRequest(){this.permissionRequest&&this.permissionRequest.container.parentNode&&this.permissionRequest.container.parentNode.removeChild(this.permissionRequest.container)}destruct(){var t,e,s,i,n,o;(t=this.welcomeScreen)===null||t===void 0||t.destruct(),(e=this.conversationList)===null||e===void 0||e.destruct(),(s=this.messageList)===null||s===void 0||s.destruct(),(i=this.inputArea)===null||i===void 0||i.destruct(),(n=this.permissionRequest)===null||n===void 0||n.destruct(),(o=this.settingsButton)===null||o===void 0||o.destruct(),super.destruct()}},m(d,"UIMainPanel"),d);r([j("ready")],a.prototype,"afterRender",null),r([h(["state.currentView","state.currentConversation"])],a.prototype,"__onChangeView",null),r([h("state.currentConversation")],a.prototype,"onChangeCurrentConversation",null),r([h("state.conversations")],a.prototype,"onChangeConversations",null),r([h("state.selectionContexts")],a.prototype,"onChangeSelectionContexts",null),r([h("state.isLoading")],a.prototype,"onChangeLoading",null),r([h("state.pendingToolCalls")],a.prototype,"onChangePendingToolCalls",null),a=r([R],a);export{a as UIMainPanel};
12
+ </div>`}addResize(){}afterRender(){this.content=this.getElm("content"),this.headerContextMenu=new b(this.j),this.createComponents(),this.createHeaderButtons(),this.setupConversationRenameHandler(),this.__updateView("welcome")}async __onChangeView(){this.__updateView(this.state.currentView,this.state.currentConversation)}createComponents(){this.welcomeScreen=new j(this.j),this.conversationList=new f(this.j,this.options),this.messageList=new _(this.j,this.options),this.inputArea=new w(this.j,this.options),this.getElm("footer").appendChild(this.inputArea.container)}createHeaderButtons(){const t=this.getElm("header-left"),e=this.getElm("header-right"),s=new m(this.j,{icon:{name:"angle-left"},size:"small",variant:"initial"});s.container.classList.add(this.getFullElName("back-button")),this.j.e.on(s,"click",()=>{this.j.e.fire("backToList.ai-assistant-pro")}),t.appendChild(s.container),this.conversationActionsButton=new m(this.j,{icon:{name:"dots"},size:"small",tooltip:"Conversation actions",variant:"initial"}),this.conversationActionsButton.container.classList.add(this.getFullElName("conversation-actions-button")),this.conversationActionsButton.onAction(this.showConversationActionsMenu),e.appendChild(this.conversationActionsButton.container);const i=new m(this.j,{icon:{name:"plus"},size:"small",tooltip:"New chat",variant:"initial"});if(i.container.classList.add(this.getFullElName("new-button")),this.j.e.on(i,"click",()=>{this.j.e.fire("newConversation.ai-assistant-pro")}),e.appendChild(i.container),this.shouldShowSettings()&&(this.settingsButton=new L(this.j,this.state,this.options,()=>this.state.currentConversation,this.updateConversation),this.settingsButton.container.classList.add(this.getFullElName("settings-button")),e.appendChild(this.settingsButton.container)),this.mods.displayMode==="dialog"||!(this.mods.allowClose!==!1))return;const n=new m(this.j,{icon:{name:"cancel"},size:"small",tooltip:"Close",variant:"initial"});n.container.classList.add(this.getFullElName("close-button")),this.j.e.on(n,"click",()=>{this.j.e.fire("closeAIAssistantPro.ai-assistant-pro")}),e.appendChild(n.container)}setupConversationRenameHandler(){}showConversationActionsMenu(t){if(!this.headerContextMenu||!this.state.currentConversation)return;const e=this.state.currentConversation,s=[{title:"Rename",icon:"pencil",exec:p(()=>{this.showRenamePrompt(e.id,e.title||this.j.i18n("Conversation"))},"exec")},{title:"Delete",icon:"bin",exec:p(()=>{this.j.e.fire("deleteConversation.ai-assistant-pro",e.id)},"exec")}],i=this.conversationActionsButton.container.getBoundingClientRect();this.headerContextMenu.show(i.left,i.bottom,s),t.stopPropagation()}showRenamePrompt(t,e){if(this.isEditingTitle)return;this.isEditingTitle=!0;const s=this.getElm("header-title"),i=this.j.c.element("input");i.type="text",i.value=e,i.className=this.getFullElName("header-title-input"),s.textContent="",s.appendChild(i),i.focus(),i.select();const o=p(()=>{const n=i.value.trim();this.isEditingTitle=!1,n&&n!==e?(this.j.e.fire("renameConversation.ai-assistant-pro",t,n),s.textContent=n):s.textContent=e},"commit");this.j.e.on(i,"blur",o),this.j.e.on(i,"keydown",n=>{n.key==="Enter"&&(n.preventDefault(),i.blur()),n.key==="Escape"&&(this.isEditingTitle=!1,s.textContent=e)})}isFlightMode(){return this.mods.displayMode==="flight"}shouldShowSettings(){const t=this.options,e=t.allowEditDisplayMode||t.allowEditPanelWidth,s=t.allowEditDialogSettings;return e||s}__updateView(t,e=null){var s;(s=this.settingsButton)===null||s===void 0||s.update();const i=this.getElm("header-title");this.setMod("view",t);const o=this.isFlightMode();switch(t){case"welcome":i.textContent=this.j.i18n("AI Assistant"),c.safeRemove(this.conversationList.container),c.safeRemove(this.messageList.container),this.content.appendChild(this.welcomeScreen.container),this.inputArea.focus();break;case"conversationList":i.textContent=this.j.i18n("AI Assistant"),c.safeRemove(this.welcomeScreen.container),c.safeRemove(this.messageList.container),this.conversationList.container.isConnected||this.content.appendChild(this.conversationList.container);break;case"conversation":i.textContent=o?this.j.i18n("AI Assistant"):e?.title||this.j.i18n("Conversation"),c.safeRemove(this.welcomeScreen.container),c.safeRemove(this.conversationList.container),this.messageList.container.isConnected||this.content.appendChild(this.messageList.container),e&&this.messageList.setMessages(e.messages),this.inputArea.focus();break}}onChangeCurrentConversation(){const{currentConversation:t}=this.state;t&&(this.conversationList.setActiveConversation(t.id),this.messageList.setMessages(t.messages))}onChangeConversations(){this.conversationList.setConversations(this.state.conversations)}onChangeSelectionContexts(){this.inputArea.setContexts(this.state.selectionContexts)}onChangeLoading(){this.inputArea.setLoading(this.state.isLoading)}onChangePendingToolCalls(){this.state.pendingToolCalls&&this.state.pendingToolCalls.length>0?this.showPermissionRequest(this.state.pendingToolCalls[0]):this.hidePermissionRequest()}showPermissionRequest(t){this.permissionRequest||(this.permissionRequest=new R(this.j,this.options)),this.permissionRequest.setToolCall(t);const e=this.getElm("footer");e.contains(this.permissionRequest.container)||e.insertBefore(this.permissionRequest.container,this.inputArea.container)}hidePermissionRequest(){this.permissionRequest&&this.permissionRequest.container.parentNode&&this.permissionRequest.container.parentNode.removeChild(this.permissionRequest.container)}destruct(){var t,e,s,i,o,n,r,v;(t=this.welcomeScreen)===null||t===void 0||t.destruct(),(e=this.conversationList)===null||e===void 0||e.destruct(),(s=this.messageList)===null||s===void 0||s.destruct(),(i=this.inputArea)===null||i===void 0||i.destruct(),(o=this.permissionRequest)===null||o===void 0||o.destruct(),(n=this.settingsButton)===null||n===void 0||n.destruct(),(r=this.conversationActionsButton)===null||r===void 0||r.destruct(),(v=this.headerContextMenu)===null||v===void 0||v.destruct(),super.destruct()}},p(d,"UIMainPanel"),d);l([P("ready")],a.prototype,"afterRender",null),l([h(["state.currentView","state.currentConversation"])],a.prototype,"__onChangeView",null),l([g],a.prototype,"showConversationActionsMenu",null),l([g],a.prototype,"showRenamePrompt",null),l([h("state.currentConversation")],a.prototype,"onChangeCurrentConversation",null),l([h("state.conversations")],a.prototype,"onChangeConversations",null),l([h("state.selectionContexts")],a.prototype,"onChangeSelectionContexts",null),l([h("state.isLoading")],a.prototype,"onChangeLoading",null),l([h("state.pendingToolCalls")],a.prototype,"onChangePendingToolCalls",null),a=l([A],a);export{a as UIMainPanel};
@@ -1 +1 @@
1
- var m=Object.defineProperty;var r=(l,t)=>m(l,"name",{value:t,configurable:!0});var c,d=function(l,t,e,s){var n=arguments.length,i=n<3?t:s===null?s=Object.getOwnPropertyDescriptor(t,e):s,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(l,t,e,s);else for(var a=l.length-1;a>=0;a--)(o=l[a])&&(i=(n<3?o(i):n>3?o(t,e,i):o(t,e))||i);return n>3&&i&&Object.defineProperty(t,e,i),i};import{UIArtifact as g}from"../artifact.js";import{component as f,hook as C}from"jodit/esm/core/decorators/index.js";import{UIElement as j}from"jodit/esm/core/ui/index.js";import{UIButton as E}from"jodit/esm/core/ui/button/index.js";import{UIGroup as x}from"jodit/esm/core/ui/group/group.js";import{ContextMenu as b}from"jodit/esm/modules/context-menu/context-menu.js";let h=(c=class extends j{className(){return"UIMessageListItem"}constructor(t,e,s){super(t),this.message=e,this.opts=s,this.artifactGroup=null,this.actionsButton=null,this.contextMenu=null}render(){return`<div class="${this.getFullElName("message")}"></div>`}onReady(){this.updateContent(),this.contextMenu=new b(this.j)}updateContent(){const t=this.container;t.innerHTML="",t.setAttribute("data-message-id",this.message.id),t.setAttribute("data-role",this.message.role);const e=this.j.c.div(this.getFullElName("message-bubble"));e.classList.add(this.getFullElName("message-bubble",this.message.role,!0));const s=this.j.c.div(this.getFullElName("message-content"));if(s.innerHTML=this.formatMessageContent(this.message.content),e.appendChild(s),this.opts.showTimestamps){const i=this.j.c.div(this.getFullElName("message-timestamp"));i.textContent=this.formatTimestamp(this.message.timestamp),e.appendChild(i)}const n=this.j.c.div(this.getFullElName("message-actions"));if(this.renderActionsButton(n),e.appendChild(n),t.appendChild(e),this.message.toolCalls&&this.message.toolCalls.length>0){const i=this.j.c.div(this.getFullElName("tool-calls"));t.appendChild(i),this.message.toolCalls.forEach(o=>{const a=this.createToolCallElement(o);i.appendChild(a)})}this.message.artifacts&&this.message.artifacts.length>0&&this.renderArtifacts()}renderActionsButton(t){const e=this.opts;(e.showCopyMessageAction||e.showRestartMessageAction||e.showEditMessageAction||e.showDeleteMessageAction)&&(this.actionsButton=new E(this.j,{icon:{name:"dots"},tooltip:"Message actions",name:"messageActions",size:"tiny"}),this.actionsButton.onAction(n=>{this.showActionsMenu(n)}),t.appendChild(this.actionsButton.container))}showActionsMenu(t){if(!this.contextMenu||!this.actionsButton)return;const e=this.j,s=e.o.aiAssistantPro,n=[];s.showCopyMessageAction&&n.push({title:"Copy message",icon:"copy",exec:r(()=>{this.j.e.fire("copyMessage.ai-assistant-pro",this.message.id)},"exec")}),this.message.role==="user"&&(s.showRestartMessageAction&&n.push({title:"Restart from here",icon:"update",exec:r(()=>{this.j.e.fire("restartFromMessage.ai-assistant-pro",this.message.id)},"exec")}),s.showEditMessageAction&&n.push({title:"Edit message",icon:"pencil",exec:r(()=>{this.j.e.fire("editMessage.ai-assistant-pro",this.message.id)},"exec")})),s.showDeleteMessageAction&&n.push({title:"Delete message",icon:"bin",exec:r(()=>{e.confirm("Are you sure you want to delete this message?","Delete message",o=>{o&&this.j.e.fire("deleteMessage.ai-assistant-pro",this.message.id)})},"exec")});const i=this.actionsButton.container.getBoundingClientRect();this.contextMenu.show(i.left,i.bottom,n),t.stopPropagation()}renderArtifacts(){if(!this.message.artifacts||this.message.artifacts.length===0)return;const t=this.j.c.div(this.getFullElName("artifacts"));this.container.appendChild(t),this.artifactGroup||(this.artifactGroup=new x(this.j),this.artifactGroup.container.className="jodit-ui-artifact-group"),this.artifactGroup.clear(),this.message.artifacts.forEach(e=>{const s=new g(this.j,e);this.artifactGroup.append(s)}),t.appendChild(this.artifactGroup.container)}createToolCallElement(t){const e=this.j.c.div(this.getFullElName("tool-call"));e.setAttribute("data-tool-id",t.id),e.setAttribute("data-status",t.status);const s=this.j.c.div(this.getFullElName("tool-header")),n=this.j.c.div(this.getFullElName("tool-icon"));n.classList.add(this.getFullElName("tool-icon",t.status,!0)),n.textContent="\u26A1";const i=this.j.c.div(this.getFullElName("tool-name"));i.textContent=this.j.i18n(t.name);const o=this.j.c.div(this.getFullElName("tool-status"));o.textContent=this.getToolStatusText(t.status||"unknown"),s.appendChild(n),s.appendChild(i),s.appendChild(o),e.appendChild(s);const a=this.createExpandableSection("Arguments",JSON.stringify(t.arguments||{},null,2));if(e.appendChild(a),t.result){const u=t.result.error?`Error: ${t.result.error}`:t.result.result||"",p=this.createExpandableSection("Result",typeof u=="string"?u:JSON.stringify(u,null,2));e.appendChild(p)}return e}createExpandableSection(t,e){const s=this.j.c.div(this.getFullElName("tool-expandable")),n=this.j.c.element("button",{type:"button",class:this.getFullElName("tool-expandable-toggle")});n.textContent=`\u25B6 ${this.j.i18n(t)}`;const i=this.j.c.element("pre",{class:this.getFullElName("tool-expandable-content")});return i.textContent=e,i.style.display="none",this.j.e.on(n,"click",()=>{i.style.display!=="none"?(i.style.display="none",n.textContent=`\u25B6 ${this.j.i18n(t)}`):(i.style.display="block",n.textContent=`\u25BC ${this.j.i18n(t)}`)}),s.appendChild(n),s.appendChild(i),s}getToolStatusText(t){return{pending:"\u23F3",approved:"\u2713",denied:"\u2715",executing:"\u26A1",executed:"\u2713",error:"\u26A0"}[t]||"\u25CF"}formatMessageContent(t){const e=this.opts.formatMessageContent,s=this.message.role;return e(t,s,this.j.i18n.bind(this.j))}formatTimestamp(t){const e=this.opts.formatTimestamp;return e(t,this.j.i18n.bind(this.j))}updateMessage(t){this.message=t,this.updateContent()}destruct(){var t,e,s;(t=this.actionsButton)===null||t===void 0||t.destruct(),(e=this.contextMenu)===null||e===void 0||e.destruct(),(s=this.artifactGroup)===null||s===void 0||s.destruct(),super.destruct()}},r(c,"UIMessageListItem"),c);d([C("ready")],h.prototype,"onReady",null),h=d([f],h);export{h as UIMessageListItem};
1
+ var g=Object.defineProperty;var r=(c,t)=>g(c,"name",{value:t,configurable:!0});var l,p=function(c,t,e,s){var i=arguments.length,n=i<3?t:s===null?s=Object.getOwnPropertyDescriptor(t,e):s,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")n=Reflect.decorate(c,t,e,s);else for(var a=c.length-1;a>=0;a--)(o=c[a])&&(n=(i<3?o(n):i>3?o(t,e,n):o(t,e))||n);return i>3&&n&&Object.defineProperty(t,e,n),n};import{UIArtifact as f}from"../artifact.js";import{component as C,hook as j}from"jodit/esm/core/decorators/index.js";import{UIElement as E}from"jodit/esm/core/ui/index.js";import{UIButton as b}from"jodit/esm/core/ui/button/index.js";import{UIGroup as M}from"jodit/esm/core/ui/group/group.js";import{Icon as u}from"jodit/esm/core/ui/icon.js";import{ContextMenu as x}from"jodit/esm/modules/context-menu/context-menu.js";let d=(l=class extends E{className(){return"UIMessageListItem"}constructor(t,e,s){super(t),this.message=e,this.opts=s,this.artifactGroup=null,this.actionsButton=null,this.contextMenu=null}render(){return`<div class="${this.getFullElName("message")}"></div>`}onReady(){this.updateContent(),this.contextMenu=new x(this.j)}updateContent(){const t=this.container;t.innerHTML="",t.setAttribute("data-message-id",this.message.id),t.setAttribute("data-role",this.message.role);const e=this.j.c.div(this.getFullElName("message-bubble"));e.classList.add(this.getFullElName("message-bubble",this.message.role,!0));const s=this.j.c.div(this.getFullElName("message-content"));if(s.innerHTML=this.formatMessageContent(this.message.content),e.appendChild(s),this.opts.showTimestamps){const n=this.j.c.div(this.getFullElName("message-timestamp"));n.textContent=this.formatTimestamp(this.message.timestamp),e.appendChild(n)}const i=this.j.c.div(this.getFullElName("message-actions"));if(this.renderActionsButton(i),e.appendChild(i),t.appendChild(e),this.message.toolCalls&&this.message.toolCalls.length>0){const n=this.j.c.div(this.getFullElName("tool-calls"));t.appendChild(n),this.message.toolCalls.forEach(o=>{const a=this.createToolCallElement(o);n.appendChild(a)})}this.message.artifacts&&this.message.artifacts.length>0&&this.renderArtifacts()}renderActionsButton(t){const e=this.opts;(e.showCopyMessageAction||e.showRestartMessageAction||e.showEditMessageAction||e.showDeleteMessageAction)&&(this.actionsButton=new b(this.j,{icon:{name:"dots"},tooltip:"Message actions",name:"messageActions",size:"tiny"}),this.actionsButton.onAction(i=>{this.showActionsMenu(i)}),t.appendChild(this.actionsButton.container))}showActionsMenu(t){if(!this.contextMenu||!this.actionsButton)return;const e=this.j,s=e.o.aiAssistantPro,i=[];s.showCopyMessageAction&&i.push({title:"Copy message",icon:"copy",exec:r(()=>{this.j.e.fire("copyMessage.ai-assistant-pro",this.message.id)},"exec")}),this.message.role==="user"&&(s.showRestartMessageAction&&i.push({title:"Restart from here",icon:"update",exec:r(()=>{this.j.e.fire("restartFromMessage.ai-assistant-pro",this.message.id)},"exec")}),s.showEditMessageAction&&i.push({title:"Edit message",icon:"pencil",exec:r(()=>{this.j.e.fire("editMessage.ai-assistant-pro",this.message.id)},"exec")})),s.showDeleteMessageAction&&i.push({title:"Delete message",icon:"bin",exec:r(()=>{e.confirm("Are you sure you want to delete this message?","Delete message",o=>{o&&this.j.e.fire("deleteMessage.ai-assistant-pro",this.message.id)})},"exec")});const n=this.actionsButton.container.getBoundingClientRect();this.contextMenu.show(n.left,n.bottom,i),t.stopPropagation()}renderArtifacts(){if(!this.message.artifacts||this.message.artifacts.length===0)return;const t=this.j.c.div(this.getFullElName("artifacts"));this.container.appendChild(t),this.artifactGroup||(this.artifactGroup=new M(this.j),this.artifactGroup.container.className="jodit-ui-artifact-group"),this.artifactGroup.clear(),this.message.artifacts.forEach(e=>{const s=new f(this.j,e);this.artifactGroup.append(s)}),t.appendChild(this.artifactGroup.container)}createToolCallElement(t){const e=this.j.c.div(this.getFullElName("tool-call"));e.setAttribute("data-tool-id",t.id),e.setAttribute("data-status",t.status);const s=this.j.c.div(this.getFullElName("tool-header")),i=this.j.c.div(this.getFullElName("tool-icon"));i.classList.add(this.getFullElName("tool-icon",t.status,!0)),i.innerHTML=u.get("tool-bolt")||"";const n=this.j.c.div(this.getFullElName("tool-name"));n.textContent=this.j.i18n(t.name);const o=this.j.c.div(this.getFullElName("tool-status"));o.textContent=this.getToolStatusText(t.status||"unknown"),s.appendChild(i),s.appendChild(n),s.appendChild(o),e.appendChild(s);const a=this.createExpandableSection("Arguments",JSON.stringify(t.arguments||{},null,2));if(e.appendChild(a),t.result){const h=t.result.error?`Error: ${t.result.error}`:t.result.result||"",m=this.createExpandableSection("Result",typeof h=="string"?h:JSON.stringify(h,null,2));e.appendChild(m)}return e}createExpandableSection(t,e){const s=this.j.c.div(this.getFullElName("tool-expandable")),i=this.j.c.element("button",{type:"button",class:this.getFullElName("tool-expandable-toggle")}),n=this.j.c.span(this.getFullElName("tool-expandable-chevron"));n.innerHTML=u.get("chevron-right")||"";const o=this.j.c.span();o.textContent=this.j.i18n(t),i.appendChild(n),i.appendChild(o);const a=this.j.c.element("pre",{class:this.getFullElName("tool-expandable-content")});return a.textContent=e,a.style.display="none",this.j.e.on(i,"click",()=>{a.style.display!=="none"?(a.style.display="none",i.classList.remove("expanded")):(a.style.display="block",i.classList.add("expanded"))}),s.appendChild(i),s.appendChild(a),s}getToolStatusText(t){return{pending:"pending",approved:"approved",denied:"denied",executing:"running",executed:"done",error:"error"}[t]||t}formatMessageContent(t){const e=this.opts.formatMessageContent,s=this.message.role;return e(t,s,this.j.i18n.bind(this.j))}formatTimestamp(t){const e=this.opts.formatTimestamp;return e(t,this.j.i18n.bind(this.j))}updateMessage(t){this.message=t,this.updateContent()}destruct(){var t,e,s;(t=this.actionsButton)===null||t===void 0||t.destruct(),(e=this.contextMenu)===null||e===void 0||e.destruct(),(s=this.artifactGroup)===null||s===void 0||s.destruct(),super.destruct()}},r(l,"UIMessageListItem"),l);p([j("ready")],d.prototype,"onReady",null),d=p([C],d);export{d as UIMessageListItem};
@@ -1,11 +1,14 @@
1
- var v=Object.defineProperty;var u=(r,t)=>v(r,"name",{value:t,configurable:!0});var l,c=function(r,t,e,o){var i=arguments.length,n=i<3?t:o===null?o=Object.getOwnPropertyDescriptor(t,e):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")n=Reflect.decorate(r,t,e,o);else for(var p=r.length-1;p>=0;p--)(a=r[p])&&(n=(i<3?a(n):i>3?a(t,e,n):a(t,e))||n);return i>3&&n&&Object.defineProperty(t,e,n),n};import{autobind as d,component as m,hook as f}from"jodit/esm/core/decorators/index.js";import{UIElement as _}from"jodit/esm/core/ui/index.js";import{UIButton as h}from"jodit/esm/core/ui/button/index.js";import{UISelect as C}from"jodit/esm/core/ui/form/inputs/select/select.js";let s=(l=class extends _{className(){return"UIPermissionRequest"}constructor(t,e){super(t),this.state=e,this.scopeSelect=null,this.approveButton=null,this.denyButton=null}setToolCall(t){this.toolCall=t,this.updateContent()}setParentView(t){var e,o,i;return(e=this.scopeSelect)===null||e===void 0||e.setParentView(t),(o=this.approveButton)===null||o===void 0||o.setParentView(t),(i=this.denyButton)===null||i===void 0||i.setParentView(t),super.setParentView(t)}render(){return`<div class="&__container">
1
+ var v=Object.defineProperty;var d=(r,t)=>v(r,"name",{value:t,configurable:!0});var l,c=function(r,t,e,i){var o=arguments.length,n=o<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,e):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")n=Reflect.decorate(r,t,e,i);else for(var p=r.length-1;p>=0;p--)(a=r[p])&&(n=(o<3?a(n):o>3?a(t,e,n):a(t,e))||n);return o>3&&n&&Object.defineProperty(t,e,n),n};import{autobind as u,component as m,hook as f}from"jodit/esm/core/decorators/index.js";import{UIElement as _}from"jodit/esm/core/ui/index.js";import{UIButton as h}from"jodit/esm/core/ui/button/index.js";import{UISelect as C}from"jodit/esm/core/ui/form/inputs/select/select.js";import{Icon as y}from"jodit/esm/core/ui/icon.js";let s=(l=class extends _{className(){return"UIPermissionRequest"}constructor(t,e){super(t),this.state=e,this.scopeSelect=null,this.approveButton=null,this.denyButton=null}setToolCall(t){this.toolCall=t,this.updateContent()}setParentView(t){var e,i,o;return(e=this.scopeSelect)===null||e===void 0||e.setParentView(t),(i=this.approveButton)===null||i===void 0||i.setParentView(t),(o=this.denyButton)===null||o===void 0||o.setParentView(t),super.setParentView(t)}render(){return`<div class="&__container">
2
2
  <div class="&__header">
3
3
  <div class="&__icon"></div>
4
4
  <div class="&__title">~Permission Required~</div>
5
5
  </div>
6
6
  <div class="&__tool-info"></div>
7
- <div class="&__actions"></div>
8
- </div>`}afterRender(){this.createControls(),this.updateContent()}createControls(){const t=this.getElm("actions");this.denyButton=new h(this.j,{icon:{name:"cancel"},variant:"danger",size:"small"}),this.j.e.on(this.denyButton,"click",this.onDeny),this.approveButton=new h(this.j,{icon:{name:"check"},variant:"success",size:"small"}),this.j.e.on(this.approveButton,"click",this.onApprove),this.scopeSelect=new C(this.j,{name:"permission-scope",options:[{value:"once",text:this.j.i18n("Once")},{value:"conversation",text:this.j.i18n("This conversation")},{value:"forever",text:this.j.i18n("Always")}]}),this.scopeSelect.value=this.state.defaultPermissionScope,t.appendChild(this.denyButton.container),t.appendChild(this.approveButton.container),t.appendChild(this.scopeSelect.container)}updateContent(){if(!this.toolCall)return;const t=this.getElm("tool-info");t.innerHTML=`
7
+ <div class="&__actions">
8
+ <div class="&__actions-buttons"></div>
9
+ <div class="&__actions-scope"></div>
10
+ </div>
11
+ </div>`}afterRender(){const t=this.getElm("icon");t&&(t.innerHTML=y.get("shield")||""),this.createControls(),this.updateContent()}createControls(){const t=this.getElm("actions-buttons"),e=this.getElm("actions-scope");this.denyButton=new h(this.j,{text:this.j.i18n("Deny"),variant:"initial",size:"small",name:"deny-permission"}),this.j.e.on(this.denyButton,"click",this.onDeny),this.approveButton=new h(this.j,{text:this.j.i18n("Allow"),variant:"initial",size:"small",name:"approve-permission"}),this.j.e.on(this.approveButton,"click",this.onApprove),this.scopeSelect=new C(this.j,{name:"permission-scope",options:[{value:"once",text:this.j.i18n("Once")},{value:"conversation",text:this.j.i18n("This conversation")},{value:"forever",text:this.j.i18n("Always")}]}),this.scopeSelect.value=this.state.defaultPermissionScope,t.appendChild(this.denyButton.container),t.appendChild(this.approveButton.container),e.appendChild(this.scopeSelect.container)}updateContent(){if(!this.toolCall)return;const t=this.getElm("tool-info");t.innerHTML=`
9
12
  <div class="${this.getFullElName("tool-name")}">${this.j.i18n(this.toolCall.name)}</div>
10
13
  <div class="${this.getFullElName("tool-args")}">${this.formatArguments(this.toolCall.arguments)}</div>
11
- `}formatArguments(t){return Object.entries(t).map(([e,o])=>`${e}: ${JSON.stringify(o)}`).join(", ")}onApprove(){var t;const e=(t=this.scopeSelect)===null||t===void 0?void 0:t.value;this.j.e.fire("approveToolCall.ai-assistant-pro",this.toolCall.id,e)}onDeny(){this.j.e.fire("denyToolCall.ai-assistant-pro",this.toolCall.id)}destruct(){var t,e,o;(t=this.scopeSelect)===null||t===void 0||t.destruct(),(e=this.approveButton)===null||e===void 0||e.destruct(),(o=this.denyButton)===null||o===void 0||o.destruct(),super.destruct()}},u(l,"UIPermissionRequest"),l);c([f("ready")],s.prototype,"afterRender",null),c([d],s.prototype,"onApprove",null),c([d],s.prototype,"onDeny",null),s=c([m],s);export{s as UIPermissionRequest};
14
+ `}formatArguments(t){return Object.entries(t).map(([e,i])=>`${e}: ${JSON.stringify(i)}`).join(", ")}onApprove(){var t;const e=(t=this.scopeSelect)===null||t===void 0?void 0:t.value;this.j.e.fire("approveToolCall.ai-assistant-pro",this.toolCall.id,e)}onDeny(){this.j.e.fire("denyToolCall.ai-assistant-pro",this.toolCall.id)}destruct(){var t,e,i;(t=this.scopeSelect)===null||t===void 0||t.destruct(),(e=this.approveButton)===null||e===void 0||e.destruct(),(i=this.denyButton)===null||i===void 0||i.destruct(),super.destruct()}},d(l,"UIPermissionRequest"),l);c([f("ready")],s.prototype,"afterRender",null),c([u],s.prototype,"onApprove",null),c([u],s.prototype,"onDeny",null),s=c([m],s);export{s as UIPermissionRequest};
@@ -1 +1 @@
1
- var g=Object.defineProperty;var c=(i,t)=>g(i,"name",{value:t,configurable:!0});var u,l=function(i,t,e,s){var n=arguments.length,o=n<3?t:s===null?s=Object.getOwnPropertyDescriptor(t,e):s,r;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(i,t,e,s);else for(var h=i.length-1;h>=0;h--)(r=i[h])&&(o=(n<3?r(o):n>3?r(t,e,o):r(t,e))||o);return n>3&&o&&Object.defineProperty(t,e,o),o};import{ViewComponent as I}from"jodit/esm/core/component/index.js";import{component as C,debounce as d,watch as f}from"jodit/esm/core/decorators/index.js";let a=(u=class extends I{className(){return"LoadingManager"}constructor(t,e){super(t),this.state=e,this.__tick=0,this.offset=0,this.countInOneChunk=20,this.stopLoadingParts=!1,this.__isLoadingPart=!1,this.__callQueueCount=0}async onUpdateFileBrowser(){this.state.activeElements=[],this.j.panel.setMod("loading",!0),await Promise.all([this.loadFolders(),this.loadItems()]),this.j.panel.setMod("loading",!1)}async loadFolders(){if(!this.j.isOpened)return;const{currentPath:t,currentSource:e}=this.state;try{const s=await this.j.dataProvider.tree(t,e);this.j.stateManager.fillTreeForPath(s,t),this.state.sources=s}catch(s){this.j.status(s)}}async loadItems(){if(this.j.isOpened)try{this.__tick+=1;const{__tick:t}=this;this.offset=0,this.stopLoadingParts=!1,this.__callQueueCount=0;const{items:e,loadedTotal:s}=await _(this.state,this.j.dataProvider,this.offset,this.countInOneChunk);if(this.state.elements=e,this.stopLoadingParts=s<this.countInOneChunk,await this.loadItemsChunk(t),await this.async.requestIdlePromise(),this.__tick!==t)return;for(;!this.stopLoadingParts&&this.j.panel.countInColumn*this.j.panel.countInRow>=this.state.elements.length;)if(await this.loadItemsChunk(t),this.__tick!==t)return}catch(t){this.j.status(t)}}async __loadItemsChunk(t){if(this.__isLoadingPart){this.__callQueueCount+=1;return}if(this.stopLoadingParts){this.__callQueueCount=0;return}this.__isLoadingPart=!0,this.j.panel.items.setMod("chunk-loading",!0);try{this.offset+=this.countInOneChunk;const{items:e,loadedTotal:s}=await _(this.state,this.j.dataProvider,this.offset,this.countInOneChunk);if(this.__tick!==t)return;this.stopLoadingParts=s<this.countInOneChunk,e.length&&(this.state.elements=this.state.elements.concat(e))}catch(e){this.j.status(e)}if(this.j.panel.items.setMod("chunk-loading",!1),this.__isLoadingPart=!1,this.__callQueueCount>0)return this.__callQueueCount-=1,this.__loadItemsChunk(t)}loadItemsChunk(t=this.__tick){return t!==this.__tick?Promise.resolve():this.__loadItemsChunk(t)}},c(u,"LoadingManager"),u);l([f(":update.filebrowser")],a.prototype,"onUpdateFileBrowser",null),l([f(["state.currentPath","state.currentSource"]),d(i=>({timeout:i.defaultTimeout,promisify:!0}))],a.prototype,"loadFolders",null),l([f(["state.currentPath","state.currentSource","state.sortBy","state.onlyImages","state.foldersPosition","state.filterWord"]),d(i=>({timeout:i.defaultTimeout,promisify:!0}))],a.prototype,"loadItems",null),l([d(i=>({timeout:i.defaultTimeout,promisify:!0}))],a.prototype,"loadItemsChunk",null),a=l([C],a);function _(i,t,e,s){const{currentPath:n,currentSource:o,sortBy:r,withFolders:h,foldersPosition:m,onlyImages:p,filterWord:P}=i;return t.itemsEx(n,o,{offset:e,limit:s,sortBy:r,withFolders:h,foldersPosition:m,onlyImages:p,filterWord:P})}c(_,"loadPartItems");export{a as LoadingManager};
1
+ var g=Object.defineProperty;var c=(i,t)=>g(i,"name",{value:t,configurable:!0});var l,h=function(i,t,e,o){var n=arguments.length,s=n<3?t:o===null?o=Object.getOwnPropertyDescriptor(t,e):o,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(i,t,e,o);else for(var u=i.length-1;u>=0;u--)(a=i[u])&&(s=(n<3?a(s):n>3?a(t,e,s):a(t,e))||s);return n>3&&s&&Object.defineProperty(t,e,s),s};import{ViewComponent as I}from"jodit/esm/core/component/index.js";import{component as y,debounce as d,watch as f}from"jodit/esm/core/decorators/index.js";let r=(l=class extends I{className(){return"LoadingManager"}constructor(t,e){super(t),this.state=e,this.__tick=0,this.offset=0,this.countInOneChunk=20,this.stopLoadingParts=!1,this.__isLoadingPart=!1,this.__callQueueCount=0}async onUpdateFileBrowser(){this.state.activeElements=[],this.j.panel.setMod("loading",!0),await Promise.all([this.loadFolders(),this.loadItems()]),this.j.panel.setMod("loading",!1)}async loadFolders(){var t;if(!this.j.isOpened)return;const{currentPath:e,currentSource:o,onlyImages:n}=this.state;try{const s=this.j.dataProvider;!((t=s.o)===null||t===void 0)&&t.folder&&(s.o.folder.data.onlyImages=n);const a=await s.tree(e,o);this.j.stateManager.fillTreeForPath(a,e),this.state.sources=a}catch(s){this.j.status(s)}}async loadItems(){if(this.j.isOpened)try{this.__tick+=1;const{__tick:t}=this;this.offset=0,this.stopLoadingParts=!1,this.__callQueueCount=0;const{items:e,loadedTotal:o}=await m(this.state,this.j.dataProvider,this.offset,this.countInOneChunk);if(this.state.elements=e,this.stopLoadingParts=o<this.countInOneChunk,await this.loadItemsChunk(t),await this.async.requestIdlePromise(),this.__tick!==t)return;for(;!this.stopLoadingParts&&this.j.panel.countInColumn*this.j.panel.countInRow>=this.state.elements.length;)if(await this.loadItemsChunk(t),this.__tick!==t)return}catch(t){this.j.status(t)}}async __loadItemsChunk(t){if(this.__isLoadingPart){this.__callQueueCount+=1;return}if(this.stopLoadingParts){this.__callQueueCount=0;return}this.__isLoadingPart=!0,this.j.panel.items.setMod("chunk-loading",!0);try{this.offset+=this.countInOneChunk;const{items:e,loadedTotal:o}=await m(this.state,this.j.dataProvider,this.offset,this.countInOneChunk);if(this.__tick!==t)return;this.stopLoadingParts=o<this.countInOneChunk,e.length&&(this.state.elements=this.state.elements.concat(e))}catch(e){this.j.status(e)}if(this.j.panel.items.setMod("chunk-loading",!1),this.__isLoadingPart=!1,this.__callQueueCount>0)return this.__callQueueCount-=1,this.__loadItemsChunk(t)}loadItemsChunk(t=this.__tick){return t!==this.__tick?Promise.resolve():this.__loadItemsChunk(t)}},c(l,"LoadingManager"),l);h([f(":update.filebrowser")],r.prototype,"onUpdateFileBrowser",null),h([f(["state.currentPath","state.currentSource","state.onlyImages"]),d(i=>({timeout:i.defaultTimeout,promisify:!0}))],r.prototype,"loadFolders",null),h([f(["state.currentPath","state.currentSource","state.sortBy","state.onlyImages","state.foldersPosition","state.filterWord"]),d(i=>({timeout:i.defaultTimeout,promisify:!0}))],r.prototype,"loadItems",null),h([d(i=>({timeout:i.defaultTimeout,promisify:!0}))],r.prototype,"loadItemsChunk",null),r=h([y],r);function m(i,t,e,o){const{currentPath:n,currentSource:s,sortBy:a,withFolders:u,foldersPosition:_,onlyImages:p,filterWord:P}=i;return t.itemsEx(n,s,{offset:e,limit:o,sortBy:a,withFolders:u,foldersPosition:_,onlyImages:p,filterWord:P})}c(m,"loadPartItems");export{r as LoadingManager};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jodit-pro",
3
- "version": "4.11.19",
3
+ "version": "4.11.22",
4
4
  "author": "Chupurnov Valerii <chupurnov@gmail.com>",
5
5
  "homepage": "https://xdsoft.net/jodit/pro/",
6
6
  "bugs": {
@@ -25,6 +25,12 @@ export declare class aiAssistantPro extends Plugin {
25
25
  * Load initial data (conversations list)
26
26
  */
27
27
  private loadInitialData;
28
+ /**
29
+ * Restore pending tool calls after loading a conversation from storage.
30
+ * Scans messages for tool calls with non-terminal status and
31
+ * re-runs handleToolCalls to show the permission dialog.
32
+ */
33
+ private restorePendingToolCalls;
28
34
  /**
29
35
  * Setup event listeners
30
36
  */
@@ -80,6 +86,10 @@ export declare class aiAssistantPro extends Plugin {
80
86
  * Delete conversation
81
87
  */
82
88
  deleteConversation(conversationId: string): Promise<void>;
89
+ /**
90
+ * Rename conversation
91
+ */
92
+ renameConversation(conversationId: string, newTitle: string): Promise<void>;
83
93
  /**
84
94
  * Search conversations
85
95
  */
@@ -4,7 +4,7 @@
4
4
  * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net/jodit/pro/
5
5
  */
6
6
  import type { IJodit } from "jodit/esm/types/index";
7
- import type { IConversation } from "../interface/index";
7
+ import type { IAIMessage, IConversation, ToolCallStatus } from "../interface/index";
8
8
  /**
9
9
  * Create new conversation
10
10
  */
@@ -13,7 +13,16 @@ export declare function createNewConversation(jodit: IJodit, defaultModel: strin
13
13
  * Find last non-error assistant message for parentMessageId
14
14
  */
15
15
  export declare function findParentMessageId(conversation: IConversation): string | null;
16
+ /**
17
+ * Check if a tool call status is terminal (no further action needed)
18
+ */
19
+ export declare function isTerminalToolCallStatus(status: ToolCallStatus): boolean;
16
20
  /**
17
21
  * Check if all tool calls have been executed
18
22
  */
19
23
  export declare function areAllToolCallsExecuted(conversation: IConversation): boolean;
24
+ /**
25
+ * Find messages that have tool calls with non-terminal status
26
+ * Used to restore pending tool call state after page refresh
27
+ */
28
+ export declare function findMessagesWithPendingToolCalls(conversation: IConversation): IAIMessage[];
@@ -11,7 +11,10 @@ export declare class UIConversationListItem extends UIElement<IViewBased> {
11
11
  className(): string;
12
12
  readonly conversation: IConversationMeta;
13
13
  private isActive;
14
- private deleteButton;
14
+ private actionsButton;
15
+ private contextMenu;
16
+ private titleElement;
17
+ private isRenaming;
15
18
  constructor(view: IViewBased, conversation: IConversationMeta, isActive: boolean | undefined, opts: {
16
19
  formatTimestamp: IAIAssistantProOptions['formatTimestamp'];
17
20
  showTimestamps: boolean;
@@ -20,6 +23,8 @@ export declare class UIConversationListItem extends UIElement<IViewBased> {
20
23
  setActive(active: boolean): void;
21
24
  private updateContent;
22
25
  protected onClick(): void;
26
+ private showActionsMenu;
27
+ private startInlineRename;
23
28
  private onDelete;
24
29
  destruct(): void;
25
30
  }
@@ -26,10 +26,16 @@ export declare class UIMainPanel extends UIElement<IViewBased> {
26
26
  setParentView(view: IViewBased): this;
27
27
  protected render(): string;
28
28
  addResize(): void;
29
+ private isEditingTitle;
30
+ private conversationActionsButton;
31
+ private headerContextMenu;
29
32
  protected afterRender(): void;
30
33
  protected __onChangeView(): Promise<void>;
31
34
  private createComponents;
32
35
  private createHeaderButtons;
36
+ private setupConversationRenameHandler;
37
+ private showConversationActionsMenu;
38
+ private showRenamePrompt;
33
39
  /**
34
40
  * Check if current display mode is flight
35
41
  */