|
|
@ -84,6 +84,7 @@ export const RemixUiTerminal = (props: RemixUiTerminalProps) => { |
|
|
|
// terminal inputRef
|
|
|
|
// terminal inputRef
|
|
|
|
const inputEl = useRef(null) |
|
|
|
const inputEl = useRef(null) |
|
|
|
const messagesEndRef = useRef(null) |
|
|
|
const messagesEndRef = useRef(null) |
|
|
|
|
|
|
|
const typeWriterIndexes = useRef([]) |
|
|
|
|
|
|
|
|
|
|
|
// terminal dragable
|
|
|
|
// terminal dragable
|
|
|
|
const panelRef = useRef(null) |
|
|
|
const panelRef = useRef(null) |
|
|
@ -389,6 +390,7 @@ export const RemixUiTerminal = (props: RemixUiTerminalProps) => { |
|
|
|
|
|
|
|
|
|
|
|
const handleClearConsole = () => { |
|
|
|
const handleClearConsole = () => { |
|
|
|
setClearConsole(true) |
|
|
|
setClearConsole(true) |
|
|
|
|
|
|
|
typeWriterIndexes.current = [] |
|
|
|
dispatch({ type: 'clearconsole', payload: [] }) |
|
|
|
dispatch({ type: 'clearconsole', payload: [] }) |
|
|
|
inputEl.current.focus() |
|
|
|
inputEl.current.focus() |
|
|
|
} |
|
|
|
} |
|
|
@ -723,21 +725,36 @@ export const RemixUiTerminal = (props: RemixUiTerminalProps) => { |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
) |
|
|
|
) |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
return ( |
|
|
|
// typeWriterIndexes: we don't want to rerender using typewriter when the react component updates
|
|
|
|
<div className={classNameBlock} data-id="block" key={i}> |
|
|
|
if (x.typewriter && !typeWriterIndexes.current.includes(index)) { |
|
|
|
<span className={x.style}>{msg ? msg.toString() : null}</span> |
|
|
|
typeWriterIndexes.current.push(index) |
|
|
|
</div> |
|
|
|
return ( |
|
|
|
) |
|
|
|
<div className={classNameBlock} data-id="block" key={index}> <span ref={(element) => { |
|
|
|
|
|
|
|
typewrite(element, msg ? msg.toString() : null) |
|
|
|
|
|
|
|
}} className={x.style}></span></div> |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
return ( |
|
|
|
|
|
|
|
<div className={classNameBlock} data-id="block" key={i}><span className={x.style}>{msg ? msg.toString() : null}</span></div> |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}) |
|
|
|
}) |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
if (typeof x.message !== 'function') { |
|
|
|
// typeWriterIndexes: we don't want to rerender using typewriter when the react component updates
|
|
|
|
|
|
|
|
if (x.typewriter && !typeWriterIndexes.current.includes(index)) { |
|
|
|
|
|
|
|
typeWriterIndexes.current.push(index) |
|
|
|
return ( |
|
|
|
return ( |
|
|
|
<div className={classNameBlock} data-id="block" key={index}> |
|
|
|
<div className={classNameBlock} data-id="block" key={index}> <span ref={(element) => { |
|
|
|
{' '} |
|
|
|
typewrite(element, x.message) |
|
|
|
<span className={x.style}> {x.message}</span> |
|
|
|
}} className={x.style}></span></div> |
|
|
|
</div> |
|
|
|
|
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
if (typeof x.message !== 'function') { |
|
|
|
|
|
|
|
return ( |
|
|
|
|
|
|
|
<div className={classNameBlock} data-id="block" key={index}> <span className={x.style}> {x.message}</span></div> |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
})} |
|
|
|
})} |
|
|
@ -778,7 +795,18 @@ export const RemixUiTerminal = (props: RemixUiTerminalProps) => { |
|
|
|
) |
|
|
|
) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
function isHtml(value) { |
|
|
|
const typewrite = (elementsRef, message) => {
|
|
|
|
|
|
|
|
(() => { |
|
|
|
|
|
|
|
let count = 0 |
|
|
|
|
|
|
|
const id = setInterval(() => { |
|
|
|
|
|
|
|
count++ |
|
|
|
|
|
|
|
elementsRef.innerText = message.substr(0, count) |
|
|
|
|
|
|
|
if (message === count) clearInterval(id)
|
|
|
|
|
|
|
|
}, 5) |
|
|
|
|
|
|
|
})() |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function isHtml (value) { |
|
|
|
if (!value.indexOf) return false |
|
|
|
if (!value.indexOf) return false |
|
|
|
return value.indexOf('<div') !== -1 || value.indexOf('<span') !== -1 || value.indexOf('<p') !== -1 || value.indexOf('<label') !== -1 || value.indexOf('<b') !== -1 |
|
|
|
return value.indexOf('<div') !== -1 || value.indexOf('<span') !== -1 || value.indexOf('<p') !== -1 || value.indexOf('<label') !== -1 || value.indexOf('<b') !== -1 |
|
|
|
} |
|
|
|
} |
|
|
|