UNPKG

primereact

Version:

PrimeReact is an open source UI library for React featuring a rich set of 90+ 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) 5.28 kB
this.primereact=this.primereact||{},this.primereact.terminal=function(e,t,n,r,a,o,i){"use strict";function l(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var c=l(t);function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function u(e){if(Array.isArray(e))return s(e)}function m(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function p(e,t){if(e){if("string"==typeof e)return s(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}function f(){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 d(e){return u(e)||m(e)||p(e)||f()}function y(e){if(Array.isArray(e))return e}function v(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,l=[],c=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return l}}function h(){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 b(e,t){return y(e)||v(e,t)||p(e,t)||h()}var g=r.ComponentBase.extend({defaultProps:{__TYPE:"Terminal",id:null,style:null,className:null,welcomeMessage:null,prompt:null,children:void 0},css:{classes:{root:"p-terminal p-component",content:"p-terminal-content",container:"p-terminal-prompt-container",command:"p-terminal-command",commandText:"p-terminal-input",prompt:"p-terminal-prompt",response:"p-terminal-response"},styles:"\n@layer primereact {\n .p-terminal {\n height: 18rem;\n overflow: auto;\n }\n \n .p-terminal-prompt-container {\n display: flex;\n align-items: center;\n }\n \n .p-terminal-input {\n flex: 1 1 auto;\n border: 0 none;\n background-color: transparent;\n color: inherit;\n padding: 0;\n outline: 0 none;\n }\n \n .p-terminal-input::-ms-clear {\n display: none;\n } \n}\n"}}),E=c.memo(c.forwardRef((function(e,t){var l=a.useMergeProps(),s=c.useContext(n.PrimeReactContext),u=g.getProps(e,s),m=b(c.useState(""),2),p=m[0],f=m[1],y=b(c.useState([]),2),v=y[0],h=y[1],E=b(c.useState(0),2),S=E[0],w=E[1],T=b(c.useState(""),2),x=T[0],j=T[1],N=c.useRef(null),O=c.useRef(null),A=c.useRef(!1),M=g.setMetaData({props:u,state:{commandText:p,commands:v}}),P=M.ptm,C=M.cx;r.useHandleStyle(g.css.styles,M.isUnstyled,{name:"terminal"});var _=l({className:C("prompt")},P("prompt")),k=function(e){f(e.target.value)},I=function(e){switch(e.code){case"ArrowUp":if(v&&v.length){var t=S-1<0?v.length-1:S-1,n=v[t];w(t),f(n.text)}break;case"Enter":case"NumpadEnter":if(p){var r=d(v);r.push({text:p}),w((function(e){return e+1})),f(""),h(r),j(p),A.current=!0}}};c.useImperativeHandle(t,(function(){return{props:u,focus:function(){return i.DomHandler.focus(O.current)},getElement:function(){return N.current}}})),c.useEffect((function(){var e=function(e){if(v&&v.length>0){var t=d(v);t[t.length-1].response=e,h(t)}},t=function(){h([]),w(0)};return o.TerminalService.on("response",e),o.TerminalService.on("clear",t),function(){o.TerminalService.off("response",e),o.TerminalService.off("clear",t)}}),[v]),c.useEffect((function(){A.current&&(o.TerminalService.emit("command",x),A.current=!1),N.current.scrollTop=N.current.scrollHeight}));var R,D,H=function(e,t){var n=e.text,r=e.response,a=l({key:n+"_"+t},P("commands")),o=l({className:C("command")},P("command")),i=l({className:C("response"),"aria-live":"polite"},P("response"));return c.createElement("div",a,c.createElement("span",_,u.prompt," "),c.createElement("span",o,n),c.createElement("div",i,r))},U=function(){if(u.welcomeMessage){var e=l(P("welcomeMessage"));return c.createElement("div",e,u.welcomeMessage)}return null}(),z=function(){var e=v.map(H),t=l({className:C("content")},P("content"));return c.createElement("div",t,e)}(),B=(R=l({className:C("container")},P("container")),D=l({ref:O,value:p,type:"text",className:C("commandText"),autoComplete:"off",onChange:function(e){return k(e)},onKeyDown:I},P("commandText")),c.createElement("div",R,c.createElement("span",_,u.prompt," "),c.createElement("input",D))),K=l({id:u.id,ref:N,className:i.classNames(u.className,C("root")),style:u.style,onClick:function(){i.DomHandler.focus(O.current)}},g.getOtherProps(u),P("root"));return c.createElement("div",K,U,z,B)})));return E.displayName="Terminal",e.Terminal=E,Object.defineProperty(e,"__esModule",{value:!0}),e}({},React,primereact.api,primereact.componentbase,primereact.hooks,primereact.terminalservice,primereact.utils);