jodit-pro 4.15.1 → 4.15.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es2015/jodit.css +2 -2
- package/es2015/jodit.fat.min.css +1 -1
- package/es2015/jodit.fat.min.js +4 -4
- package/es2015/jodit.js +3 -3
- package/es2015/jodit.min.css +1 -1
- package/es2015/jodit.min.js +3 -3
- package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
- package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.js +16 -3
- package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.min.js +2 -2
- package/es2015/plugins/autocomplete/autocomplete.css +1 -1
- package/es2015/plugins/autocomplete/autocomplete.js +1 -1
- package/es2015/plugins/autocomplete/autocomplete.min.js +1 -1
- package/es2015/plugins/backup/backup.css +1 -1
- package/es2015/plugins/backup/backup.js +1 -1
- package/es2015/plugins/backup/backup.min.js +1 -1
- package/es2015/plugins/button-generator/button-generator.css +1 -1
- package/es2015/plugins/button-generator/button-generator.js +1 -1
- package/es2015/plugins/button-generator/button-generator.min.js +1 -1
- package/es2015/plugins/change-case/change-case.js +1 -1
- package/es2015/plugins/change-case/change-case.min.js +1 -1
- package/es2015/plugins/color-picker/color-picker.css +1 -1
- package/es2015/plugins/color-picker/color-picker.js +1 -1
- package/es2015/plugins/color-picker/color-picker.min.js +1 -1
- package/es2015/plugins/emoji/emoji.css +1 -1
- package/es2015/plugins/emoji/emoji.js +1 -1
- package/es2015/plugins/emoji/emoji.min.js +1 -1
- package/es2015/plugins/export-docs/export-docs.js +1 -1
- package/es2015/plugins/export-docs/export-docs.min.js +1 -1
- package/es2015/plugins/finder/finder.css +1 -1
- package/es2015/plugins/finder/finder.js +1 -1
- package/es2015/plugins/finder/finder.min.js +1 -1
- package/es2015/plugins/google-maps/google-maps.css +1 -1
- package/es2015/plugins/google-maps/google-maps.js +1 -1
- package/es2015/plugins/google-maps/google-maps.min.js +1 -1
- package/es2015/plugins/google-search/google-search.js +1 -1
- package/es2015/plugins/google-search/google-search.min.js +1 -1
- package/es2015/plugins/highlight-signature/highlight-signature.js +1 -1
- package/es2015/plugins/highlight-signature/highlight-signature.min.js +1 -1
- package/es2015/plugins/iframe-editor/iframe-editor.css +1 -1
- package/es2015/plugins/iframe-editor/iframe-editor.js +1 -1
- package/es2015/plugins/iframe-editor/iframe-editor.min.js +1 -1
- package/es2015/plugins/image-editor-pro/image-editor-pro.css +1 -1
- package/es2015/plugins/image-editor-pro/image-editor-pro.js +1 -1
- package/es2015/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
- package/es2015/plugins/keyboard/keyboard.css +1 -1
- package/es2015/plugins/keyboard/keyboard.js +1 -1
- package/es2015/plugins/keyboard/keyboard.min.js +1 -1
- package/es2015/plugins/mobile-view/mobile-view.js +1 -1
- package/es2015/plugins/mobile-view/mobile-view.min.js +1 -1
- package/es2015/plugins/page-break/page-break.js +1 -1
- package/es2015/plugins/page-break/page-break.min.js +1 -1
- package/es2015/plugins/paste-code/paste-code.css +1 -1
- package/es2015/plugins/paste-code/paste-code.js +1 -1
- package/es2015/plugins/paste-code/paste-code.min.js +1 -1
- package/es2015/plugins/paste-from-word/paste-from-word.js +1 -1
- package/es2015/plugins/paste-from-word/paste-from-word.min.js +1 -1
- package/es2015/plugins/show-blocks/show-blocks.js +1 -1
- package/es2015/plugins/show-blocks/show-blocks.min.js +1 -1
- package/es2015/plugins/style/style.css +1 -1
- package/es2015/plugins/style/style.js +1 -1
- package/es2015/plugins/style/style.min.js +1 -1
- package/es2015/plugins/templates/templates.css +1 -1
- package/es2015/plugins/templates/templates.js +1 -1
- package/es2015/plugins/templates/templates.min.js +1 -1
- package/es2015/plugins/todo-list/todo-list.css +1 -1
- package/es2015/plugins/todo-list/todo-list.js +1 -1
- package/es2015/plugins/todo-list/todo-list.min.js +1 -1
- package/es2015/plugins/translate/translate.css +1 -1
- package/es2015/plugins/translate/translate.js +1 -1
- package/es2015/plugins/translate/translate.min.js +1 -1
- package/es2015/plugins/tune-block/tune-block.css +1 -1
- package/es2015/plugins/tune-block/tune-block.js +1 -1
- package/es2015/plugins/tune-block/tune-block.min.js +1 -1
- package/es2018/jodit.fat.min.css +1 -1
- package/es2018/jodit.fat.min.js +4 -4
- package/es2018/jodit.min.css +1 -1
- package/es2018/jodit.min.js +3 -3
- package/es2018/plugins/ai-assistant-pro/ai-assistant-pro.min.js +2 -2
- package/es2018/plugins/autocomplete/autocomplete.min.js +1 -1
- package/es2018/plugins/backup/backup.min.js +1 -1
- package/es2018/plugins/button-generator/button-generator.min.js +1 -1
- package/es2018/plugins/change-case/change-case.min.js +1 -1
- package/es2018/plugins/color-picker/color-picker.min.js +1 -1
- package/es2018/plugins/emoji/emoji.min.js +1 -1
- package/es2018/plugins/export-docs/export-docs.min.js +1 -1
- package/es2018/plugins/finder/finder.min.js +1 -1
- package/es2018/plugins/google-maps/google-maps.min.js +1 -1
- package/es2018/plugins/google-search/google-search.min.js +1 -1
- package/es2018/plugins/highlight-signature/highlight-signature.min.js +1 -1
- package/es2018/plugins/iframe-editor/iframe-editor.min.js +1 -1
- package/es2018/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
- package/es2018/plugins/keyboard/keyboard.min.js +1 -1
- package/es2018/plugins/mobile-view/mobile-view.min.js +1 -1
- package/es2018/plugins/page-break/page-break.min.js +1 -1
- package/es2018/plugins/paste-code/paste-code.min.js +1 -1
- package/es2018/plugins/paste-from-word/paste-from-word.min.js +1 -1
- package/es2018/plugins/show-blocks/show-blocks.min.js +1 -1
- package/es2018/plugins/style/style.min.js +1 -1
- package/es2018/plugins/templates/templates.min.js +1 -1
- package/es2018/plugins/todo-list/todo-list.min.js +1 -1
- package/es2018/plugins/translate/translate.min.js +1 -1
- package/es2018/plugins/tune-block/tune-block.min.js +1 -1
- package/es2021/jodit.css +2 -2
- package/es2021/jodit.fat.min.css +1 -1
- package/es2021/jodit.fat.min.js +4 -4
- package/es2021/jodit.js +3 -3
- package/es2021/jodit.min.css +1 -1
- package/es2021/jodit.min.js +3 -3
- package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
- package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.js +16 -3
- package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.min.js +2 -2
- package/es2021/plugins/autocomplete/autocomplete.css +1 -1
- package/es2021/plugins/autocomplete/autocomplete.js +1 -1
- package/es2021/plugins/autocomplete/autocomplete.min.js +1 -1
- package/es2021/plugins/backup/backup.css +1 -1
- package/es2021/plugins/backup/backup.js +1 -1
- package/es2021/plugins/backup/backup.min.js +1 -1
- package/es2021/plugins/button-generator/button-generator.css +1 -1
- package/es2021/plugins/button-generator/button-generator.js +1 -1
- package/es2021/plugins/button-generator/button-generator.min.js +1 -1
- package/es2021/plugins/change-case/change-case.js +1 -1
- package/es2021/plugins/change-case/change-case.min.js +1 -1
- package/es2021/plugins/color-picker/color-picker.css +1 -1
- package/es2021/plugins/color-picker/color-picker.js +1 -1
- package/es2021/plugins/color-picker/color-picker.min.js +1 -1
- package/es2021/plugins/emoji/emoji.css +1 -1
- package/es2021/plugins/emoji/emoji.js +1 -1
- package/es2021/plugins/emoji/emoji.min.js +1 -1
- package/es2021/plugins/export-docs/export-docs.js +1 -1
- package/es2021/plugins/export-docs/export-docs.min.js +1 -1
- package/es2021/plugins/finder/finder.css +1 -1
- package/es2021/plugins/finder/finder.js +1 -1
- package/es2021/plugins/finder/finder.min.js +1 -1
- package/es2021/plugins/google-maps/google-maps.css +1 -1
- package/es2021/plugins/google-maps/google-maps.js +1 -1
- package/es2021/plugins/google-maps/google-maps.min.js +1 -1
- package/es2021/plugins/google-search/google-search.js +1 -1
- package/es2021/plugins/google-search/google-search.min.js +1 -1
- package/es2021/plugins/highlight-signature/highlight-signature.js +1 -1
- package/es2021/plugins/highlight-signature/highlight-signature.min.js +1 -1
- package/es2021/plugins/iframe-editor/iframe-editor.css +1 -1
- package/es2021/plugins/iframe-editor/iframe-editor.js +1 -1
- package/es2021/plugins/iframe-editor/iframe-editor.min.js +1 -1
- package/es2021/plugins/image-editor-pro/image-editor-pro.css +1 -1
- package/es2021/plugins/image-editor-pro/image-editor-pro.js +1 -1
- package/es2021/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
- package/es2021/plugins/keyboard/keyboard.css +1 -1
- package/es2021/plugins/keyboard/keyboard.js +1 -1
- package/es2021/plugins/keyboard/keyboard.min.js +1 -1
- package/es2021/plugins/mobile-view/mobile-view.js +1 -1
- package/es2021/plugins/mobile-view/mobile-view.min.js +1 -1
- package/es2021/plugins/page-break/page-break.js +1 -1
- package/es2021/plugins/page-break/page-break.min.js +1 -1
- package/es2021/plugins/paste-code/paste-code.css +1 -1
- package/es2021/plugins/paste-code/paste-code.js +1 -1
- package/es2021/plugins/paste-code/paste-code.min.js +1 -1
- package/es2021/plugins/paste-from-word/paste-from-word.js +1 -1
- package/es2021/plugins/paste-from-word/paste-from-word.min.js +1 -1
- package/es2021/plugins/show-blocks/show-blocks.js +1 -1
- package/es2021/plugins/show-blocks/show-blocks.min.js +1 -1
- package/es2021/plugins/style/style.css +1 -1
- package/es2021/plugins/style/style.js +1 -1
- package/es2021/plugins/style/style.min.js +1 -1
- package/es2021/plugins/templates/templates.css +1 -1
- package/es2021/plugins/templates/templates.js +1 -1
- package/es2021/plugins/templates/templates.min.js +1 -1
- package/es2021/plugins/todo-list/todo-list.css +1 -1
- package/es2021/plugins/todo-list/todo-list.js +1 -1
- package/es2021/plugins/todo-list/todo-list.min.js +1 -1
- package/es2021/plugins/translate/translate.css +1 -1
- package/es2021/plugins/translate/translate.js +1 -1
- package/es2021/plugins/translate/translate.min.js +1 -1
- package/es2021/plugins/tune-block/tune-block.css +1 -1
- package/es2021/plugins/tune-block/tune-block.js +1 -1
- package/es2021/plugins/tune-block/tune-block.min.js +1 -1
- package/es2021.en/jodit.css +2 -2
- package/es2021.en/jodit.fat.min.css +1 -1
- package/es2021.en/jodit.fat.min.js +4 -4
- package/es2021.en/jodit.js +3 -3
- package/es2021.en/jodit.min.css +1 -1
- package/es2021.en/jodit.min.js +3 -3
- package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
- package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.js +16 -3
- package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.min.js +2 -2
- package/es2021.en/plugins/autocomplete/autocomplete.css +1 -1
- package/es2021.en/plugins/autocomplete/autocomplete.js +1 -1
- package/es2021.en/plugins/autocomplete/autocomplete.min.js +1 -1
- package/es2021.en/plugins/backup/backup.css +1 -1
- package/es2021.en/plugins/backup/backup.js +1 -1
- package/es2021.en/plugins/backup/backup.min.js +1 -1
- package/es2021.en/plugins/button-generator/button-generator.css +1 -1
- package/es2021.en/plugins/button-generator/button-generator.js +1 -1
- package/es2021.en/plugins/button-generator/button-generator.min.js +1 -1
- package/es2021.en/plugins/change-case/change-case.js +1 -1
- package/es2021.en/plugins/change-case/change-case.min.js +1 -1
- package/es2021.en/plugins/color-picker/color-picker.css +1 -1
- package/es2021.en/plugins/color-picker/color-picker.js +1 -1
- package/es2021.en/plugins/color-picker/color-picker.min.js +1 -1
- package/es2021.en/plugins/emoji/emoji.css +1 -1
- package/es2021.en/plugins/emoji/emoji.js +1 -1
- package/es2021.en/plugins/emoji/emoji.min.js +1 -1
- package/es2021.en/plugins/export-docs/export-docs.js +1 -1
- package/es2021.en/plugins/export-docs/export-docs.min.js +1 -1
- package/es2021.en/plugins/finder/finder.css +1 -1
- package/es2021.en/plugins/finder/finder.js +1 -1
- package/es2021.en/plugins/finder/finder.min.js +1 -1
- package/es2021.en/plugins/google-maps/google-maps.css +1 -1
- package/es2021.en/plugins/google-maps/google-maps.js +1 -1
- package/es2021.en/plugins/google-maps/google-maps.min.js +1 -1
- package/es2021.en/plugins/google-search/google-search.js +1 -1
- package/es2021.en/plugins/google-search/google-search.min.js +1 -1
- package/es2021.en/plugins/highlight-signature/highlight-signature.js +1 -1
- package/es2021.en/plugins/highlight-signature/highlight-signature.min.js +1 -1
- package/es2021.en/plugins/iframe-editor/iframe-editor.css +1 -1
- package/es2021.en/plugins/iframe-editor/iframe-editor.js +1 -1
- package/es2021.en/plugins/iframe-editor/iframe-editor.min.js +1 -1
- package/es2021.en/plugins/image-editor-pro/image-editor-pro.css +1 -1
- package/es2021.en/plugins/image-editor-pro/image-editor-pro.js +1 -1
- package/es2021.en/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
- package/es2021.en/plugins/keyboard/keyboard.css +1 -1
- package/es2021.en/plugins/keyboard/keyboard.js +1 -1
- package/es2021.en/plugins/keyboard/keyboard.min.js +1 -1
- package/es2021.en/plugins/mobile-view/mobile-view.js +1 -1
- package/es2021.en/plugins/mobile-view/mobile-view.min.js +1 -1
- package/es2021.en/plugins/page-break/page-break.js +1 -1
- package/es2021.en/plugins/page-break/page-break.min.js +1 -1
- package/es2021.en/plugins/paste-code/paste-code.css +1 -1
- package/es2021.en/plugins/paste-code/paste-code.js +1 -1
- package/es2021.en/plugins/paste-code/paste-code.min.js +1 -1
- package/es2021.en/plugins/paste-from-word/paste-from-word.js +1 -1
- package/es2021.en/plugins/paste-from-word/paste-from-word.min.js +1 -1
- package/es2021.en/plugins/show-blocks/show-blocks.js +1 -1
- package/es2021.en/plugins/show-blocks/show-blocks.min.js +1 -1
- package/es2021.en/plugins/style/style.css +1 -1
- package/es2021.en/plugins/style/style.js +1 -1
- package/es2021.en/plugins/style/style.min.js +1 -1
- package/es2021.en/plugins/templates/templates.css +1 -1
- package/es2021.en/plugins/templates/templates.js +1 -1
- package/es2021.en/plugins/templates/templates.min.js +1 -1
- package/es2021.en/plugins/todo-list/todo-list.css +1 -1
- package/es2021.en/plugins/todo-list/todo-list.js +1 -1
- package/es2021.en/plugins/todo-list/todo-list.min.js +1 -1
- package/es2021.en/plugins/translate/translate.css +1 -1
- package/es2021.en/plugins/translate/translate.js +1 -1
- package/es2021.en/plugins/translate/translate.min.js +1 -1
- package/es2021.en/plugins/tune-block/tune-block.css +1 -1
- package/es2021.en/plugins/tune-block/tune-block.js +1 -1
- package/es2021.en/plugins/tune-block/tune-block.min.js +1 -1
- package/es5/jodit.css +3 -3
- package/es5/jodit.fat.min.css +1 -1
- package/es5/jodit.fat.min.js +2 -2
- package/es5/jodit.js +3 -3
- package/es5/jodit.min.css +3 -3
- package/es5/jodit.min.js +2 -2
- package/es5/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
- package/es5/plugins/ai-assistant-pro/ai-assistant-pro.js +18 -3
- package/es5/plugins/ai-assistant-pro/ai-assistant-pro.min.js +2 -2
- package/es5/plugins/autocomplete/autocomplete.css +1 -1
- package/es5/plugins/autocomplete/autocomplete.js +1 -1
- package/es5/plugins/autocomplete/autocomplete.min.js +1 -1
- package/es5/plugins/backup/backup.css +1 -1
- package/es5/plugins/backup/backup.js +1 -1
- package/es5/plugins/backup/backup.min.js +1 -1
- package/es5/plugins/button-generator/button-generator.css +1 -1
- package/es5/plugins/button-generator/button-generator.js +1 -1
- package/es5/plugins/button-generator/button-generator.min.js +1 -1
- package/es5/plugins/change-case/change-case.js +1 -1
- package/es5/plugins/change-case/change-case.min.js +1 -1
- package/es5/plugins/color-picker/color-picker.css +1 -1
- package/es5/plugins/color-picker/color-picker.js +1 -1
- package/es5/plugins/color-picker/color-picker.min.js +1 -1
- package/es5/plugins/emoji/emoji.css +1 -1
- package/es5/plugins/emoji/emoji.js +1 -1
- package/es5/plugins/emoji/emoji.min.js +1 -1
- package/es5/plugins/export-docs/export-docs.js +1 -1
- package/es5/plugins/export-docs/export-docs.min.js +1 -1
- package/es5/plugins/finder/finder.css +1 -1
- package/es5/plugins/finder/finder.js +1 -1
- package/es5/plugins/finder/finder.min.js +1 -1
- package/es5/plugins/google-maps/google-maps.css +1 -1
- package/es5/plugins/google-maps/google-maps.js +1 -1
- package/es5/plugins/google-maps/google-maps.min.js +1 -1
- package/es5/plugins/google-search/google-search.js +1 -1
- package/es5/plugins/google-search/google-search.min.js +1 -1
- package/es5/plugins/highlight-signature/highlight-signature.js +1 -1
- package/es5/plugins/highlight-signature/highlight-signature.min.js +1 -1
- package/es5/plugins/iframe-editor/iframe-editor.css +1 -1
- package/es5/plugins/iframe-editor/iframe-editor.js +1 -1
- package/es5/plugins/iframe-editor/iframe-editor.min.js +1 -1
- package/es5/plugins/image-editor-pro/image-editor-pro.css +1 -1
- package/es5/plugins/image-editor-pro/image-editor-pro.js +1 -1
- package/es5/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
- package/es5/plugins/keyboard/keyboard.css +1 -1
- package/es5/plugins/keyboard/keyboard.js +1 -1
- package/es5/plugins/keyboard/keyboard.min.js +1 -1
- package/es5/plugins/mobile-view/mobile-view.js +1 -1
- package/es5/plugins/mobile-view/mobile-view.min.js +1 -1
- package/es5/plugins/page-break/page-break.js +1 -1
- package/es5/plugins/page-break/page-break.min.js +1 -1
- package/es5/plugins/paste-code/paste-code.css +1 -1
- package/es5/plugins/paste-code/paste-code.js +1 -1
- package/es5/plugins/paste-code/paste-code.min.js +1 -1
- package/es5/plugins/paste-from-word/paste-from-word.js +1 -1
- package/es5/plugins/paste-from-word/paste-from-word.min.js +1 -1
- package/es5/plugins/show-blocks/show-blocks.js +1 -1
- package/es5/plugins/show-blocks/show-blocks.min.js +1 -1
- package/es5/plugins/style/style.css +1 -1
- package/es5/plugins/style/style.js +1 -1
- package/es5/plugins/style/style.min.js +1 -1
- package/es5/plugins/templates/templates.css +1 -1
- package/es5/plugins/templates/templates.js +1 -1
- package/es5/plugins/templates/templates.min.js +1 -1
- package/es5/plugins/todo-list/todo-list.css +1 -1
- package/es5/plugins/todo-list/todo-list.js +1 -1
- package/es5/plugins/todo-list/todo-list.min.js +1 -1
- package/es5/plugins/translate/translate.css +1 -1
- package/es5/plugins/translate/translate.js +1 -1
- package/es5/plugins/translate/translate.min.js +1 -1
- package/es5/plugins/tune-block/tune-block.css +1 -1
- package/es5/plugins/tune-block/tune-block.js +1 -1
- package/es5/plugins/tune-block/tune-block.min.js +1 -1
- package/es5/polyfills.fat.min.js +1 -1
- package/es5/polyfills.js +1 -1
- package/es5/polyfills.min.js +1 -1
- package/esm/plugins/ai-assistant-pro/core/conversation.d.ts +1 -1
- package/esm/plugins/ai-assistant-pro/core/conversation.js +1 -1
- package/package.json +1 -1
- package/types/plugins/ai-assistant-pro/core/conversation.d.ts +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* jodit-pro - PRO Version of Jodit Editor
|
|
3
3
|
* Author: Chupurnov Valerii <chupurnov@gmail.com>
|
|
4
|
-
* Version: v4.15.
|
|
4
|
+
* Version: v4.15.3
|
|
5
5
|
* Url: https://xdsoft.net/jodit/pro/
|
|
6
6
|
* License(s): SEE LICENSE IN LICENSE.md
|
|
7
7
|
*/
|
|
@@ -1786,11 +1786,24 @@ if (jodit_esm_config__WEBPACK_IMPORTED_MODULE_13__.Config.prototype.tuneBlock) {
|
|
|
1786
1786
|
return conversation;
|
|
1787
1787
|
}
|
|
1788
1788
|
/**
|
|
1789
|
-
*
|
|
1789
|
+
* Ids that never identify a finished provider response: `error_` is our own
|
|
1790
|
+
* error placeholder, `stream_` is the provisional id from the `created`
|
|
1791
|
+
* event that only survives when the stream was aborted or cut before
|
|
1792
|
+
* `completed` (network, proxy timeout, deploy). Chaining such an id as
|
|
1793
|
+
* parent makes every following turn fail on the server.
|
|
1794
|
+
*/ const NON_PARENT_ID_PREFIXES = [
|
|
1795
|
+
'error_',
|
|
1796
|
+
'stream_'
|
|
1797
|
+
];
|
|
1798
|
+
function isCompletedAssistantId(id) {
|
|
1799
|
+
return !NON_PARENT_ID_PREFIXES.some((prefix)=>id.startsWith(prefix));
|
|
1800
|
+
}
|
|
1801
|
+
/**
|
|
1802
|
+
* Find last successfully completed assistant message for parentMessageId
|
|
1790
1803
|
*/ function findParentMessageId(conversation) {
|
|
1791
1804
|
for(let i = conversation.messages.length - 1; i >= 0; i--){
|
|
1792
1805
|
const msg = conversation.messages[i];
|
|
1793
|
-
if (msg.role === 'assistant' &&
|
|
1806
|
+
if (msg.role === 'assistant' && isCompletedAssistantId(msg.id)) {
|
|
1794
1807
|
return msg.id;
|
|
1795
1808
|
}
|
|
1796
1809
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* jodit-pro - PRO Version of Jodit Editor
|
|
3
3
|
* Author: Chupurnov Valerii <chupurnov@gmail.com>
|
|
4
|
-
* Version: v4.15.
|
|
4
|
+
* Version: v4.15.3
|
|
5
5
|
* Url: https://xdsoft.net/jodit/pro/
|
|
6
6
|
* License(s): SEE LICENSE IN LICENSE.md
|
|
7
7
|
*/
|
|
8
8
|
!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var u=t();for(var i in u)("object"==typeof exports?exports:e)[i]=u[i]}}(self,function(){return(self.webpackChunkjodit_pro=self.webpackChunkjodit_pro||[]).push([[830],{94668:function(e){e.exports='<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"> <g fill="none"> <path d="M13 3H5v18h14V9l-6-6Zm0 0v6h6M12 12v6m-3-3h6"/> </g> </svg>'},86428:function(e){e.exports='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"> \x3c!-- Background rounded rect --\x3e <rect x="1" y="1" width="22" height="22" rx="3"/> \x3c!-- Letter A - outer shape --\x3e <polygon points="8,5 2,19 5,19 6.5,16 11.5,16 13,19 16,19 10,5" fill="white"/> \x3c!-- Letter A - inner triangle (hole) --\x3e <polygon points="9,9 7.5,13 10.5,13" fill="currentColor"/> \x3c!-- Letter I --\x3e <rect x="17" y="5" width="3" height="14" fill="white"/> </svg>'},75966:function(e){e.exports='<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"> <g fill="none"> <path d="m3 17 11-11 4 4L7 21Zm8-8 4 4M5 3v4M3 5h4M19 2v4m-2-2h4m-1 12v4m-2-2h4"/> </g> </svg>'},83207:function(e){e.exports='<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"> <g fill="none"> <path d="m10 6 6 6-6 6"/> </g> </svg>'},99219:function(e){e.exports='<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"> <g fill="none"> <path d="m3 10 18-7-7 18-3-8-8-3Zm8 3L21 3"/> </g> </svg>'},63674:function(e){e.exports='<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"> <g fill="none"> <path d="M12 2 4 5v7c0 5 8 10 8 10s8-5 8-10V5l-8-3Z"/> </g> </svg>'},4133:function(e){e.exports='<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"> <g fill="none"> <path d="m13 2-9 12h6l-1 8 11-13h-7V2Z"/> </g> </svg>'},62357:function(e,t,u){"use strict";u.d(t,{UIRange:function(){return c}});var i=u(82749),n=u(56075),s=u(11886),r=u(31635),o=u(65478),a=u(21537),l=u(67510);class c extends l.UIInput{className(){return"UIRange"}appendUIRange(){let e=this.j.create.div(this.getFullElName("slider"));this.container.appendChild(e);let t=this.j.create.div(this.getFullElName("handle"));e.appendChild(t);let u=this.j.create.div(this.getFullElName("log")),i=this.getElm("label");i&&i.appendChild(u)}onDragStart(e){this.startValue=parseFloat(this.value)||0,this.startX=e.clientX;let t=this.getElm("slider");(0,a.assert)(null!=t,"slider element does not exists"),this.width=t.offsetWidth,this.j.e.on(this.j.ow,"mousemove",this.onDrag)}onDrag(e){let{min:t,max:u,step:i=1}=this.state,n=(e.clientX-this.startX)/this.width*(this.state.max-this.state.min),s=this.startValue+n;s<t&&(s=t),s>u&&(s=u),s=Math.round(s/i)*i,this.value=s.toFixed(10)}onDragEnd(){this.j.e.off(this.j.ow,"mousemove",this.onDrag)}onChangeSelfValue(){let e=this.getElm("handle"),t=parseFloat(this.value)||0;(0,a.assert)(null!=e,"Handle element does not exist"),(0,a.css)(e,{left:(t-this.state.min)/(this.state.max-this.state.min)*100+"%"});let u=this.getElm("log");(0,a.assert)(null!=u,"log element does not exist"),u.innerText=t.toString()}destruct(){return this.onDragEnd(),super.destruct()}constructor(e,t){super(e,(0,s._)((0,n._)({},t),{type:"hidden"})),(0,i._)(this,"state",(0,s._)((0,n._)({},l.UIInput.defaultState),{min:0,max:100,step:1})),(0,i._)(this,"startValue",0),(0,i._)(this,"startX",0),(0,i._)(this,"width",100),Object.assign(this.state,t),this.appendUIRange(),this.onChangeSelfValue()}}(0,r.__decorate)([(0,o.watch)(["handle:mousedown","handle:touchstart"])],c.prototype,"onDragStart",null),(0,r.__decorate)([o.autobind],c.prototype,"onDrag",null),(0,r.__decorate)([(0,o.watch)(["j.ow:mouseup","j.ow:touchend"])],c.prototype,"onDragEnd",null),(0,r.__decorate)([(0,o.watch)(":change")],c.prototype,"onChangeSelfValue",null),c=(0,r.__decorate)([o.component],c)},41810:function(e,t,u){"use strict";u.r(t),u.d(t,{aiAssistantPro:function(){return y}});var i=u(77688),n=u(82749),s=u(56075),r=u(11886),o=u(31635);u(66645);var a=u(86449),l=u(21020),c=u(46166),h=u(62895),d=u(55487),F=u(27769),p=u(58579),A=u(63805),g=u(82758),C=u(65478),f=u(580),m=u(21537),E=u(50911),D=u(2692),v=u(18549),B=u(54747);class y extends E.Plugin{get state(){return this.stateManager.state}get toolRegistry(){return new d.ToolRegistry(this.j)}get permissionManager(){return new l.PermissionManager(this.j,this.toolRegistry)}get apiClient(){return new a.APIClient(this.j,this.toolRegistry)}get storage(){let{storage:e,storageKey:t,maxConversations:u}=this.j.o.aiAssistantPro;if("string"==typeof e){let i=(0,h.createStorageProvider)(e,t);return new h.WebStorageConversationStorage(i,u)}return e}get stateManager(){return new c.StateManager(this.j)}get mainPanel(){return new F.UIMainPanel(this.j,this.stateManager.state,this.j.o.aiAssistantPro,e=>{let t=this.stateManager.getCurrentConversation();t&&this.stateManager.setCurrentConversation((0,s._)({},t,e))})}get dialog(){let e=this.j.dlg({resizable:this.j.o.aiAssistantPro.resizable,eventEmmiter:this.j.e});return e.e.on(e,"afterClose",()=>{this.j.e.fire("closeAIAssistantPro.ai-assistant-pro")}),e}setupTextAutocomplete(){let{textAutocompleteEnabled:e,textAutocompleteApiRequest:t,textAutocompleteMinQueryLength:u,textAutocompleteMaxSuggestions:n,textAutocompleteDebounceMs:o,textAutocompleteCacheTTL:a,textAutocompleteCacheMaxSize:l}=this.j.o.aiAssistantPro;if(!e||!t)return;this.j.o.autocomplete=(0,r._)((0,s._)({},this.j.o.autocomplete),{displayMode:"inline"});let c=this.textAutocompleteCache,h=null;this.textAutocompleteSource=e=>{if(e.length<u)return[];let s=`${e}:${n}`;if(a>0){let e=c.get(s);if(e&&Date.now()-e.ts<a)return e.data.map(e=>({value:e,title:e}))}h&&clearTimeout(h);let r=new AbortController;return new Promise(u=>{h=setTimeout(()=>(0,i._)(function*(){try{let i=yield t(e,n,r.signal);if(Array.isArray(i)){let e=i.slice(0,n);if(a>0){if(c.size>=l){let e=c.keys().next().value;null!=e&&c.delete(e)}c.set(s,{ts:Date.now(),data:e})}u(e.map(e=>({value:e,title:e})));return}u([])}catch(e){u([])}})(),o)})},this.j.e.fire("registerAutocompleteSource",this.textAutocompleteSource)}afterInit(){(0,f.extendLang)(A),this.setupEventListeners(),this.setupTextAutocomplete(),this.j.async.promise(e=>{let{initiallyOpened:t,persistOpenState:u}=this.j.o.aiAssistantPro,i=t;u?this.storage.getGlobalSettings().then(e=>{if((null==e?void 0:e.isOpen)!=null&&(i=e.isOpen),i)return this.openAssistant()}).catch(()=>null).finally(()=>e(void 0)):e(void 0)}).catch(()=>null)}__loadData(){return this.__initedPromise?this.__initedPromise:this.isDestructed?Promise.reject():(this.__initedPromise=this.j.async.promise(e=>{this.loadInitialData().then(e)}).catch(()=>null),this.__initedPromise)}loadInitialData(){return(0,i._)(function*(){this.mainPanel.setMod("ready",!0),yield(0,p.loadInitialData)(this.j,this.storage,this.stateManager),yield this.restorePendingToolCalls()}).call(this)}restorePendingToolCalls(){return(0,i._)(function*(){let e=this.stateManager.getCurrentConversation();if(!e)return;let t=(0,p.findMessagesWithPendingToolCalls)(e);if(0!==t.length)for(let e of t)yield this.handleToolCalls(e.id)}).call(this)}setupEventListeners(){this.j.e.on("selectConversation.ai-assistant-pro",e=>(0,i._)(function*(){try{yield this.__loadData(),yield(0,p.handleConversationSelect)(e,this.storage,this.stateManager)}catch(e){g.IS_PROD}}).call(this)),this.j.e.on("newConversation.ai-assistant-pro",()=>(0,i._)(function*(){yield this.__loadData();let e=(0,p.createNewConversation)(this.j,this.state.defaultModel,this.state.defaultTemperature);this.stateManager.setCurrentConversation(e)}).call(this)),this.j.e.on("deleteConversation.ai-assistant-pro",e=>(0,i._)(function*(){yield this.__loadData(),yield this.deleteConversation(e)}).call(this)),this.j.e.on("renameConversation.ai-assistant-pro",(e,t)=>(0,i._)(function*(){yield this.__loadData(),yield this.renameConversation(e,t)}).call(this)),this.j.e.on("backToList.ai-assistant-pro",()=>(0,i._)(function*(){yield this.__loadData(),yield(0,p.handleBackToList)(this.storage,this.stateManager)}).call(this)),this.j.e.on("removeContext.ai-assistant-pro",e=>(0,i._)(function*(){yield this.__loadData(),this.stateManager.removeSelectionContext(e)}).call(this)),this.j.e.on("approveToolCall.ai-assistant-pro",(e,t)=>(0,i._)(function*(){try{yield this.__loadData();let u=yield(0,p.handleToolApproval)(e,t,this.stateManager,this.permissionManager,this.storage);if(u){let e=this.stateManager.getCurrentConversation();if(!e)return;let t=e.messages.find(e=>{var t;return null==(t=e.toolCalls)?void 0:t.some(e=>e.id===u.id)});if(!t)return;yield this.executeToolCall(t.id,u)}}catch(e){if((0,m.isAbortError)(e))return;this.stateManager.setError(e instanceof Error?e.message:String(e))}}).call(this)),this.j.e.on("denyToolCall.ai-assistant-pro",e=>(0,i._)(function*(){yield this.__loadData(),yield(0,p.handleToolDenial)(this.j,e,this.stateManager,this.storage)}).call(this)),this.j.e.on("abortRequest.ai-assistant-pro",()=>(0,i._)(function*(){yield this.__loadData(),this.apiClient.abort(),this.stateManager.setLoading(!1)}).call(this))}__applyTheme(){(0,p.applyTheme)(this.j,this.stateManager.state.theme,this.stateManager.state.displayMode,this.mainPanel.container,this.dialog)}openAssistant(){return(0,i._)(function*(){if(this.stateManager.isOpen()){this.stateManager.close(),yield this.__closeInContainer();return}yield this.__loadData(),this.isDestructed||(this.stateManager.open(),yield this.__openInContainer(),this.j.o.aiAssistantPro.includeSelectionByDefault&&!this.j.s.isCollapsed()&&this.addCurrentSelectionToContext())}).call(this)}__openInContainer(){return(0,i._)(function*(){let{resizable:e,allowClose:t,flightPanelHeight:u}=this.j.o.aiAssistantPro,{displayMode:i="right",panelWidth:n,panelHeight:s}=this.stateManager.state;switch(this.__applyTheme(),this.mainPanel.setMod("displayMode",i),this.mainPanel.setMod("allowClose",t),this.mainPanel.setParentView("dialog"===i||"flight"===i?this.dialog:this.j),this.__openedMode=i,i){case"dialog":this.dialog.setSize(n,s).open().setContent(this.mainPanel.container);break;case"flight":v.UIFlightPosition.install(this.mainPanel,this.j.container,{panelHeight:u,containerClassName:this.getFullElName("flight-container")});break;default:e&&(B.UIResize.remove(this.mainPanel),B.UIResize.install(this.mainPanel,(0,p.invertMode)(i),{handleClassName:this.getFullElName("ai-assistent-resize-handle"),onResize:({newSize:e})=>{let t="left"===i||"right"===i?e:n,u="top"===i||"bottom"===i?e:s;return this.stateManager.state.panelWidth=t,this.stateManager.state.panelHeight=u,!0}})),this.j.currentPlace.slots[i].appendChild(this.mainPanel.container),(0,p.resizeInPanelView)(this.j,i,n,s)}}).call(this)}__onResizeInPanelView(){let{displayMode:e,panelWidth:t,panelHeight:u}=this.stateManager.state;(0,p.resizeInPanelView)(this.j,e,t,u)}__closeInContainer(){return(0,i._)(function*(){let{displayMode:e}=yield this.stateManager.state;switch(this.__openedMode!==e&&"dialog"===this.__openedMode&&this.dialog.close(),this.__openedMode!==e&&"flight"===this.__openedMode&&this.__closeFlightMode(),e){case"dialog":this.dialog.close();break;case"flight":this.__closeFlightMode();break;default:this.mainPanel.container.remove()}}).call(this)}__closeFlightMode(){v.UIFlightPosition.remove(this.mainPanel)}__onSavedStateChange(){var e;let t=this.stateManager.state;return this.storage.saveGlobalSettings((0,s._)({displayMode:t.displayMode,panelWidth:t.panelWidth,panelHeight:t.panelHeight,theme:t.theme,defaultModel:t.defaultModel,defaultTemperature:t.defaultTemperature,currentConversationId:null==(e=t.currentConversation)?void 0:e.id},this.j.o.aiAssistantPro.persistOpenState?{isOpen:t.isOpen}:{}))}closeAssistant(){return(0,i._)(function*(){this.stateManager.isOpen()&&(yield this.__loadData(),this.stateManager.close(),this.__closeInContainer())}).call(this)}addCurrentSelectionToContext(){return(0,i._)(function*(){yield this.__loadData();let e=(0,p.getCurrentSelectionContext)(this.j);e&&this.stateManager.addSelectionContext(e)}).call(this)}executeQuickCommand(e){return(0,i._)(function*(){let t,{quickCommandsSilentMode:u,quickCommandsDisplayMode:i}=this.j.o.aiAssistantPro,n=this.j.o.aiAssistant;if(n&&n[e]&&(0,m.isString)(n[e])&&(t=n[e]),!t)return void this.j.e.fire("error",`Command not found: ${e}`);let s=this.j.s.isCollapsed()?this.j.value:this.j.s.html;if(!s)return;let r=(null==n?void 0:n.aiCommonPrefixPrompt)||"",o=(null==n?void 0:n.aiCommonSuffixPrompt)||"",a=`${r}${t}${o}
|
|
9
9
|
|
|
10
|
-
${s}`.trim();u?yield this.__executeQuickCommandSilent(a,s):yield this.__executeQuickCommandWithPanel(a,i)}).call(this)}__executeQuickCommandSilent(e,t){return(0,i._)(function*(){yield this.__loadData(),this.j.progressbar.show().progress(100);try{let t=(0,p.createUserMessage)(e),u=(0,p.createNewConversation)(this.j,this.state.defaultModel,this.state.defaultTemperature,[t]),i=yield this.apiClient.sendRequest(u.id,u.messages,null,[],u.options);if("final"===i.mode){let e=i.response.content;e&&this.j.s.insertHTML(e)}}catch(e){(0,m.isAbortError)(e)||this.j.e.fire("error",e)}finally{this.j.progressbar.hide()}}).call(this)}__executeQuickCommandWithPanel(e,t){return(0,i._)(function*(){yield this.__loadData();let u=this.stateManager.state.displayMode;this.stateManager.state.displayMode=t;let i=(0,p.getCurrentSelectionContext)(this.j);i&&this.stateManager.addSelectionContext(i),this.stateManager.isOpen()||(yield this.openAssistant()),yield this.sendMessage(e),this.stateManager.state.displayMode=u}).call(this)}sendMessage(e){return(0,i._)(function*(){yield this.__loadData();let t=this.stateManager.getCurrentConversation(),u=this.stateManager.getEditingMessageId();if(u&&t){let e=t.messages.findIndex(e=>e.id===u);if(-1!==e){let u=t.messages.slice(0,e),i=(0,r._)((0,s._)({},t),{messages:u,updatedAt:Date.now()});this.stateManager.setCurrentConversation(i),yield this.storage.save(i),this.stateManager.clearEditingMessage(),t=i}}t||(t=(0,p.createNewConversation)(this.j,this.state.defaultModel,this.state.defaultTemperature),this.stateManager.setCurrentConversation(t));let i=null;e.trim()&&(i=(0,p.createUserMessage)(e),t.title||(t=(0,r._)((0,s._)({},t),{title:e})),t=(0,r._)((0,s._)({},t),{updated:Date.now(),messages:[...t.messages,i]})),this.stateManager.setCurrentConversation((0,s._)({},t)),i&&this.j.e.fire("messageSent.ai-assistant-pro",i),this.stateManager.setLoading(!0),this.stateManager.clearError();try{yield this.sendRequestToAI(0),this.stateManager.clearSelectionContexts()}catch(e){if((0,m.isAbortError)(e))return;this.stateManager.setError(e instanceof Error?e.message:String(e))}finally{this.stateManager.setLoading(!1)}}).call(this)}sendRequestToAI(e=0){return(0,i._)(function*(){let t,u,i=this.j.o.aiAssistantPro.maxRecursionToolCallDepth;if(e>=i)throw Error(`Max recursion depth ${i} reached for tool calls`);let n=this.stateManager.getCurrentConversation();if(!n)return;let r=(0,p.findParentMessageId)(n),[o]=yield Promise.all([this.apiClient.sendRequest(n.id,n.messages,r,this.stateManager.getSelectionContexts(),n.options),this.storage.save(n)]);if("stream"===o.mode){let e=yield(0,p.processStreamingResponse)(this.stateManager,o,n);t=e.aiMessage,u=e.index,n=e.conversation}else{let e=(0,p.processFinalResponse)(o,n);t=e.aiMessage,u=e.index,n=e.conversation}n=yield(0,p.processArtifacts)(this.j,t,n,u),this.j.e.fire("messageReceived.ai-assistant-pro",t),this.stateManager.setCurrentConversation((0,s._)({},n)),yield this.storage.save(n),yield this.handleToolCalls(t.id,e)}).call(this)}deleteConversation(e){return(0,i._)(function*(){yield this.__loadData(),yield(0,p.deleteConversationWithCleanup)(this.j,e,this.storage,this.stateManager,this.permissionManager)}).call(this)}renameConversation(e,t){return(0,i._)(function*(){var u;let i=yield this.storage.get(e);if(!i)return;let n=(0,r._)((0,s._)({},i),{title:t,updated:Date.now()});yield this.storage.save(n),(null==(u=this.state.currentConversation)?void 0:u.id)===e&&this.stateManager.setCurrentConversation(n);let o=yield this.storage.list();this.stateManager.setConversations(o)}).call(this)}searchConversations(e){return(0,i._)(function*(){yield this.__loadData(),yield(0,p.handleConversationSearch)(e,this.storage,this.stateManager)}).call(this)}handleToolCalls(e,t=0){return(0,i._)(function*(){let u=this.stateManager.getCurrentConversation();if(!u)return;let i=u.messages.find(t=>t.id===e);if(!i)return;let n=i.toolCalls;if(!n||0===n.length)return;let s=n.filter(e=>!(0,p.isTerminalToolCallStatus)(e.status));if(0===s.length)return;let{approved:r,needsPermission:o}=this.permissionManager.filterToolCalls(s,u.permissions);for(let u of(this.stateManager.setPendingToolCalls(o),r))yield this.executeToolCall(e,u,t)}).call(this)}executeToolCall(e,t,u=0){return(0,i._)(function*(){let i=this.stateManager.getCurrentConversation();if(!i)return;let n=yield(0,p.executeToolCall)(this.j,t,this.toolRegistry),o=i.messages.findIndex(t=>t.id===e);if(-1===o)return;let a=i.messages[o],l=i.messages.slice();l[o]=(0,p.updateToolCallInMessage)(a,n),i=(0,r._)((0,s._)({},i),{messages:l,updated:Date.now()}),this.stateManager.setCurrentConversation(i),(0,p.areAllToolCallsExecuted)(i)&&(yield this.sendRequestToAI(u+1))}).call(this)}copyMessage(e){return(0,i._)(function*(){let t=this.stateManager.getCurrentConversation();if(!t)return;let u=t.messages.find(t=>t.id===e);if(u)try{yield navigator.clipboard.writeText(u.content),this.j.message.success("Message copied to clipboard")}catch(e){this.j.e.fire("error",Error("Failed to copy message"))}}).call(this)}restartFromMessage(e){return(0,i._)(function*(){let t=this.stateManager.getCurrentConversation();if(!t)return;let u=t.messages.findIndex(t=>t.id===e);if(-1===u)return;let i=t.messages[u];if("user"!==i.role)return;yield this.__loadData();let n=t.messages.slice(0,u),o=(0,r._)((0,s._)({},t),{messages:n,updatedAt:Date.now()});this.stateManager.setCurrentConversation(o),yield this.storage.save(o),yield this.sendMessage(i.content)}).call(this)}editMessage(e){return(0,i._)(function*(){let t=this.stateManager.getCurrentConversation();if(!t)return;let u=t.messages.find(t=>t.id===e);u&&"user"===u.role&&(this.stateManager.setEditingMessageId(e),this.mainPanel.inputArea.setValue(u.content),this.mainPanel.inputArea.focus())}).call(this)}cancelEditMessage(){this.stateManager.isEditingMessage()&&(this.stateManager.clearEditingMessage(),this.mainPanel.inputArea.setValue(""))}deleteMessage(e){return(0,i._)(function*(){yield this.__loadData();let t=this.stateManager.getCurrentConversation();if(!t||-1===t.messages.findIndex(t=>t.id===e))return;let u=t.messages.filter(t=>t.id!==e),i=(0,r._)((0,s._)({},t),{messages:u,updatedAt:Date.now()});this.stateManager.setCurrentConversation(i),yield this.storage.save(i)}).call(this)}beforeDestruct(){var e,t,u,i,n,s,r,o;this.textAutocompleteSource&&(this.j.e.fire("unregisterAutocompleteSource",this.textAutocompleteSource),this.textAutocompleteSource=null),this.textAutocompleteCache.clear(),this.__closeFlightMode(),null==(e=(0,C.cached)(this,"toolRegistry"))||e.destruct(),null==(t=(0,C.cached)(this,"permissionManager"))||t.destruct(),null==(u=(0,C.cached)(this,"apiClient"))||u.destruct(),null==(i=(0,C.cached)(this,"stateManager"))||i.destruct(),null==(n=(0,C.cached)(this,"mainPanel"))||n.destruct(),null==(s=(0,C.cached)(this,"dialog"))||s.destruct(),null==(o=(0,C.cached)(this,"storage"))||null==(r=o.close)||r.call(o)}constructor(...e){super(...e),(0,n._)(this,"buttons",[{name:"aiAssistantPro",group:"insert"},{name:"aiCommandsPro",group:"insert"}]),(0,n._)(this,"textAutocompleteSource",null),(0,n._)(this,"textAutocompleteCache",new Map),(0,n._)(this,"__initedPromise",null),(0,n._)(this,"__openedMode",null)}}(0,n._)(y,"requires",["license","autocomplete"]),(0,o.__decorate)([C.cache],y.prototype,"toolRegistry",null),(0,o.__decorate)([C.cache],y.prototype,"permissionManager",null),(0,o.__decorate)([C.cache],y.prototype,"apiClient",null),(0,o.__decorate)([C.cache],y.prototype,"storage",null),(0,o.__decorate)([C.cache],y.prototype,"stateManager",null),(0,o.__decorate)([C.cache],y.prototype,"mainPanel",null),(0,o.__decorate)([C.cache],y.prototype,"dialog",null),(0,o.__decorate)([(0,C.watch)("state.theme")],y.prototype,"__applyTheme",null),(0,o.__decorate)([(0,C.watch)(":openAIAssistantPro.ai-assistant-pro")],y.prototype,"openAssistant",null),(0,o.__decorate)([(0,C.watch)([":resize","state.panelWidth","state.panelHeight"])],y.prototype,"__onResizeInPanelView",null),(0,o.__decorate)([(0,C.watch)(["state.isOpen","state.displayMode","state.panelWidth","state.panelHeight","state.theme","state.defaultModel","state.defaultTemperature","state.currentConversation"]),(0,C.debounce)()],y.prototype,"__onSavedStateChange",null),(0,o.__decorate)([(0,C.watch)(":closeAIAssistantPro.ai-assistant-pro")],y.prototype,"closeAssistant",null),(0,o.__decorate)([(0,C.watch)(":addContextToAIAssistant.ai-assistant-pro")],y.prototype,"addCurrentSelectionToContext",null),(0,o.__decorate)([(0,C.watch)(":executeQuickCommand.ai-assistant-pro")],y.prototype,"executeQuickCommand",null),(0,o.__decorate)([(0,C.watch)(":sendMessage.ai-assistant-pro")],y.prototype,"sendMessage",null),(0,o.__decorate)([(0,C.watch)(":searchConversations.ai-assistant-pro")],y.prototype,"searchConversations",null),(0,o.__decorate)([(0,C.watch)(":copyMessage.ai-assistant-pro")],y.prototype,"copyMessage",null),(0,o.__decorate)([(0,C.watch)(":restartFromMessage.ai-assistant-pro")],y.prototype,"restartFromMessage",null),(0,o.__decorate)([(0,C.watch)(":editMessage.ai-assistant-pro")],y.prototype,"editMessage",null),(0,o.__decorate)([(0,C.watch)(":cancelEditMessage.ai-assistant-pro")],y.prototype,"cancelEditMessage",null),(0,o.__decorate)([(0,C.watch)(":deleteMessage.ai-assistant-pro")],y.prototype,"deleteMessage",null),y=(0,o.__decorate)([C.component],y),D.JoditPro.plugins.add("aiAssistantPro",y)},66645:function(e,t,u){"use strict";var i,n=u(77688),s=u(56075),r=u(11886),o=u(47373),a=u(94668),l=u.n(a),c=u(86428),h=u.n(c),d=u(75966),F=u.n(d),p=u(83207),A=u.n(p),g=u(99219),C=u.n(g),f=u(63674),m=u.n(f),E=u(4133),D=u.n(E),v=u(94454),B=u(53835),y=u(6441),x=u(12153),_=u(31974),w=u(72573);x.Icon.set("ai-assistant-pro",h()).set("ai-commands-pro",F()).set("ai-add-context",l()).set("send",C()).set("tool-bolt",D()).set("chevron-right",A()).set("shield",m()),y.Config.prototype.aiAssistantPro={displayMode:"right",panelWidth:400,panelHeight:500,flightPanelHeight:250,dialogFullSize:!1,resizable:!0,apiMode:"incremental",apiRequest:null,maxRetries:3,requestTimeout:3e5,retryDelay:1e3,maxRecursionToolCallDepth:1e3,enabledTools:(0,B.getToolNames)(),customTools:[],toolPermissions:{},autoApproveTools:["readDocument","readBlocks","readSelection","insertHTML","addHTML"],alwaysDenyTools:[],defaultPermissionScope:"conversation",storage:"indexedDB",maxConversations:50,storageKey:"jodit-ai-assistant-pro",showConversationList:!0,enableMarkdown:!0,enableCodeHighlight:!0,maxMessageHeight:400,placeholderText:"Ask AI assistant...",sendShortcut:"Ctrl+Enter",showTimestamps:!0,formatTimestamp:(e,t)=>{let u=new Date(e),i=new Date().getTime()-u.getTime();return i<6e4?t("Just now"):i<36e5?t("%dm ago",Math.floor(i/6e4)):i<864e5?t("%dh ago",Math.floor(i/36e5)):u.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})},formatMessageContent:(e,t)=>w.marked.parse(e,{breaks:!0,gfm:!0}),showAvatars:!0,showTypingIndicator:!0,includeSelectionByDefault:!0,maxContextRanges:5,showContextPreview:!0,sendOnEnter:!0,instructions:void 0,includeEditorMetadata:!1,autoOpen:!0,rememberLastConversation:!0,autoFocusInput:!0,voiceInputEnabled:!1,closeAfterInsert:!1,enableSoundNotifications:!1,debug:!1,textAutocompleteEnabled:!1,textAutocompleteApiRequest:null,textAutocompleteMinQueryLength:3,textAutocompleteMaxSuggestions:3,textAutocompleteDebounceMs:500,textAutocompleteCacheTTL:3e4,textAutocompleteCacheMaxSize:50,quickCommandsSilentMode:!1,quickCommandsDisplayMode:"flight",showCopyMessageAction:!0,showRestartMessageAction:!0,showEditMessageAction:!0,showDeleteMessageAction:!0,dialogSettings:{},allowEditDialogSettings:!1,allowEditDisplayMode:!0,allowEditPanelWidth:!0,initiallyOpened:!1,allowClose:!0,persistOpenState:!0,theme:"parent",allowEditTheme:!0,uploadBase64Artifact(e,t){return(0,n._)(function*(){if("image"===e.type&&e.data&&"base64"===e.data.kind)try{let u=(0,o.base64ToFile)(e.data.base64,e.id,e.mimeType),i=yield t.uploader.upload([u]);return(0,r._)((0,s._)({},e),{data:{kind:"url",url:i.baseurl+i.files[0]},metadata:(0,r._)((0,s._)({},e.metadata),{filename:i.files[0]})})}catch(e){t.e.fire("error",e)}return e})()},getAIProviderOptions(e,t){return(0,v.getAIProviderOptions)(e,t)},registerAIProvider(e,t){(0,v.registerAIProvider)(e,t)}},y.Config.prototype.controls.aiAssistantPro={icon:"ai-assistant-pro",tooltip:"AI Assistant",hotkeys:["ctrl+shift+a","cmd+shift+a"],exec(e){e.e.fire("openAIAssistantPro.ai-assistant-pro")},isDisabled(e){return!e.o.aiAssistantPro.apiRequest},getLabel(e){return e.o.aiAssistantPro.apiRequest?"AI Assistant":"AI Assistant (not configured)"}},y.Config.prototype.controls.aiAddContext={icon:"ai-add-context",tooltip:"Add to AI Context",exec(e){e.e.fire("addContextToAIAssistant")},isDisabled(e){return!e.o.aiAssistantPro.apiRequest||e.s.isCollapsed()}},y.Config.prototype.controls.aiCommandsPro={icon:"ai-commands-pro",tooltip:"AI Commands",isDisabled(e){return!e.o.aiAssistantPro.apiRequest},list:_.aiAssitentCommands,exec(e,t,{control:u}){e.e.fire("executeQuickCommand.ai-assistant-pro",u.name)}};let b=(null==(i=y.Config.prototype.tuneBlock)?void 0:i.popup)||{},k={};["p","h1","h2","h3","h4","h5","h6","div","section","article","pre","blockquote","ul","ol","li","table","tr","td","th","img","figure"].forEach(e=>{let t=b[e]||["tune.up","tune.remove","tune.down"];k[e]=[...t,"|","aiAddContext"]}),y.Config.prototype.tuneBlock&&(y.Config.prototype.tuneBlock.popup=(0,s._)({},b,k))},6689:function(e,t,u){"use strict";u.d(t,{throwIfAborted:function(){return n}});var i=u(93661);function n(e){if(e.aborted)throw(0,i.abort)()}},61872:function(e,t,u){"use strict";u.d(t,{processArtifacts:function(){return c},processFinalResponse:function(){return l},processStreamingResponse:function(){return a}});var i=u(89929),n=u(77688),s=u(56075),r=u(11886),o=u(61558);function a(e,t,u){return(0,n._)(function*(){let n=(0,o.createAIMessage)(),a=-1;var l,c=!1,h=!1;try{for(var d,F=(0,i._)(t.stream);c=!(d=yield F.next()).done;c=!1){let t=d.value;switch(t.type){case"created":n=(0,r._)((0,s._)({},n),{id:t.response.responseId,content:""}),a=u.messages.length;break;case"text-delta":n=(0,r._)((0,s._)({},n),{content:n.content+t.delta});break;case"completed":n=(0,r._)((0,s._)({},n),{id:t.response.responseId,toolCalls:t.response.toolCalls||[],artifacts:t.response.artifacts||[]});break;case"error":{let e=(0,o.createErrorMessage)(t.error);n=(0,r._)((0,s._)({},n),{id:e.id,content:e.content})}}if(n.id){let t=u.messages.slice();t[a>=0?a:u.messages.length]=n,u=(0,r._)((0,s._)({},u),{messages:t,updated:Date.now()}),e.setCurrentConversation(u)}}}catch(e){h=!0,l=e}finally{try{c&&null!=F.return&&(yield F.return())}finally{if(h)throw l}}return{aiMessage:n,index:a,conversation:u}})()}function l(e,t){let u=(0,r._)((0,s._)({},(0,o.createAIMessage)()),{id:e.response.responseId,content:e.response.content,toolCalls:e.response.toolCalls||[],artifacts:e.response.artifacts||[]}),i=t.messages.slice();return i.push(u),{aiMessage:u,index:(t=(0,r._)((0,s._)({},t),{messages:i,updated:Date.now()})).messages.length-1,conversation:t}}function c(e,t,u,i){return(0,n._)(function*(){if(t.artifacts&&t.artifacts.length>0){let n=u.messages.slice();return n[i]=(0,r._)((0,s._)({},n[i]),{artifacts:yield(0,o.uploadArtifacts)(e,t.artifacts)}),(0,r._)((0,s._)({},u),{messages:n,updated:Date.now()})}return u})()}},49459:function(e,t,u){"use strict";function i(e,t,u={}){let n=e[t];if("string"!=typeof n||!u.allowEmpty&&""===n)throw Error(`Parameter "${t}" is required and must be a${u.allowEmpty?"":" non-empty"} string`);return n}u.d(t,{requireString:function(){return i}})},44526:function(e,t,u){"use strict";u.d(t,{resolveBlock:function(){return n}});var i=u(22732);function n(e,{selector:t,index:u,requireExactlyOne:s=!1}={}){let r=null!=t&&""!==t.trim(),o=null!=u;if(s&&r===o)throw Error("Either index or selector must be provided, but not both");if(!r&&!o)throw Error("Block identifier is required");if(r){if("string"!=typeof t)throw Error("Selector must be a string");let u=e.editor.querySelector(t);if(!u)throw Error(`No element found matching selector "${t}"`);if(!i.Dom.isElement(u))throw Error(`Selector "${t}" does not point to an element node`);return{element:u,identifier:`with selector "${t}"`}}if("number"!=typeof u)throw Error("Block index must be a number");let a=Array.from(e.editor.children);if(u<0||u>=a.length)throw Error(`Block index ${u} is out of range. Document has ${a.length} blocks`);let l=a[u];if(!i.Dom.isElement(l))throw Error(`Block at index ${u} is not a valid element`);return{element:l,identifier:`at index ${u}`}}},70308:function(e,t,u){"use strict";u.d(t,{areAllToolCallsExecuted:function(){return a},createNewConversation:function(){return n},findMessagesWithPendingToolCalls:function(){return l},findParentMessageId:function(){return s},isTerminalToolCallStatus:function(){return o}});var i=u(21064);function n(e,t,u,s=[]){let r=e.o.aiAssistantPro,o={id:(0,i.generateConversationId)(),created:Date.now(),updated:Date.now(),messages:s,permissions:[],options:{model:null!=t?t:r.defaultModel,temperature:null!=u?u:r.defaultTemperature}};return e.e.fire("conversationCreated.ai-assistant-pro",o),o}function s(e){for(let t=e.messages.length-1;t>=0;t--){let u=e.messages[t];if("assistant"===u.role&&!u.id.startsWith("error_"))return u.id}return null}let r=new Set(["executed","denied","error"]);function o(e){return r.has(e)}function a(e){let t=e.messages[e.messages.length-1];return!!(null==t?void 0:t.toolCalls)&&t.toolCalls.every(e=>o(e.status))}function l(e){return e.messages.filter(e=>e.toolCalls&&e.toolCalls.length>0&&e.toolCalls.some(e=>!o(e.status)))}},473:function(e,t,u){"use strict";u.d(t,{handleBackToList:function(){return h},handleConversationSearch:function(){return d},handleConversationSelect:function(){return c},handleToolApproval:function(){return a},handleToolDenial:function(){return l}});var i=u(77688),n=u(56075),s=u(11886),r=u(79078),o=u(82758);function a(e,t,u,r,o){return(0,i._)(function*(){let i=u.getPendingToolCalls().find(t=>t.id===e);if(!i)return null;let a=r.grantPermission(i.name,t),l=u.getCurrentConversation();return l&&(l.permissions.push(a),yield o.save(l)),u.removePendingToolCall(e),(0,s._)((0,n._)({},i),{status:"approved"})})()}function l(e,t,u,o){return(0,i._)(function*(){let i=u.getPendingToolCalls().find(e=>e.id===t);if(!i)return;let a=u.getCurrentConversation();if(!a)return;let l=a.messages.findIndex(e=>{var u;return null==(u=e.toolCalls)?void 0:u.find(e=>e.id===t)});if(-1===l)return;let c=a.messages[l],h=(0,s._)((0,n._)({},i),{result:{error:"Tool call denied by user."},status:"denied"}),d=(0,r.updateToolCallInMessage)(c,h),F=[...a.messages];F[l]=d,a=(0,s._)((0,n._)({},a),{messages:F,updated:Date.now()}),u.setCurrentConversation(a),yield o.save(a),e.e.fire("toolCallDenied.ai-assistant-pro",i),u.removePendingToolCall(t)})()}function c(e,t,u){return(0,i._)(function*(){try{u.setLoading(!0);let i=yield t.get(e);if(!i)throw Error("Conversation not found: "+e);u.setCurrentConversation((0,n._)({},i))}catch(e){o.IS_PROD}finally{u.setLoading(!1)}})()}function h(e,t){return(0,i._)(function*(){t.setView("conversationList");try{t.setLoading(!0);let u=yield e.list().catch(()=>[]);t.setConversations(u)}finally{t.setLoading(!1)}})()}function d(e,t,u){return(0,i._)(function*(){u.setLoading(!0);try{let i=yield t.list(e||void 0);u.setConversations(i),u.setView("conversationList")}finally{u.setLoading(!1)}})()}},58579:function(e,t,u){"use strict";u.d(t,{applyTheme:function(){return c.applyTheme},areAllToolCallsExecuted:function(){return n.areAllToolCallsExecuted},createNewConversation:function(){return n.createNewConversation},createUserMessage:function(){return r.createUserMessage},deleteConversationWithCleanup:function(){return l.deleteConversationWithCleanup},executeToolCall:function(){return h.executeToolCall},findMessagesWithPendingToolCalls:function(){return n.findMessagesWithPendingToolCalls},findParentMessageId:function(){return n.findParentMessageId},getCurrentSelectionContext:function(){return a.getCurrentSelectionContext},handleBackToList:function(){return s.handleBackToList},handleConversationSearch:function(){return s.handleConversationSearch},handleConversationSelect:function(){return s.handleConversationSelect},handleToolApproval:function(){return s.handleToolApproval},handleToolDenial:function(){return s.handleToolDenial},invertMode:function(){return o.invertMode},isTerminalToolCallStatus:function(){return n.isTerminalToolCallStatus},loadInitialData:function(){return l.loadInitialData},processArtifacts:function(){return i.processArtifacts},processFinalResponse:function(){return i.processFinalResponse},processStreamingResponse:function(){return i.processStreamingResponse},resizeInPanelView:function(){return o.resizeInPanelView},updateToolCallInMessage:function(){return h.updateToolCallInMessage}});var i=u(61872),n=u(70308),s=u(473),r=u(61558),o=u(71050),a=u(15927),l=u(56110),c=u(53014),h=u(79078)},61558:function(e,t,u){"use strict";u.d(t,{createAIMessage:function(){return r},createErrorMessage:function(){return o},createUserMessage:function(){return s},uploadArtifacts:function(){return a}});var i=u(77688),n=u(21064);function s(e){return{id:(0,n.generateMessageId)(),role:"user",content:e,timestamp:Date.now()}}function r(){return{id:"",role:"assistant",content:"",artifacts:[],timestamp:Date.now(),toolCalls:[]}}function o(e){return{id:"error_"+(0,n.generateMessageId)(),role:"assistant",content:`❌ Error: ${e.message}`,timestamp:Date.now(),toolCalls:[],artifacts:[]}}function a(e,t){return(0,i._)(function*(){if(!t||0===t.length)return t;let u=e.o.aiAssistantPro.uploadBase64Artifact;return u?Promise.all(t.map(t=>{var n;return(0,i._)(function*(){return null!=(n=u(t,e))?n:t})()})):t})()}},71050:function(e,t,u){"use strict";u.d(t,{invertMode:function(){return n},resizeInPanelView:function(){return s}});var i=u(41180);function n(e){switch(e){case"left":return"right";case"right":return"left";case"top":return"bottom";case"bottom":return"top"}}function s(e,t,u,s){var r,o,a,l;if("dialog"===t||"flight"===t)return;("left"===t||"right"===t)&&(null==(a=e.currentPlace.slots[n(t)])||a.style.setProperty(`--jd-slot-${n(t)}-width`,"auto"),null==(l=e.currentPlace.slots[t])||l.style.setProperty(`--jd-slot-${t}-width`,`${u}px`));let c=null!=(r=(0,i.css)(e.currentPlace.workplace,"height"))?r:0;null==(o=e.currentPlace.slots[t])||o.style.setProperty("min-height",`${Math.min(c,s)}px`)}},85696:function(e,t,u){"use strict";function i(e,t){let u=e.createInside.div();return u.innerHTML=t,n(e,u),u}function n(e,t){e.e.fire("safeHTML",t)}u.d(t,{createSanitizedContainer:function(){return i},sanitizeElement:function(){return n}})},15927:function(e,t,u){"use strict";function i(e){if(e.s.isCollapsed())return null;let t=e.s.html,u=e.s.range;return{html:t,rangeInfo:{startContainer:u.startContainer.nodeName,startOffset:u.startOffset,endContainer:u.endContainer.nodeName,endOffset:u.endOffset}}}u.d(t,{getCurrentSelectionContext:function(){return i}})},56110:function(e,t,u){"use strict";u.d(t,{deleteConversationWithCleanup:function(){return s},loadInitialData:function(){return r}});var i=u(77688),n=u(82758);function s(e,t,u,n,s){return(0,i._)(function*(){try{n.setLoading(!0),yield u.delete(t),n.removeConversation(t),s.clearConversationPermissions(t);let i=n.getCurrentConversation();(null==i?void 0:i.id)===t&&n.setCurrentConversation(null);let r=yield u.list();n.setConversations(r),n.setView(0===r.length?"welcome":"conversationList"),e.e.fire("conversationDeleted.ai-assistant-pro",t)}catch(t){e.alert(e.i18n("Failed to delete conversation")+": "+((null==t?void 0:t.message)||"Unknown error"))}finally{n.setLoading(!1)}})()}function r(e,t,u){return(0,i._)(function*(){u.setLoading(!0);try{let[n,s]=yield Promise.all([t.list().catch(()=>[]),t.getGlobalSettings().catch(()=>null)]);if(u.setConversations(n),s&&u.setSavedState(s),0===n.length)u.setView("welcome");else if(e.o.aiAssistantPro.rememberLastConversation&&(null==s?void 0:s.currentConversationId)){var i;let e=null!=(i=n.find(e=>e.id===s.currentConversationId))?i:n[0],r=yield t.get(e.id);r?u.setCurrentConversation(r):u.setView("conversationList")}else u.setView("conversationList")}catch(e){n.IS_PROD,u.setView("welcome")}finally{u.setLoading(!1)}})()}},53014:function(e,t,u){"use strict";u.d(t,{applyTheme:function(){return s}});let i=["jodit_theme_dark","jodit-ai-assistant-pro_theme_dark","jodit-dialog_theme_dark"],n=["jodit_theme_light","jodit-ai-assistant-pro_theme_light","jodit-dialog_theme_light"];function s(e,t,u,s,r){let o;if(null==s||s.classList.remove(...i),null==s||s.classList.remove(...n),"dialog"===u){let e=null==r?void 0:r.container;null==e||e.classList.remove(...i),null==e||e.classList.remove(...n)}if(o="dark"===t?i:n,null==s||s.classList.add(...o),"dialog"===u){let e=null==r?void 0:r.container;null==e||e.classList.add(...o)}}},79078:function(e,t,u){"use strict";u.d(t,{executeToolCall:function(){return r},updateToolCallInMessage:function(){return o}});var i=u(77688),n=u(56075),s=u(11886);function r(e,t,u){return(0,i._)(function*(){let i;try{let e=new AbortController().signal,r=yield u.executeTool(t.name,t.arguments,e);i=(0,s._)((0,n._)({},t),{result:{result:r},status:"executed"})}catch(u){i=(0,s._)((0,n._)({},t),{result:{error:u instanceof Error?u.message:String(u)},status:"error"}),e.e.fire("toolCallFailed.ai-assistant-pro",i)}return e.e.fire("toolCallExecuted.ai-assistant-pro",i,{toolCallId:i.id,result:i.result}),i})()}function o(e,t){var u,i;let r=null==(i=e.toolCalls)?void 0:i.findIndex(e=>e.id===t.id);if(null==r||-1===r)return e;let o=[...null!=(u=null==e?void 0:e.toolCalls)?u:[]];return o[r]=t,(0,s._)((0,n._)({},e),{toolCalls:o})}},86449:function(e,t,u){"use strict";u.d(t,{APIClient:function(){return l}});var i=u(77688),n=u(82749),s=u(56075),r=u(11886),o=u(82758),a=u(21537);class l{sendRequest(e,t,u,n,s){return(0,i._)(function*(){let{apiRequest:i,requestTimeout:r,maxRetries:l}=this.jodit.o.aiAssistantPro;if(!i)throw Error("AI Assistant Pro callback is not configured");let c=new AbortController;this.abortControllers.add(c);try{let h=this.buildRequestContext(e,t,u,n,s),d=null;for(let e=0;l>=e;e++)try{if(c.signal.aborted)throw(0,a.abort)();let e=setTimeout(()=>{c.abort()},r);try{let t=yield i(h,c.signal);return clearTimeout(e),this.validateResponse(t),t}catch(t){throw clearTimeout(e),t}}catch(t){if(d=t,o.IS_PROD,l>e){let t=this.calculateRetryDelay(e);yield this.sleep(t)}else throw t}throw d||Error("API request failed after all retries")}finally{this.abortControllers.delete(c)}}).call(this)}abort(){this.abortControllers.forEach(e=>{e.abort()}),this.abortControllers.clear()}isInProgress(){return this.abortControllers.size>0}buildRequestContext(e,t,u,i,n){let o,{apiMode:a,instructions:l}=this.jodit.o.aiAssistantPro,c={mode:a,conversationId:e,tools:this.toolRegistry.getAllTools(),selectionContexts:i,conversationOptions:n,instructions:l};if("full"===a)o=t;else if(u){let e=t.findIndex(e=>e.id===u);o=-1!==e?t.slice(e+1):t,c=(0,r._)((0,s._)({},c),{parentMessageId:u})}else o=t;return(0,r._)((0,s._)({},c),{messages:this.expandToolMessages(o,t.find(e=>e.id===u))})}expandToolMessages(e,t){let u=[];for(let t of e)u.push(t),this.expandToolResultsMessage(t,u);return t&&this.expandToolResultsMessage(t,u),u}expandToolResultsMessage(e,t){if(e.toolCalls&&e.toolCalls.length>0)for(let i of e.toolCalls){var u;let n=null!=(u=i.result)?u:{error:"result not found"};if(t.find(e=>e.id===`${i.id}-result`))continue;let s={id:`${i.id}-result`,role:"tool",content:n.error?`Error: ${n.error}`:JSON.stringify(n.result),timestamp:e.timestamp,toolResults:[{toolCallId:i.id,result:n}]};t.push(s)}}validateResponse(e){if("final"!==e.mode)return;let t=e.response;if(!t)throw Error("API returned empty response");if(!t.responseId)throw Error("API response missing responseId");if(void 0===t.content)throw Error("API response missing content");if(void 0===t.finished)throw Error("API response missing finished flag");if(t.toolCalls){if(!Array.isArray(t.toolCalls))throw Error("API response toolCalls must be an array");t.toolCalls.forEach((e,t)=>{if(!e.id)throw Error(`Tool call at index ${t} is missing id`);if(!e.name)throw Error(`Tool call at index ${t} is missing name`);if(!e.arguments||"object"!=typeof e.arguments)throw Error(`Tool call at index ${t} has invalid arguments`)})}}calculateRetryDelay(e){let{retryDelay:t}=this.jodit.o.aiAssistantPro;return t*Math.pow(2,e)+Math.random()*t}sleep(e){return new Promise(t=>setTimeout(t,e))}destruct(){this.abort()}constructor(e,t){(0,n._)(this,"jodit",void 0),(0,n._)(this,"toolRegistry",void 0),(0,n._)(this,"abortControllers",void 0),this.jodit=e,this.toolRegistry=t,this.abortControllers=new Set}}},47373:function(e,t,u){"use strict";function i(e,t,u="image/png"){let n=atob(e),s=n.length,r=new Uint8Array(s);for(let e=0;s>e;e++)r[e]=n.charCodeAt(e);return new File([new Blob([r],{type:u})],t,{type:u})}u.d(t,{base64ToFile:function(){return i}})},21020:function(e,t,u){"use strict";u.d(t,{PermissionManager:function(){return r}});var i=u(82749),n=u(56075),s=u(11886);class r{requiresPermission(e){let{autoApproveTools:t,alwaysDenyTools:u}=this.jodit.o.aiAssistantPro;if(u.includes(e))return!0;if(t.includes(e))return!1;let i=this.toolRegistry.getTool(e);return!i||i.requiresPermission}isAutoDenied(e){let{alwaysDenyTools:t}=this.jodit.o.aiAssistantPro;return t.includes(e)}isAutoApproved(e){let{autoApproveTools:t}=this.jodit.o.aiAssistantPro;return t.includes(e)}checkPermission(e,t){if(this.isAutoApproved(e))return{toolName:e,granted:!0,grantedAt:Date.now(),scope:"once"};if(this.isAutoDenied(e))return null;let u=this.permanentPermissions.get(e);return u&&u.granted?u:t.find(t=>t.toolName===e&&t.granted)||null}grantPermission(e,t){let u={toolName:e,granted:!0,grantedAt:Date.now(),scope:t};return"forever"===t&&(this.permanentPermissions.set(e,u),this.savePermanentPermissions()),u}denyPermission(e){return{toolName:e,granted:!1,grantedAt:Date.now(),scope:"once"}}filterToolCalls(e,t){let u=[],i=[],r=[];for(let o of e){if(this.isAutoDenied(o.name)){r.push((0,s._)((0,n._)({},o),{status:"denied"}));continue}if(this.isAutoApproved(o.name)){u.push((0,s._)((0,n._)({},o),{status:"approved"}));continue}let e=this.checkPermission(o.name,t);e&&e.granted?u.push((0,s._)((0,n._)({},o),{status:"approved"})):this.requiresPermission(o.name)?(this.jodit.e.fire("permissionRequested.ai-assistant-pro",o.name),i.push((0,s._)((0,n._)({},o),{status:"pending"}))):u.push((0,s._)((0,n._)({},o),{status:"approved"}))}return{approved:u,needsPermission:i,denied:r}}clearConversationPermissions(e){}loadPermanentPermissions(){try{let e=localStorage.getItem(this.PERMANENT_PERMISSIONS_KEY);e&&JSON.parse(e).forEach(e=>{"forever"===e.scope&&e.granted&&this.permanentPermissions.set(e.toolName,e)})}catch(e){}}savePermanentPermissions(){try{let e=Array.from(this.permanentPermissions.values());localStorage.setItem(this.PERMANENT_PERMISSIONS_KEY,JSON.stringify(e))}catch(e){}}clearPermanentPermissions(){this.permanentPermissions.clear(),localStorage.removeItem(this.PERMANENT_PERMISSIONS_KEY)}getPermanentPermissions(){return Array.from(this.permanentPermissions.values())}revokePermanentPermission(e){this.permanentPermissions.delete(e),this.savePermanentPermissions()}destruct(){this.permanentPermissions.clear()}constructor(e,t){(0,i._)(this,"jodit",void 0),(0,i._)(this,"toolRegistry",void 0),(0,i._)(this,"permanentPermissions",void 0),(0,i._)(this,"PERMANENT_PERMISSIONS_KEY",void 0),this.jodit=e,this.toolRegistry=t,this.permanentPermissions=new Map,this.PERMANENT_PERMISSIONS_KEY="jodit-permissions.ai-assistant-pro",this.loadPermanentPermissions()}}},46166:function(e,t,u){"use strict";u.d(t,{StateManager:function(){return r}});var i=u(82749),n=u(56075),s=u(11886);class r{createInitialState(){return{isOpen:!1,currentView:"welcome",currentConversation:null,conversations:[],isLoading:!1,error:null,pendingToolCalls:[],selectionContexts:[],abortController:null,editingMessageId:null,theme:this.jodit.o.aiAssistantPro.theme||"parent",displayMode:this.jodit.o.aiAssistantPro.displayMode,panelWidth:this.jodit.o.aiAssistantPro.panelWidth,panelHeight:this.jodit.o.aiAssistantPro.panelHeight,defaultModel:this.jodit.o.aiAssistantPro.defaultModel,defaultTemperature:this.jodit.o.aiAssistantPro.defaultTemperature}}open(){this.state.isOpen=!0,this.jodit.e.fire("open.ai-assistant-pro",this.state.currentConversation)}close(){this.state.isOpen=!1,this.jodit.e.fire("close.ai-assistant-pro")}isOpen(){return this.state.isOpen}setView(e){this.state.currentView=e,this.jodit.e.fire("viewChanged.ai-assistant-pro",e)}getView(){return this.state.currentView}setConversations(e){this.state.conversations=e}setSavedState(e){e.theme&&(this.state.theme=e.theme),e.displayMode&&(this.state.displayMode=e.displayMode),e.panelWidth&&(this.state.panelWidth=e.panelWidth),e.panelHeight&&(this.state.panelHeight=e.panelHeight),e.defaultModel&&(this.state.defaultModel=e.defaultModel),e.defaultTemperature&&(this.state.defaultTemperature=e.defaultTemperature)}getConversations(){return this.state.conversations}setCurrentConversation(e){if(this.state.currentConversation===e)throw Error("Conversation is already current");this.state.currentConversation=e||null,e&&(this.setView("conversation"),this.jodit.e.fire("conversationSwitched.ai-assistant-pro",e))}getCurrentConversation(){return this.state.currentConversation}removeConversation(e){let t=this.state.conversations.filter(t=>t.id!==e);this.setConversations(t)}setLoading(e){this.state.isLoading=e}isLoading(){return this.state.isLoading}setError(e){this.state.error=e,e&&this.jodit.e.fire("error.ai-assistant-pro",Error(e))}getError(){return this.state.error}clearError(){this.setError(null)}setPendingToolCalls(e){this.state.pendingToolCalls=e}getPendingToolCalls(){return this.state.pendingToolCalls}addPendingToolCall(e){let t=[...this.state.pendingToolCalls,e];this.setPendingToolCalls(t)}removePendingToolCall(e){let t=this.state.pendingToolCalls.filter(t=>t.id!==e);this.setPendingToolCalls(t)}updateToolCallStatus(e,t){let u=this.state.pendingToolCalls.map(u=>u.id===e?(0,s._)((0,n._)({},u),{status:t}):u);this.setPendingToolCalls(u)}setSelectionContexts(e){this.state.selectionContexts=e}getSelectionContexts(){return this.state.selectionContexts}addSelectionContext(e){let{maxContextRanges:t}=this.jodit.o.aiAssistantPro,u=[...this.state.selectionContexts,e];u.length>t&&(u=u.slice(-t)),this.setSelectionContexts(u),this.jodit.e.fire("contextAdded.ai-assistant-pro",e)}removeSelectionContext(e){let t=this.state.selectionContexts.filter((t,u)=>u!==e);this.setSelectionContexts(t),this.jodit.e.fire("contextRemoved.ai-assistant-pro",e)}clearSelectionContexts(){this.setSelectionContexts([])}setAbortController(e){this.state.abortController=e}getAbortController(){return this.state.abortController}setEditingMessageId(e){this.state.editingMessageId=e}getEditingMessageId(){return this.state.editingMessageId}isEditingMessage(){return null!=this.state.editingMessageId}clearEditingMessage(){this.setEditingMessageId(null)}reset(){this.state=this.createInitialState()}destruct(){this.state.abortController&&this.state.abortController.abort(),this.reset()}constructor(e){(0,i._)(this,"jodit",void 0),(0,i._)(this,"state",void 0),this.jodit=e,this.state=this.createInitialState()}}},62895:function(e,t,u){"use strict";u.d(t,{WebStorageConversationStorage:function(){return i.WebStorageConversationStorage},createStorageProvider:function(){return i.createStorageProvider}});var i=u(21064)},21064:function(e,t,u){"use strict";u.d(t,{WebStorageConversationStorage:function(){return o},createStorageProvider:function(){return a},generateConversationId:function(){return l},generateMessageId:function(){return c}});var i=u(77688),n=u(82749),s=u(56075),r=u(97333);class o{close(){return this.storage.close()}getConversationKey(e){return`conv:${e}`}getAllKeys(){return(0,i._)(function*(){let e=yield this.storage.get("__conversation_index__");return e&&Array.isArray(e)?e:[]}).call(this)}updateIndex(e){return(0,i._)(function*(){yield this.storage.set("__conversation_index__",e)}).call(this)}addToIndex(e){return(0,i._)(function*(){let t=yield this.getAllKeys();t.includes(e)||(t.push(e),yield this.updateIndex(t))}).call(this)}removeFromIndex(e){return(0,i._)(function*(){let t=(yield this.getAllKeys()).filter(t=>t!==e);yield this.updateIndex(t)}).call(this)}list(e){return(0,i._)(function*(){try{let i=yield this.getAllKeys(),n=[],s=null==e?void 0:e.toLowerCase().trim();for(let e of i){var t,u;let i=yield this.get(e);if(i){if(s){let e=null==(u=i.title)?void 0:u.toLowerCase().includes(s),t=!e&&i.messages.some(e=>e.content.toLowerCase().includes(s));if(!e&&!t)continue}n.push({id:i.id,title:null!=(t=i.title)?t:"",created:i.created,updated:i.updated,messageCount:i.messages.length})}}return n.sort((e,t)=>t.updated-e.updated),n}catch(e){return[]}}).call(this)}get(e){return(0,i._)(function*(){try{let t=this.getConversationKey(e);return(yield this.storage.get(t))||null}catch(e){return null}}).call(this)}save(e){return(0,i._)(function*(){try{if(0===e.messages.length)throw Error("Conversation must have at least one message.");let t=yield this.getAllKeys();t.length>=this.maxConversations&&!t.includes(e.id)&&(yield this.evictOldest());let u=this.getConversationKey(e.id);yield this.storage.set(u,e),yield this.addToIndex(e.id)}catch(t){if((null==t?void 0:t.name)==="QuotaExceededError"||(null==t?void 0:t.code)===22||(null==t?void 0:t.code)===1014){yield this.evictOldest();try{let t=this.getConversationKey(e.id);yield this.storage.set(t,e),yield this.addToIndex(e.id)}catch(e){throw Error("Storage quota exceeded. Please delete some conversations.")}}else throw Error(`Failed to save conversation: ${(null==t?void 0:t.message)||"Unknown error"}`)}}).call(this)}delete(e){return(0,i._)(function*(){try{let t=this.getConversationKey(e);yield this.storage.delete(t),yield this.removeFromIndex(e)}catch(e){}}).call(this)}clear(){return(0,i._)(function*(){try{for(let e of yield this.getAllKeys()){let t=this.getConversationKey(e);yield this.storage.delete(t)}yield this.updateIndex([])}catch(e){}}).call(this)}evictOldest(){return(0,i._)(function*(){try{let e=yield this.list();if(0===e.length)return;e.sort((e,t)=>e.updated-t.updated);let t=e[0];yield this.delete(t.id)}catch(e){}}).call(this)}getGlobalSettings(){return(0,i._)(function*(){try{return(yield this.storage.get("global-settings"))||null}catch(e){return null}}).call(this)}saveGlobalSettings(e){return(0,i._)(function*(){try{let t=yield this.getGlobalSettings(),u=(0,s._)({},t,e);yield this.storage.set("global-settings",u)}catch(e){throw Error("Failed to save global settings")}}).call(this)}constructor(e,t){(0,n._)(this,"storage",void 0),(0,n._)(this,"maxConversations",void 0),this.storage=e,this.maxConversations=t}}function a(e,t){return r.AsyncStorage.makeStorage(e,t)}function l(){return`conv_${Date.now()}_${Math.random().toString(36).substring(2,11)}`}function c(){return`msg_${Date.now()}_${Math.random().toString(36).substring(2,11)}`}},55487:function(e,t,u){"use strict";u.d(t,{ToolRegistry:function(){return o}});var i=u(77688),n=u(82749),s=u(56075),r=u(53835);class o{registerBuiltInTools(e){e.forEach(e=>{let t=r.BUILT_IN_TOOLS[e];t&&this.tools.set(e,t)})}registerCustomTools(e){e.forEach(e=>{this.validateToolDefinition(e),this.tools.set(e.name,e)})}validateToolDefinition(e){if(!e.name||"string"!=typeof e.name)throw Error("Tool must have a valid name");if(!e.description||"string"!=typeof e.description)throw Error(`Tool "${e.name}" must have a description`);if(!Array.isArray(e.parameters))throw Error(`Tool "${e.name}" must have a parameters array`);if("function"!=typeof e.execute)throw Error(`Tool "${e.name}" must have an execute function`);e.parameters.forEach(t=>{if(!t.name||"string"!=typeof t.name)throw Error(`Tool "${e.name}" has a parameter without a valid name`);if(!t.type)throw Error(`Tool "${e.name}" parameter "${t.name}" must have a type`);if("boolean"!=typeof t.required)throw Error(`Tool "${e.name}" parameter "${t.name}" must specify if it's required`)})}getAllTools(){return Array.from(this.tools.values())}getTool(e){return this.tools.get(e)}hasTool(e){return this.tools.has(e)}getToolNames(){return Array.from(this.tools.keys())}executeTool(e,t,u){return(0,i._)(function*(){let i=this.getTool(e);if(!i)throw Error(`Tool "${e}" not found`);let n=this.applyDefaults(i,t);this.validateArguments(i,n);try{return yield i.execute(this.jodit,n,u)}catch(e){if((null==e?void 0:e.name)==="AbortError"||u.aborted)throw Error("Tool execution was aborted");throw e}}).call(this)}validateArguments(e,t){let u=Object.keys(t);for(let t of e.parameters.filter(e=>e.required).map(e=>e.name))if(!u.includes(t))throw Error(`Tool "${e.name}" requires parameter "${t}"`);for(let[u,i]of Object.entries(t)){let t=e.parameters.find(e=>e.name===u);if(!t){this.jodit.o.aiAssistantPro.debug;continue}let n=Array.isArray(i)?"array":"object"==typeof i&&null!=i?"object":typeof i;if(t.type!==n&&!("number"===t.type&&"string"===n&&!isNaN(Number(i))))throw Error(`Tool "${e.name}" parameter "${u}" expects type "${t.type}" but got "${n}"`);if(t.enum&&t.enum.length>0&&!t.enum.includes(i))throw Error(`Tool "${e.name}" parameter "${u}" must be one of: ${t.enum.join(", ")}`)}}applyDefaults(e,t){let u=(0,s._)({},t);for(let t of e.parameters)void 0===u[t.name]&&void 0!==t.default&&(u[t.name]=t.default);return u}destruct(){this.tools.clear()}constructor(e){(0,n._)(this,"jodit",void 0),(0,n._)(this,"tools",void 0),this.jodit=e,this.tools=new Map,this.registerBuiltInTools(e.o.aiAssistantPro.enabledTools||[]),this.registerCustomTools(e.o.aiAssistantPro.customTools||[])}}},26612:function(e){e.exports={"AI Assistant":"AI Assistant","AI Assistant Pro":"AI Assistant Pro","Welcome to AI Assistant":"Welcome to AI Assistant","Start your first conversation":"Start your first conversation","Tip: Select text in editor to add context":"Tip: Select text in editor to add context","New Chat":"New Chat","Search conversations...":"Search conversations...","No conversations yet":"No conversations yet","Ask me anything...":"Ask me anything...","Ask a follow-up...":"Ask a follow-up...","Reply...":"Reply...","Type your message...":"Type your message...",Send:"Send",Cancel:"Cancel",Retry:"Retry",Insert:"Insert",Copy:"Copy",Edit:"Edit",Delete:"Delete",New:"New",Back:"Back","Permission Required":"Permission Required",Approve:"Approve",Deny:"Deny",Once:"Once","This conversation":"This conversation",Always:"Always","The AI wants to execute:":"The AI wants to execute:","This will modify your document content.":"This will modify your document content.","Executing...":"Executing...","Completed successfully":"Completed successfully",Failed:"Failed","Pending approval":"Pending approval","Denied by user":"Denied by user","Tool Result":"Tool Result","Tool Execution Error":"Tool Execution Error",Context:"Context",Contexts:"Contexts","Add to AI Context":"Add to AI Context",Remove:"Remove","Clear all":"Clear all","An error occurred":"An error occurred","Request failed":"Request failed","Connection error":"Connection error","AI Assistant is not configured":"AI Assistant is not configured","Thinking...":"Thinking...","Generating response...":"Generating response...",insertHTML:"Insert HTML",readDocument:"Read Document",readBlock:"Read Block",replaceInDocument:"Replace in Document",replaceInBlock:"Replace in Block",getSelection:"Get Selection","Just now":"Just now",Conversation:"Conversation","New Conversation":"New Conversation",Yesterday:"Yesterday","Delete conversation":"Delete conversation","Are you sure you want to delete this conversation?":"Are you sure you want to delete this conversation?","Failed to delete conversation":"Failed to delete conversation"}},63805:function(e,t,u){"use strict";u.r(t),u.d(t,{en:function(){return i},ru:function(){return n}});var i=u(26612),n=u(55790)},55790:function(e){e.exports={"AI Assistant":"AI Ассистент","AI Assistant Pro":"AI Ассистент Pro","Welcome to AI Assistant":"Добро пожаловать в AI Ассистент","Start your first conversation":"Начните первый диалог","Tip: Select text in editor to add context":"Подсказка: Выделите текст в редакторе для добавления контекста","New chat":"Новый чат","Search conversations...":"Поиск диалогов...","No conversations yet":"Пока нет диалогов","Ask me anything...":"Спросите меня о чем угодно...","Ask a follow-up...":"Задайте дополнительный вопрос...","Reply...":"Ответить...","Type your message...":"Введите ваше сообщение...",Send:"Отправить",Cancel:"Отмена",Retry:"Повторить",Insert:"Вставить",Copy:"Копировать",Edit:"Редактировать",Delete:"Удалить",New:"Новый",Back:"Назад","Permission Required":"Требуется разрешение",Approve:"Разрешить",Deny:"Отклонить",Once:"Один раз","This conversation":"Этот диалог",Always:"Всегда","The AI wants to execute:":"AI хочет выполнить:","This will modify your document content.":"Это изменит содержимое вашего документа.","Executing...":"Выполняется...","Completed successfully":"Успешно выполнено",Failed:"Ошибка","Pending approval":"Ожидает разрешения","Denied by user":"Отклонено пользователем","Tool Result":"Результат инструмента","Tool Execution Error":"Ошибка выполнения инструмента",Context:"Контекст",Contexts:"Контексты","Add to AI Context":"Добавить в контекст AI",Remove:"Удалить","Clear all":"Очистить все","An error occurred":"Произошла ошибка","Request failed":"Запрос не выполнен","Connection error":"Ошибка соединения","AI Assistant is not configured":"AI Ассистент не настроен","Thinking...":"Думаю...","Generating response...":"Генерирую ответ...",insertHTML:"Вставить HTML",readDocument:"Прочитать документ",readBlock:"Прочитать блок",replaceInDocument:"Заменить в документе",replaceInBlock:"Заменить в блоке",getSelection:"Получить выделение","Just now":"Только что",Conversation:"Диалог","New Conversation":"Новый диалог",Yesterday:"Вчера","Delete conversation":"Удалить диалог","Are you sure you want to delete this conversation?":"Вы уверены, что хотите удалить этот диалог?","Failed to delete conversation":"Не удалось удалить диалог",Settings:"Настройки","General Settings":"Общие настройки","Conversation Settings":"Настройки диалога","Display Mode":"Режим отображения","Panel Width":"Ширина панели",Theme:"Тема",Model:"Модель",Temperature:"Температура",Close:"Закрыть",Dialog:"Модальное окно",Left:"Левая панель",Right:"Правая панель",Top:"Верхняя панель",Bottom:"Нижняя панель",Inherit:"Наследовать от редактора",Light:"Светлая тема",Dark:"Тёмная тема","%dm ago":"%dм назад","%dh ago":"%dч назад"}},94454:function(e,t,u){"use strict";u.d(t,{getAIProviderOptions:function(){return i.getAIProviderOptions},registerAIProvider:function(){return i.registerAIProvider}}),u(82923);var i=u(58211)},82923:function(e,t,u){"use strict";var i=u(89929),n=u(77688),s=u(86127),r=u(56075),o=u(11886),a=u(25415),l=u(58211),c=u(54079);(0,l.registerAIProvider)("jodit-ai-adapter",e=>{var t;let u=e.url.replace(/\/+$/,""),l=null!=(t=e.provider)?t:"openai",h=!1!==e.stream;return{apiMode:"incremental",maxRetries:0,voiceInputEnabled:!0,voiceInputUrl:`${u.replace(/^http/,"ws")}/v1/ai/transcribe`,voiceInputApiKey:e.apiKey,textAutocompleteEnabled:!0,textAutocompleteApiRequest:(t,i,s)=>(0,n._)(function*(){var n;let r=new c.Ajax({url:`${u}/ai/autocomplete?query=${encodeURIComponent(t)}&key=${encodeURIComponent(e.apiKey)}`,method:"POST",contentType:"application/json",data:{provider:l,context:{maxSuggestions:i}}});s.addEventListener("abort",()=>r.abort(),{once:!0});let o=yield r.send(),a=yield o.json();return a.success&&(null==(n=a.result)?void 0:n.suggestions)?a.result.suggestions:[]})(),apiRequest:(t,d)=>(0,n._)(function*(){let n=new c.Ajax({url:`${u}/ai/request?key=${encodeURIComponent(e.apiKey)}`,method:"POST",contentType:"application/json",data:{provider:l,context:h?(0,o._)((0,r._)({},t),{metadata:(0,o._)((0,r._)({},t.metadata),{stream:!0})}):t}});if(d&&d.addEventListener("abort",()=>n.abort(),{once:!0}),!h){let e=yield n.send();return{mode:"final",response:(yield e.json()).result}}let F=n.stream();return{mode:"stream",stream:(0,a._)(function*(){var e,t=!1,u=!1;try{for(var n,r=(0,i._)(F);t=!(n=yield(0,s._)(r.next())).done;t=!1){let e=n.value;yield JSON.parse(e)}}catch(t){u=!0,e=t}finally{try{t&&null!=r.return&&(yield(0,s._)(r.return()))}finally{if(u)throw e}}})()}})()}})},58211:function(e,t,u){"use strict";u.d(t,{getAIProviderOptions:function(){return n},registerAIProvider:function(){return s}});let i=new Map;function n(e,t){let u=i.get(e);if(!u)throw Error(`AI provider "${e}" is not registered. Available providers: ${[...i.keys()].join(", ")}`);return u(t)}function s(e,t){i.set(e,t)}},65374:function(e,t,u){"use strict";u.r(t),u.d(t,["description",0,"Add HTML content to the beginning or end of the document","name",0,"addHTML","parameters",0,[{name:"html",type:"string",description:"HTML content to add",required:!0},{name:"position",type:"string",description:'Where to add: "start" adds at the beginning of the document, "end" appends to the end',required:!1,default:"end"}],"requiresPermission",0,!0])},686:function(e,t,u){"use strict";u.d(t,{execute:function(){return a}});var i=u(77688),n=u(6689),s=u(49459),r=u(85696),o=u(22732);function a(e,t,u){return(0,i._)(function*(){let i=(0,s.requireString)(t,"html",{allowEmpty:!0}),{position:a="end"}=t;if(!i.trim())return{success:!0,message:"Nothing to add: HTML is empty"};(0,n.throwIfAborted)(u);try{let t=e.createInside.fragment(),u=(0,r.createSanitizedContainer)(e,i);for(;u.firstChild;)t.appendChild(u.firstChild);return"start"===a?o.Dom.prepend(e.editor,t):o.Dom.append(e.editor,t),e.synchronizeValues(),{success:!0,message:`Added ${i.length} characters of HTML at the ${"start"===a?"beginning":"end"} of the document`}}catch(e){throw Error(`Failed to add HTML: ${(null==e?void 0:e.message)||"Unknown error"}`)}})()}},78907:function(e,t,u){"use strict";var i=u(56075),n=u(11886),s=u(65374),r=u(686);t.default=(0,n._)((0,i._)({},s),{execute:r.execute})},73943:function(e,t,u){"use strict";u.r(t),u.d(t,["description",0,"Apply or remove inline formatting to the current selection (bold, italic, underline, etc.) or to a specific block","name",0,"applyFormat","parameters",0,[{name:"element",type:"string",description:'HTML element to wrap selection (e.g., "strong", "em", "u", "span")',required:!1},{name:"attributes",type:"object",description:'Attributes to apply (e.g., {"className": "highlight"}, {"style": {"color": "red"}})',required:!1},{name:"remove",type:"boolean",description:"If true, remove the formatting instead of applying it",required:!1,default:!1},{name:"blockIndex",type:"number",description:"Zero-based index of the block to format (if not using current selection)",required:!1},{name:"selector",type:"string",description:"CSS selector to find the block to format (if not using current selection)",required:!1}],"requiresPermission",0,!0])},19127:function(e,t,u){"use strict";u.d(t,{execute:function(){return a}});var i=u(77688),n=u(56075),s=u(11886),r=u(6689),o=u(44526);function a(e,t,u){return(0,i._)(function*(){let{element:i,attributes:a,remove:l,blockIndex:c,selector:h}=t;if((0,r.throwIfAborted)(u),!i&&!a)throw Error('Either "element" or "attributes" must be provided');if(e.s.restore(),void 0!==c||h){let{element:t}=(0,o.resolveBlock)(e,{selector:h,index:c});e.s.select(t)}if(e.s.isCollapsed())throw Error("No selection found. Please select text to format");try{let t={};return i&&(t.element=i),a&&(t.attributes=a),l?e.s.commitStyle((0,s._)((0,n._)({},t),{mode:"remove"})):e.s.commitStyle(t),e.synchronizeValues(),{success:!0,message:l?"Formatting removed successfully":"Formatting applied successfully"}}catch(e){throw Error(`Failed to ${l?"remove":"apply"} formatting: ${e.message}`)}})()}},39296:function(e,t,u){"use strict";var i=u(56075),n=u(11886),s=u(73943),r=u(19127);t.default=(0,n._)((0,i._)({},s),{execute:r.execute})},53835:function(e,t,u){"use strict";u.d(t,{getToolNames:function(){return p}});var i=u(78907),n=u(39296),s=u(16745),r=u(78717),o=u(5618),a=u(90991),l=u(2020),c=u(12570),h=u(95323),d=u(97603);let F={readDocument:o.default,readBlocks:r.default,readSelection:a.default,writeDocument:d.default,replaceSelection:h.default,replaceBlock:l.default,replaceInDocument:c.default,insertHTML:s.default,addHTML:i.default,applyFormat:n.default};function p(){return Object.keys(F)}u.d(t,["BUILT_IN_TOOLS",0,F])},56732:function(e,t,u){"use strict";u.r(t),u.d(t,["description",0,"Insert or replace HTML content at the current cursor position in the editor","name",0,"insertHTML","parameters",0,[{name:"html",type:"string",description:"HTML content to insert",required:!0},{name:"replace",type:"boolean",description:"If true, replaces current selection. If false, inserts at cursor",required:!1,default:!1}],"requiresPermission",0,!0])},39592:function(e,t,u){"use strict";u.d(t,{execute:function(){return r}});var i=u(77688),n=u(6689),s=u(49459);function r(e,t,u){return(0,i._)(function*(){let i=(0,s.requireString)(t,"html",{allowEmpty:!0}),{replace:r}=t;if(!i.trim())return{success:!0,message:"Nothing to insert: HTML is empty"};(0,n.throwIfAborted)(u);try{return e.s.focus(),r&&!e.s.isCollapsed()&&e.s.remove(),e.s.insertHTML(i),e.synchronizeValues(),{success:!0,message:`Inserted ${i.length} characters of HTML`}}catch(e){throw Error(`Failed to insert HTML: ${(null==e?void 0:e.message)||"Unknown error"}`)}})()}},16745:function(e,t,u){"use strict";var i=u(56075),n=u(11886),s=u(56732),r=u(39592);t.default=(0,n._)((0,i._)({},s),{execute:r.execute})},75352:function(e,t,u){"use strict";u.r(t),u.d(t,["description",0,"Read blocks from the editor with optional filtering and pagination","name",0,"readBlocks","parameters",0,[{name:"offset",type:"number",description:"Number of blocks to skip from the beginning (default: 0)",required:!1,default:0},{name:"limit",type:"number",description:"Maximum number of blocks to return (default: all)",required:!1},{name:"query",type:"string",description:"Filter blocks by text content",required:!1}],"requiresPermission",0,!1])},91140:function(e,t,u){"use strict";u.d(t,{execute:function(){return r}});var i=u(77688),n=u(6689),s=u(22732);function r(e,t,u){return(0,i._)(function*(){let{offset:i,limit:r,query:o}=t;(0,n.throwIfAborted)(u);let a=[];Array.from(e.editor.children).forEach((e,t)=>{s.Dom.isElement(e)&&a.push({blockIndex:t,tagName:e.tagName.toLowerCase(),content:e.innerHTML,textContent:e.textContent||"",classList:Array.from(e.classList)})});let l=a;if(o&&"string"==typeof o){let e=o.toLowerCase();l=a.filter(t=>t.textContent.toLowerCase().includes(e)||t.tagName.includes(e)||t.content.toLowerCase().includes(e))}let c=Math.max(0,Math.min("number"==typeof i?i:0,l.length)),h=void 0!==r?Math.min(c+r,l.length):l.length;return{blocks:l.slice(c,h),total:a.length,offset:c,limit:void 0!==r?r:void 0}})()}},78717:function(e,t,u){"use strict";var i=u(56075),n=u(11886),s=u(75352),r=u(91140);t.default=(0,n._)((0,i._)({},s),{execute:r.execute})},93809:function(e,t,u){"use strict";u.r(t),u.d(t,["description",0,"Read the entire content of the editor document in HTML format","name",0,"readDocument","parameters",0,[{name:"start",type:"number",description:"Start character position (default: 0)",required:!1,default:0},{name:"end",type:"number",description:"End character position (default: length of document)",required:!1},{name:"aroundSelection",type:"boolean",description:"If true, return only the maximum block around the current selection",required:!1,default:!1}],"requiresPermission",0,!1])},28157:function(e,t,u){"use strict";u.d(t,{execute:function(){return r}});var i=u(77688),n=u(6689),s=u(22732);function r(e,t,u){return(0,i._)(function*(){let{start:i,end:r,aroundSelection:o}=t;(0,n.throwIfAborted)(u);let a=e.value,l=a.length;if(o&&!e.s.isCollapsed()){let t=e.s.range.commonAncestorContainer;for(;t&&t!==e.editor;){if(s.Dom.isElement(t)&&t.parentNode===e.editor){a=t.outerHTML;break}t=t.parentNode}return{html:a,length:l}}let c=void 0!==r?Math.min(r,l):l,h=Math.max(0,Math.min("number"==typeof i?i:0,l));return(h>0||l>c)&&(a=a.substring(h,c)),{html:a,length:l,start:h,end:c}})()}},5618:function(e,t,u){"use strict";var i=u(56075),n=u(11886),s=u(93809),r=u(28157);t.default=(0,n._)((0,i._)({},s),{execute:r.execute})},52826:function(e,t,u){"use strict";u.r(t),u.d(t,["description",0,"Get information about the current selection including HTML content and optional context","name",0,"readSelection","parameters",0,[{name:"contextCharsBefore",type:"number",description:"Number of characters to include before the selection",required:!1,default:0},{name:"contextCharsAfter",type:"number",description:"Number of characters to include after the selection",required:!1,default:0}],"requiresPermission",0,!1])},85130:function(e,t,u){"use strict";u.d(t,{execute:function(){return s}});var i=u(77688),n=u(6689);function s(e,t,u){return(0,i._)(function*(){let{contextCharsBefore:i,contextCharsAfter:s}=t;if((0,n.throwIfAborted)(u),e.s.restore(),e.s.isCollapsed())return{hasSelection:!1};let r=e.s.html,o=e.s.range,a=o.toString(),l={hasSelection:!0,html:r,text:a,startContainer:o.startContainer.nodeName,endContainer:o.endContainer.nodeName};if(i>0||s>0){let t=e.editor.textContent||"",u=t.substring(0,t.indexOf(a)),n=t.substring(t.indexOf(a)+a.length);i>0&&(l.contextBefore=u.slice(-i)),s>0&&(l.contextAfter=n.slice(0,s))}return l})()}},90991:function(e,t,u){"use strict";var i=u(56075),n=u(11886),s=u(52826),r=u(85130);t.default=(0,n._)((0,i._)({},s),{execute:r.execute})},96675:function(e,t,u){"use strict";u.r(t),u.d(t,["description",0,"Replace a specific block in the document by its index or CSS selector with new HTML content","name",0,"replaceBlock","parameters",0,[{name:"index",type:"number",description:"Zero-based index of the block to replace (use either index or selector, not both)",required:!1},{name:"selector",type:"string",description:'CSS selector to find the block to replace (e.g., "h1", ".my-class", "#my-id"). Use either selector or index, not both',required:!1},{name:"html",type:"string",description:"HTML content for the new block",required:!0}],"requiresPermission",0,!0])},3091:function(e,t,u){"use strict";u.d(t,{execute:function(){return l}});var i=u(77688),n=u(6689),s=u(49459),r=u(44526),o=u(85696),a=u(22732);function l(e,t,u){return(0,i._)(function*(){let{index:i,selector:l}=t,c=(0,s.requireString)(t,"html");if((0,n.throwIfAborted)(u),void 0===i&&!l||void 0!==i&&l)throw Error("Either index or selector must be provided, but not both");let{element:h,identifier:d}=(0,r.resolveBlock)(e,{selector:l,index:i,requireExactlyOne:!0});try{var F;let t=(0,o.createSanitizedContainer)(e,c).firstChild;if(!t||!a.Dom.isElement(t))throw Error("Invalid HTML: must contain at least one element");return null==(F=h.parentNode)||F.replaceChild(t,h),e.synchronizeValues(),{success:!0,message:`Block ${d} replaced successfully`}}catch(e){throw Error(`Failed to replace block ${d}: ${e.message}`)}})()}},2020:function(e,t,u){"use strict";var i=u(56075),n=u(11886),s=u(96675),r=u(3091);t.default=(0,n._)((0,i._)({},s),{execute:r.execute})},62553:function(e,t,u){"use strict";u.r(t),u.d(t,["description",0,"Find and replace text or HTML patterns throughout the entire document","name",0,"replaceInDocument","parameters",0,[{name:"search",type:"string",description:"Text or pattern to search for",required:!0},{name:"replace",type:"string",description:"Replacement text or HTML",required:!0},{name:"useRegex",type:"boolean",description:"If true, treats search as a regular expression",required:!1,default:!1},{name:"useSelector",type:"string",description:"CSS selector to narrow down the search scope to specific elements",required:!1}],"requiresPermission",0,!0])},56293:function(e,t,u){"use strict";u.d(t,{execute:function(){return o}});var i=u(77688),n=u(6689),s=u(49459),r=u(85696);function o(e,t,u){return(0,i._)(function*(){let i=(0,s.requireString)(t,"search"),o=(0,s.requireString)(t,"replace",{allowEmpty:!0}),{useRegex:a,useSelector:l}=t;(0,n.throwIfAborted)(u);try{let t;e.s.focus(),e.s.save();let s=0;if(l){let c=function(e,t,u,i,s,o){let a=e.editor.querySelectorAll(s);if(0===a.length)return{replacements:0,message:`No elements found matching selector "${s}"`};let l=0;return a.forEach(s=>{(0,n.throwIfAborted)(o);let a=s.innerHTML,c=a;if(i)try{let e=RegExp(t,"g");a=a.replace(e,()=>(l++,u))}catch(e){throw Error(`Invalid regex pattern: ${(null==e?void 0:e.message)||"Unknown error"}`)}else{let e=t.length,i=0;for(;-1!==(i=a.indexOf(t,i));)(0,n.throwIfAborted)(o),a=a.substring(0,i)+u+a.substring(i+e),i+=u.length,l++}a!==c&&(s.innerHTML=a,(0,r.sanitizeElement)(e,s))}),l>0&&(e.synchronizeValues(),e.s.restore()),{replacements:l}}(e,i,o,a,l,u);s=c.replacements,t=c.message}else s=function(e,t,u,i,s,r){let o=0,a=t;if(s)try{let e=RegExp(u,"g");a=a.replace(e,()=>(o++,i))}catch(e){throw Error(`Invalid regex pattern: ${(null==e?void 0:e.message)||"Unknown error"}`)}else{let e=u.length,t=0;for(;-1!==(t=a.indexOf(u,t));)(0,n.throwIfAborted)(r),a=a.substring(0,t)+i+a.substring(t+e),t+=i.length,o++}return o>0&&(e.value=a,e.s.restore(),e.synchronizeValues()),o}(e,e.value,i,o,a,u);return{replacements:s,message:t||(s>0?`Replaced ${s} occurrence(s)`:"No matches found")}}catch(t){throw e.s.restore(),Error(`Failed to replace in document: ${(null==t?void 0:t.message)||"Unknown error"}`)}})()}},12570:function(e,t,u){"use strict";var i=u(56075),n=u(11886),s=u(62553),r=u(56293);t.default=(0,n._)((0,i._)({},s),{execute:r.execute})},70750:function(e,t,u){"use strict";u.r(t),u.d(t,["description",0,"Replace the current selection with new HTML content","name",0,"replaceSelection","parameters",0,[{name:"html",type:"string",description:"HTML content to insert in place of the selection",required:!0},{name:"collapseToEnd",type:"boolean",description:"Move cursor to the end of the inserted content",required:!1,default:!0}],"requiresPermission",0,!0])},36142:function(e,t,u){"use strict";u.d(t,{execute:function(){return r}});var i=u(77688),n=u(6689),s=u(49459);function r(e,t,u){return(0,i._)(function*(){let i=(0,s.requireString)(t,"html"),{collapseToEnd:r}=t;(0,n.throwIfAborted)(u);try{if(e.s.restore(),e.s.insertHTML(i),r){let t=e.s.range;t.collapse(!1),e.s.selectRange(t)}return e.e.fire("change"),{success:!0,message:"Selection replaced successfully"}}catch(e){throw Error(`Failed to replace selection: ${e.message}`)}})()}},95323:function(e,t,u){"use strict";var i=u(56075),n=u(11886),s=u(70750),r=u(36142);t.default=(0,n._)((0,i._)({},s),{execute:r.execute})},90022:function(e,t,u){"use strict";u.r(t),u.d(t,["description",0,"Write (replace) the entire document content with new HTML","name",0,"writeDocument","parameters",0,[{name:"html",type:"string",description:"HTML content to set as the document",required:!0}],"requiresPermission",0,!0])},79766:function(e,t,u){"use strict";u.d(t,{execute:function(){return r}});var i=u(77688),n=u(6689),s=u(49459);function r(e,t,u){return(0,i._)(function*(){let i=(0,s.requireString)(t,"html",{allowEmpty:!0});(0,n.throwIfAborted)(u);try{return e.s.focus(),e.value=i,e.synchronizeValues(),{success:!0,message:`Document content was replaced with provided HTML(${i.length} characters)`}}catch(e){throw Error(`Failed to replace HTML: ${(null==e?void 0:e.message)||"Unknown error"}`)}})()}},97603:function(e,t,u){"use strict";var i=u(56075),n=u(11886),s=u(90022),r=u(79766);t.default=(0,n._)((0,i._)({},s),{execute:r.execute})},80453:function(e,t,u){"use strict";u.d(t,{UIConversationListItem:function(){return l}});var i=u(82749),n=u(31635),s=u(65478),r=u(67510),o=u(62843),a=u(80870);class l extends r.UIElement{className(){return"UIConversationListItem"}render(){return'<div class="jodit-ui-conversation-list__item"></div>'}setActive(e){this.isActive=e,this.updateContent()}updateContent(){let e=this.container;e.innerHTML="",e.setAttribute("data-id",this.conversation.id),this.isActive?e.classList.add("jodit-ui-conversation-list__item_active"):e.classList.remove("jodit-ui-conversation-list__item_active");let t=this.j.c.div("jodit-ui-conversation-list__item-avatar");t.textContent="AI",e.appendChild(t);let u=this.j.c.div("jodit-ui-conversation-list__item-wrapper"),i=this.j.c.div("jodit-ui-conversation-list__item-content"),n=this.j.c.div("jodit-ui-conversation-list__item-title");if(n.textContent=this.conversation.title,this.titleElement=n,i.appendChild(n),this.opts.showTimestamps){let e=this.j.c.div("jodit-ui-conversation-list__item-meta");e.textContent=this.opts.formatTimestamp(this.conversation.updated,this.j.i18n.bind(this.j)),i.appendChild(e)}if(u.appendChild(i),this.conversation.messageCount>0){let e=this.j.c.div("jodit-ui-conversation-list__item-badge");e.textContent=String(this.conversation.messageCount),u.appendChild(e)}e.appendChild(u),this.actionsButton||(this.actionsButton=new o.UIButton(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(e=>{e.stopPropagation(),this.showActionsMenu(e)})),e.appendChild(this.actionsButton.container)}onClick(){this.isRenaming||this.j.e.fire("selectConversation.ai-assistant-pro",this.conversation.id)}showActionsMenu(e){if(!this.contextMenu||!this.actionsButton)return;let t=this.actionsButton.container.getBoundingClientRect();this.contextMenu.show(t.left,t.bottom,[{title:"Rename",icon:"pencil",exec:()=>{this.startInlineRename()}},{title:"Delete",icon:"bin",exec:()=>{this.onDelete()}}]),e.stopPropagation()}startInlineRename(){if(this.isRenaming||!this.titleElement)return;this.isRenaming=!0;let e=this.titleElement,t=this.conversation.title,u=this.j.c.element("input");u.type="text",u.value=t,u.className="jodit-ui-conversation-list__item-title-input",e.textContent="",e.appendChild(u),u.focus(),u.select();let i=()=>{if(!this.isRenaming)return;let i=u.value.trim();this.isRenaming=!1,i&&i!==t?(e.textContent=i,this.j.e.fire("renameConversation.ai-assistant-pro",this.conversation.id,i)):e.textContent=t};this.j.e.on(u,"blur",i),this.j.e.on(u,"keydown",i=>{"Enter"===i.key&&(i.preventDefault(),u.blur()),"Escape"===i.key&&(this.isRenaming=!1,e.textContent=t)}),this.j.e.on(u,"click",e=>{e.stopPropagation()})}onDelete(){this.j.e.fire("deleteConversation.ai-assistant-pro",this.conversation.id)}destruct(){var e,t;null==(e=this.actionsButton)||e.destruct(),null==(t=this.contextMenu)||t.destruct(),super.destruct()}constructor(e,t,u=!1,n){super(e),(0,i._)(this,"opts",void 0),(0,i._)(this,"conversation",void 0),(0,i._)(this,"isActive",void 0),(0,i._)(this,"actionsButton",void 0),(0,i._)(this,"contextMenu",void 0),(0,i._)(this,"titleElement",void 0),(0,i._)(this,"isRenaming",void 0),this.opts=n,this.actionsButton=null,this.contextMenu=null,this.titleElement=null,this.isRenaming=!1,this.conversation=t,this.isActive=u,this.contextMenu=new a.ContextMenu(this.j),this.updateContent()}}(0,n.__decorate)([(0,s.watch)("container:click")],l.prototype,"onClick",null),(0,n.__decorate)([s.autobind],l.prototype,"showActionsMenu",null),(0,n.__decorate)([s.autobind],l.prototype,"startInlineRename",null),(0,n.__decorate)([s.autobind],l.prototype,"onDelete",null),l=(0,n.__decorate)([s.component],l)},68365:function(e,t,u){"use strict";u.d(t,{UIConversationList:function(){return c}});var i=u(82749),n=u(31635),s=u(31356),r=u(80453),o=u(65478),a=u(80256),l=u(62405);class c extends l.UIGroup{className(){return"UIConversationList"}render(){return`<div class="&__container">
|
|
10
|
+
${s}`.trim();u?yield this.__executeQuickCommandSilent(a,s):yield this.__executeQuickCommandWithPanel(a,i)}).call(this)}__executeQuickCommandSilent(e,t){return(0,i._)(function*(){yield this.__loadData(),this.j.progressbar.show().progress(100);try{let t=(0,p.createUserMessage)(e),u=(0,p.createNewConversation)(this.j,this.state.defaultModel,this.state.defaultTemperature,[t]),i=yield this.apiClient.sendRequest(u.id,u.messages,null,[],u.options);if("final"===i.mode){let e=i.response.content;e&&this.j.s.insertHTML(e)}}catch(e){(0,m.isAbortError)(e)||this.j.e.fire("error",e)}finally{this.j.progressbar.hide()}}).call(this)}__executeQuickCommandWithPanel(e,t){return(0,i._)(function*(){yield this.__loadData();let u=this.stateManager.state.displayMode;this.stateManager.state.displayMode=t;let i=(0,p.getCurrentSelectionContext)(this.j);i&&this.stateManager.addSelectionContext(i),this.stateManager.isOpen()||(yield this.openAssistant()),yield this.sendMessage(e),this.stateManager.state.displayMode=u}).call(this)}sendMessage(e){return(0,i._)(function*(){yield this.__loadData();let t=this.stateManager.getCurrentConversation(),u=this.stateManager.getEditingMessageId();if(u&&t){let e=t.messages.findIndex(e=>e.id===u);if(-1!==e){let u=t.messages.slice(0,e),i=(0,r._)((0,s._)({},t),{messages:u,updatedAt:Date.now()});this.stateManager.setCurrentConversation(i),yield this.storage.save(i),this.stateManager.clearEditingMessage(),t=i}}t||(t=(0,p.createNewConversation)(this.j,this.state.defaultModel,this.state.defaultTemperature),this.stateManager.setCurrentConversation(t));let i=null;e.trim()&&(i=(0,p.createUserMessage)(e),t.title||(t=(0,r._)((0,s._)({},t),{title:e})),t=(0,r._)((0,s._)({},t),{updated:Date.now(),messages:[...t.messages,i]})),this.stateManager.setCurrentConversation((0,s._)({},t)),i&&this.j.e.fire("messageSent.ai-assistant-pro",i),this.stateManager.setLoading(!0),this.stateManager.clearError();try{yield this.sendRequestToAI(0),this.stateManager.clearSelectionContexts()}catch(e){if((0,m.isAbortError)(e))return;this.stateManager.setError(e instanceof Error?e.message:String(e))}finally{this.stateManager.setLoading(!1)}}).call(this)}sendRequestToAI(e=0){return(0,i._)(function*(){let t,u,i=this.j.o.aiAssistantPro.maxRecursionToolCallDepth;if(e>=i)throw Error(`Max recursion depth ${i} reached for tool calls`);let n=this.stateManager.getCurrentConversation();if(!n)return;let r=(0,p.findParentMessageId)(n),[o]=yield Promise.all([this.apiClient.sendRequest(n.id,n.messages,r,this.stateManager.getSelectionContexts(),n.options),this.storage.save(n)]);if("stream"===o.mode){let e=yield(0,p.processStreamingResponse)(this.stateManager,o,n);t=e.aiMessage,u=e.index,n=e.conversation}else{let e=(0,p.processFinalResponse)(o,n);t=e.aiMessage,u=e.index,n=e.conversation}n=yield(0,p.processArtifacts)(this.j,t,n,u),this.j.e.fire("messageReceived.ai-assistant-pro",t),this.stateManager.setCurrentConversation((0,s._)({},n)),yield this.storage.save(n),yield this.handleToolCalls(t.id,e)}).call(this)}deleteConversation(e){return(0,i._)(function*(){yield this.__loadData(),yield(0,p.deleteConversationWithCleanup)(this.j,e,this.storage,this.stateManager,this.permissionManager)}).call(this)}renameConversation(e,t){return(0,i._)(function*(){var u;let i=yield this.storage.get(e);if(!i)return;let n=(0,r._)((0,s._)({},i),{title:t,updated:Date.now()});yield this.storage.save(n),(null==(u=this.state.currentConversation)?void 0:u.id)===e&&this.stateManager.setCurrentConversation(n);let o=yield this.storage.list();this.stateManager.setConversations(o)}).call(this)}searchConversations(e){return(0,i._)(function*(){yield this.__loadData(),yield(0,p.handleConversationSearch)(e,this.storage,this.stateManager)}).call(this)}handleToolCalls(e,t=0){return(0,i._)(function*(){let u=this.stateManager.getCurrentConversation();if(!u)return;let i=u.messages.find(t=>t.id===e);if(!i)return;let n=i.toolCalls;if(!n||0===n.length)return;let s=n.filter(e=>!(0,p.isTerminalToolCallStatus)(e.status));if(0===s.length)return;let{approved:r,needsPermission:o}=this.permissionManager.filterToolCalls(s,u.permissions);for(let u of(this.stateManager.setPendingToolCalls(o),r))yield this.executeToolCall(e,u,t)}).call(this)}executeToolCall(e,t,u=0){return(0,i._)(function*(){let i=this.stateManager.getCurrentConversation();if(!i)return;let n=yield(0,p.executeToolCall)(this.j,t,this.toolRegistry),o=i.messages.findIndex(t=>t.id===e);if(-1===o)return;let a=i.messages[o],l=i.messages.slice();l[o]=(0,p.updateToolCallInMessage)(a,n),i=(0,r._)((0,s._)({},i),{messages:l,updated:Date.now()}),this.stateManager.setCurrentConversation(i),(0,p.areAllToolCallsExecuted)(i)&&(yield this.sendRequestToAI(u+1))}).call(this)}copyMessage(e){return(0,i._)(function*(){let t=this.stateManager.getCurrentConversation();if(!t)return;let u=t.messages.find(t=>t.id===e);if(u)try{yield navigator.clipboard.writeText(u.content),this.j.message.success("Message copied to clipboard")}catch(e){this.j.e.fire("error",Error("Failed to copy message"))}}).call(this)}restartFromMessage(e){return(0,i._)(function*(){let t=this.stateManager.getCurrentConversation();if(!t)return;let u=t.messages.findIndex(t=>t.id===e);if(-1===u)return;let i=t.messages[u];if("user"!==i.role)return;yield this.__loadData();let n=t.messages.slice(0,u),o=(0,r._)((0,s._)({},t),{messages:n,updatedAt:Date.now()});this.stateManager.setCurrentConversation(o),yield this.storage.save(o),yield this.sendMessage(i.content)}).call(this)}editMessage(e){return(0,i._)(function*(){let t=this.stateManager.getCurrentConversation();if(!t)return;let u=t.messages.find(t=>t.id===e);u&&"user"===u.role&&(this.stateManager.setEditingMessageId(e),this.mainPanel.inputArea.setValue(u.content),this.mainPanel.inputArea.focus())}).call(this)}cancelEditMessage(){this.stateManager.isEditingMessage()&&(this.stateManager.clearEditingMessage(),this.mainPanel.inputArea.setValue(""))}deleteMessage(e){return(0,i._)(function*(){yield this.__loadData();let t=this.stateManager.getCurrentConversation();if(!t||-1===t.messages.findIndex(t=>t.id===e))return;let u=t.messages.filter(t=>t.id!==e),i=(0,r._)((0,s._)({},t),{messages:u,updatedAt:Date.now()});this.stateManager.setCurrentConversation(i),yield this.storage.save(i)}).call(this)}beforeDestruct(){var e,t,u,i,n,s,r,o;this.textAutocompleteSource&&(this.j.e.fire("unregisterAutocompleteSource",this.textAutocompleteSource),this.textAutocompleteSource=null),this.textAutocompleteCache.clear(),this.__closeFlightMode(),null==(e=(0,C.cached)(this,"toolRegistry"))||e.destruct(),null==(t=(0,C.cached)(this,"permissionManager"))||t.destruct(),null==(u=(0,C.cached)(this,"apiClient"))||u.destruct(),null==(i=(0,C.cached)(this,"stateManager"))||i.destruct(),null==(n=(0,C.cached)(this,"mainPanel"))||n.destruct(),null==(s=(0,C.cached)(this,"dialog"))||s.destruct(),null==(o=(0,C.cached)(this,"storage"))||null==(r=o.close)||r.call(o)}constructor(...e){super(...e),(0,n._)(this,"buttons",[{name:"aiAssistantPro",group:"insert"},{name:"aiCommandsPro",group:"insert"}]),(0,n._)(this,"textAutocompleteSource",null),(0,n._)(this,"textAutocompleteCache",new Map),(0,n._)(this,"__initedPromise",null),(0,n._)(this,"__openedMode",null)}}(0,n._)(y,"requires",["license","autocomplete"]),(0,o.__decorate)([C.cache],y.prototype,"toolRegistry",null),(0,o.__decorate)([C.cache],y.prototype,"permissionManager",null),(0,o.__decorate)([C.cache],y.prototype,"apiClient",null),(0,o.__decorate)([C.cache],y.prototype,"storage",null),(0,o.__decorate)([C.cache],y.prototype,"stateManager",null),(0,o.__decorate)([C.cache],y.prototype,"mainPanel",null),(0,o.__decorate)([C.cache],y.prototype,"dialog",null),(0,o.__decorate)([(0,C.watch)("state.theme")],y.prototype,"__applyTheme",null),(0,o.__decorate)([(0,C.watch)(":openAIAssistantPro.ai-assistant-pro")],y.prototype,"openAssistant",null),(0,o.__decorate)([(0,C.watch)([":resize","state.panelWidth","state.panelHeight"])],y.prototype,"__onResizeInPanelView",null),(0,o.__decorate)([(0,C.watch)(["state.isOpen","state.displayMode","state.panelWidth","state.panelHeight","state.theme","state.defaultModel","state.defaultTemperature","state.currentConversation"]),(0,C.debounce)()],y.prototype,"__onSavedStateChange",null),(0,o.__decorate)([(0,C.watch)(":closeAIAssistantPro.ai-assistant-pro")],y.prototype,"closeAssistant",null),(0,o.__decorate)([(0,C.watch)(":addContextToAIAssistant.ai-assistant-pro")],y.prototype,"addCurrentSelectionToContext",null),(0,o.__decorate)([(0,C.watch)(":executeQuickCommand.ai-assistant-pro")],y.prototype,"executeQuickCommand",null),(0,o.__decorate)([(0,C.watch)(":sendMessage.ai-assistant-pro")],y.prototype,"sendMessage",null),(0,o.__decorate)([(0,C.watch)(":searchConversations.ai-assistant-pro")],y.prototype,"searchConversations",null),(0,o.__decorate)([(0,C.watch)(":copyMessage.ai-assistant-pro")],y.prototype,"copyMessage",null),(0,o.__decorate)([(0,C.watch)(":restartFromMessage.ai-assistant-pro")],y.prototype,"restartFromMessage",null),(0,o.__decorate)([(0,C.watch)(":editMessage.ai-assistant-pro")],y.prototype,"editMessage",null),(0,o.__decorate)([(0,C.watch)(":cancelEditMessage.ai-assistant-pro")],y.prototype,"cancelEditMessage",null),(0,o.__decorate)([(0,C.watch)(":deleteMessage.ai-assistant-pro")],y.prototype,"deleteMessage",null),y=(0,o.__decorate)([C.component],y),D.JoditPro.plugins.add("aiAssistantPro",y)},66645:function(e,t,u){"use strict";var i,n=u(77688),s=u(56075),r=u(11886),o=u(47373),a=u(94668),l=u.n(a),c=u(86428),h=u.n(c),d=u(75966),F=u.n(d),p=u(83207),A=u.n(p),g=u(99219),C=u.n(g),f=u(63674),m=u.n(f),E=u(4133),D=u.n(E),v=u(94454),B=u(53835),y=u(6441),x=u(12153),_=u(31974),w=u(72573);x.Icon.set("ai-assistant-pro",h()).set("ai-commands-pro",F()).set("ai-add-context",l()).set("send",C()).set("tool-bolt",D()).set("chevron-right",A()).set("shield",m()),y.Config.prototype.aiAssistantPro={displayMode:"right",panelWidth:400,panelHeight:500,flightPanelHeight:250,dialogFullSize:!1,resizable:!0,apiMode:"incremental",apiRequest:null,maxRetries:3,requestTimeout:3e5,retryDelay:1e3,maxRecursionToolCallDepth:1e3,enabledTools:(0,B.getToolNames)(),customTools:[],toolPermissions:{},autoApproveTools:["readDocument","readBlocks","readSelection","insertHTML","addHTML"],alwaysDenyTools:[],defaultPermissionScope:"conversation",storage:"indexedDB",maxConversations:50,storageKey:"jodit-ai-assistant-pro",showConversationList:!0,enableMarkdown:!0,enableCodeHighlight:!0,maxMessageHeight:400,placeholderText:"Ask AI assistant...",sendShortcut:"Ctrl+Enter",showTimestamps:!0,formatTimestamp:(e,t)=>{let u=new Date(e),i=new Date().getTime()-u.getTime();return i<6e4?t("Just now"):i<36e5?t("%dm ago",Math.floor(i/6e4)):i<864e5?t("%dh ago",Math.floor(i/36e5)):u.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})},formatMessageContent:(e,t)=>w.marked.parse(e,{breaks:!0,gfm:!0}),showAvatars:!0,showTypingIndicator:!0,includeSelectionByDefault:!0,maxContextRanges:5,showContextPreview:!0,sendOnEnter:!0,instructions:void 0,includeEditorMetadata:!1,autoOpen:!0,rememberLastConversation:!0,autoFocusInput:!0,voiceInputEnabled:!1,closeAfterInsert:!1,enableSoundNotifications:!1,debug:!1,textAutocompleteEnabled:!1,textAutocompleteApiRequest:null,textAutocompleteMinQueryLength:3,textAutocompleteMaxSuggestions:3,textAutocompleteDebounceMs:500,textAutocompleteCacheTTL:3e4,textAutocompleteCacheMaxSize:50,quickCommandsSilentMode:!1,quickCommandsDisplayMode:"flight",showCopyMessageAction:!0,showRestartMessageAction:!0,showEditMessageAction:!0,showDeleteMessageAction:!0,dialogSettings:{},allowEditDialogSettings:!1,allowEditDisplayMode:!0,allowEditPanelWidth:!0,initiallyOpened:!1,allowClose:!0,persistOpenState:!0,theme:"parent",allowEditTheme:!0,uploadBase64Artifact(e,t){return(0,n._)(function*(){if("image"===e.type&&e.data&&"base64"===e.data.kind)try{let u=(0,o.base64ToFile)(e.data.base64,e.id,e.mimeType),i=yield t.uploader.upload([u]);return(0,r._)((0,s._)({},e),{data:{kind:"url",url:i.baseurl+i.files[0]},metadata:(0,r._)((0,s._)({},e.metadata),{filename:i.files[0]})})}catch(e){t.e.fire("error",e)}return e})()},getAIProviderOptions(e,t){return(0,v.getAIProviderOptions)(e,t)},registerAIProvider(e,t){(0,v.registerAIProvider)(e,t)}},y.Config.prototype.controls.aiAssistantPro={icon:"ai-assistant-pro",tooltip:"AI Assistant",hotkeys:["ctrl+shift+a","cmd+shift+a"],exec(e){e.e.fire("openAIAssistantPro.ai-assistant-pro")},isDisabled(e){return!e.o.aiAssistantPro.apiRequest},getLabel(e){return e.o.aiAssistantPro.apiRequest?"AI Assistant":"AI Assistant (not configured)"}},y.Config.prototype.controls.aiAddContext={icon:"ai-add-context",tooltip:"Add to AI Context",exec(e){e.e.fire("addContextToAIAssistant")},isDisabled(e){return!e.o.aiAssistantPro.apiRequest||e.s.isCollapsed()}},y.Config.prototype.controls.aiCommandsPro={icon:"ai-commands-pro",tooltip:"AI Commands",isDisabled(e){return!e.o.aiAssistantPro.apiRequest},list:_.aiAssitentCommands,exec(e,t,{control:u}){e.e.fire("executeQuickCommand.ai-assistant-pro",u.name)}};let b=(null==(i=y.Config.prototype.tuneBlock)?void 0:i.popup)||{},k={};["p","h1","h2","h3","h4","h5","h6","div","section","article","pre","blockquote","ul","ol","li","table","tr","td","th","img","figure"].forEach(e=>{let t=b[e]||["tune.up","tune.remove","tune.down"];k[e]=[...t,"|","aiAddContext"]}),y.Config.prototype.tuneBlock&&(y.Config.prototype.tuneBlock.popup=(0,s._)({},b,k))},6689:function(e,t,u){"use strict";u.d(t,{throwIfAborted:function(){return n}});var i=u(93661);function n(e){if(e.aborted)throw(0,i.abort)()}},61872:function(e,t,u){"use strict";u.d(t,{processArtifacts:function(){return c},processFinalResponse:function(){return l},processStreamingResponse:function(){return a}});var i=u(89929),n=u(77688),s=u(56075),r=u(11886),o=u(61558);function a(e,t,u){return(0,n._)(function*(){let n=(0,o.createAIMessage)(),a=-1;var l,c=!1,h=!1;try{for(var d,F=(0,i._)(t.stream);c=!(d=yield F.next()).done;c=!1){let t=d.value;switch(t.type){case"created":n=(0,r._)((0,s._)({},n),{id:t.response.responseId,content:""}),a=u.messages.length;break;case"text-delta":n=(0,r._)((0,s._)({},n),{content:n.content+t.delta});break;case"completed":n=(0,r._)((0,s._)({},n),{id:t.response.responseId,toolCalls:t.response.toolCalls||[],artifacts:t.response.artifacts||[]});break;case"error":{let e=(0,o.createErrorMessage)(t.error);n=(0,r._)((0,s._)({},n),{id:e.id,content:e.content})}}if(n.id){let t=u.messages.slice();t[a>=0?a:u.messages.length]=n,u=(0,r._)((0,s._)({},u),{messages:t,updated:Date.now()}),e.setCurrentConversation(u)}}}catch(e){h=!0,l=e}finally{try{c&&null!=F.return&&(yield F.return())}finally{if(h)throw l}}return{aiMessage:n,index:a,conversation:u}})()}function l(e,t){let u=(0,r._)((0,s._)({},(0,o.createAIMessage)()),{id:e.response.responseId,content:e.response.content,toolCalls:e.response.toolCalls||[],artifacts:e.response.artifacts||[]}),i=t.messages.slice();return i.push(u),{aiMessage:u,index:(t=(0,r._)((0,s._)({},t),{messages:i,updated:Date.now()})).messages.length-1,conversation:t}}function c(e,t,u,i){return(0,n._)(function*(){if(t.artifacts&&t.artifacts.length>0){let n=u.messages.slice();return n[i]=(0,r._)((0,s._)({},n[i]),{artifacts:yield(0,o.uploadArtifacts)(e,t.artifacts)}),(0,r._)((0,s._)({},u),{messages:n,updated:Date.now()})}return u})()}},49459:function(e,t,u){"use strict";function i(e,t,u={}){let n=e[t];if("string"!=typeof n||!u.allowEmpty&&""===n)throw Error(`Parameter "${t}" is required and must be a${u.allowEmpty?"":" non-empty"} string`);return n}u.d(t,{requireString:function(){return i}})},44526:function(e,t,u){"use strict";u.d(t,{resolveBlock:function(){return n}});var i=u(22732);function n(e,{selector:t,index:u,requireExactlyOne:s=!1}={}){let r=null!=t&&""!==t.trim(),o=null!=u;if(s&&r===o)throw Error("Either index or selector must be provided, but not both");if(!r&&!o)throw Error("Block identifier is required");if(r){if("string"!=typeof t)throw Error("Selector must be a string");let u=e.editor.querySelector(t);if(!u)throw Error(`No element found matching selector "${t}"`);if(!i.Dom.isElement(u))throw Error(`Selector "${t}" does not point to an element node`);return{element:u,identifier:`with selector "${t}"`}}if("number"!=typeof u)throw Error("Block index must be a number");let a=Array.from(e.editor.children);if(u<0||u>=a.length)throw Error(`Block index ${u} is out of range. Document has ${a.length} blocks`);let l=a[u];if(!i.Dom.isElement(l))throw Error(`Block at index ${u} is not a valid element`);return{element:l,identifier:`at index ${u}`}}},70308:function(e,t,u){"use strict";u.d(t,{areAllToolCallsExecuted:function(){return l},createNewConversation:function(){return n},findMessagesWithPendingToolCalls:function(){return c},findParentMessageId:function(){return r},isTerminalToolCallStatus:function(){return a}});var i=u(21064);function n(e,t,u,s=[]){let r=e.o.aiAssistantPro,o={id:(0,i.generateConversationId)(),created:Date.now(),updated:Date.now(),messages:s,permissions:[],options:{model:null!=t?t:r.defaultModel,temperature:null!=u?u:r.defaultTemperature}};return e.e.fire("conversationCreated.ai-assistant-pro",o),o}let s=["error_","stream_"];function r(e){for(let t=e.messages.length-1;t>=0;t--){let u=e.messages[t];if("assistant"===u.role&&function(e){return!s.some(t=>e.startsWith(t))}(u.id))return u.id}return null}let o=new Set(["executed","denied","error"]);function a(e){return o.has(e)}function l(e){let t=e.messages[e.messages.length-1];return!!(null==t?void 0:t.toolCalls)&&t.toolCalls.every(e=>a(e.status))}function c(e){return e.messages.filter(e=>e.toolCalls&&e.toolCalls.length>0&&e.toolCalls.some(e=>!a(e.status)))}},473:function(e,t,u){"use strict";u.d(t,{handleBackToList:function(){return h},handleConversationSearch:function(){return d},handleConversationSelect:function(){return c},handleToolApproval:function(){return a},handleToolDenial:function(){return l}});var i=u(77688),n=u(56075),s=u(11886),r=u(79078),o=u(82758);function a(e,t,u,r,o){return(0,i._)(function*(){let i=u.getPendingToolCalls().find(t=>t.id===e);if(!i)return null;let a=r.grantPermission(i.name,t),l=u.getCurrentConversation();return l&&(l.permissions.push(a),yield o.save(l)),u.removePendingToolCall(e),(0,s._)((0,n._)({},i),{status:"approved"})})()}function l(e,t,u,o){return(0,i._)(function*(){let i=u.getPendingToolCalls().find(e=>e.id===t);if(!i)return;let a=u.getCurrentConversation();if(!a)return;let l=a.messages.findIndex(e=>{var u;return null==(u=e.toolCalls)?void 0:u.find(e=>e.id===t)});if(-1===l)return;let c=a.messages[l],h=(0,s._)((0,n._)({},i),{result:{error:"Tool call denied by user."},status:"denied"}),d=(0,r.updateToolCallInMessage)(c,h),F=[...a.messages];F[l]=d,a=(0,s._)((0,n._)({},a),{messages:F,updated:Date.now()}),u.setCurrentConversation(a),yield o.save(a),e.e.fire("toolCallDenied.ai-assistant-pro",i),u.removePendingToolCall(t)})()}function c(e,t,u){return(0,i._)(function*(){try{u.setLoading(!0);let i=yield t.get(e);if(!i)throw Error("Conversation not found: "+e);u.setCurrentConversation((0,n._)({},i))}catch(e){o.IS_PROD}finally{u.setLoading(!1)}})()}function h(e,t){return(0,i._)(function*(){t.setView("conversationList");try{t.setLoading(!0);let u=yield e.list().catch(()=>[]);t.setConversations(u)}finally{t.setLoading(!1)}})()}function d(e,t,u){return(0,i._)(function*(){u.setLoading(!0);try{let i=yield t.list(e||void 0);u.setConversations(i),u.setView("conversationList")}finally{u.setLoading(!1)}})()}},58579:function(e,t,u){"use strict";u.d(t,{applyTheme:function(){return c.applyTheme},areAllToolCallsExecuted:function(){return n.areAllToolCallsExecuted},createNewConversation:function(){return n.createNewConversation},createUserMessage:function(){return r.createUserMessage},deleteConversationWithCleanup:function(){return l.deleteConversationWithCleanup},executeToolCall:function(){return h.executeToolCall},findMessagesWithPendingToolCalls:function(){return n.findMessagesWithPendingToolCalls},findParentMessageId:function(){return n.findParentMessageId},getCurrentSelectionContext:function(){return a.getCurrentSelectionContext},handleBackToList:function(){return s.handleBackToList},handleConversationSearch:function(){return s.handleConversationSearch},handleConversationSelect:function(){return s.handleConversationSelect},handleToolApproval:function(){return s.handleToolApproval},handleToolDenial:function(){return s.handleToolDenial},invertMode:function(){return o.invertMode},isTerminalToolCallStatus:function(){return n.isTerminalToolCallStatus},loadInitialData:function(){return l.loadInitialData},processArtifacts:function(){return i.processArtifacts},processFinalResponse:function(){return i.processFinalResponse},processStreamingResponse:function(){return i.processStreamingResponse},resizeInPanelView:function(){return o.resizeInPanelView},updateToolCallInMessage:function(){return h.updateToolCallInMessage}});var i=u(61872),n=u(70308),s=u(473),r=u(61558),o=u(71050),a=u(15927),l=u(56110),c=u(53014),h=u(79078)},61558:function(e,t,u){"use strict";u.d(t,{createAIMessage:function(){return r},createErrorMessage:function(){return o},createUserMessage:function(){return s},uploadArtifacts:function(){return a}});var i=u(77688),n=u(21064);function s(e){return{id:(0,n.generateMessageId)(),role:"user",content:e,timestamp:Date.now()}}function r(){return{id:"",role:"assistant",content:"",artifacts:[],timestamp:Date.now(),toolCalls:[]}}function o(e){return{id:"error_"+(0,n.generateMessageId)(),role:"assistant",content:`❌ Error: ${e.message}`,timestamp:Date.now(),toolCalls:[],artifacts:[]}}function a(e,t){return(0,i._)(function*(){if(!t||0===t.length)return t;let u=e.o.aiAssistantPro.uploadBase64Artifact;return u?Promise.all(t.map(t=>{var n;return(0,i._)(function*(){return null!=(n=u(t,e))?n:t})()})):t})()}},71050:function(e,t,u){"use strict";u.d(t,{invertMode:function(){return n},resizeInPanelView:function(){return s}});var i=u(41180);function n(e){switch(e){case"left":return"right";case"right":return"left";case"top":return"bottom";case"bottom":return"top"}}function s(e,t,u,s){var r,o,a,l;if("dialog"===t||"flight"===t)return;("left"===t||"right"===t)&&(null==(a=e.currentPlace.slots[n(t)])||a.style.setProperty(`--jd-slot-${n(t)}-width`,"auto"),null==(l=e.currentPlace.slots[t])||l.style.setProperty(`--jd-slot-${t}-width`,`${u}px`));let c=null!=(r=(0,i.css)(e.currentPlace.workplace,"height"))?r:0;null==(o=e.currentPlace.slots[t])||o.style.setProperty("min-height",`${Math.min(c,s)}px`)}},85696:function(e,t,u){"use strict";function i(e,t){let u=e.createInside.div();return u.innerHTML=t,n(e,u),u}function n(e,t){e.e.fire("safeHTML",t)}u.d(t,{createSanitizedContainer:function(){return i},sanitizeElement:function(){return n}})},15927:function(e,t,u){"use strict";function i(e){if(e.s.isCollapsed())return null;let t=e.s.html,u=e.s.range;return{html:t,rangeInfo:{startContainer:u.startContainer.nodeName,startOffset:u.startOffset,endContainer:u.endContainer.nodeName,endOffset:u.endOffset}}}u.d(t,{getCurrentSelectionContext:function(){return i}})},56110:function(e,t,u){"use strict";u.d(t,{deleteConversationWithCleanup:function(){return s},loadInitialData:function(){return r}});var i=u(77688),n=u(82758);function s(e,t,u,n,s){return(0,i._)(function*(){try{n.setLoading(!0),yield u.delete(t),n.removeConversation(t),s.clearConversationPermissions(t);let i=n.getCurrentConversation();(null==i?void 0:i.id)===t&&n.setCurrentConversation(null);let r=yield u.list();n.setConversations(r),n.setView(0===r.length?"welcome":"conversationList"),e.e.fire("conversationDeleted.ai-assistant-pro",t)}catch(t){e.alert(e.i18n("Failed to delete conversation")+": "+((null==t?void 0:t.message)||"Unknown error"))}finally{n.setLoading(!1)}})()}function r(e,t,u){return(0,i._)(function*(){u.setLoading(!0);try{let[n,s]=yield Promise.all([t.list().catch(()=>[]),t.getGlobalSettings().catch(()=>null)]);if(u.setConversations(n),s&&u.setSavedState(s),0===n.length)u.setView("welcome");else if(e.o.aiAssistantPro.rememberLastConversation&&(null==s?void 0:s.currentConversationId)){var i;let e=null!=(i=n.find(e=>e.id===s.currentConversationId))?i:n[0],r=yield t.get(e.id);r?u.setCurrentConversation(r):u.setView("conversationList")}else u.setView("conversationList")}catch(e){n.IS_PROD,u.setView("welcome")}finally{u.setLoading(!1)}})()}},53014:function(e,t,u){"use strict";u.d(t,{applyTheme:function(){return s}});let i=["jodit_theme_dark","jodit-ai-assistant-pro_theme_dark","jodit-dialog_theme_dark"],n=["jodit_theme_light","jodit-ai-assistant-pro_theme_light","jodit-dialog_theme_light"];function s(e,t,u,s,r){let o;if(null==s||s.classList.remove(...i),null==s||s.classList.remove(...n),"dialog"===u){let e=null==r?void 0:r.container;null==e||e.classList.remove(...i),null==e||e.classList.remove(...n)}if(o="dark"===t?i:n,null==s||s.classList.add(...o),"dialog"===u){let e=null==r?void 0:r.container;null==e||e.classList.add(...o)}}},79078:function(e,t,u){"use strict";u.d(t,{executeToolCall:function(){return r},updateToolCallInMessage:function(){return o}});var i=u(77688),n=u(56075),s=u(11886);function r(e,t,u){return(0,i._)(function*(){let i;try{let e=new AbortController().signal,r=yield u.executeTool(t.name,t.arguments,e);i=(0,s._)((0,n._)({},t),{result:{result:r},status:"executed"})}catch(u){i=(0,s._)((0,n._)({},t),{result:{error:u instanceof Error?u.message:String(u)},status:"error"}),e.e.fire("toolCallFailed.ai-assistant-pro",i)}return e.e.fire("toolCallExecuted.ai-assistant-pro",i,{toolCallId:i.id,result:i.result}),i})()}function o(e,t){var u,i;let r=null==(i=e.toolCalls)?void 0:i.findIndex(e=>e.id===t.id);if(null==r||-1===r)return e;let o=[...null!=(u=null==e?void 0:e.toolCalls)?u:[]];return o[r]=t,(0,s._)((0,n._)({},e),{toolCalls:o})}},86449:function(e,t,u){"use strict";u.d(t,{APIClient:function(){return l}});var i=u(77688),n=u(82749),s=u(56075),r=u(11886),o=u(82758),a=u(21537);class l{sendRequest(e,t,u,n,s){return(0,i._)(function*(){let{apiRequest:i,requestTimeout:r,maxRetries:l}=this.jodit.o.aiAssistantPro;if(!i)throw Error("AI Assistant Pro callback is not configured");let c=new AbortController;this.abortControllers.add(c);try{let h=this.buildRequestContext(e,t,u,n,s),d=null;for(let e=0;l>=e;e++)try{if(c.signal.aborted)throw(0,a.abort)();let e=setTimeout(()=>{c.abort()},r);try{let t=yield i(h,c.signal);return clearTimeout(e),this.validateResponse(t),t}catch(t){throw clearTimeout(e),t}}catch(t){if(d=t,o.IS_PROD,l>e){let t=this.calculateRetryDelay(e);yield this.sleep(t)}else throw t}throw d||Error("API request failed after all retries")}finally{this.abortControllers.delete(c)}}).call(this)}abort(){this.abortControllers.forEach(e=>{e.abort()}),this.abortControllers.clear()}isInProgress(){return this.abortControllers.size>0}buildRequestContext(e,t,u,i,n){let o,{apiMode:a,instructions:l}=this.jodit.o.aiAssistantPro,c={mode:a,conversationId:e,tools:this.toolRegistry.getAllTools(),selectionContexts:i,conversationOptions:n,instructions:l};if("full"===a)o=t;else if(u){let e=t.findIndex(e=>e.id===u);o=-1!==e?t.slice(e+1):t,c=(0,r._)((0,s._)({},c),{parentMessageId:u})}else o=t;return(0,r._)((0,s._)({},c),{messages:this.expandToolMessages(o,t.find(e=>e.id===u))})}expandToolMessages(e,t){let u=[];for(let t of e)u.push(t),this.expandToolResultsMessage(t,u);return t&&this.expandToolResultsMessage(t,u),u}expandToolResultsMessage(e,t){if(e.toolCalls&&e.toolCalls.length>0)for(let i of e.toolCalls){var u;let n=null!=(u=i.result)?u:{error:"result not found"};if(t.find(e=>e.id===`${i.id}-result`))continue;let s={id:`${i.id}-result`,role:"tool",content:n.error?`Error: ${n.error}`:JSON.stringify(n.result),timestamp:e.timestamp,toolResults:[{toolCallId:i.id,result:n}]};t.push(s)}}validateResponse(e){if("final"!==e.mode)return;let t=e.response;if(!t)throw Error("API returned empty response");if(!t.responseId)throw Error("API response missing responseId");if(void 0===t.content)throw Error("API response missing content");if(void 0===t.finished)throw Error("API response missing finished flag");if(t.toolCalls){if(!Array.isArray(t.toolCalls))throw Error("API response toolCalls must be an array");t.toolCalls.forEach((e,t)=>{if(!e.id)throw Error(`Tool call at index ${t} is missing id`);if(!e.name)throw Error(`Tool call at index ${t} is missing name`);if(!e.arguments||"object"!=typeof e.arguments)throw Error(`Tool call at index ${t} has invalid arguments`)})}}calculateRetryDelay(e){let{retryDelay:t}=this.jodit.o.aiAssistantPro;return t*Math.pow(2,e)+Math.random()*t}sleep(e){return new Promise(t=>setTimeout(t,e))}destruct(){this.abort()}constructor(e,t){(0,n._)(this,"jodit",void 0),(0,n._)(this,"toolRegistry",void 0),(0,n._)(this,"abortControllers",void 0),this.jodit=e,this.toolRegistry=t,this.abortControllers=new Set}}},47373:function(e,t,u){"use strict";function i(e,t,u="image/png"){let n=atob(e),s=n.length,r=new Uint8Array(s);for(let e=0;s>e;e++)r[e]=n.charCodeAt(e);return new File([new Blob([r],{type:u})],t,{type:u})}u.d(t,{base64ToFile:function(){return i}})},21020:function(e,t,u){"use strict";u.d(t,{PermissionManager:function(){return r}});var i=u(82749),n=u(56075),s=u(11886);class r{requiresPermission(e){let{autoApproveTools:t,alwaysDenyTools:u}=this.jodit.o.aiAssistantPro;if(u.includes(e))return!0;if(t.includes(e))return!1;let i=this.toolRegistry.getTool(e);return!i||i.requiresPermission}isAutoDenied(e){let{alwaysDenyTools:t}=this.jodit.o.aiAssistantPro;return t.includes(e)}isAutoApproved(e){let{autoApproveTools:t}=this.jodit.o.aiAssistantPro;return t.includes(e)}checkPermission(e,t){if(this.isAutoApproved(e))return{toolName:e,granted:!0,grantedAt:Date.now(),scope:"once"};if(this.isAutoDenied(e))return null;let u=this.permanentPermissions.get(e);return u&&u.granted?u:t.find(t=>t.toolName===e&&t.granted)||null}grantPermission(e,t){let u={toolName:e,granted:!0,grantedAt:Date.now(),scope:t};return"forever"===t&&(this.permanentPermissions.set(e,u),this.savePermanentPermissions()),u}denyPermission(e){return{toolName:e,granted:!1,grantedAt:Date.now(),scope:"once"}}filterToolCalls(e,t){let u=[],i=[],r=[];for(let o of e){if(this.isAutoDenied(o.name)){r.push((0,s._)((0,n._)({},o),{status:"denied"}));continue}if(this.isAutoApproved(o.name)){u.push((0,s._)((0,n._)({},o),{status:"approved"}));continue}let e=this.checkPermission(o.name,t);e&&e.granted?u.push((0,s._)((0,n._)({},o),{status:"approved"})):this.requiresPermission(o.name)?(this.jodit.e.fire("permissionRequested.ai-assistant-pro",o.name),i.push((0,s._)((0,n._)({},o),{status:"pending"}))):u.push((0,s._)((0,n._)({},o),{status:"approved"}))}return{approved:u,needsPermission:i,denied:r}}clearConversationPermissions(e){}loadPermanentPermissions(){try{let e=localStorage.getItem(this.PERMANENT_PERMISSIONS_KEY);e&&JSON.parse(e).forEach(e=>{"forever"===e.scope&&e.granted&&this.permanentPermissions.set(e.toolName,e)})}catch(e){}}savePermanentPermissions(){try{let e=Array.from(this.permanentPermissions.values());localStorage.setItem(this.PERMANENT_PERMISSIONS_KEY,JSON.stringify(e))}catch(e){}}clearPermanentPermissions(){this.permanentPermissions.clear(),localStorage.removeItem(this.PERMANENT_PERMISSIONS_KEY)}getPermanentPermissions(){return Array.from(this.permanentPermissions.values())}revokePermanentPermission(e){this.permanentPermissions.delete(e),this.savePermanentPermissions()}destruct(){this.permanentPermissions.clear()}constructor(e,t){(0,i._)(this,"jodit",void 0),(0,i._)(this,"toolRegistry",void 0),(0,i._)(this,"permanentPermissions",void 0),(0,i._)(this,"PERMANENT_PERMISSIONS_KEY",void 0),this.jodit=e,this.toolRegistry=t,this.permanentPermissions=new Map,this.PERMANENT_PERMISSIONS_KEY="jodit-permissions.ai-assistant-pro",this.loadPermanentPermissions()}}},46166:function(e,t,u){"use strict";u.d(t,{StateManager:function(){return r}});var i=u(82749),n=u(56075),s=u(11886);class r{createInitialState(){return{isOpen:!1,currentView:"welcome",currentConversation:null,conversations:[],isLoading:!1,error:null,pendingToolCalls:[],selectionContexts:[],abortController:null,editingMessageId:null,theme:this.jodit.o.aiAssistantPro.theme||"parent",displayMode:this.jodit.o.aiAssistantPro.displayMode,panelWidth:this.jodit.o.aiAssistantPro.panelWidth,panelHeight:this.jodit.o.aiAssistantPro.panelHeight,defaultModel:this.jodit.o.aiAssistantPro.defaultModel,defaultTemperature:this.jodit.o.aiAssistantPro.defaultTemperature}}open(){this.state.isOpen=!0,this.jodit.e.fire("open.ai-assistant-pro",this.state.currentConversation)}close(){this.state.isOpen=!1,this.jodit.e.fire("close.ai-assistant-pro")}isOpen(){return this.state.isOpen}setView(e){this.state.currentView=e,this.jodit.e.fire("viewChanged.ai-assistant-pro",e)}getView(){return this.state.currentView}setConversations(e){this.state.conversations=e}setSavedState(e){e.theme&&(this.state.theme=e.theme),e.displayMode&&(this.state.displayMode=e.displayMode),e.panelWidth&&(this.state.panelWidth=e.panelWidth),e.panelHeight&&(this.state.panelHeight=e.panelHeight),e.defaultModel&&(this.state.defaultModel=e.defaultModel),e.defaultTemperature&&(this.state.defaultTemperature=e.defaultTemperature)}getConversations(){return this.state.conversations}setCurrentConversation(e){if(this.state.currentConversation===e)throw Error("Conversation is already current");this.state.currentConversation=e||null,e&&(this.setView("conversation"),this.jodit.e.fire("conversationSwitched.ai-assistant-pro",e))}getCurrentConversation(){return this.state.currentConversation}removeConversation(e){let t=this.state.conversations.filter(t=>t.id!==e);this.setConversations(t)}setLoading(e){this.state.isLoading=e}isLoading(){return this.state.isLoading}setError(e){this.state.error=e,e&&this.jodit.e.fire("error.ai-assistant-pro",Error(e))}getError(){return this.state.error}clearError(){this.setError(null)}setPendingToolCalls(e){this.state.pendingToolCalls=e}getPendingToolCalls(){return this.state.pendingToolCalls}addPendingToolCall(e){let t=[...this.state.pendingToolCalls,e];this.setPendingToolCalls(t)}removePendingToolCall(e){let t=this.state.pendingToolCalls.filter(t=>t.id!==e);this.setPendingToolCalls(t)}updateToolCallStatus(e,t){let u=this.state.pendingToolCalls.map(u=>u.id===e?(0,s._)((0,n._)({},u),{status:t}):u);this.setPendingToolCalls(u)}setSelectionContexts(e){this.state.selectionContexts=e}getSelectionContexts(){return this.state.selectionContexts}addSelectionContext(e){let{maxContextRanges:t}=this.jodit.o.aiAssistantPro,u=[...this.state.selectionContexts,e];u.length>t&&(u=u.slice(-t)),this.setSelectionContexts(u),this.jodit.e.fire("contextAdded.ai-assistant-pro",e)}removeSelectionContext(e){let t=this.state.selectionContexts.filter((t,u)=>u!==e);this.setSelectionContexts(t),this.jodit.e.fire("contextRemoved.ai-assistant-pro",e)}clearSelectionContexts(){this.setSelectionContexts([])}setAbortController(e){this.state.abortController=e}getAbortController(){return this.state.abortController}setEditingMessageId(e){this.state.editingMessageId=e}getEditingMessageId(){return this.state.editingMessageId}isEditingMessage(){return null!=this.state.editingMessageId}clearEditingMessage(){this.setEditingMessageId(null)}reset(){this.state=this.createInitialState()}destruct(){this.state.abortController&&this.state.abortController.abort(),this.reset()}constructor(e){(0,i._)(this,"jodit",void 0),(0,i._)(this,"state",void 0),this.jodit=e,this.state=this.createInitialState()}}},62895:function(e,t,u){"use strict";u.d(t,{WebStorageConversationStorage:function(){return i.WebStorageConversationStorage},createStorageProvider:function(){return i.createStorageProvider}});var i=u(21064)},21064:function(e,t,u){"use strict";u.d(t,{WebStorageConversationStorage:function(){return o},createStorageProvider:function(){return a},generateConversationId:function(){return l},generateMessageId:function(){return c}});var i=u(77688),n=u(82749),s=u(56075),r=u(97333);class o{close(){return this.storage.close()}getConversationKey(e){return`conv:${e}`}getAllKeys(){return(0,i._)(function*(){let e=yield this.storage.get("__conversation_index__");return e&&Array.isArray(e)?e:[]}).call(this)}updateIndex(e){return(0,i._)(function*(){yield this.storage.set("__conversation_index__",e)}).call(this)}addToIndex(e){return(0,i._)(function*(){let t=yield this.getAllKeys();t.includes(e)||(t.push(e),yield this.updateIndex(t))}).call(this)}removeFromIndex(e){return(0,i._)(function*(){let t=(yield this.getAllKeys()).filter(t=>t!==e);yield this.updateIndex(t)}).call(this)}list(e){return(0,i._)(function*(){try{let i=yield this.getAllKeys(),n=[],s=null==e?void 0:e.toLowerCase().trim();for(let e of i){var t,u;let i=yield this.get(e);if(i){if(s){let e=null==(u=i.title)?void 0:u.toLowerCase().includes(s),t=!e&&i.messages.some(e=>e.content.toLowerCase().includes(s));if(!e&&!t)continue}n.push({id:i.id,title:null!=(t=i.title)?t:"",created:i.created,updated:i.updated,messageCount:i.messages.length})}}return n.sort((e,t)=>t.updated-e.updated),n}catch(e){return[]}}).call(this)}get(e){return(0,i._)(function*(){try{let t=this.getConversationKey(e);return(yield this.storage.get(t))||null}catch(e){return null}}).call(this)}save(e){return(0,i._)(function*(){try{if(0===e.messages.length)throw Error("Conversation must have at least one message.");let t=yield this.getAllKeys();t.length>=this.maxConversations&&!t.includes(e.id)&&(yield this.evictOldest());let u=this.getConversationKey(e.id);yield this.storage.set(u,e),yield this.addToIndex(e.id)}catch(t){if((null==t?void 0:t.name)==="QuotaExceededError"||(null==t?void 0:t.code)===22||(null==t?void 0:t.code)===1014){yield this.evictOldest();try{let t=this.getConversationKey(e.id);yield this.storage.set(t,e),yield this.addToIndex(e.id)}catch(e){throw Error("Storage quota exceeded. Please delete some conversations.")}}else throw Error(`Failed to save conversation: ${(null==t?void 0:t.message)||"Unknown error"}`)}}).call(this)}delete(e){return(0,i._)(function*(){try{let t=this.getConversationKey(e);yield this.storage.delete(t),yield this.removeFromIndex(e)}catch(e){}}).call(this)}clear(){return(0,i._)(function*(){try{for(let e of yield this.getAllKeys()){let t=this.getConversationKey(e);yield this.storage.delete(t)}yield this.updateIndex([])}catch(e){}}).call(this)}evictOldest(){return(0,i._)(function*(){try{let e=yield this.list();if(0===e.length)return;e.sort((e,t)=>e.updated-t.updated);let t=e[0];yield this.delete(t.id)}catch(e){}}).call(this)}getGlobalSettings(){return(0,i._)(function*(){try{return(yield this.storage.get("global-settings"))||null}catch(e){return null}}).call(this)}saveGlobalSettings(e){return(0,i._)(function*(){try{let t=yield this.getGlobalSettings(),u=(0,s._)({},t,e);yield this.storage.set("global-settings",u)}catch(e){throw Error("Failed to save global settings")}}).call(this)}constructor(e,t){(0,n._)(this,"storage",void 0),(0,n._)(this,"maxConversations",void 0),this.storage=e,this.maxConversations=t}}function a(e,t){return r.AsyncStorage.makeStorage(e,t)}function l(){return`conv_${Date.now()}_${Math.random().toString(36).substring(2,11)}`}function c(){return`msg_${Date.now()}_${Math.random().toString(36).substring(2,11)}`}},55487:function(e,t,u){"use strict";u.d(t,{ToolRegistry:function(){return o}});var i=u(77688),n=u(82749),s=u(56075),r=u(53835);class o{registerBuiltInTools(e){e.forEach(e=>{let t=r.BUILT_IN_TOOLS[e];t&&this.tools.set(e,t)})}registerCustomTools(e){e.forEach(e=>{this.validateToolDefinition(e),this.tools.set(e.name,e)})}validateToolDefinition(e){if(!e.name||"string"!=typeof e.name)throw Error("Tool must have a valid name");if(!e.description||"string"!=typeof e.description)throw Error(`Tool "${e.name}" must have a description`);if(!Array.isArray(e.parameters))throw Error(`Tool "${e.name}" must have a parameters array`);if("function"!=typeof e.execute)throw Error(`Tool "${e.name}" must have an execute function`);e.parameters.forEach(t=>{if(!t.name||"string"!=typeof t.name)throw Error(`Tool "${e.name}" has a parameter without a valid name`);if(!t.type)throw Error(`Tool "${e.name}" parameter "${t.name}" must have a type`);if("boolean"!=typeof t.required)throw Error(`Tool "${e.name}" parameter "${t.name}" must specify if it's required`)})}getAllTools(){return Array.from(this.tools.values())}getTool(e){return this.tools.get(e)}hasTool(e){return this.tools.has(e)}getToolNames(){return Array.from(this.tools.keys())}executeTool(e,t,u){return(0,i._)(function*(){let i=this.getTool(e);if(!i)throw Error(`Tool "${e}" not found`);let n=this.applyDefaults(i,t);this.validateArguments(i,n);try{return yield i.execute(this.jodit,n,u)}catch(e){if((null==e?void 0:e.name)==="AbortError"||u.aborted)throw Error("Tool execution was aborted");throw e}}).call(this)}validateArguments(e,t){let u=Object.keys(t);for(let t of e.parameters.filter(e=>e.required).map(e=>e.name))if(!u.includes(t))throw Error(`Tool "${e.name}" requires parameter "${t}"`);for(let[u,i]of Object.entries(t)){let t=e.parameters.find(e=>e.name===u);if(!t){this.jodit.o.aiAssistantPro.debug;continue}let n=Array.isArray(i)?"array":"object"==typeof i&&null!=i?"object":typeof i;if(t.type!==n&&!("number"===t.type&&"string"===n&&!isNaN(Number(i))))throw Error(`Tool "${e.name}" parameter "${u}" expects type "${t.type}" but got "${n}"`);if(t.enum&&t.enum.length>0&&!t.enum.includes(i))throw Error(`Tool "${e.name}" parameter "${u}" must be one of: ${t.enum.join(", ")}`)}}applyDefaults(e,t){let u=(0,s._)({},t);for(let t of e.parameters)void 0===u[t.name]&&void 0!==t.default&&(u[t.name]=t.default);return u}destruct(){this.tools.clear()}constructor(e){(0,n._)(this,"jodit",void 0),(0,n._)(this,"tools",void 0),this.jodit=e,this.tools=new Map,this.registerBuiltInTools(e.o.aiAssistantPro.enabledTools||[]),this.registerCustomTools(e.o.aiAssistantPro.customTools||[])}}},26612:function(e){e.exports={"AI Assistant":"AI Assistant","AI Assistant Pro":"AI Assistant Pro","Welcome to AI Assistant":"Welcome to AI Assistant","Start your first conversation":"Start your first conversation","Tip: Select text in editor to add context":"Tip: Select text in editor to add context","New Chat":"New Chat","Search conversations...":"Search conversations...","No conversations yet":"No conversations yet","Ask me anything...":"Ask me anything...","Ask a follow-up...":"Ask a follow-up...","Reply...":"Reply...","Type your message...":"Type your message...",Send:"Send",Cancel:"Cancel",Retry:"Retry",Insert:"Insert",Copy:"Copy",Edit:"Edit",Delete:"Delete",New:"New",Back:"Back","Permission Required":"Permission Required",Approve:"Approve",Deny:"Deny",Once:"Once","This conversation":"This conversation",Always:"Always","The AI wants to execute:":"The AI wants to execute:","This will modify your document content.":"This will modify your document content.","Executing...":"Executing...","Completed successfully":"Completed successfully",Failed:"Failed","Pending approval":"Pending approval","Denied by user":"Denied by user","Tool Result":"Tool Result","Tool Execution Error":"Tool Execution Error",Context:"Context",Contexts:"Contexts","Add to AI Context":"Add to AI Context",Remove:"Remove","Clear all":"Clear all","An error occurred":"An error occurred","Request failed":"Request failed","Connection error":"Connection error","AI Assistant is not configured":"AI Assistant is not configured","Thinking...":"Thinking...","Generating response...":"Generating response...",insertHTML:"Insert HTML",readDocument:"Read Document",readBlock:"Read Block",replaceInDocument:"Replace in Document",replaceInBlock:"Replace in Block",getSelection:"Get Selection","Just now":"Just now",Conversation:"Conversation","New Conversation":"New Conversation",Yesterday:"Yesterday","Delete conversation":"Delete conversation","Are you sure you want to delete this conversation?":"Are you sure you want to delete this conversation?","Failed to delete conversation":"Failed to delete conversation"}},63805:function(e,t,u){"use strict";u.r(t),u.d(t,{en:function(){return i},ru:function(){return n}});var i=u(26612),n=u(55790)},55790:function(e){e.exports={"AI Assistant":"AI Ассистент","AI Assistant Pro":"AI Ассистент Pro","Welcome to AI Assistant":"Добро пожаловать в AI Ассистент","Start your first conversation":"Начните первый диалог","Tip: Select text in editor to add context":"Подсказка: Выделите текст в редакторе для добавления контекста","New chat":"Новый чат","Search conversations...":"Поиск диалогов...","No conversations yet":"Пока нет диалогов","Ask me anything...":"Спросите меня о чем угодно...","Ask a follow-up...":"Задайте дополнительный вопрос...","Reply...":"Ответить...","Type your message...":"Введите ваше сообщение...",Send:"Отправить",Cancel:"Отмена",Retry:"Повторить",Insert:"Вставить",Copy:"Копировать",Edit:"Редактировать",Delete:"Удалить",New:"Новый",Back:"Назад","Permission Required":"Требуется разрешение",Approve:"Разрешить",Deny:"Отклонить",Once:"Один раз","This conversation":"Этот диалог",Always:"Всегда","The AI wants to execute:":"AI хочет выполнить:","This will modify your document content.":"Это изменит содержимое вашего документа.","Executing...":"Выполняется...","Completed successfully":"Успешно выполнено",Failed:"Ошибка","Pending approval":"Ожидает разрешения","Denied by user":"Отклонено пользователем","Tool Result":"Результат инструмента","Tool Execution Error":"Ошибка выполнения инструмента",Context:"Контекст",Contexts:"Контексты","Add to AI Context":"Добавить в контекст AI",Remove:"Удалить","Clear all":"Очистить все","An error occurred":"Произошла ошибка","Request failed":"Запрос не выполнен","Connection error":"Ошибка соединения","AI Assistant is not configured":"AI Ассистент не настроен","Thinking...":"Думаю...","Generating response...":"Генерирую ответ...",insertHTML:"Вставить HTML",readDocument:"Прочитать документ",readBlock:"Прочитать блок",replaceInDocument:"Заменить в документе",replaceInBlock:"Заменить в блоке",getSelection:"Получить выделение","Just now":"Только что",Conversation:"Диалог","New Conversation":"Новый диалог",Yesterday:"Вчера","Delete conversation":"Удалить диалог","Are you sure you want to delete this conversation?":"Вы уверены, что хотите удалить этот диалог?","Failed to delete conversation":"Не удалось удалить диалог",Settings:"Настройки","General Settings":"Общие настройки","Conversation Settings":"Настройки диалога","Display Mode":"Режим отображения","Panel Width":"Ширина панели",Theme:"Тема",Model:"Модель",Temperature:"Температура",Close:"Закрыть",Dialog:"Модальное окно",Left:"Левая панель",Right:"Правая панель",Top:"Верхняя панель",Bottom:"Нижняя панель",Inherit:"Наследовать от редактора",Light:"Светлая тема",Dark:"Тёмная тема","%dm ago":"%dм назад","%dh ago":"%dч назад"}},94454:function(e,t,u){"use strict";u.d(t,{getAIProviderOptions:function(){return i.getAIProviderOptions},registerAIProvider:function(){return i.registerAIProvider}}),u(82923);var i=u(58211)},82923:function(e,t,u){"use strict";var i=u(89929),n=u(77688),s=u(86127),r=u(56075),o=u(11886),a=u(25415),l=u(58211),c=u(54079);(0,l.registerAIProvider)("jodit-ai-adapter",e=>{var t;let u=e.url.replace(/\/+$/,""),l=null!=(t=e.provider)?t:"openai",h=!1!==e.stream;return{apiMode:"incremental",maxRetries:0,voiceInputEnabled:!0,voiceInputUrl:`${u.replace(/^http/,"ws")}/v1/ai/transcribe`,voiceInputApiKey:e.apiKey,textAutocompleteEnabled:!0,textAutocompleteApiRequest:(t,i,s)=>(0,n._)(function*(){var n;let r=new c.Ajax({url:`${u}/ai/autocomplete?query=${encodeURIComponent(t)}&key=${encodeURIComponent(e.apiKey)}`,method:"POST",contentType:"application/json",data:{provider:l,context:{maxSuggestions:i}}});s.addEventListener("abort",()=>r.abort(),{once:!0});let o=yield r.send(),a=yield o.json();return a.success&&(null==(n=a.result)?void 0:n.suggestions)?a.result.suggestions:[]})(),apiRequest:(t,d)=>(0,n._)(function*(){let n=new c.Ajax({url:`${u}/ai/request?key=${encodeURIComponent(e.apiKey)}`,method:"POST",contentType:"application/json",data:{provider:l,context:h?(0,o._)((0,r._)({},t),{metadata:(0,o._)((0,r._)({},t.metadata),{stream:!0})}):t}});if(d&&d.addEventListener("abort",()=>n.abort(),{once:!0}),!h){let e=yield n.send();return{mode:"final",response:(yield e.json()).result}}let F=n.stream();return{mode:"stream",stream:(0,a._)(function*(){var e,t=!1,u=!1;try{for(var n,r=(0,i._)(F);t=!(n=yield(0,s._)(r.next())).done;t=!1){let e=n.value;yield JSON.parse(e)}}catch(t){u=!0,e=t}finally{try{t&&null!=r.return&&(yield(0,s._)(r.return()))}finally{if(u)throw e}}})()}})()}})},58211:function(e,t,u){"use strict";u.d(t,{getAIProviderOptions:function(){return n},registerAIProvider:function(){return s}});let i=new Map;function n(e,t){let u=i.get(e);if(!u)throw Error(`AI provider "${e}" is not registered. Available providers: ${[...i.keys()].join(", ")}`);return u(t)}function s(e,t){i.set(e,t)}},65374:function(e,t,u){"use strict";u.r(t),u.d(t,["description",0,"Add HTML content to the beginning or end of the document","name",0,"addHTML","parameters",0,[{name:"html",type:"string",description:"HTML content to add",required:!0},{name:"position",type:"string",description:'Where to add: "start" adds at the beginning of the document, "end" appends to the end',required:!1,default:"end"}],"requiresPermission",0,!0])},686:function(e,t,u){"use strict";u.d(t,{execute:function(){return a}});var i=u(77688),n=u(6689),s=u(49459),r=u(85696),o=u(22732);function a(e,t,u){return(0,i._)(function*(){let i=(0,s.requireString)(t,"html",{allowEmpty:!0}),{position:a="end"}=t;if(!i.trim())return{success:!0,message:"Nothing to add: HTML is empty"};(0,n.throwIfAborted)(u);try{let t=e.createInside.fragment(),u=(0,r.createSanitizedContainer)(e,i);for(;u.firstChild;)t.appendChild(u.firstChild);return"start"===a?o.Dom.prepend(e.editor,t):o.Dom.append(e.editor,t),e.synchronizeValues(),{success:!0,message:`Added ${i.length} characters of HTML at the ${"start"===a?"beginning":"end"} of the document`}}catch(e){throw Error(`Failed to add HTML: ${(null==e?void 0:e.message)||"Unknown error"}`)}})()}},78907:function(e,t,u){"use strict";var i=u(56075),n=u(11886),s=u(65374),r=u(686);t.default=(0,n._)((0,i._)({},s),{execute:r.execute})},73943:function(e,t,u){"use strict";u.r(t),u.d(t,["description",0,"Apply or remove inline formatting to the current selection (bold, italic, underline, etc.) or to a specific block","name",0,"applyFormat","parameters",0,[{name:"element",type:"string",description:'HTML element to wrap selection (e.g., "strong", "em", "u", "span")',required:!1},{name:"attributes",type:"object",description:'Attributes to apply (e.g., {"className": "highlight"}, {"style": {"color": "red"}})',required:!1},{name:"remove",type:"boolean",description:"If true, remove the formatting instead of applying it",required:!1,default:!1},{name:"blockIndex",type:"number",description:"Zero-based index of the block to format (if not using current selection)",required:!1},{name:"selector",type:"string",description:"CSS selector to find the block to format (if not using current selection)",required:!1}],"requiresPermission",0,!0])},19127:function(e,t,u){"use strict";u.d(t,{execute:function(){return a}});var i=u(77688),n=u(56075),s=u(11886),r=u(6689),o=u(44526);function a(e,t,u){return(0,i._)(function*(){let{element:i,attributes:a,remove:l,blockIndex:c,selector:h}=t;if((0,r.throwIfAborted)(u),!i&&!a)throw Error('Either "element" or "attributes" must be provided');if(e.s.restore(),void 0!==c||h){let{element:t}=(0,o.resolveBlock)(e,{selector:h,index:c});e.s.select(t)}if(e.s.isCollapsed())throw Error("No selection found. Please select text to format");try{let t={};return i&&(t.element=i),a&&(t.attributes=a),l?e.s.commitStyle((0,s._)((0,n._)({},t),{mode:"remove"})):e.s.commitStyle(t),e.synchronizeValues(),{success:!0,message:l?"Formatting removed successfully":"Formatting applied successfully"}}catch(e){throw Error(`Failed to ${l?"remove":"apply"} formatting: ${e.message}`)}})()}},39296:function(e,t,u){"use strict";var i=u(56075),n=u(11886),s=u(73943),r=u(19127);t.default=(0,n._)((0,i._)({},s),{execute:r.execute})},53835:function(e,t,u){"use strict";u.d(t,{getToolNames:function(){return p}});var i=u(78907),n=u(39296),s=u(16745),r=u(78717),o=u(5618),a=u(90991),l=u(2020),c=u(12570),h=u(95323),d=u(97603);let F={readDocument:o.default,readBlocks:r.default,readSelection:a.default,writeDocument:d.default,replaceSelection:h.default,replaceBlock:l.default,replaceInDocument:c.default,insertHTML:s.default,addHTML:i.default,applyFormat:n.default};function p(){return Object.keys(F)}u.d(t,["BUILT_IN_TOOLS",0,F])},56732:function(e,t,u){"use strict";u.r(t),u.d(t,["description",0,"Insert or replace HTML content at the current cursor position in the editor","name",0,"insertHTML","parameters",0,[{name:"html",type:"string",description:"HTML content to insert",required:!0},{name:"replace",type:"boolean",description:"If true, replaces current selection. If false, inserts at cursor",required:!1,default:!1}],"requiresPermission",0,!0])},39592:function(e,t,u){"use strict";u.d(t,{execute:function(){return r}});var i=u(77688),n=u(6689),s=u(49459);function r(e,t,u){return(0,i._)(function*(){let i=(0,s.requireString)(t,"html",{allowEmpty:!0}),{replace:r}=t;if(!i.trim())return{success:!0,message:"Nothing to insert: HTML is empty"};(0,n.throwIfAborted)(u);try{return e.s.focus(),r&&!e.s.isCollapsed()&&e.s.remove(),e.s.insertHTML(i),e.synchronizeValues(),{success:!0,message:`Inserted ${i.length} characters of HTML`}}catch(e){throw Error(`Failed to insert HTML: ${(null==e?void 0:e.message)||"Unknown error"}`)}})()}},16745:function(e,t,u){"use strict";var i=u(56075),n=u(11886),s=u(56732),r=u(39592);t.default=(0,n._)((0,i._)({},s),{execute:r.execute})},75352:function(e,t,u){"use strict";u.r(t),u.d(t,["description",0,"Read blocks from the editor with optional filtering and pagination","name",0,"readBlocks","parameters",0,[{name:"offset",type:"number",description:"Number of blocks to skip from the beginning (default: 0)",required:!1,default:0},{name:"limit",type:"number",description:"Maximum number of blocks to return (default: all)",required:!1},{name:"query",type:"string",description:"Filter blocks by text content",required:!1}],"requiresPermission",0,!1])},91140:function(e,t,u){"use strict";u.d(t,{execute:function(){return r}});var i=u(77688),n=u(6689),s=u(22732);function r(e,t,u){return(0,i._)(function*(){let{offset:i,limit:r,query:o}=t;(0,n.throwIfAborted)(u);let a=[];Array.from(e.editor.children).forEach((e,t)=>{s.Dom.isElement(e)&&a.push({blockIndex:t,tagName:e.tagName.toLowerCase(),content:e.innerHTML,textContent:e.textContent||"",classList:Array.from(e.classList)})});let l=a;if(o&&"string"==typeof o){let e=o.toLowerCase();l=a.filter(t=>t.textContent.toLowerCase().includes(e)||t.tagName.includes(e)||t.content.toLowerCase().includes(e))}let c=Math.max(0,Math.min("number"==typeof i?i:0,l.length)),h=void 0!==r?Math.min(c+r,l.length):l.length;return{blocks:l.slice(c,h),total:a.length,offset:c,limit:void 0!==r?r:void 0}})()}},78717:function(e,t,u){"use strict";var i=u(56075),n=u(11886),s=u(75352),r=u(91140);t.default=(0,n._)((0,i._)({},s),{execute:r.execute})},93809:function(e,t,u){"use strict";u.r(t),u.d(t,["description",0,"Read the entire content of the editor document in HTML format","name",0,"readDocument","parameters",0,[{name:"start",type:"number",description:"Start character position (default: 0)",required:!1,default:0},{name:"end",type:"number",description:"End character position (default: length of document)",required:!1},{name:"aroundSelection",type:"boolean",description:"If true, return only the maximum block around the current selection",required:!1,default:!1}],"requiresPermission",0,!1])},28157:function(e,t,u){"use strict";u.d(t,{execute:function(){return r}});var i=u(77688),n=u(6689),s=u(22732);function r(e,t,u){return(0,i._)(function*(){let{start:i,end:r,aroundSelection:o}=t;(0,n.throwIfAborted)(u);let a=e.value,l=a.length;if(o&&!e.s.isCollapsed()){let t=e.s.range.commonAncestorContainer;for(;t&&t!==e.editor;){if(s.Dom.isElement(t)&&t.parentNode===e.editor){a=t.outerHTML;break}t=t.parentNode}return{html:a,length:l}}let c=void 0!==r?Math.min(r,l):l,h=Math.max(0,Math.min("number"==typeof i?i:0,l));return(h>0||l>c)&&(a=a.substring(h,c)),{html:a,length:l,start:h,end:c}})()}},5618:function(e,t,u){"use strict";var i=u(56075),n=u(11886),s=u(93809),r=u(28157);t.default=(0,n._)((0,i._)({},s),{execute:r.execute})},52826:function(e,t,u){"use strict";u.r(t),u.d(t,["description",0,"Get information about the current selection including HTML content and optional context","name",0,"readSelection","parameters",0,[{name:"contextCharsBefore",type:"number",description:"Number of characters to include before the selection",required:!1,default:0},{name:"contextCharsAfter",type:"number",description:"Number of characters to include after the selection",required:!1,default:0}],"requiresPermission",0,!1])},85130:function(e,t,u){"use strict";u.d(t,{execute:function(){return s}});var i=u(77688),n=u(6689);function s(e,t,u){return(0,i._)(function*(){let{contextCharsBefore:i,contextCharsAfter:s}=t;if((0,n.throwIfAborted)(u),e.s.restore(),e.s.isCollapsed())return{hasSelection:!1};let r=e.s.html,o=e.s.range,a=o.toString(),l={hasSelection:!0,html:r,text:a,startContainer:o.startContainer.nodeName,endContainer:o.endContainer.nodeName};if(i>0||s>0){let t=e.editor.textContent||"",u=t.substring(0,t.indexOf(a)),n=t.substring(t.indexOf(a)+a.length);i>0&&(l.contextBefore=u.slice(-i)),s>0&&(l.contextAfter=n.slice(0,s))}return l})()}},90991:function(e,t,u){"use strict";var i=u(56075),n=u(11886),s=u(52826),r=u(85130);t.default=(0,n._)((0,i._)({},s),{execute:r.execute})},96675:function(e,t,u){"use strict";u.r(t),u.d(t,["description",0,"Replace a specific block in the document by its index or CSS selector with new HTML content","name",0,"replaceBlock","parameters",0,[{name:"index",type:"number",description:"Zero-based index of the block to replace (use either index or selector, not both)",required:!1},{name:"selector",type:"string",description:'CSS selector to find the block to replace (e.g., "h1", ".my-class", "#my-id"). Use either selector or index, not both',required:!1},{name:"html",type:"string",description:"HTML content for the new block",required:!0}],"requiresPermission",0,!0])},3091:function(e,t,u){"use strict";u.d(t,{execute:function(){return l}});var i=u(77688),n=u(6689),s=u(49459),r=u(44526),o=u(85696),a=u(22732);function l(e,t,u){return(0,i._)(function*(){let{index:i,selector:l}=t,c=(0,s.requireString)(t,"html");if((0,n.throwIfAborted)(u),void 0===i&&!l||void 0!==i&&l)throw Error("Either index or selector must be provided, but not both");let{element:h,identifier:d}=(0,r.resolveBlock)(e,{selector:l,index:i,requireExactlyOne:!0});try{var F;let t=(0,o.createSanitizedContainer)(e,c).firstChild;if(!t||!a.Dom.isElement(t))throw Error("Invalid HTML: must contain at least one element");return null==(F=h.parentNode)||F.replaceChild(t,h),e.synchronizeValues(),{success:!0,message:`Block ${d} replaced successfully`}}catch(e){throw Error(`Failed to replace block ${d}: ${e.message}`)}})()}},2020:function(e,t,u){"use strict";var i=u(56075),n=u(11886),s=u(96675),r=u(3091);t.default=(0,n._)((0,i._)({},s),{execute:r.execute})},62553:function(e,t,u){"use strict";u.r(t),u.d(t,["description",0,"Find and replace text or HTML patterns throughout the entire document","name",0,"replaceInDocument","parameters",0,[{name:"search",type:"string",description:"Text or pattern to search for",required:!0},{name:"replace",type:"string",description:"Replacement text or HTML",required:!0},{name:"useRegex",type:"boolean",description:"If true, treats search as a regular expression",required:!1,default:!1},{name:"useSelector",type:"string",description:"CSS selector to narrow down the search scope to specific elements",required:!1}],"requiresPermission",0,!0])},56293:function(e,t,u){"use strict";u.d(t,{execute:function(){return o}});var i=u(77688),n=u(6689),s=u(49459),r=u(85696);function o(e,t,u){return(0,i._)(function*(){let i=(0,s.requireString)(t,"search"),o=(0,s.requireString)(t,"replace",{allowEmpty:!0}),{useRegex:a,useSelector:l}=t;(0,n.throwIfAborted)(u);try{let t;e.s.focus(),e.s.save();let s=0;if(l){let c=function(e,t,u,i,s,o){let a=e.editor.querySelectorAll(s);if(0===a.length)return{replacements:0,message:`No elements found matching selector "${s}"`};let l=0;return a.forEach(s=>{(0,n.throwIfAborted)(o);let a=s.innerHTML,c=a;if(i)try{let e=RegExp(t,"g");a=a.replace(e,()=>(l++,u))}catch(e){throw Error(`Invalid regex pattern: ${(null==e?void 0:e.message)||"Unknown error"}`)}else{let e=t.length,i=0;for(;-1!==(i=a.indexOf(t,i));)(0,n.throwIfAborted)(o),a=a.substring(0,i)+u+a.substring(i+e),i+=u.length,l++}a!==c&&(s.innerHTML=a,(0,r.sanitizeElement)(e,s))}),l>0&&(e.synchronizeValues(),e.s.restore()),{replacements:l}}(e,i,o,a,l,u);s=c.replacements,t=c.message}else s=function(e,t,u,i,s,r){let o=0,a=t;if(s)try{let e=RegExp(u,"g");a=a.replace(e,()=>(o++,i))}catch(e){throw Error(`Invalid regex pattern: ${(null==e?void 0:e.message)||"Unknown error"}`)}else{let e=u.length,t=0;for(;-1!==(t=a.indexOf(u,t));)(0,n.throwIfAborted)(r),a=a.substring(0,t)+i+a.substring(t+e),t+=i.length,o++}return o>0&&(e.value=a,e.s.restore(),e.synchronizeValues()),o}(e,e.value,i,o,a,u);return{replacements:s,message:t||(s>0?`Replaced ${s} occurrence(s)`:"No matches found")}}catch(t){throw e.s.restore(),Error(`Failed to replace in document: ${(null==t?void 0:t.message)||"Unknown error"}`)}})()}},12570:function(e,t,u){"use strict";var i=u(56075),n=u(11886),s=u(62553),r=u(56293);t.default=(0,n._)((0,i._)({},s),{execute:r.execute})},70750:function(e,t,u){"use strict";u.r(t),u.d(t,["description",0,"Replace the current selection with new HTML content","name",0,"replaceSelection","parameters",0,[{name:"html",type:"string",description:"HTML content to insert in place of the selection",required:!0},{name:"collapseToEnd",type:"boolean",description:"Move cursor to the end of the inserted content",required:!1,default:!0}],"requiresPermission",0,!0])},36142:function(e,t,u){"use strict";u.d(t,{execute:function(){return r}});var i=u(77688),n=u(6689),s=u(49459);function r(e,t,u){return(0,i._)(function*(){let i=(0,s.requireString)(t,"html"),{collapseToEnd:r}=t;(0,n.throwIfAborted)(u);try{if(e.s.restore(),e.s.insertHTML(i),r){let t=e.s.range;t.collapse(!1),e.s.selectRange(t)}return e.e.fire("change"),{success:!0,message:"Selection replaced successfully"}}catch(e){throw Error(`Failed to replace selection: ${e.message}`)}})()}},95323:function(e,t,u){"use strict";var i=u(56075),n=u(11886),s=u(70750),r=u(36142);t.default=(0,n._)((0,i._)({},s),{execute:r.execute})},90022:function(e,t,u){"use strict";u.r(t),u.d(t,["description",0,"Write (replace) the entire document content with new HTML","name",0,"writeDocument","parameters",0,[{name:"html",type:"string",description:"HTML content to set as the document",required:!0}],"requiresPermission",0,!0])},79766:function(e,t,u){"use strict";u.d(t,{execute:function(){return r}});var i=u(77688),n=u(6689),s=u(49459);function r(e,t,u){return(0,i._)(function*(){let i=(0,s.requireString)(t,"html",{allowEmpty:!0});(0,n.throwIfAborted)(u);try{return e.s.focus(),e.value=i,e.synchronizeValues(),{success:!0,message:`Document content was replaced with provided HTML(${i.length} characters)`}}catch(e){throw Error(`Failed to replace HTML: ${(null==e?void 0:e.message)||"Unknown error"}`)}})()}},97603:function(e,t,u){"use strict";var i=u(56075),n=u(11886),s=u(90022),r=u(79766);t.default=(0,n._)((0,i._)({},s),{execute:r.execute})},80453:function(e,t,u){"use strict";u.d(t,{UIConversationListItem:function(){return l}});var i=u(82749),n=u(31635),s=u(65478),r=u(67510),o=u(62843),a=u(80870);class l extends r.UIElement{className(){return"UIConversationListItem"}render(){return'<div class="jodit-ui-conversation-list__item"></div>'}setActive(e){this.isActive=e,this.updateContent()}updateContent(){let e=this.container;e.innerHTML="",e.setAttribute("data-id",this.conversation.id),this.isActive?e.classList.add("jodit-ui-conversation-list__item_active"):e.classList.remove("jodit-ui-conversation-list__item_active");let t=this.j.c.div("jodit-ui-conversation-list__item-avatar");t.textContent="AI",e.appendChild(t);let u=this.j.c.div("jodit-ui-conversation-list__item-wrapper"),i=this.j.c.div("jodit-ui-conversation-list__item-content"),n=this.j.c.div("jodit-ui-conversation-list__item-title");if(n.textContent=this.conversation.title,this.titleElement=n,i.appendChild(n),this.opts.showTimestamps){let e=this.j.c.div("jodit-ui-conversation-list__item-meta");e.textContent=this.opts.formatTimestamp(this.conversation.updated,this.j.i18n.bind(this.j)),i.appendChild(e)}if(u.appendChild(i),this.conversation.messageCount>0){let e=this.j.c.div("jodit-ui-conversation-list__item-badge");e.textContent=String(this.conversation.messageCount),u.appendChild(e)}e.appendChild(u),this.actionsButton||(this.actionsButton=new o.UIButton(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(e=>{e.stopPropagation(),this.showActionsMenu(e)})),e.appendChild(this.actionsButton.container)}onClick(){this.isRenaming||this.j.e.fire("selectConversation.ai-assistant-pro",this.conversation.id)}showActionsMenu(e){if(!this.contextMenu||!this.actionsButton)return;let t=this.actionsButton.container.getBoundingClientRect();this.contextMenu.show(t.left,t.bottom,[{title:"Rename",icon:"pencil",exec:()=>{this.startInlineRename()}},{title:"Delete",icon:"bin",exec:()=>{this.onDelete()}}]),e.stopPropagation()}startInlineRename(){if(this.isRenaming||!this.titleElement)return;this.isRenaming=!0;let e=this.titleElement,t=this.conversation.title,u=this.j.c.element("input");u.type="text",u.value=t,u.className="jodit-ui-conversation-list__item-title-input",e.textContent="",e.appendChild(u),u.focus(),u.select();let i=()=>{if(!this.isRenaming)return;let i=u.value.trim();this.isRenaming=!1,i&&i!==t?(e.textContent=i,this.j.e.fire("renameConversation.ai-assistant-pro",this.conversation.id,i)):e.textContent=t};this.j.e.on(u,"blur",i),this.j.e.on(u,"keydown",i=>{"Enter"===i.key&&(i.preventDefault(),u.blur()),"Escape"===i.key&&(this.isRenaming=!1,e.textContent=t)}),this.j.e.on(u,"click",e=>{e.stopPropagation()})}onDelete(){this.j.e.fire("deleteConversation.ai-assistant-pro",this.conversation.id)}destruct(){var e,t;null==(e=this.actionsButton)||e.destruct(),null==(t=this.contextMenu)||t.destruct(),super.destruct()}constructor(e,t,u=!1,n){super(e),(0,i._)(this,"opts",void 0),(0,i._)(this,"conversation",void 0),(0,i._)(this,"isActive",void 0),(0,i._)(this,"actionsButton",void 0),(0,i._)(this,"contextMenu",void 0),(0,i._)(this,"titleElement",void 0),(0,i._)(this,"isRenaming",void 0),this.opts=n,this.actionsButton=null,this.contextMenu=null,this.titleElement=null,this.isRenaming=!1,this.conversation=t,this.isActive=u,this.contextMenu=new a.ContextMenu(this.j),this.updateContent()}}(0,n.__decorate)([(0,s.watch)("container:click")],l.prototype,"onClick",null),(0,n.__decorate)([s.autobind],l.prototype,"showActionsMenu",null),(0,n.__decorate)([s.autobind],l.prototype,"startInlineRename",null),(0,n.__decorate)([s.autobind],l.prototype,"onDelete",null),l=(0,n.__decorate)([s.component],l)},68365:function(e,t,u){"use strict";u.d(t,{UIConversationList:function(){return c}});var i=u(82749),n=u(31635),s=u(31356),r=u(80453),o=u(65478),a=u(80256),l=u(62405);class c extends l.UIGroup{className(){return"UIConversationList"}render(){return`<div class="&__container">
|
|
11
11
|
<div class="&__header"></div>
|
|
12
12
|
<div class="&__search">
|
|
13
13
|
<div class="&__search-loader"></div>
|