From fc405fdaa6ca8f4ab8fe6ad7e695ee8e45b95ff2 Mon Sep 17 00:00:00 2001 From: jdecroock Date: Fri, 29 Nov 2024 17:03:27 +0100 Subject: [PATCH 1/6] Revert "Add object interface to JSX types" This reverts commit 9c267a143add4dd2a952c478e7375b83229eecaa. --- src/jsx.d.ts | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/src/jsx.d.ts b/src/jsx.d.ts index 9bb81a15bf..0c1afa2a60 100644 --- a/src/jsx.d.ts +++ b/src/jsx.d.ts @@ -521,15 +521,9 @@ export namespace JSXInternal { export type TargetedPictureInPictureEvent = TargetedEvent; - export type EventHandlerObject = { - handleEvent(e: E): unknown; - }; - - export type EventHandler = - | { - bivarianceHack(event: E): void; - }['bivarianceHack'] - | EventHandlerObject; + export type EventHandler = { + bivarianceHack(event: E): void; + }['bivarianceHack']; export type AnimationEventHandler = EventHandler< TargetedAnimationEvent From 72a0873e794769b6f39df6e753550d0a84c85fe3 Mon Sep 17 00:00:00 2001 From: jdecroock Date: Fri, 29 Nov 2024 17:03:42 +0100 Subject: [PATCH 2/6] Revert "add tests" This reverts commit 4f39d2dc5c0df693cfdd37b859653c0cc102b968. --- test/browser/events.test.js | 48 ------------------------------------- 1 file changed, 48 deletions(-) diff --git a/test/browser/events.test.js b/test/browser/events.test.js index f36e31c31a..ef4f990e49 100644 --- a/test/browser/events.test.js +++ b/test/browser/events.test.js @@ -235,52 +235,4 @@ describe('event handling', () => { .to.have.been.calledTwice.and.to.have.been.calledWith('focusin') .and.calledWith('focusout'); }); - - it('should register EventListenerObject as handler', () => { - let handler = { handleEvent() {} } - - render(
, scratch); - - expect(scratch.childNodes[0].attributes.length).to.equal(0); - - expect(proto.addEventListener).to.have.been.calledOnce; - }); - - it('should call registered EventListenerObject through the .handleEvent() method', () => { - let onclick = sinon.spy(); - - let handler = { - onclick, - handleEvent() { - this.onclick() - } - } - - render(
, scratch); - - fireEvent(scratch.childNodes[0], 'click'); - - expect(onclick).to.have.been.calledOnce; - }); - - it('should keep the registered EventListenerObject referentially identical when calling', () => { - let onclick = sinon.spy(); - - // if the handler object was destructured or otherwise copied, this will fail - let handler = new class { - onclick = onclick - #onClick() { - this.onclick() - } - handleEvent() { - this.#onClick() - } - } - - render(
, scratch); - - fireEvent(scratch.childNodes[0], 'click'); - - expect(onclick).to.have.been.calledOnce; - }); }); From 33f4b8c5794c7e75dba6012c1fb3e76f29cff2f9 Mon Sep 17 00:00:00 2001 From: jdecroock Date: Fri, 29 Nov 2024 17:03:51 +0100 Subject: [PATCH 3/6] Revert "prevent extracting hadleEvent method as an intermediate value" This reverts commit f7a89c8e74001f5d5a02a36dc61d5738ae63893e. --- src/diff/props.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/diff/props.js b/src/diff/props.js index ac23a2cd1d..c0d452c0d5 100644 --- a/src/diff/props.js +++ b/src/diff/props.js @@ -166,8 +166,7 @@ function createEventProxy(useCapture) { } else if (e._dispatched < eventHandler._attached) { return; } - if (options.event) e = options.event(e); - return "handleEvent" in eventHandler ? eventHandler.handleEvent(e) : eventHandler(e); + return ("handleEvent" in eventHandler ? eventHandler.handleEvent : eventHandler)(options.event ? options.event(e) : e); } }; } From 04128cbc9d0c7a166cbe3dcde6925048f0b26586 Mon Sep 17 00:00:00 2001 From: jdecroock Date: Fri, 29 Nov 2024 17:04:00 +0100 Subject: [PATCH 4/6] Revert "Update props.js" This reverts commit 5b99b99da79c2554b412c2cd8a283f0b060d12bc. --- src/diff/props.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/diff/props.js b/src/diff/props.js index c0d452c0d5..316146f0fd 100644 --- a/src/diff/props.js +++ b/src/diff/props.js @@ -166,7 +166,7 @@ function createEventProxy(useCapture) { } else if (e._dispatched < eventHandler._attached) { return; } - return ("handleEvent" in eventHandler ? eventHandler.handleEvent : eventHandler)(options.event ? options.event(e) : e); + return eventHandler(options.event ? options.event(e) : e); } }; } From 005760f29aa1aaa5a375adfabf1adf14d1d95584 Mon Sep 17 00:00:00 2001 From: jdecroock Date: Fri, 29 Nov 2024 17:04:44 +0100 Subject: [PATCH 5/6] Add test for the future --- test/ts/preact.tsx | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/test/ts/preact.tsx b/test/ts/preact.tsx index 43d88336ff..2c1383edd6 100644 --- a/test/ts/preact.tsx +++ b/test/ts/preact.tsx @@ -6,7 +6,8 @@ import { FunctionalComponent, AnyComponent, h, - createRef + createRef, + JSX } from '../../'; interface DummyProps { @@ -381,3 +382,15 @@ h('form', { onSubmit: onSubmit }); h('option', { value: 'foo' }); createElement('option', { value: 'foo' }); + +function Checkbox({ onChange }: JSX.HTMLAttributes) { + function handleChange( + this: void, + event: JSX.TargetedEvent + ) { + onChange?.call(this, event); + // ^ Error here + } + + return ; +} From 8d06f287c14d36b6db268a7386088fdc1685bd79 Mon Sep 17 00:00:00 2001 From: Jovi De Croock Date: Fri, 29 Nov 2024 17:52:11 +0100 Subject: [PATCH 6/6] Update test/ts/preact.tsx --- test/ts/preact.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/test/ts/preact.tsx b/test/ts/preact.tsx index 2c1383edd6..ba617452de 100644 --- a/test/ts/preact.tsx +++ b/test/ts/preact.tsx @@ -389,7 +389,6 @@ function Checkbox({ onChange }: JSX.HTMLAttributes) { event: JSX.TargetedEvent ) { onChange?.call(this, event); - // ^ Error here } return ;