UNPKG

jodit-pro

Version:

PRO Version of Jodit Editor

13 lines (12 loc) 4.89 kB
var v=Object.defineProperty;var h=(d,t)=>v(d,"name",{value:t,configurable:!0});var r,l=function(d,t,e,s){var n=arguments.length,i=n<3?t:s===null?s=Object.getOwnPropertyDescriptor(t,e):s,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(d,t,e,s);else for(var c=d.length-1;c>=0;c--)(a=d[c])&&(i=(n<3?a(i):n>3?a(t,e,i):a(t,e))||i);return n>3&&i&&Object.defineProperty(t,e,i),i};import{autobind as p,component as f,hook as x,watch as m}from"jodit/esm/core/decorators/index.js";import{assert as g}from"jodit/esm/core/helpers/utils/assert.js";import{UIElement as _}from"jodit/esm/core/ui/index.js";import{UIButton as u}from"jodit/esm/core/ui/button/index.js";import{UITextArea as B}from"jodit/esm/core/ui/form/inputs/area/area.js";let o=(r=class extends _{className(){return"UIInputArea"}constructor(t,e){super(t),this.options=e,this.textarea=null,this.sendButton=null,this.stopButton=null,this.contexts=[],this.isLoading=!1}setParentView(t){var e,s,n;return(e=this.textarea)===null||e===void 0||e.setParentView(t),(s=this.sendButton)===null||s===void 0||s.setParentView(t),(n=this.stopButton)===null||n===void 0||n.setParentView(t),super.setParentView(t)}render(){return`<div class="&__container"> <div class="&__context-badges"></div> <div class="&__loading-indicator"> <span class="&__loading-dot"></span> <span class="&__loading-dot"></span> <span class="&__loading-dot"></span> </div> <div class="&__input-row"> <div class="&__textarea-wrapper"></div> <div class="&__buttons"></div> </div> </div>`}onInputRowClick(){var t;this.textarea!==this.j.od.activeElement&&((t=this.textarea)===null||t===void 0||t.focus())}afterRender(){this.contextBadges=this.getElm("context-badges"),this.createControls(),this.attachHandlers()}createControls(){const t=this.getElm("textarea-wrapper"),e=this.getElm("buttons");this.textarea=new B(this.j,{name:"message",placeholder:this.options.placeholderText,resizable:!1}),t.appendChild(this.textarea.container),this.sendButton=new u(this.j,{name:"send-message",icon:{name:"send"},variant:"primary",size:"middle"}),this.stopButton=new u(this.j,{name:"abort-message",icon:{name:"cancel"},variant:"default",size:"middle"}),this.stopButton.container.style.display="none",e.appendChild(this.sendButton.container),e.appendChild(this.stopButton.container)}attachHandlers(){this.j.e.on(this.sendButton,"click",this.onSend),this.j.e.on(this.stopButton,"click",this.onStop),this.j.e.on(this.textarea.nativeInput,"keydown",t=>{const{sendShortcut:e,sendOnEnter:s}=this.options;if(e==="Ctrl+Enter"&&t.ctrlKey&&t.key==="Enter"){t.preventDefault(),this.onSend();return}if(t.key==="Escape"){this.j.e.fire("cancelEditMessage.ai-assistant-pro");return}t.key==="Enter"&&(s?t.shiftKey||(t.preventDefault(),this.onSend()):t.shiftKey&&(t.preventDefault(),this.onSend()))})}onSend(){var t;const e=(t=this.textarea)===null||t===void 0?void 0:t.value.trim();!e||this.isLoading||(this.j.e.fire("sendMessage.ai-assistant-pro",e),this.textarea&&(this.textarea.value="",this.textarea.nativeInput.focus()))}onStop(){this.j.e.fire("abortRequest.ai-assistant-pro")}setContexts(t){this.contexts=t,this.updateContextBadges()}updateContextBadges(){if(this.contextBadges.innerHTML="",this.contexts.length===0){this.contextBadges.style.display="none";return}this.contextBadges.style.display="",this.contexts.forEach((t,e)=>{const s=this.createContextBadge(t,e);this.contextBadges.appendChild(s)})}createContextBadge(t,e){const s=this.j.c.div(this.getFullElName("context-badge")),n=this.j.c.span(),i=t.html.replace(/<[^>]*>/g,"").substring(0,20);n.textContent=t.blockIndex!==void 0?`Block ${t.blockIndex}: ${i}...`:`${i}...`;const a=this.j.c.span(this.getFullElName("context-remove"));return a.textContent="\xD7",a.setAttribute("data-index",String(e)),this.j.e.on(a,"click",()=>{this.j.e.fire("removeContext.ai-assistant-pro",e)}),s.appendChild(n),s.appendChild(a),s}setLoading(t){this.isLoading=t;const{sendButton:e,stopButton:s,textarea:n}=this;g(e&&s&&n,"Buttons must be initialized"),n.setMod("disabled",t),e.setMod("disabled",t),this.setMod("loading",t),t?(e.container.style.display="none",s.container.style.display=""):(e.container.style.display="",s.container.style.display="none")}focus(){var t;(t=this.textarea)===null||t===void 0||t.nativeInput.focus()}setValue(t){this.textarea&&(this.textarea.value=t)}getValue(){var t;return((t=this.textarea)===null||t===void 0?void 0:t.value.trim())||""}destruct(){var t,e,s;(t=this.textarea)===null||t===void 0||t.destruct(),(e=this.sendButton)===null||e===void 0||e.destruct(),(s=this.stopButton)===null||s===void 0||s.destruct(),super.destruct()}},h(r,"UIInputArea"),r);l([m("input-row:click")],o.prototype,"onInputRowClick",null),l([x("ready")],o.prototype,"afterRender",null),l([p],o.prototype,"onSend",null),l([p],o.prototype,"onStop",null),o=l([f],o);export{o as UIInputArea};