UNPKG

primereact

Version:

PrimeReact is an open source UI library for React featuring a rich set of 80+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and professional support. In addition, it integrates with Prime

2 lines (1 loc) 3.72 kB
import*as e from"react";import{TerminalService as t}from"primereact/terminalservice";import{ObjectUtils as r,classNames as n,DomHandler as a}from"primereact/utils";function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},o.apply(this,arguments)}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function i(e){if(Array.isArray(e))return l(e)}function u(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function c(e,t){if(e){if("string"==typeof e)return l(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?l(e,t):void 0}}function s(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function m(e){return i(e)||u(e)||c(e)||s()}function f(e){if(Array.isArray(e))return e}function p(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,o=[],l=!0,i=!1;try{for(r=r.call(e);!(l=(n=r.next()).done)&&(o.push(n.value),!t||o.length!==t);l=!0);}catch(e){i=!0,a=e}finally{try{l||null==r.return||r.return()}finally{if(i)throw a}}return o}}function y(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function d(e,t){return f(e)||p(e,t)||c(e,t)||y()}var v=e.memo(e.forwardRef((function(l,i){var u=d(e.useState(""),2),c=u[0],s=u[1],f=d(e.useState([]),2),p=f[0],y=f[1],h=d(e.useState(0),2),b=h[0],g=h[1],E=d(e.useState(""),2),w=E[0],S=E[1],N=e.useRef(null),A=e.useRef(null),j=e.useRef(!1),x=function(e){s(e.target.value)},I=function(e){switch(e.which||e.keyCode){case 38:if(p&&p.length){var t=b-1<0?p.length-1:b-1,r=p[t];g(t),s(r.text)}break;case 13:if(c){var n=m(p);n.push({text:c}),g((function(e){return e+1})),s(""),y(n),S(c),j.current=!0}}};e.useImperativeHandle(i,(function(){return{props:l,getElement:function(){return N.current}}})),e.useEffect((function(){var e=function(e){if(p&&p.length>0){var t=m(p);t[t.length-1].response=e,y(t)}},r=function(){y([]),g(0)};return t.on("response",e),t.on("clear",r),function(){t.off("response",e),t.off("clear",r)}}),[p]),e.useEffect((function(){j.current&&(t.emit("command",w),j.current=!1),N.current.scrollTop=N.current.scrollHeight}));var O=function(t,r){var n=t.text,a=t.response;return e.createElement("div",{key:n+"_"+r},e.createElement("span",{className:"p-terminal-prompt"},l.prompt," "),e.createElement("span",{className:"p-terminal-command"},n),e.createElement("div",{className:"p-terminal-response"},a))},T=r.findDiffKeys(l,v.defaultProps),C=n("p-terminal p-component",l.className),k=l.welcomeMessage?e.createElement("div",null,l.welcomeMessage):null,M=function(){var t=p.map(O);return e.createElement("div",{className:"p-terminal-content"},t)}(),P=e.createElement("div",{className:"p-terminal-prompt-container"},e.createElement("span",{className:"p-terminal-prompt"},l.prompt," "),e.createElement("input",{ref:A,type:"text",value:c,className:"p-terminal-input",autoComplete:"off",onChange:x,onKeyDown:I}));return e.createElement("div",o({ref:N,id:l.id,className:C,style:l.style},T,{onClick:function(){a.focus(A.current)}}),k,M,P)})));v.displayName="Terminal",v.defaultProps={__TYPE:"Terminal",id:null,style:null,className:null,welcomeMessage:null,prompt:null};export{v as Terminal};