react-terminal-plus
Advanced tools
Comparing version
@@ -0,5 +1,24 @@ | ||
## 0.0.4 (23rd June 2023) | ||
### Fixes | ||
- Don't allow two consecutive duplicated commands in the commands history | ||
- Reset the command history pointer on "clear" command | ||
- Allow the `clear` and `cls` command to be saved in commands history | ||
## 0.0.3 (9th June 2023) | ||
### Fixes | ||
- Don't allow any commands to be executed while another command is running | ||
- Fix a small UI bug when doing `ctrl + c` with text in the buffer | ||
## 0.0.2 (7th June 2023) | ||
### Internal | ||
- Add tooling for changelogs and releasing | ||
## 0.0.1 (7th June 2023) | ||
--- | ||
### Added | ||
@@ -22,18 +41,1 @@ | ||
https://docs.gitlab.com/ee/development/changelog.html | ||
## 0.0.2 (7th June 2023) | ||
--- | ||
### Internal | ||
- Add tooling for changelogs and releasing | ||
## 0.0.3 (9th June 2023) | ||
--- | ||
### Fixes | ||
- Don't allow any commands to be executed while another command is running | ||
- Fix a small UI bug when doing `ctrl + c` with text in the buffer |
@@ -15,4 +15,2 @@ import * as React from "react"; | ||
} | { | ||
type: "CLEAR_BY_COMMAND"; | ||
} | { | ||
type: "CANCEL"; | ||
@@ -19,0 +17,0 @@ cancelNode: React.ReactNode; |
@@ -1,1 +0,1 @@ | ||
import*as e from"react";import{CancelablePromise as t}from"cancelable-promise";var n=function(){return n=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},n.apply(this,arguments)};function r(e,t,n,r){return new(n||(n=Promise))((function(o,a){function i(e){try{c(r.next(e))}catch(e){a(e)}}function l(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,l)}c((r=r.apply(e,t||[])).next())}))}function o(e,t){var n,r,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function l(l){return function(c){return function(l){if(n)throw new TypeError("Generator is already executing.");for(;a&&(a=0,l[0]&&(i=0)),i;)try{if(n=1,r&&(o=2&l[0]?r.return:l[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,l[1])).done)return o;switch(r=0,o&&(l=[2&l[0],o.value]),l[0]){case 0:case 1:o=l;break;case 4:return i.label++,{value:l[1],done:!1};case 5:i.label++,r=l[1],l=[0];continue;case 7:l=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==l[0]&&2!==l[0])){i=0;continue}if(3===l[0]&&(!o||l[1]>o[0]&&l[1]<o[3])){i.label=l[1];break}if(6===l[0]&&i.label<o[1]){i.label=o[1],o=l;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(l);break}o[2]&&i.ops.pop(),i.trys.pop();continue}l=t.call(e,i)}catch(e){l=[6,e],r=0}finally{n=o=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}([l,c])}}}function a(e,t,n){if(n||2===arguments.length)for(var r,o=0,a=t.length;o<a;o++)!r&&o in t||(r||(r=Array.prototype.slice.call(t,0,o)),r[o]=t[o]);return e.concat(r||Array.prototype.slice.call(t))}!function(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var r=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===n&&r.firstChild?r.insertBefore(o,r.firstChild):r.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}('@import url("https://fonts.googleapis.com/css?family=Source+Code+Pro&display=swap");\n#index_terminalContainer__4seT6 {\n --control-default-bg-color: #ccc;\n --control-close-bg-color: #fc5b57;\n --control-minimize-bg-color: #e5bf3c;\n --control-maximize-bg-color: #57c038;\n}\n\n.index_controls__sXDjs {\n text-align: left;\n height: 26px;\n position: relative;\n top: 4px;\n margin-left: 4px;\n}\n.index_controls__sXDjs .index_consoleCtrl__DI2H1 {\n display: inline-block;\n width: 13px;\n height: 13px;\n margin: 0 3px;\n border-radius: 50%;\n background: var(--control-default-bg-color);\n}\n.index_controls__sXDjs .index_close__XGN9U {\n background: var(--control-close-bg-color);\n}\n.index_controls__sXDjs .index_minimize__pZYTU {\n background: var(--control-minimize-bg-color);\n}\n.index_controls__sXDjs .index_maximize__szRK7 {\n background: var(--control-maximize-bg-color);\n}\n\n.index_editor__JoDSg {\n text-align: left;\n height: 100%;\n padding: 10px 15px;\n overflow-wrap: break-word;\n overflow-y: scroll;\n outline: none;\n font-family: "Source Code Pro", monospace;\n font-size: 18px;\n line-height: 22px;\n border-bottom-left-radius: 5px;\n border-bottom-right-radius: 5px;\n}\n.index_editor__JoDSg .index_lineText__j6qNj {\n display: inline;\n position: relative;\n top: -1px;\n margin-left: 8px;\n}\n.index_editor__JoDSg .index_preWhiteSpace__7KwuG {\n white-space: pre-wrap;\n}\n.index_editor__JoDSg .index_caret__VS4iV {\n position: relative;\n}\n.index_editor__JoDSg .index_caret__VS4iV .index_caretAfter__6aXPx {\n content: "";\n position: absolute;\n top: 2px;\n width: 10px;\n height: 22px;\n z-index: 10;\n}\n@-moz-keyframes index_blink__FJp0- {\n 0% {\n opacity: 0;\n -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";\n filter: alpha(opacity=0);\n }\n 100% {\n opacity: 1;\n -ms-filter: none;\n filter: none;\n }\n}\n@-webkit-keyframes index_blink__FJp0- {\n 0% {\n opacity: 0;\n -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";\n filter: alpha(opacity=0);\n }\n 100% {\n opacity: 1;\n -ms-filter: none;\n filter: none;\n }\n}\n@-o-keyframes index_blink__FJp0- {\n 0% {\n opacity: 0;\n -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";\n filter: alpha(opacity=0);\n }\n 100% {\n opacity: 1;\n -ms-filter: none;\n filter: none;\n }\n}\n@keyframes index_blink__FJp0- {\n 0% {\n opacity: 0;\n -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";\n filter: alpha(opacity=0);\n }\n 100% {\n opacity: 1;\n -ms-filter: none;\n filter: none;\n }\n}\n.index_editor__JoDSg a {\n color: #1a87b5;\n}\n\n.index_editorWithTopBar__L6XKw {\n height: calc(100% - 46px);\n}\n\n.index_curvedTop__LX9XS {\n border-top-left-radius: 5px;\n border-top-right-radius: 5px;\n}\n\n#index_terminalContainer__4seT6 {\n height: 100%;\n}\n\n.index_terminal__teubZ {\n height: 100%;\n width: 100%;\n margin: auto;\n border-radius: 5px;\n}');var i={terminalContainer:"index_terminalContainer__4seT6",controls:"index_controls__sXDjs",consoleCtrl:"index_consoleCtrl__DI2H1",close:"index_close__XGN9U",minimize:"index_minimize__pZYTU",maximize:"index_maximize__szRK7",editor:"index_editor__JoDSg",lineText:"index_lineText__j6qNj",preWhiteSpace:"index_preWhiteSpace__7KwuG",caret:"index_caret__VS4iV",caretAfter:"index_caretAfter__6aXPx",editorWithTopBar:"index_editorWithTopBar__L6XKw",curvedTop:"index_curvedTop__LX9XS",terminal:"index_terminal__teubZ",blink:"index_blink__FJp0-"},l=e.createContext(null),c=function(t){var n=t.children;return e.createElement(l.Provider,{value:i},n)},s={dark:{themeBGColor:"#022833",themeToolbarColor:"#131519",themeColor:"#839496",themePromptColor:"#a917a8"},light:{themeBGColor:"#fdf6e4",themeToolbarColor:"#d8d8d8",themeColor:"#333333",themePromptColor:"#a917a8"},dracula:{themeBGColor:"#272B36",themeToolbarColor:"#DBDBDB",themeColor:"#FFFEFC",themePromptColor:"#a917a8"},"material-dark":{themeBGColor:"#151515",themeToolbarColor:"#424242",themeColor:"#fff",themePromptColor:"#42A5F5"},"material-light":{themeBGColor:"#fafafa",themeToolbarColor:"#424242",themeColor:"#151515",themePromptColor:"#42A5F5"},"material-ocean":{themeBGColor:"#263238",themeToolbarColor:"#37474F",themeColor:"#fff",themePromptColor:"#C3D82C"},matrix:{themeBGColor:"#0D0208",themeToolbarColor:"#0D0208",themeColor:"#00FF41",themePromptColor:"#008F11"}},u=e.createContext(null),d=function(t){var r=t.children,o=n(n({},s),r.props.themes||{}),a=o[r.props.theme]||o.light;return e.createElement(u.Provider,{value:a},r)},m=function(t,n,r){var o=function(e){t.current&&!t.current.contains(e.target)?r(!1):r(!0)};e.useEffect((function(){return document.addEventListener("mousedown",o),function(){document.removeEventListener("mousedown",o)}}))};function p(t){var n=e.useContext(l),r=t.controlButtonLabels,o=t.showControlButtons?r.map((function(t){return e.createElement("div",{key:t,className:"".concat(n.consoleCtrl," ").concat(n[t])})})):null;return e.createElement("div",{className:n.controls},o)}var f=function(){function e(){}return e.splitStringAtIndex=function(e,t){return e?[e.substring(0,t),e.substring(t)]:["",""]},e}(),C=e.createContext(null);function x(e,t){switch(e.currentLineStatus){case"processing":switch(t.type){case"CANCEL":return n(n({},e),{bufferedContent:t.cancelNode,editorInput:"",currentLineStatus:"idle",caretPosition:0,textBeforeCaret:"",textAfterCaret:""});case"SUBMIT_SUCCESS":return n(n({},e),{bufferedContent:t.successNode,currentLineStatus:"success",editorInput:"",caretPosition:0,textBeforeCaret:"",textAfterCaret:""});default:return e}case"success":case"error":case"idle":switch(t.type){case"CLEAR_BY_COMMAND":return n(n({},e),{bufferedContent:null,editorInput:"",currentLineStatus:"idle",caretPosition:0,textBeforeCaret:"",textAfterCaret:""});case"CLEAR":return n(n({},e),{bufferedContent:null});case"CANCEL":return n(n({},e),{bufferedContent:t.cancelNode,editorInput:"",currentLineStatus:"idle",caretPosition:0,textBeforeCaret:"",textAfterCaret:""});case"SUBMIT":var r=t.command,o=r?a(a([],e.commandsHistory,!0),[r],!1):e.commandsHistory;return n(n({},e),{commandsHistory:o,bufferedContent:t.loaderNode,currentLineStatus:"processing",editorInput:"",caretPosition:0,textBeforeCaret:"",textAfterCaret:""});case"TYPE":var i=h(e),l=i[0],c=i[1],s=_(g=l+t.text+c,y=e.caretPosition+1),u=s[0],d=s[1];return n(n({},e),{caretPosition:y,editorInput:g,textAfterCaret:d,textBeforeCaret:u});case"DELETE":var m=h(e),p=(l=m[0],c=m[1],_(g=l.slice(0,-1)+c,y=e.caretPosition-1));u=p[0],d=p[1];return n(n({},e),{editorInput:g,caretPosition:y,textAfterCaret:d,textBeforeCaret:u});case"COPY":return e;case"PASTE":var f=h(e),C=(l=f[0],c=f[1],_(g=l+t.text+c,y=e.caretPosition+t.text.length));u=C[0],d=C[1];return n(n({},e),{editorInput:g,caretPosition:y,textAfterCaret:d,textBeforeCaret:u});case"ARROW_UP":var x=_(g=t.previousCommand,y=t.previousCommand.length);u=x[0],d=x[1];return n(n({},e),{editorInput:g,caretPosition:y,textAfterCaret:d,textBeforeCaret:u});case"ARROW_DOWN":var g,v=_(g=t.nextCommand,y=t.nextCommand.length);u=v[0],d=v[1];return n(n({},e),{editorInput:g,caretPosition:y,textAfterCaret:d,textBeforeCaret:u});case"RESET_CARET_POSITION":return n(n({},e),{textBeforeCaret:"",textAfterCaret:"",caretPosition:0});case"ARROW_LEFT":var y=e.caretPosition-1,b=_(e.editorInput,y);u=b[0],d=b[1];return n(n({},e),{caretPosition:y,textAfterCaret:d,textBeforeCaret:u});case"ARROW_RIGHT":y=e.caretPosition+1;var E=_(e.editorInput,y);u=E[0],d=E[1];return n(n({},e),{caretPosition:y,textAfterCaret:d,textBeforeCaret:u});default:throw new Error("Unhandled action type: ".concat(JSON.stringify(t)))}default:return e}}function h(e){var t=f.splitStringAtIndex(e.editorInput,e.caretPosition);return[t[0],t[1]]}function _(e,t){var n=f.splitStringAtIndex(e,t);return[n[0],n[1]]}var g={bufferedContent:null,commandsHistory:[],editorInput:"",currentLineStatus:"idle",caretPosition:0,textBeforeCaret:"",textAfterCaret:""};function v(){var t=e.useContext(C);if(void 0===t)throw new Error("useTerminal must be used within a TerminalContextProvider");return t}var y=function(n,a,i,c,s,d,m){var p=e.useContext(l),f=e.useContext(u),C=v().store,x="processing"!==C.currentLineStatus?e.createElement(e.Fragment,null,e.createElement("span",{style:{color:f.themePromptColor}},i),e.createElement("div",{className:p.lineText},e.createElement("span",{className:p.preWhiteSpace},C.textBeforeCaret),a&&n?e.createElement("span",{className:p.caret},e.createElement("span",{className:p.caretAfter,style:{background:f.themeColor}})):null,e.createElement("span",{className:p.preWhiteSpace},C.textAfterCaret))):e.createElement(e.Fragment,null,e.createElement("div",{className:p.lineText},a&&n?e.createElement("span",{className:p.caret},e.createElement("span",{className:p.caretAfter,style:{background:f.themeColor}})):null));return function(n){var a=n.consoleFocused,i=n.enableInput,c=n.commands,s=n.defaultHandler,d=n.errorMessage,m=n.prompt,p=e.useContext(l),f=e.useContext(u),C=v(),x=C.getPreviousCommand,h=C.getNextCommand,_=C.store,g=C.send,y=e.useRef(null),b=e.useCallback((function(){y.current&&y.current.cancel();var t=e.createElement(e.Fragment,null,_.bufferedContent,e.createElement("span",{style:{color:f.themePromptColor}},m),e.createElement("span",{className:"".concat(p.lineText," ").concat(p.preWhiteSpace)},_.editorInput),e.createElement("br",null));"processing"===_.currentLineStatus&&(t=e.createElement(e.Fragment,null,_.bufferedContent)),g({type:"CANCEL",cancelNode:t})}),[m,g,_.bufferedContent,_.currentLineStatus,_.editorInput,p.lineText,p.preWhiteSpace,f.themePromptColor]),E=e.useCallback((function(){return r(void 0,void 0,void 0,(function(){var n,r,a,i,l,u,C,x;return o(this,(function(o){switch(o.label){case 0:return n=_.editorInput.trim().split(" "),r=n[0],a=n.slice(1),i="","clear"===r||"cls"===r?(g({type:"CLEAR_BY_COMMAND"}),[2]):(l=e.createElement(e.Fragment,null,_.bufferedContent,e.createElement("span",{style:{color:f.themePromptColor}},m),e.createElement("span",{className:"".concat(p.lineText," ").concat(p.preWhiteSpace)},_.editorInput),e.createElement("br",null)),g({type:"SUBMIT",loaderNode:l,command:r}),_.editorInput?(u=a.join(" "),r&&c[r]?"function"!=typeof(C=c[r])?[3,2]:(y.current=new t((function(e){e(C(u))})),[4,y.current]):[3,4]):[3,9]);case 1:return i=o.sent(),[3,3];case 2:i=C,o.label=3;case 3:return[3,9];case 4:return"function"!=typeof s?[3,6]:(y.current=new t((function(e){e(s(r,u))})),[4,y.current]);case 5:return i=o.sent(),[3,9];case 6:return"function"!=typeof d?[3,8]:(y.current=new t((function(e){e(d(r,u))})),[4,y.current]);case 7:return i=o.sent(),[3,9];case 8:i=d,o.label=9;case 9:return x=e.createElement(e.Fragment,null,_.bufferedContent,e.createElement("span",{style:{color:f.themePromptColor}},m),e.createElement("span",{className:"".concat(p.lineText," ").concat(p.preWhiteSpace)},_.editorInput),i?e.createElement("span",null,e.createElement("br",null),i):null,e.createElement("br",null)),g({type:"SUBMIT_SUCCESS",successNode:x}),[2]}}))}))}),[g,_.bufferedContent,_.editorInput]),T=e.useCallback((function(e){if(a&&i){e.preventDefault();var t=e.key,n=null;if("Enter"===t)"processing"!==_.currentLineStatus&&E();else if("Backspace"===t)_.editorInput&&0!==_.editorInput.length&&g({type:"DELETE"});else if("ArrowUp"===t)(n=x())&&g({type:"ARROW_UP",previousCommand:n});else if("ArrowDown"===t)n=h(),g(n?{type:"ARROW_DOWN",nextCommand:n}:{type:"RESET_CARET_POSITION"});else if("ArrowLeft"===t)_.caretPosition>0&&g({type:"ARROW_LEFT"}),n=_.editorInput;else if("ArrowRight"===t)_.caretPosition<_.editorInput.length&&g({type:"ARROW_RIGHT"}),n=_.editorInput;else if((e.metaKey||e.ctrlKey)&&"l"===t.toLowerCase())g({type:"CLEAR"});else if((e.metaKey||e.ctrlKey)&&e.shiftKey&&"v"===t.toLowerCase())navigator.clipboard.readText().then((function(e){g({type:"PASTE",text:e})}));else if((e.metaKey||e.ctrlKey)&&e.shiftKey&&"c"===t.toLowerCase()){var r=window.getSelection().toString();navigator.clipboard.writeText(r).then((function(){g({type:"COPY"})}))}else(e.metaKey||e.ctrlKey)&&"c"===t.toLowerCase()?(y.current&&y.current.cancel(),b()):t&&1===t.length&&g({type:"TYPE",text:t})}}),[b,a,i,h,x,E,g,_.caretPosition,_.editorInput]);e.useEffect((function(){return document.addEventListener("keydown",T),function(){document.removeEventListener("keydown",T)}}),[T])}({commands:c,errorMessage:s,defaultHandler:m,enableInput:d,prompt:i,consoleFocused:a}),x},b=function(t,n){e.useEffect((function(){n.current&&(n.current.scrollTop=n.current.scrollHeight)}),[t])};function E(t){var n=e.useRef(null),r=e.useContext(l),o=e.useContext(u),a=v().store;b(a.bufferedContent,n);var i=t.enableInput,c=t.caret,s=t.consoleFocused,d=t.prompt,m=t.commands,p=t.welcomeMessage,f=t.errorMessage,C=t.showControlBar,x=t.defaultHandler,h=y(c,s,d,m,f,i,x);return e.createElement("div",{id:"terminalEditor",ref:n,className:"".concat(r.editor," ").concat(C?null:r.curvedTop," ").concat(C?r.editorWithTopBar:null),style:{background:o.themeBGColor}},p,a.bufferedContent,h)}function T(t){var n=e.useRef(null),r=e.useState(!0),o=r[0],a=r[1],i=e.useContext(l),c=e.useContext(u);m(n,o,a);var s=t.caret,d=void 0===s||s,f=t.theme,C=void 0===f?"light":f,x=t.showControlBar,h=void 0===x||x,_=t.showControlButtons,g=void 0===_||_,v=t.controlButtonLabels,y=void 0===v?["close","minimize","maximize"]:v,b=t.prompt,T=void 0===b?">>>":b,w=t.commands,S=void 0===w?{}:w,P=t.welcomeMessage,A=void 0===P?"":P,I=t.errorMessage,B=void 0===I?"not found!":I,N=t.enableInput,L=void 0===N||N,k=t.defaultHandler,R=void 0===k?null:k,D=h?e.createElement(p,{consoleFocused:o,showControlButtons:g,controlButtonLabels:y}):null,F=e.createElement(E,{caret:d,consoleFocused:o,prompt:T,commands:S,welcomeMessage:A,errorMessage:B,enableInput:L,showControlBar:h,defaultHandler:R});return e.createElement("div",{ref:n,id:i.terminalContainer,className:i["theme--".concat(C)],"data-testid":"terminal"},e.createElement("div",{className:"".concat(i.terminal),style:{background:c.themeToolbarColor,color:c.themeColor}},D,F))}function w(t){var n=t.children;return e.createElement(c,null,e.createElement(d,null,n))}function S(t){return e.createElement(w,null,e.createElement(T,n({},t)))}var P=function(t){var n=t.children,r=e.useState(null),o=r[0],a=r[1],i=e.useReducer(x,g),l=i[0],c=i[1];e.useEffect((function(){a(l.commandsHistory.length)}),[l.commandsHistory]);var s=e.useMemo((function(){return{send:c,store:l,getPreviousCommand:function(){if(0===o)return 0===l.commandsHistory.length?"":l.commandsHistory[0];var e=l.commandsHistory[o-1];return o>0&&a(o-1),e},getNextCommand:function(){if(o+1<=l.commandsHistory.length){var e=l.commandsHistory[o+1];return a(o+1),e}return""}}}),[o,l]);return e.createElement(C.Provider,{value:s},n)},A={ReactTerminal:S,TerminalContextProvider:P};export{S as ReactTerminal,P as TerminalContextProvider,A as default}; | ||
import*as e from"react";import{CancelablePromise as t}from"cancelable-promise";var n=function(){return n=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},n.apply(this,arguments)};function r(e,t,n,r){return new(n||(n=Promise))((function(o,a){function i(e){try{c(r.next(e))}catch(e){a(e)}}function l(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,l)}c((r=r.apply(e,t||[])).next())}))}function o(e,t){var n,r,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function l(l){return function(c){return function(l){if(n)throw new TypeError("Generator is already executing.");for(;a&&(a=0,l[0]&&(i=0)),i;)try{if(n=1,r&&(o=2&l[0]?r.return:l[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,l[1])).done)return o;switch(r=0,o&&(l=[2&l[0],o.value]),l[0]){case 0:case 1:o=l;break;case 4:return i.label++,{value:l[1],done:!1};case 5:i.label++,r=l[1],l=[0];continue;case 7:l=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==l[0]&&2!==l[0])){i=0;continue}if(3===l[0]&&(!o||l[1]>o[0]&&l[1]<o[3])){i.label=l[1];break}if(6===l[0]&&i.label<o[1]){i.label=o[1],o=l;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(l);break}o[2]&&i.ops.pop(),i.trys.pop();continue}l=t.call(e,i)}catch(e){l=[6,e],r=0}finally{n=o=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}([l,c])}}}!function(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var r=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===n&&r.firstChild?r.insertBefore(o,r.firstChild):r.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}('@import url("https://fonts.googleapis.com/css?family=Source+Code+Pro&display=swap");\n#index_terminalContainer__4seT6 {\n --control-default-bg-color: #ccc;\n --control-close-bg-color: #fc5b57;\n --control-minimize-bg-color: #e5bf3c;\n --control-maximize-bg-color: #57c038;\n}\n\n.index_controls__sXDjs {\n text-align: left;\n height: 26px;\n position: relative;\n top: 4px;\n margin-left: 4px;\n}\n.index_controls__sXDjs .index_consoleCtrl__DI2H1 {\n display: inline-block;\n width: 13px;\n height: 13px;\n margin: 0 3px;\n border-radius: 50%;\n background: var(--control-default-bg-color);\n}\n.index_controls__sXDjs .index_close__XGN9U {\n background: var(--control-close-bg-color);\n}\n.index_controls__sXDjs .index_minimize__pZYTU {\n background: var(--control-minimize-bg-color);\n}\n.index_controls__sXDjs .index_maximize__szRK7 {\n background: var(--control-maximize-bg-color);\n}\n\n.index_editor__JoDSg {\n text-align: left;\n height: 100%;\n padding: 10px 15px;\n overflow-wrap: break-word;\n overflow-y: scroll;\n outline: none;\n font-family: "Source Code Pro", monospace;\n font-size: 18px;\n line-height: 22px;\n border-bottom-left-radius: 5px;\n border-bottom-right-radius: 5px;\n}\n.index_editor__JoDSg .index_lineText__j6qNj {\n display: inline;\n position: relative;\n top: -1px;\n margin-left: 8px;\n}\n.index_editor__JoDSg .index_preWhiteSpace__7KwuG {\n white-space: pre-wrap;\n}\n.index_editor__JoDSg .index_caret__VS4iV {\n position: relative;\n}\n.index_editor__JoDSg .index_caret__VS4iV .index_caretAfter__6aXPx {\n content: "";\n position: absolute;\n top: 2px;\n width: 10px;\n height: 22px;\n z-index: 10;\n}\n@-moz-keyframes index_blink__FJp0- {\n 0% {\n opacity: 0;\n -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";\n filter: alpha(opacity=0);\n }\n 100% {\n opacity: 1;\n -ms-filter: none;\n filter: none;\n }\n}\n@-webkit-keyframes index_blink__FJp0- {\n 0% {\n opacity: 0;\n -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";\n filter: alpha(opacity=0);\n }\n 100% {\n opacity: 1;\n -ms-filter: none;\n filter: none;\n }\n}\n@-o-keyframes index_blink__FJp0- {\n 0% {\n opacity: 0;\n -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";\n filter: alpha(opacity=0);\n }\n 100% {\n opacity: 1;\n -ms-filter: none;\n filter: none;\n }\n}\n@keyframes index_blink__FJp0- {\n 0% {\n opacity: 0;\n -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";\n filter: alpha(opacity=0);\n }\n 100% {\n opacity: 1;\n -ms-filter: none;\n filter: none;\n }\n}\n.index_editor__JoDSg a {\n color: #1a87b5;\n}\n\n.index_editorWithTopBar__L6XKw {\n height: calc(100% - 46px);\n}\n\n.index_curvedTop__LX9XS {\n border-top-left-radius: 5px;\n border-top-right-radius: 5px;\n}\n\n#index_terminalContainer__4seT6 {\n height: 100%;\n}\n\n.index_terminal__teubZ {\n height: 100%;\n width: 100%;\n margin: auto;\n border-radius: 5px;\n}');var a={terminalContainer:"index_terminalContainer__4seT6",controls:"index_controls__sXDjs",consoleCtrl:"index_consoleCtrl__DI2H1",close:"index_close__XGN9U",minimize:"index_minimize__pZYTU",maximize:"index_maximize__szRK7",editor:"index_editor__JoDSg",lineText:"index_lineText__j6qNj",preWhiteSpace:"index_preWhiteSpace__7KwuG",caret:"index_caret__VS4iV",caretAfter:"index_caretAfter__6aXPx",editorWithTopBar:"index_editorWithTopBar__L6XKw",curvedTop:"index_curvedTop__LX9XS",terminal:"index_terminal__teubZ",blink:"index_blink__FJp0-"},i=e.createContext(null),l=function(t){var n=t.children;return e.createElement(i.Provider,{value:a},n)},c={dark:{themeBGColor:"#022833",themeToolbarColor:"#131519",themeColor:"#839496",themePromptColor:"#a917a8"},light:{themeBGColor:"#fdf6e4",themeToolbarColor:"#d8d8d8",themeColor:"#333333",themePromptColor:"#a917a8"},dracula:{themeBGColor:"#272B36",themeToolbarColor:"#DBDBDB",themeColor:"#FFFEFC",themePromptColor:"#a917a8"},"material-dark":{themeBGColor:"#151515",themeToolbarColor:"#424242",themeColor:"#fff",themePromptColor:"#42A5F5"},"material-light":{themeBGColor:"#fafafa",themeToolbarColor:"#424242",themeColor:"#151515",themePromptColor:"#42A5F5"},"material-ocean":{themeBGColor:"#263238",themeToolbarColor:"#37474F",themeColor:"#fff",themePromptColor:"#C3D82C"},matrix:{themeBGColor:"#0D0208",themeToolbarColor:"#0D0208",themeColor:"#00FF41",themePromptColor:"#008F11"}},s=e.createContext(null),u=function(t){var r=t.children,o=n(n({},c),r.props.themes||{}),a=o[r.props.theme]||o.light;return e.createElement(s.Provider,{value:a},r)},d=function(t,n,r){var o=function(e){t.current&&!t.current.contains(e.target)?r(!1):r(!0)};e.useEffect((function(){return document.addEventListener("mousedown",o),function(){document.removeEventListener("mousedown",o)}}))};function m(t){var n=e.useContext(i),r=t.controlButtonLabels,o=t.showControlButtons?r.map((function(t){return e.createElement("div",{key:t,className:"".concat(n.consoleCtrl," ").concat(n[t])})})):null;return e.createElement("div",{className:n.controls},o)}var p=["clear","cls"],f=function(e){return p.includes(e)},x=function(){function e(){}return e.splitStringAtIndex=function(e,t){return e?[e.substring(0,t),e.substring(t)]:["",""]},e}(),C=e.createContext(null);function h(e,t){switch(e.currentLineStatus){case"processing":switch(t.type){case"CANCEL":return n(n({},e),{bufferedContent:t.cancelNode,editorInput:"",currentLineStatus:"idle",caretPosition:0,textBeforeCaret:"",textAfterCaret:""});case"SUBMIT_SUCCESS":return n(n({},e),{bufferedContent:t.successNode,currentLineStatus:"success",editorInput:"",caretPosition:0,textBeforeCaret:"",textAfterCaret:""});default:return e}case"success":case"error":case"idle":switch(t.type){case"CLEAR":return n(n({},e),{bufferedContent:null});case"CANCEL":return n(n({},e),{bufferedContent:t.cancelNode,editorInput:"",currentLineStatus:"idle",caretPosition:0,textBeforeCaret:"",textAfterCaret:""});case"SUBMIT":var r=t.command,o=e.commandsHistory;return r&&r!==o[o.length-1]&&o.push(r),f(r)?n(n({},e),{bufferedContent:null,editorInput:"",currentLineStatus:"idle",caretPosition:0,textBeforeCaret:"",textAfterCaret:""}):n(n({},e),{commandsHistory:o,bufferedContent:t.loaderNode,currentLineStatus:"processing",editorInput:"",caretPosition:0,textBeforeCaret:"",textAfterCaret:""});case"TYPE":var a=_(e),i=a[0],l=a[1],c=g(h=i+t.text+l,b=e.caretPosition+1),s=c[0],u=c[1];return n(n({},e),{caretPosition:b,editorInput:h,textAfterCaret:u,textBeforeCaret:s});case"DELETE":var d=_(e),m=(i=d[0],l=d[1],g(h=i.slice(0,-1)+l,b=e.caretPosition-1));s=m[0],u=m[1];return n(n({},e),{editorInput:h,caretPosition:b,textAfterCaret:u,textBeforeCaret:s});case"COPY":return e;case"PASTE":var p=_(e),x=(i=p[0],l=p[1],g(h=i+t.text+l,b=e.caretPosition+t.text.length));s=x[0],u=x[1];return n(n({},e),{editorInput:h,caretPosition:b,textAfterCaret:u,textBeforeCaret:s});case"ARROW_UP":var C=g(h=t.previousCommand,b=t.previousCommand.length);s=C[0],u=C[1];return n(n({},e),{editorInput:h,caretPosition:b,textAfterCaret:u,textBeforeCaret:s});case"ARROW_DOWN":var h,v=g(h=t.nextCommand,b=t.nextCommand.length);s=v[0],u=v[1];return n(n({},e),{editorInput:h,caretPosition:b,textAfterCaret:u,textBeforeCaret:s});case"RESET_CARET_POSITION":return n(n({},e),{textBeforeCaret:"",textAfterCaret:"",caretPosition:0});case"ARROW_LEFT":var b=e.caretPosition-1,y=g(e.editorInput,b);s=y[0],u=y[1];return n(n({},e),{caretPosition:b,textAfterCaret:u,textBeforeCaret:s});case"ARROW_RIGHT":b=e.caretPosition+1;var E=g(e.editorInput,b);s=E[0],u=E[1];return n(n({},e),{caretPosition:b,textAfterCaret:u,textBeforeCaret:s});default:throw new Error("Unhandled action type: ".concat(JSON.stringify(t)))}default:return e}}function _(e){var t=x.splitStringAtIndex(e.editorInput,e.caretPosition);return[t[0],t[1]]}function g(e,t){var n=x.splitStringAtIndex(e,t);return[n[0],n[1]]}var v={bufferedContent:null,commandsHistory:[],editorInput:"",currentLineStatus:"idle",caretPosition:0,textBeforeCaret:"",textAfterCaret:""};function b(){var t=e.useContext(C);if(void 0===t)throw new Error("useTerminal must be used within a TerminalContextProvider");return t}var y=function(n,a,l,c,u,d,m){var p=e.useContext(i),x=e.useContext(s),C=b().store,h="processing"!==C.currentLineStatus?e.createElement(e.Fragment,null,e.createElement("span",{style:{color:x.themePromptColor}},l),e.createElement("div",{className:p.lineText},e.createElement("span",{className:p.preWhiteSpace},C.textBeforeCaret),a&&n?e.createElement("span",{className:p.caret},e.createElement("span",{className:p.caretAfter,style:{background:x.themeColor}})):null,e.createElement("span",{className:p.preWhiteSpace},C.textAfterCaret))):e.createElement(e.Fragment,null,e.createElement("div",{className:p.lineText},a&&n?e.createElement("span",{className:p.caret},e.createElement("span",{className:p.caretAfter,style:{background:x.themeColor}})):null));return function(n){var a=n.consoleFocused,l=n.enableInput,c=n.commands,u=n.defaultHandler,d=n.errorMessage,m=n.prompt,p=e.useContext(i),x=e.useContext(s),C=b(),h=C.getPreviousCommand,_=C.getNextCommand,g=C.store,v=C.send,y=e.useRef(null),E=e.useCallback((function(){y.current&&y.current.cancel();var t=e.createElement(e.Fragment,null,g.bufferedContent,e.createElement("span",{style:{color:x.themePromptColor}},m),e.createElement("span",{className:"".concat(p.lineText," ").concat(p.preWhiteSpace)},g.editorInput),e.createElement("br",null));"processing"===g.currentLineStatus&&(t=e.createElement(e.Fragment,null,g.bufferedContent)),v({type:"CANCEL",cancelNode:t})}),[m,v,g.bufferedContent,g.currentLineStatus,g.editorInput,p.lineText,p.preWhiteSpace,x.themePromptColor]),T=e.useCallback((function(){return r(void 0,void 0,void 0,(function(){var n,r,a,i,l,s,C,h,_;return o(this,(function(o){switch(o.label){case 0:return n=g.editorInput.trim().split(" "),r=n[0],a=n.slice(1),i=g.editorInput.trim(),l="",s=e.createElement(e.Fragment,null,g.bufferedContent,e.createElement("span",{style:{color:x.themePromptColor}},m),e.createElement("span",{className:"".concat(p.lineText," ").concat(p.preWhiteSpace)},g.editorInput),e.createElement("br",null)),v({type:"SUBMIT",loaderNode:s,command:i}),f(i)?[2]:g.editorInput?(C=a.join(" "),i&&c[i]?"function"!=typeof(h=c[i])?[3,2]:(y.current=new t((function(e){e(h(C))})),[4,y.current]):[3,4]):[3,9];case 1:return l=o.sent(),[3,3];case 2:l=h,o.label=3;case 3:return[3,9];case 4:return"function"!=typeof u?[3,6]:(y.current=new t((function(e){e(u(r,C))})),[4,y.current]);case 5:return l=o.sent(),[3,9];case 6:return"function"!=typeof d?[3,8]:(y.current=new t((function(e){e(d(r,C))})),[4,y.current]);case 7:return l=o.sent(),[3,9];case 8:l=d,o.label=9;case 9:return _=e.createElement(e.Fragment,null,g.bufferedContent,e.createElement("span",{style:{color:x.themePromptColor}},m),e.createElement("span",{className:"".concat(p.lineText," ").concat(p.preWhiteSpace)},g.editorInput),l?e.createElement("span",null,e.createElement("br",null),l):null,e.createElement("br",null)),v({type:"SUBMIT_SUCCESS",successNode:_}),[2]}}))}))}),[v,g.bufferedContent,g.editorInput]),w=e.useCallback((function(e){if(a&&l){e.preventDefault();var t=e.key,n=null;if("Enter"===t)"processing"!==g.currentLineStatus&&T();else if("Backspace"===t)g.editorInput&&0!==g.editorInput.length&&v({type:"DELETE"});else if("ArrowUp"===t)(n=h())&&v({type:"ARROW_UP",previousCommand:n});else if("ArrowDown"===t)n=_(),v(n?{type:"ARROW_DOWN",nextCommand:n}:{type:"RESET_CARET_POSITION"});else if("ArrowLeft"===t)g.caretPosition>0&&v({type:"ARROW_LEFT"}),n=g.editorInput;else if("ArrowRight"===t)g.caretPosition<g.editorInput.length&&v({type:"ARROW_RIGHT"}),n=g.editorInput;else if((e.metaKey||e.ctrlKey)&&"l"===t.toLowerCase())v({type:"CLEAR"});else if((e.metaKey||e.ctrlKey)&&e.shiftKey&&"v"===t.toLowerCase())navigator.clipboard.readText().then((function(e){v({type:"PASTE",text:e})}));else if((e.metaKey||e.ctrlKey)&&e.shiftKey&&"c"===t.toLowerCase()){var r=window.getSelection().toString();navigator.clipboard.writeText(r).then((function(){v({type:"COPY"})}))}else(e.metaKey||e.ctrlKey)&&"c"===t.toLowerCase()?(y.current&&y.current.cancel(),E()):t&&1===t.length&&v({type:"TYPE",text:t})}}),[E,a,l,_,h,T,v,g.caretPosition,g.currentLineStatus,g.editorInput]);e.useEffect((function(){return document.addEventListener("keydown",w),function(){document.removeEventListener("keydown",w)}}),[w])}({commands:c,errorMessage:u,defaultHandler:m,enableInput:d,prompt:l,consoleFocused:a}),h},E=function(t,n){e.useEffect((function(){n.current&&(n.current.scrollTop=n.current.scrollHeight)}),[t])};function T(t){var n=e.useRef(null),r=e.useContext(i),o=e.useContext(s),a=b().store;E(a.bufferedContent,n);var l=t.enableInput,c=t.caret,u=t.consoleFocused,d=t.prompt,m=t.commands,p=t.welcomeMessage,f=t.errorMessage,x=t.showControlBar,C=t.defaultHandler,h=y(c,u,d,m,f,l,C);return e.createElement("div",{id:"terminalEditor",ref:n,className:"".concat(r.editor," ").concat(x?null:r.curvedTop," ").concat(x?r.editorWithTopBar:null),style:{background:o.themeBGColor}},p,a.bufferedContent,h)}function w(t){var n=e.useRef(null),r=e.useState(!0),o=r[0],a=r[1],l=e.useContext(i),c=e.useContext(s);d(n,o,a);var u=t.caret,p=void 0===u||u,f=t.theme,x=void 0===f?"light":f,C=t.showControlBar,h=void 0===C||C,_=t.showControlButtons,g=void 0===_||_,v=t.controlButtonLabels,b=void 0===v?["close","minimize","maximize"]:v,y=t.prompt,E=void 0===y?">>>":y,w=t.commands,S=void 0===w?{}:w,P=t.welcomeMessage,I=void 0===P?"":P,A=t.errorMessage,B=void 0===A?"not found!":A,N=t.enableInput,L=void 0===N||N,k=t.defaultHandler,R=void 0===k?null:k,D=h?e.createElement(m,{consoleFocused:o,showControlButtons:g,controlButtonLabels:b}):null,F=e.createElement(T,{caret:p,consoleFocused:o,prompt:E,commands:S,welcomeMessage:I,errorMessage:B,enableInput:L,showControlBar:h,defaultHandler:R});return e.createElement("div",{ref:n,id:l.terminalContainer,className:l["theme--".concat(x)],"data-testid":"terminal"},e.createElement("div",{className:"".concat(l.terminal),style:{background:c.themeToolbarColor,color:c.themeColor}},D,F))}function S(t){var n=t.children;return e.createElement(l,null,e.createElement(u,null,n))}function P(t){return e.createElement(S,null,e.createElement(w,n({},t)))}var I=function(t){var n=t.children,r=e.useState(null),o=r[0],a=r[1],i=e.useReducer(h,v),l=i[0],c=i[1];e.useEffect((function(){a(l.commandsHistory.length)}),[l.commandsHistory.length]);var s=e.useMemo((function(){return{send:c,store:l,getPreviousCommand:function(){if(0===o)return 0===l.commandsHistory.length?"":l.commandsHistory[0];var e=l.commandsHistory[o-1];return o>0&&a(o-1),e},getNextCommand:function(){if(o+1<=l.commandsHistory.length){var e=l.commandsHistory[o+1];return a(o+1),e}return""}}}),[o,l]);return e.createElement(C.Provider,{value:s},n)},A={ReactTerminal:P,TerminalContextProvider:I};export{P as ReactTerminal,I as TerminalContextProvider,A as default}; |
@@ -1,1 +0,1 @@ | ||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("cancelable-promise");function n(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 r=n(e),o=function(){return o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},o.apply(this,arguments)};function a(e,t,n,r){return new(n||(n=Promise))((function(o,a){function i(e){try{c(r.next(e))}catch(e){a(e)}}function l(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,l)}c((r=r.apply(e,t||[])).next())}))}function i(e,t){var n,r,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function l(l){return function(c){return function(l){if(n)throw new TypeError("Generator is already executing.");for(;a&&(a=0,l[0]&&(i=0)),i;)try{if(n=1,r&&(o=2&l[0]?r.return:l[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,l[1])).done)return o;switch(r=0,o&&(l=[2&l[0],o.value]),l[0]){case 0:case 1:o=l;break;case 4:return i.label++,{value:l[1],done:!1};case 5:i.label++,r=l[1],l=[0];continue;case 7:l=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==l[0]&&2!==l[0])){i=0;continue}if(3===l[0]&&(!o||l[1]>o[0]&&l[1]<o[3])){i.label=l[1];break}if(6===l[0]&&i.label<o[1]){i.label=o[1],o=l;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(l);break}o[2]&&i.ops.pop(),i.trys.pop();continue}l=t.call(e,i)}catch(e){l=[6,e],r=0}finally{n=o=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}([l,c])}}}function l(e,t,n){if(n||2===arguments.length)for(var r,o=0,a=t.length;o<a;o++)!r&&o in t||(r||(r=Array.prototype.slice.call(t,0,o)),r[o]=t[o]);return e.concat(r||Array.prototype.slice.call(t))}!function(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var r=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===n&&r.firstChild?r.insertBefore(o,r.firstChild):r.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}('@import url("https://fonts.googleapis.com/css?family=Source+Code+Pro&display=swap");\n#index_terminalContainer__4seT6 {\n --control-default-bg-color: #ccc;\n --control-close-bg-color: #fc5b57;\n --control-minimize-bg-color: #e5bf3c;\n --control-maximize-bg-color: #57c038;\n}\n\n.index_controls__sXDjs {\n text-align: left;\n height: 26px;\n position: relative;\n top: 4px;\n margin-left: 4px;\n}\n.index_controls__sXDjs .index_consoleCtrl__DI2H1 {\n display: inline-block;\n width: 13px;\n height: 13px;\n margin: 0 3px;\n border-radius: 50%;\n background: var(--control-default-bg-color);\n}\n.index_controls__sXDjs .index_close__XGN9U {\n background: var(--control-close-bg-color);\n}\n.index_controls__sXDjs .index_minimize__pZYTU {\n background: var(--control-minimize-bg-color);\n}\n.index_controls__sXDjs .index_maximize__szRK7 {\n background: var(--control-maximize-bg-color);\n}\n\n.index_editor__JoDSg {\n text-align: left;\n height: 100%;\n padding: 10px 15px;\n overflow-wrap: break-word;\n overflow-y: scroll;\n outline: none;\n font-family: "Source Code Pro", monospace;\n font-size: 18px;\n line-height: 22px;\n border-bottom-left-radius: 5px;\n border-bottom-right-radius: 5px;\n}\n.index_editor__JoDSg .index_lineText__j6qNj {\n display: inline;\n position: relative;\n top: -1px;\n margin-left: 8px;\n}\n.index_editor__JoDSg .index_preWhiteSpace__7KwuG {\n white-space: pre-wrap;\n}\n.index_editor__JoDSg .index_caret__VS4iV {\n position: relative;\n}\n.index_editor__JoDSg .index_caret__VS4iV .index_caretAfter__6aXPx {\n content: "";\n position: absolute;\n top: 2px;\n width: 10px;\n height: 22px;\n z-index: 10;\n}\n@-moz-keyframes index_blink__FJp0- {\n 0% {\n opacity: 0;\n -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";\n filter: alpha(opacity=0);\n }\n 100% {\n opacity: 1;\n -ms-filter: none;\n filter: none;\n }\n}\n@-webkit-keyframes index_blink__FJp0- {\n 0% {\n opacity: 0;\n -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";\n filter: alpha(opacity=0);\n }\n 100% {\n opacity: 1;\n -ms-filter: none;\n filter: none;\n }\n}\n@-o-keyframes index_blink__FJp0- {\n 0% {\n opacity: 0;\n -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";\n filter: alpha(opacity=0);\n }\n 100% {\n opacity: 1;\n -ms-filter: none;\n filter: none;\n }\n}\n@keyframes index_blink__FJp0- {\n 0% {\n opacity: 0;\n -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";\n filter: alpha(opacity=0);\n }\n 100% {\n opacity: 1;\n -ms-filter: none;\n filter: none;\n }\n}\n.index_editor__JoDSg a {\n color: #1a87b5;\n}\n\n.index_editorWithTopBar__L6XKw {\n height: calc(100% - 46px);\n}\n\n.index_curvedTop__LX9XS {\n border-top-left-radius: 5px;\n border-top-right-radius: 5px;\n}\n\n#index_terminalContainer__4seT6 {\n height: 100%;\n}\n\n.index_terminal__teubZ {\n height: 100%;\n width: 100%;\n margin: auto;\n border-radius: 5px;\n}');var c={terminalContainer:"index_terminalContainer__4seT6",controls:"index_controls__sXDjs",consoleCtrl:"index_consoleCtrl__DI2H1",close:"index_close__XGN9U",minimize:"index_minimize__pZYTU",maximize:"index_maximize__szRK7",editor:"index_editor__JoDSg",lineText:"index_lineText__j6qNj",preWhiteSpace:"index_preWhiteSpace__7KwuG",caret:"index_caret__VS4iV",caretAfter:"index_caretAfter__6aXPx",editorWithTopBar:"index_editorWithTopBar__L6XKw",curvedTop:"index_curvedTop__LX9XS",terminal:"index_terminal__teubZ",blink:"index_blink__FJp0-"},s=r.createContext(null),u=function(e){var t=e.children;return r.createElement(s.Provider,{value:c},t)},d={dark:{themeBGColor:"#022833",themeToolbarColor:"#131519",themeColor:"#839496",themePromptColor:"#a917a8"},light:{themeBGColor:"#fdf6e4",themeToolbarColor:"#d8d8d8",themeColor:"#333333",themePromptColor:"#a917a8"},dracula:{themeBGColor:"#272B36",themeToolbarColor:"#DBDBDB",themeColor:"#FFFEFC",themePromptColor:"#a917a8"},"material-dark":{themeBGColor:"#151515",themeToolbarColor:"#424242",themeColor:"#fff",themePromptColor:"#42A5F5"},"material-light":{themeBGColor:"#fafafa",themeToolbarColor:"#424242",themeColor:"#151515",themePromptColor:"#42A5F5"},"material-ocean":{themeBGColor:"#263238",themeToolbarColor:"#37474F",themeColor:"#fff",themePromptColor:"#C3D82C"},matrix:{themeBGColor:"#0D0208",themeToolbarColor:"#0D0208",themeColor:"#00FF41",themePromptColor:"#008F11"}},m=r.createContext(null),f=function(e){var t=e.children,n=o(o({},d),t.props.themes||{}),a=n[t.props.theme]||n.light;return r.createElement(m.Provider,{value:a},t)},p=function(e,t,n){var o=function(t){e.current&&!e.current.contains(t.target)?n(!1):n(!0)};r.useEffect((function(){return document.addEventListener("mousedown",o),function(){document.removeEventListener("mousedown",o)}}))};function C(e){var t=r.useContext(s),n=e.controlButtonLabels,o=e.showControlButtons?n.map((function(e){return r.createElement("div",{key:e,className:"".concat(t.consoleCtrl," ").concat(t[e])})})):null;return r.createElement("div",{className:t.controls},o)}var x=function(){function e(){}return e.splitStringAtIndex=function(e,t){return e?[e.substring(0,t),e.substring(t)]:["",""]},e}(),h=r.createContext(null);function _(e,t){switch(e.currentLineStatus){case"processing":switch(t.type){case"CANCEL":return o(o({},e),{bufferedContent:t.cancelNode,editorInput:"",currentLineStatus:"idle",caretPosition:0,textBeforeCaret:"",textAfterCaret:""});case"SUBMIT_SUCCESS":return o(o({},e),{bufferedContent:t.successNode,currentLineStatus:"success",editorInput:"",caretPosition:0,textBeforeCaret:"",textAfterCaret:""});default:return e}case"success":case"error":case"idle":switch(t.type){case"CLEAR_BY_COMMAND":return o(o({},e),{bufferedContent:null,editorInput:"",currentLineStatus:"idle",caretPosition:0,textBeforeCaret:"",textAfterCaret:""});case"CLEAR":return o(o({},e),{bufferedContent:null});case"CANCEL":return o(o({},e),{bufferedContent:t.cancelNode,editorInput:"",currentLineStatus:"idle",caretPosition:0,textBeforeCaret:"",textAfterCaret:""});case"SUBMIT":var n=t.command,r=n?l(l([],e.commandsHistory,!0),[n],!1):e.commandsHistory;return o(o({},e),{commandsHistory:r,bufferedContent:t.loaderNode,currentLineStatus:"processing",editorInput:"",caretPosition:0,textBeforeCaret:"",textAfterCaret:""});case"TYPE":var a=v(e),i=a[0],c=a[1],s=b(h=i+t.text+c,g=e.caretPosition+1),u=s[0],d=s[1];return o(o({},e),{caretPosition:g,editorInput:h,textAfterCaret:d,textBeforeCaret:u});case"DELETE":var m=v(e),f=(i=m[0],c=m[1],b(h=i.slice(0,-1)+c,g=e.caretPosition-1));u=f[0],d=f[1];return o(o({},e),{editorInput:h,caretPosition:g,textAfterCaret:d,textBeforeCaret:u});case"COPY":return e;case"PASTE":var p=v(e),C=(i=p[0],c=p[1],b(h=i+t.text+c,g=e.caretPosition+t.text.length));u=C[0],d=C[1];return o(o({},e),{editorInput:h,caretPosition:g,textAfterCaret:d,textBeforeCaret:u});case"ARROW_UP":var x=b(h=t.previousCommand,g=t.previousCommand.length);u=x[0],d=x[1];return o(o({},e),{editorInput:h,caretPosition:g,textAfterCaret:d,textBeforeCaret:u});case"ARROW_DOWN":var h,_=b(h=t.nextCommand,g=t.nextCommand.length);u=_[0],d=_[1];return o(o({},e),{editorInput:h,caretPosition:g,textAfterCaret:d,textBeforeCaret:u});case"RESET_CARET_POSITION":return o(o({},e),{textBeforeCaret:"",textAfterCaret:"",caretPosition:0});case"ARROW_LEFT":var g=e.caretPosition-1,y=b(e.editorInput,g);u=y[0],d=y[1];return o(o({},e),{caretPosition:g,textAfterCaret:d,textBeforeCaret:u});case"ARROW_RIGHT":g=e.caretPosition+1;var E=b(e.editorInput,g);u=E[0],d=E[1];return o(o({},e),{caretPosition:g,textAfterCaret:d,textBeforeCaret:u});default:throw new Error("Unhandled action type: ".concat(JSON.stringify(t)))}default:return e}}function v(e){var t=x.splitStringAtIndex(e.editorInput,e.caretPosition);return[t[0],t[1]]}function b(e,t){var n=x.splitStringAtIndex(e,t);return[n[0],n[1]]}var g={bufferedContent:null,commandsHistory:[],editorInput:"",currentLineStatus:"idle",caretPosition:0,textBeforeCaret:"",textAfterCaret:""};function y(){var e=r.useContext(h);if(void 0===e)throw new Error("useTerminal must be used within a TerminalContextProvider");return e}var E=function(e,n,o,l,c,u,d){var f=r.useContext(s),p=r.useContext(m),C=y().store,x="processing"!==C.currentLineStatus?r.createElement(r.Fragment,null,r.createElement("span",{style:{color:p.themePromptColor}},o),r.createElement("div",{className:f.lineText},r.createElement("span",{className:f.preWhiteSpace},C.textBeforeCaret),n&&e?r.createElement("span",{className:f.caret},r.createElement("span",{className:f.caretAfter,style:{background:p.themeColor}})):null,r.createElement("span",{className:f.preWhiteSpace},C.textAfterCaret))):r.createElement(r.Fragment,null,r.createElement("div",{className:f.lineText},n&&e?r.createElement("span",{className:f.caret},r.createElement("span",{className:f.caretAfter,style:{background:p.themeColor}})):null));return function(e){var n=e.consoleFocused,o=e.enableInput,l=e.commands,c=e.defaultHandler,u=e.errorMessage,d=e.prompt,f=r.useContext(s),p=r.useContext(m),C=y(),x=C.getPreviousCommand,h=C.getNextCommand,_=C.store,v=C.send,b=r.useRef(null),g=r.useCallback((function(){b.current&&b.current.cancel();var e=r.createElement(r.Fragment,null,_.bufferedContent,r.createElement("span",{style:{color:p.themePromptColor}},d),r.createElement("span",{className:"".concat(f.lineText," ").concat(f.preWhiteSpace)},_.editorInput),r.createElement("br",null));"processing"===_.currentLineStatus&&(e=r.createElement(r.Fragment,null,_.bufferedContent)),v({type:"CANCEL",cancelNode:e})}),[d,v,_.bufferedContent,_.currentLineStatus,_.editorInput,f.lineText,f.preWhiteSpace,p.themePromptColor]),E=r.useCallback((function(){return a(void 0,void 0,void 0,(function(){var e,n,o,a,s,m,C,x;return i(this,(function(i){switch(i.label){case 0:return e=_.editorInput.trim().split(" "),n=e[0],o=e.slice(1),a="","clear"===n||"cls"===n?(v({type:"CLEAR_BY_COMMAND"}),[2]):(s=r.createElement(r.Fragment,null,_.bufferedContent,r.createElement("span",{style:{color:p.themePromptColor}},d),r.createElement("span",{className:"".concat(f.lineText," ").concat(f.preWhiteSpace)},_.editorInput),r.createElement("br",null)),v({type:"SUBMIT",loaderNode:s,command:n}),_.editorInput?(m=o.join(" "),n&&l[n]?"function"!=typeof(C=l[n])?[3,2]:(b.current=new t.CancelablePromise((function(e){e(C(m))})),[4,b.current]):[3,4]):[3,9]);case 1:return a=i.sent(),[3,3];case 2:a=C,i.label=3;case 3:return[3,9];case 4:return"function"!=typeof c?[3,6]:(b.current=new t.CancelablePromise((function(e){e(c(n,m))})),[4,b.current]);case 5:return a=i.sent(),[3,9];case 6:return"function"!=typeof u?[3,8]:(b.current=new t.CancelablePromise((function(e){e(u(n,m))})),[4,b.current]);case 7:return a=i.sent(),[3,9];case 8:a=u,i.label=9;case 9:return x=r.createElement(r.Fragment,null,_.bufferedContent,r.createElement("span",{style:{color:p.themePromptColor}},d),r.createElement("span",{className:"".concat(f.lineText," ").concat(f.preWhiteSpace)},_.editorInput),a?r.createElement("span",null,r.createElement("br",null),a):null,r.createElement("br",null)),v({type:"SUBMIT_SUCCESS",successNode:x}),[2]}}))}))}),[v,_.bufferedContent,_.editorInput]),T=r.useCallback((function(e){if(n&&o){e.preventDefault();var t=e.key,r=null;if("Enter"===t)"processing"!==_.currentLineStatus&&E();else if("Backspace"===t)_.editorInput&&0!==_.editorInput.length&&v({type:"DELETE"});else if("ArrowUp"===t)(r=x())&&v({type:"ARROW_UP",previousCommand:r});else if("ArrowDown"===t)r=h(),v(r?{type:"ARROW_DOWN",nextCommand:r}:{type:"RESET_CARET_POSITION"});else if("ArrowLeft"===t)_.caretPosition>0&&v({type:"ARROW_LEFT"}),r=_.editorInput;else if("ArrowRight"===t)_.caretPosition<_.editorInput.length&&v({type:"ARROW_RIGHT"}),r=_.editorInput;else if((e.metaKey||e.ctrlKey)&&"l"===t.toLowerCase())v({type:"CLEAR"});else if((e.metaKey||e.ctrlKey)&&e.shiftKey&&"v"===t.toLowerCase())navigator.clipboard.readText().then((function(e){v({type:"PASTE",text:e})}));else if((e.metaKey||e.ctrlKey)&&e.shiftKey&&"c"===t.toLowerCase()){var a=window.getSelection().toString();navigator.clipboard.writeText(a).then((function(){v({type:"COPY"})}))}else(e.metaKey||e.ctrlKey)&&"c"===t.toLowerCase()?(b.current&&b.current.cancel(),g()):t&&1===t.length&&v({type:"TYPE",text:t})}}),[g,n,o,h,x,E,v,_.caretPosition,_.editorInput]);r.useEffect((function(){return document.addEventListener("keydown",T),function(){document.removeEventListener("keydown",T)}}),[T])}({commands:l,errorMessage:c,defaultHandler:d,enableInput:u,prompt:o,consoleFocused:n}),x},T=function(e,t){r.useEffect((function(){t.current&&(t.current.scrollTop=t.current.scrollHeight)}),[e])};function P(e){var t=r.useRef(null),n=r.useContext(s),o=r.useContext(m),a=y().store;T(a.bufferedContent,t);var i=e.enableInput,l=e.caret,c=e.consoleFocused,u=e.prompt,d=e.commands,f=e.welcomeMessage,p=e.errorMessage,C=e.showControlBar,x=e.defaultHandler,h=E(l,c,u,d,p,i,x);return r.createElement("div",{id:"terminalEditor",ref:t,className:"".concat(n.editor," ").concat(C?null:n.curvedTop," ").concat(C?n.editorWithTopBar:null),style:{background:o.themeBGColor}},f,a.bufferedContent,h)}function w(e){var t=r.useRef(null),n=r.useState(!0),o=n[0],a=n[1],i=r.useContext(s),l=r.useContext(m);p(t,o,a);var c=e.caret,u=void 0===c||c,d=e.theme,f=void 0===d?"light":d,x=e.showControlBar,h=void 0===x||x,_=e.showControlButtons,v=void 0===_||_,b=e.controlButtonLabels,g=void 0===b?["close","minimize","maximize"]:b,y=e.prompt,E=void 0===y?">>>":y,T=e.commands,w=void 0===T?{}:T,S=e.welcomeMessage,A=void 0===S?"":S,I=e.errorMessage,B=void 0===I?"not found!":I,N=e.enableInput,L=void 0===N||N,k=e.defaultHandler,R=void 0===k?null:k,D=h?r.createElement(C,{consoleFocused:o,showControlButtons:v,controlButtonLabels:g}):null,O=r.createElement(P,{caret:u,consoleFocused:o,prompt:E,commands:w,welcomeMessage:A,errorMessage:B,enableInput:L,showControlBar:h,defaultHandler:R});return r.createElement("div",{ref:t,id:i.terminalContainer,className:i["theme--".concat(f)],"data-testid":"terminal"},r.createElement("div",{className:"".concat(i.terminal),style:{background:l.themeToolbarColor,color:l.themeColor}},D,O))}function S(e){var t=e.children;return r.createElement(u,null,r.createElement(f,null,t))}function A(e){return r.createElement(S,null,r.createElement(w,o({},e)))}var I=function(e){var t=e.children,n=r.useState(null),o=n[0],a=n[1],i=r.useReducer(_,g),l=i[0],c=i[1];r.useEffect((function(){a(l.commandsHistory.length)}),[l.commandsHistory]);var s=r.useMemo((function(){return{send:c,store:l,getPreviousCommand:function(){if(0===o)return 0===l.commandsHistory.length?"":l.commandsHistory[0];var e=l.commandsHistory[o-1];return o>0&&a(o-1),e},getNextCommand:function(){if(o+1<=l.commandsHistory.length){var e=l.commandsHistory[o+1];return a(o+1),e}return""}}}),[o,l]);return r.createElement(h.Provider,{value:s},t)},B={ReactTerminal:A,TerminalContextProvider:I};exports.ReactTerminal=A,exports.TerminalContextProvider=I,exports.default=B; | ||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("cancelable-promise");function n(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 r=n(e),o=function(){return o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},o.apply(this,arguments)};function a(e,t,n,r){return new(n||(n=Promise))((function(o,a){function i(e){try{c(r.next(e))}catch(e){a(e)}}function l(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,l)}c((r=r.apply(e,t||[])).next())}))}function i(e,t){var n,r,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function l(l){return function(c){return function(l){if(n)throw new TypeError("Generator is already executing.");for(;a&&(a=0,l[0]&&(i=0)),i;)try{if(n=1,r&&(o=2&l[0]?r.return:l[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,l[1])).done)return o;switch(r=0,o&&(l=[2&l[0],o.value]),l[0]){case 0:case 1:o=l;break;case 4:return i.label++,{value:l[1],done:!1};case 5:i.label++,r=l[1],l=[0];continue;case 7:l=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==l[0]&&2!==l[0])){i=0;continue}if(3===l[0]&&(!o||l[1]>o[0]&&l[1]<o[3])){i.label=l[1];break}if(6===l[0]&&i.label<o[1]){i.label=o[1],o=l;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(l);break}o[2]&&i.ops.pop(),i.trys.pop();continue}l=t.call(e,i)}catch(e){l=[6,e],r=0}finally{n=o=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}([l,c])}}}!function(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var r=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===n&&r.firstChild?r.insertBefore(o,r.firstChild):r.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}('@import url("https://fonts.googleapis.com/css?family=Source+Code+Pro&display=swap");\n#index_terminalContainer__4seT6 {\n --control-default-bg-color: #ccc;\n --control-close-bg-color: #fc5b57;\n --control-minimize-bg-color: #e5bf3c;\n --control-maximize-bg-color: #57c038;\n}\n\n.index_controls__sXDjs {\n text-align: left;\n height: 26px;\n position: relative;\n top: 4px;\n margin-left: 4px;\n}\n.index_controls__sXDjs .index_consoleCtrl__DI2H1 {\n display: inline-block;\n width: 13px;\n height: 13px;\n margin: 0 3px;\n border-radius: 50%;\n background: var(--control-default-bg-color);\n}\n.index_controls__sXDjs .index_close__XGN9U {\n background: var(--control-close-bg-color);\n}\n.index_controls__sXDjs .index_minimize__pZYTU {\n background: var(--control-minimize-bg-color);\n}\n.index_controls__sXDjs .index_maximize__szRK7 {\n background: var(--control-maximize-bg-color);\n}\n\n.index_editor__JoDSg {\n text-align: left;\n height: 100%;\n padding: 10px 15px;\n overflow-wrap: break-word;\n overflow-y: scroll;\n outline: none;\n font-family: "Source Code Pro", monospace;\n font-size: 18px;\n line-height: 22px;\n border-bottom-left-radius: 5px;\n border-bottom-right-radius: 5px;\n}\n.index_editor__JoDSg .index_lineText__j6qNj {\n display: inline;\n position: relative;\n top: -1px;\n margin-left: 8px;\n}\n.index_editor__JoDSg .index_preWhiteSpace__7KwuG {\n white-space: pre-wrap;\n}\n.index_editor__JoDSg .index_caret__VS4iV {\n position: relative;\n}\n.index_editor__JoDSg .index_caret__VS4iV .index_caretAfter__6aXPx {\n content: "";\n position: absolute;\n top: 2px;\n width: 10px;\n height: 22px;\n z-index: 10;\n}\n@-moz-keyframes index_blink__FJp0- {\n 0% {\n opacity: 0;\n -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";\n filter: alpha(opacity=0);\n }\n 100% {\n opacity: 1;\n -ms-filter: none;\n filter: none;\n }\n}\n@-webkit-keyframes index_blink__FJp0- {\n 0% {\n opacity: 0;\n -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";\n filter: alpha(opacity=0);\n }\n 100% {\n opacity: 1;\n -ms-filter: none;\n filter: none;\n }\n}\n@-o-keyframes index_blink__FJp0- {\n 0% {\n opacity: 0;\n -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";\n filter: alpha(opacity=0);\n }\n 100% {\n opacity: 1;\n -ms-filter: none;\n filter: none;\n }\n}\n@keyframes index_blink__FJp0- {\n 0% {\n opacity: 0;\n -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";\n filter: alpha(opacity=0);\n }\n 100% {\n opacity: 1;\n -ms-filter: none;\n filter: none;\n }\n}\n.index_editor__JoDSg a {\n color: #1a87b5;\n}\n\n.index_editorWithTopBar__L6XKw {\n height: calc(100% - 46px);\n}\n\n.index_curvedTop__LX9XS {\n border-top-left-radius: 5px;\n border-top-right-radius: 5px;\n}\n\n#index_terminalContainer__4seT6 {\n height: 100%;\n}\n\n.index_terminal__teubZ {\n height: 100%;\n width: 100%;\n margin: auto;\n border-radius: 5px;\n}');var l={terminalContainer:"index_terminalContainer__4seT6",controls:"index_controls__sXDjs",consoleCtrl:"index_consoleCtrl__DI2H1",close:"index_close__XGN9U",minimize:"index_minimize__pZYTU",maximize:"index_maximize__szRK7",editor:"index_editor__JoDSg",lineText:"index_lineText__j6qNj",preWhiteSpace:"index_preWhiteSpace__7KwuG",caret:"index_caret__VS4iV",caretAfter:"index_caretAfter__6aXPx",editorWithTopBar:"index_editorWithTopBar__L6XKw",curvedTop:"index_curvedTop__LX9XS",terminal:"index_terminal__teubZ",blink:"index_blink__FJp0-"},c=r.createContext(null),s=function(e){var t=e.children;return r.createElement(c.Provider,{value:l},t)},u={dark:{themeBGColor:"#022833",themeToolbarColor:"#131519",themeColor:"#839496",themePromptColor:"#a917a8"},light:{themeBGColor:"#fdf6e4",themeToolbarColor:"#d8d8d8",themeColor:"#333333",themePromptColor:"#a917a8"},dracula:{themeBGColor:"#272B36",themeToolbarColor:"#DBDBDB",themeColor:"#FFFEFC",themePromptColor:"#a917a8"},"material-dark":{themeBGColor:"#151515",themeToolbarColor:"#424242",themeColor:"#fff",themePromptColor:"#42A5F5"},"material-light":{themeBGColor:"#fafafa",themeToolbarColor:"#424242",themeColor:"#151515",themePromptColor:"#42A5F5"},"material-ocean":{themeBGColor:"#263238",themeToolbarColor:"#37474F",themeColor:"#fff",themePromptColor:"#C3D82C"},matrix:{themeBGColor:"#0D0208",themeToolbarColor:"#0D0208",themeColor:"#00FF41",themePromptColor:"#008F11"}},d=r.createContext(null),m=function(e){var t=e.children,n=o(o({},u),t.props.themes||{}),a=n[t.props.theme]||n.light;return r.createElement(d.Provider,{value:a},t)},f=function(e,t,n){var o=function(t){e.current&&!e.current.contains(t.target)?n(!1):n(!0)};r.useEffect((function(){return document.addEventListener("mousedown",o),function(){document.removeEventListener("mousedown",o)}}))};function p(e){var t=r.useContext(c),n=e.controlButtonLabels,o=e.showControlButtons?n.map((function(e){return r.createElement("div",{key:e,className:"".concat(t.consoleCtrl," ").concat(t[e])})})):null;return r.createElement("div",{className:t.controls},o)}var x=["clear","cls"],C=function(e){return x.includes(e)},h=function(){function e(){}return e.splitStringAtIndex=function(e,t){return e?[e.substring(0,t),e.substring(t)]:["",""]},e}(),_=r.createContext(null);function b(e,t){switch(e.currentLineStatus){case"processing":switch(t.type){case"CANCEL":return o(o({},e),{bufferedContent:t.cancelNode,editorInput:"",currentLineStatus:"idle",caretPosition:0,textBeforeCaret:"",textAfterCaret:""});case"SUBMIT_SUCCESS":return o(o({},e),{bufferedContent:t.successNode,currentLineStatus:"success",editorInput:"",caretPosition:0,textBeforeCaret:"",textAfterCaret:""});default:return e}case"success":case"error":case"idle":switch(t.type){case"CLEAR":return o(o({},e),{bufferedContent:null});case"CANCEL":return o(o({},e),{bufferedContent:t.cancelNode,editorInput:"",currentLineStatus:"idle",caretPosition:0,textBeforeCaret:"",textAfterCaret:""});case"SUBMIT":var n=t.command,r=e.commandsHistory;return n&&n!==r[r.length-1]&&r.push(n),C(n)?o(o({},e),{bufferedContent:null,editorInput:"",currentLineStatus:"idle",caretPosition:0,textBeforeCaret:"",textAfterCaret:""}):o(o({},e),{commandsHistory:r,bufferedContent:t.loaderNode,currentLineStatus:"processing",editorInput:"",caretPosition:0,textBeforeCaret:"",textAfterCaret:""});case"TYPE":var a=v(e),i=a[0],l=a[1],c=g(h=i+t.text+l,b=e.caretPosition+1),s=c[0],u=c[1];return o(o({},e),{caretPosition:b,editorInput:h,textAfterCaret:u,textBeforeCaret:s});case"DELETE":var d=v(e),m=(i=d[0],l=d[1],g(h=i.slice(0,-1)+l,b=e.caretPosition-1));s=m[0],u=m[1];return o(o({},e),{editorInput:h,caretPosition:b,textAfterCaret:u,textBeforeCaret:s});case"COPY":return e;case"PASTE":var f=v(e),p=(i=f[0],l=f[1],g(h=i+t.text+l,b=e.caretPosition+t.text.length));s=p[0],u=p[1];return o(o({},e),{editorInput:h,caretPosition:b,textAfterCaret:u,textBeforeCaret:s});case"ARROW_UP":var x=g(h=t.previousCommand,b=t.previousCommand.length);s=x[0],u=x[1];return o(o({},e),{editorInput:h,caretPosition:b,textAfterCaret:u,textBeforeCaret:s});case"ARROW_DOWN":var h,_=g(h=t.nextCommand,b=t.nextCommand.length);s=_[0],u=_[1];return o(o({},e),{editorInput:h,caretPosition:b,textAfterCaret:u,textBeforeCaret:s});case"RESET_CARET_POSITION":return o(o({},e),{textBeforeCaret:"",textAfterCaret:"",caretPosition:0});case"ARROW_LEFT":var b=e.caretPosition-1,y=g(e.editorInput,b);s=y[0],u=y[1];return o(o({},e),{caretPosition:b,textAfterCaret:u,textBeforeCaret:s});case"ARROW_RIGHT":b=e.caretPosition+1;var E=g(e.editorInput,b);s=E[0],u=E[1];return o(o({},e),{caretPosition:b,textAfterCaret:u,textBeforeCaret:s});default:throw new Error("Unhandled action type: ".concat(JSON.stringify(t)))}default:return e}}function v(e){var t=h.splitStringAtIndex(e.editorInput,e.caretPosition);return[t[0],t[1]]}function g(e,t){var n=h.splitStringAtIndex(e,t);return[n[0],n[1]]}var y={bufferedContent:null,commandsHistory:[],editorInput:"",currentLineStatus:"idle",caretPosition:0,textBeforeCaret:"",textAfterCaret:""};function E(){var e=r.useContext(_);if(void 0===e)throw new Error("useTerminal must be used within a TerminalContextProvider");return e}var T=function(e,n,o,l,s,u,m){var f=r.useContext(c),p=r.useContext(d),x=E().store,h="processing"!==x.currentLineStatus?r.createElement(r.Fragment,null,r.createElement("span",{style:{color:p.themePromptColor}},o),r.createElement("div",{className:f.lineText},r.createElement("span",{className:f.preWhiteSpace},x.textBeforeCaret),n&&e?r.createElement("span",{className:f.caret},r.createElement("span",{className:f.caretAfter,style:{background:p.themeColor}})):null,r.createElement("span",{className:f.preWhiteSpace},x.textAfterCaret))):r.createElement(r.Fragment,null,r.createElement("div",{className:f.lineText},n&&e?r.createElement("span",{className:f.caret},r.createElement("span",{className:f.caretAfter,style:{background:p.themeColor}})):null));return function(e){var n=e.consoleFocused,o=e.enableInput,l=e.commands,s=e.defaultHandler,u=e.errorMessage,m=e.prompt,f=r.useContext(c),p=r.useContext(d),x=E(),h=x.getPreviousCommand,_=x.getNextCommand,b=x.store,v=x.send,g=r.useRef(null),y=r.useCallback((function(){g.current&&g.current.cancel();var e=r.createElement(r.Fragment,null,b.bufferedContent,r.createElement("span",{style:{color:p.themePromptColor}},m),r.createElement("span",{className:"".concat(f.lineText," ").concat(f.preWhiteSpace)},b.editorInput),r.createElement("br",null));"processing"===b.currentLineStatus&&(e=r.createElement(r.Fragment,null,b.bufferedContent)),v({type:"CANCEL",cancelNode:e})}),[m,v,b.bufferedContent,b.currentLineStatus,b.editorInput,f.lineText,f.preWhiteSpace,p.themePromptColor]),T=r.useCallback((function(){return a(void 0,void 0,void 0,(function(){var e,n,o,a,c,d,x,h,_;return i(this,(function(i){switch(i.label){case 0:return e=b.editorInput.trim().split(" "),n=e[0],o=e.slice(1),a=b.editorInput.trim(),c="",d=r.createElement(r.Fragment,null,b.bufferedContent,r.createElement("span",{style:{color:p.themePromptColor}},m),r.createElement("span",{className:"".concat(f.lineText," ").concat(f.preWhiteSpace)},b.editorInput),r.createElement("br",null)),v({type:"SUBMIT",loaderNode:d,command:a}),C(a)?[2]:b.editorInput?(x=o.join(" "),a&&l[a]?"function"!=typeof(h=l[a])?[3,2]:(g.current=new t.CancelablePromise((function(e){e(h(x))})),[4,g.current]):[3,4]):[3,9];case 1:return c=i.sent(),[3,3];case 2:c=h,i.label=3;case 3:return[3,9];case 4:return"function"!=typeof s?[3,6]:(g.current=new t.CancelablePromise((function(e){e(s(n,x))})),[4,g.current]);case 5:return c=i.sent(),[3,9];case 6:return"function"!=typeof u?[3,8]:(g.current=new t.CancelablePromise((function(e){e(u(n,x))})),[4,g.current]);case 7:return c=i.sent(),[3,9];case 8:c=u,i.label=9;case 9:return _=r.createElement(r.Fragment,null,b.bufferedContent,r.createElement("span",{style:{color:p.themePromptColor}},m),r.createElement("span",{className:"".concat(f.lineText," ").concat(f.preWhiteSpace)},b.editorInput),c?r.createElement("span",null,r.createElement("br",null),c):null,r.createElement("br",null)),v({type:"SUBMIT_SUCCESS",successNode:_}),[2]}}))}))}),[v,b.bufferedContent,b.editorInput]),P=r.useCallback((function(e){if(n&&o){e.preventDefault();var t=e.key,r=null;if("Enter"===t)"processing"!==b.currentLineStatus&&T();else if("Backspace"===t)b.editorInput&&0!==b.editorInput.length&&v({type:"DELETE"});else if("ArrowUp"===t)(r=h())&&v({type:"ARROW_UP",previousCommand:r});else if("ArrowDown"===t)r=_(),v(r?{type:"ARROW_DOWN",nextCommand:r}:{type:"RESET_CARET_POSITION"});else if("ArrowLeft"===t)b.caretPosition>0&&v({type:"ARROW_LEFT"}),r=b.editorInput;else if("ArrowRight"===t)b.caretPosition<b.editorInput.length&&v({type:"ARROW_RIGHT"}),r=b.editorInput;else if((e.metaKey||e.ctrlKey)&&"l"===t.toLowerCase())v({type:"CLEAR"});else if((e.metaKey||e.ctrlKey)&&e.shiftKey&&"v"===t.toLowerCase())navigator.clipboard.readText().then((function(e){v({type:"PASTE",text:e})}));else if((e.metaKey||e.ctrlKey)&&e.shiftKey&&"c"===t.toLowerCase()){var a=window.getSelection().toString();navigator.clipboard.writeText(a).then((function(){v({type:"COPY"})}))}else(e.metaKey||e.ctrlKey)&&"c"===t.toLowerCase()?(g.current&&g.current.cancel(),y()):t&&1===t.length&&v({type:"TYPE",text:t})}}),[y,n,o,_,h,T,v,b.caretPosition,b.currentLineStatus,b.editorInput]);r.useEffect((function(){return document.addEventListener("keydown",P),function(){document.removeEventListener("keydown",P)}}),[P])}({commands:l,errorMessage:s,defaultHandler:m,enableInput:u,prompt:o,consoleFocused:n}),h},P=function(e,t){r.useEffect((function(){t.current&&(t.current.scrollTop=t.current.scrollHeight)}),[e])};function w(e){var t=r.useRef(null),n=r.useContext(c),o=r.useContext(d),a=E().store;P(a.bufferedContent,t);var i=e.enableInput,l=e.caret,s=e.consoleFocused,u=e.prompt,m=e.commands,f=e.welcomeMessage,p=e.errorMessage,x=e.showControlBar,C=e.defaultHandler,h=T(l,s,u,m,p,i,C);return r.createElement("div",{id:"terminalEditor",ref:t,className:"".concat(n.editor," ").concat(x?null:n.curvedTop," ").concat(x?n.editorWithTopBar:null),style:{background:o.themeBGColor}},f,a.bufferedContent,h)}function S(e){var t=r.useRef(null),n=r.useState(!0),o=n[0],a=n[1],i=r.useContext(c),l=r.useContext(d);f(t,o,a);var s=e.caret,u=void 0===s||s,m=e.theme,x=void 0===m?"light":m,C=e.showControlBar,h=void 0===C||C,_=e.showControlButtons,b=void 0===_||_,v=e.controlButtonLabels,g=void 0===v?["close","minimize","maximize"]:v,y=e.prompt,E=void 0===y?">>>":y,T=e.commands,P=void 0===T?{}:T,S=e.welcomeMessage,I=void 0===S?"":S,A=e.errorMessage,B=void 0===A?"not found!":A,N=e.enableInput,L=void 0===N||N,k=e.defaultHandler,R=void 0===k?null:k,D=h?r.createElement(p,{consoleFocused:o,showControlButtons:b,controlButtonLabels:g}):null,O=r.createElement(w,{caret:u,consoleFocused:o,prompt:E,commands:P,welcomeMessage:I,errorMessage:B,enableInput:L,showControlBar:h,defaultHandler:R});return r.createElement("div",{ref:t,id:i.terminalContainer,className:i["theme--".concat(x)],"data-testid":"terminal"},r.createElement("div",{className:"".concat(i.terminal),style:{background:l.themeToolbarColor,color:l.themeColor}},D,O))}function I(e){var t=e.children;return r.createElement(s,null,r.createElement(m,null,t))}function A(e){return r.createElement(I,null,r.createElement(S,o({},e)))}var B=function(e){var t=e.children,n=r.useState(null),o=n[0],a=n[1],i=r.useReducer(b,y),l=i[0],c=i[1];r.useEffect((function(){a(l.commandsHistory.length)}),[l.commandsHistory.length]);var s=r.useMemo((function(){return{send:c,store:l,getPreviousCommand:function(){if(0===o)return 0===l.commandsHistory.length?"":l.commandsHistory[0];var e=l.commandsHistory[o-1];return o>0&&a(o-1),e},getNextCommand:function(){if(o+1<=l.commandsHistory.length){var e=l.commandsHistory[o+1];return a(o+1),e}return""}}}),[o,l]);return r.createElement(_.Provider,{value:s},t)},N={ReactTerminal:A,TerminalContextProvider:B};exports.ReactTerminal=A,exports.TerminalContextProvider=B,exports.default=N; |
@@ -6,3 +6,3 @@ { | ||
}, | ||
"version": "0.0.3", | ||
"version": "0.0.4", | ||
"description": "A fork of the the 'react-terminal' package, with some extra features - react-terminal-plus", | ||
@@ -9,0 +9,0 @@ "main": "dist/index.js", |
28
3.7%48150
-0.18%372
-0.53%