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.26 kB
this.primereact=this.primereact||{},this.primereact.terminal=function(e,n,t,r,a,o,i){"use strict";function l(e){if(e&&e.__esModule)return e;var n=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,r.get?r:{enumerable:!0,get:function(){return e[t]}})}})),n.default=e,Object.freeze(n)}var c=l(n);function s(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=Array(n);t<n;t++)r[t]=e[t];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,n){if(e){if("string"==typeof e)return s(e,n);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?s(e,n):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 v(e){if(Array.isArray(e))return e}function y(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var r,a,o,i,l=[],c=!0,s=!1;try{if(o=(t=t.call(e)).next,0===n){if(Object(t)!==t)return;c=!1}else for(;!(c=(r=o.call(t)).done)&&(l.push(r.value),l.length!==n);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=t.return&&(i=t.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,n){return v(e)||y(e,n)||p(e,n)||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,n){var l=a.useMergeProps(),s=c.useContext(t.PrimeReactContext),u=g.getProps(e,s),m=b(c.useState(""),2),p=m[0],f=m[1],v=b(c.useState([]),2),y=v[0],h=v[1],E=b(c.useState(0),2),S=E[0],T=E[1],w=b(c.useState(""),2),x=w[0],N=w[1],j=c.useRef(null),O=c.useRef(null),A=c.useRef(!1),M=g.setMetaData({props:u,state:{commandText:p,commands:y}}),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(y&&y.length){var n=S-1<0?y.length-1:S-1,t=y[n];T(n),f(t.text)}break;case"Enter":case"NumpadEnter":if(p){var r=d(y);r.push({text:p}),T((function(e){return e+1})),f(""),h(r),N(p),A.current=!0}}};c.useImperativeHandle(n,(function(){return{props:u,focus:function(){return i.DomHandler.focus(O.current)},getElement:function(){return j.current}}})),c.useEffect((function(){var e=function(e){if(y&&y.length>0){var n=d(y);n[n.length-1].response=e,h(n)}},n=function(){h([]),T(0)};return o.TerminalService.on("response",e),o.TerminalService.on("clear",n),function(){o.TerminalService.off("response",e),o.TerminalService.off("clear",n)}}),[y]),c.useEffect((function(){A.current&&(o.TerminalService.emit("command",x),A.current=!1),j.current.scrollTop=j.current.scrollHeight}));var R,D,H=function(e,n){var t=e.text,r=e.response,a=l({key:t+"_"+n},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,t),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=y.map(H),n=l({className:C("content")},P("content"));return c.createElement("div",n,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:j,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);