/*! * Jodit Editor (https://xdsoft.net/jodit/) * Released under MIT see LICENSE.txt in the project root for license information. * Copyright (c) 2013-2025 Valeriy Chupurnov. All rights reserved. https://xdsoft.net */ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; import { component } from "../../../core/decorators/component/component.js"; import { watch } from "../../../core/decorators/watch/watch.js"; import { Dom } from "../../../core/dom/dom.js"; import { isString } from "../../../core/helpers/checker/is-string.js"; import { Button, UIBlock, UIForm, UITextArea } from "../../../core/ui/index.js"; import { UIElement } from "../../../core/ui/element.js"; let UiAiAssistant = class UiAiAssistant extends UIElement { className() { return 'UIAiAssistant'; } constructor(jodit, { onInsert, onInsertAfter }) { super(jodit); this.__aiResult = ''; this.__error = this.getElm('error'); this.__body = this.getElm('body'); this.__buttons = this.getElm('buttons'); this.__results = this.getElm('results'); this.__spinner = this.getElm('spinner'); this.__insertButton = Button(jodit, '', 'Insert', 'primary').onAction(() => onInsert(this.__aiResult)); this.__insertAfterButton = Button(jodit, '', 'Insert After', 'initial').onAction(() => onInsertAfter(this.__aiResult)); const onSubmit = () => { if (this.__formAiAssistant.validate()) { this.__formAiAssistant.submit(); this.__toggleInsertButton(true); this.__toggleSubmitButton(true); } }; this.__submitButton = Button(jodit, 'ai-assistant', '').onAction(onSubmit); this.__tryAgainButton = Button(jodit, 'update', '', 'initial').onAction(onSubmit); this.promptInput = new UITextArea(jodit, { name: 'prompt', required: true, label: 'Prompt', placeholder: 'Ask AI to improve generated text', className: this.getFullElName('prompt-row-input') }); const buttonsBLock = new UIBlock(jodit, [ this.__insertButton, this.__insertAfterButton, this.__tryAgainButton ], { className: this.getFullElName('prompt-row') }); this.__formAiAssistant = new UIForm(jodit, [ new UIBlock(jodit, [this.promptInput, this.__submitButton], { className: this.getFullElName('prompt-row') }) ]).onSubmit((data) => { this.__error.textContent = ''; this.setMod('loading', true); jodit.e.fire('invokeAiAssistant', data.prompt); const hideMod = this.getFullElName('', 'hide', 'true'); this.__results.classList.remove(hideMod); this.__buttons.classList.remove(hideMod); Dom.detach(this.__results); this.__results.appendChild(this.__spinner); this.__insertButton.focus(); }); this.__buttons.appendChild(buttonsBLock.container); this.__body.appendChild(this.__formAiAssistant.container); this.onChangePromptValue(); } render() { return `