From c75c38b01b3c2e0a98cf3f86e759beca2574c31f Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Thu, 12 Oct 2023 10:22:34 +0800 Subject: [PATCH] Use a typescript is function to extract event target node --- .../templates/article/PdfArticleContainer.tsx | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/packages/web/components/templates/article/PdfArticleContainer.tsx b/packages/web/components/templates/article/PdfArticleContainer.tsx index 03f52a875..210b1b2ae 100644 --- a/packages/web/components/templates/article/PdfArticleContainer.tsx +++ b/packages/web/components/templates/article/PdfArticleContainer.tsx @@ -419,15 +419,25 @@ export default function PdfArticleContainer( } ) - function keyDownHandler(event: globalThis.KeyboardEvent) { + type PossibleInputEventTarget = KeyboardEvent & { + nodeName: string + } + + function isPossibleInputEventTarget( + target: any + ): target is PossibleInputEventTarget { + return ( + 'nodeName' in target && + typeof target.nodeName == 'string' && + target.nodeName + ) + } + + function keyDownHandler(event: KeyboardEvent) { const inputs = ['input', 'select', 'button', 'textarea'] - if ( - event.target && - 'nodeName' in event.target && - typeof event.target.nodeName == 'string' - ) { - const nodeName = (event.target.nodeName as string).toLowerCase() + if (event.target && isPossibleInputEventTarget(event.target)) { + const nodeName = event.target.nodeName.toLowerCase() if (inputs.indexOf(nodeName) != -1) { return }