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
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),n=require("primereact/api"),r=require("primereact/componentbase"),t=require("primereact/hooks"),a=require("primereact/terminalservice"),o=require("primereact/utils");function i(e){if(e&&e.__esModule)return e;var n=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var t=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(n,r,t.get?t:{enumerable:!0,get:function(){return e[r]}})}})),n.default=e,Object.freeze(n)}var l=i(e);function c(e,n){(null==n||n>e.length)&&(n=e.length);for(var r=0,t=new Array(n);r<n;r++)t[r]=e[r];return t}function u(e){if(Array.isArray(e))return c(e)}function s(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function m(e,n){if(e){if("string"==typeof e)return c(e,n);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)?c(e,n):void 0}}function p(){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 f(e){return u(e)||s(e)||m(e)||p()}function d(e){if(Array.isArray(e))return e}function v(e,n){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var t,a,o,i,l=[],c=!0,u=!1;try{if(o=(r=r.call(e)).next,0===n){if(Object(r)!==r)return;c=!1}else for(;!(c=(t=o.call(r)).done)&&(l.push(t.value),l.length!==n);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(u)throw a}}return l}}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 b(e,n){return d(e)||v(e,n)||m(e,n)||y()}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"}}),h=l.memo(l.forwardRef((function(e,i){var c=t.useMergeProps(),u=l.useContext(n.PrimeReactContext),s=g.getProps(e,u),m=b(l.useState(""),2),p=m[0],d=m[1],v=b(l.useState([]),2),y=v[0],h=v[1],E=b(l.useState(0),2),S=E[0],x=E[1],w=b(l.useState(""),2),T=w[0],j=w[1],N=l.useRef(null),O=l.useRef(null),A=l.useRef(!1),M=g.setMetaData({props:s,state:{commandText:p,commands:y}}),P=M.ptm,C=M.cx;r.useHandleStyle(g.css.styles,M.isUnstyled,{name:"terminal"});var _=c({className:C("prompt")},P("prompt")),k=function(e){d(e.target.value)},q=function(e){switch(e.code){case"ArrowUp":if(y&&y.length){var n=S-1<0?y.length-1:S-1,r=y[n];x(n),d(r.text)}break;case"Enter":case"NumpadEnter":if(p){var t=f(y);t.push({text:p}),x((function(e){return e+1})),d(""),h(t),j(p),A.current=!0}}};l.useImperativeHandle(i,(function(){return{props:s,focus:function(){return o.DomHandler.focus(O.current)},getElement:function(){return N.current}}})),l.useEffect((function(){var e=function(e){if(y&&y.length>0){var n=f(y);n[n.length-1].response=e,h(n)}},n=function(){h([]),x(0)};return a.TerminalService.on("response",e),a.TerminalService.on("clear",n),function(){a.TerminalService.off("response",e),a.TerminalService.off("clear",n)}}),[y]),l.useEffect((function(){A.current&&(a.TerminalService.emit("command",T),A.current=!1),N.current.scrollTop=N.current.scrollHeight}));var I,D,H=function(e,n){var r=e.text,t=e.response,a=c({key:r+"_"+n},P("commands")),o=c({className:C("command")},P("command")),i=c({className:C("response"),"aria-live":"polite"},P("response"));return l.createElement("div",a,l.createElement("span",_,s.prompt," "),l.createElement("span",o,r),l.createElement("div",i,t))},R=function(){if(s.welcomeMessage){var e=c(P("welcomeMessage"));return l.createElement("div",e,s.welcomeMessage)}return null}(),U=function(){var e=y.map(H),n=c({className:C("content")},P("content"));return l.createElement("div",n,e)}(),z=(I=c({className:C("container")},P("container")),D=c({ref:O,value:p,type:"text",className:C("commandText"),autoComplete:"off",onChange:function(e){return k(e)},onKeyDown:q},P("commandText")),l.createElement("div",I,l.createElement("span",_,s.prompt," "),l.createElement("input",D))),B=c({id:s.id,ref:N,className:o.classNames(s.className,C("root")),style:s.style,onClick:function(){o.DomHandler.focus(O.current)}},g.getOtherProps(s),P("root"));return l.createElement("div",B,R,U,z)})));h.displayName="Terminal",exports.Terminal=h;