Skip to content

Commit

Permalink
Remove more compat IE11 stuff
Browse files Browse the repository at this point in the history
  • Loading branch information
JoviDeCroock committed Nov 12, 2024
1 parent 6efe100 commit 1218178
Show file tree
Hide file tree
Showing 10 changed files with 6 additions and 100 deletions.
3 changes: 1 addition & 2 deletions TODO.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
- https://github.com/preactjs/preact/pull/4362
- https://github.com/preactjs/preact/pull/4358
- https://github.com/preactjs/preact/pull/4361
- https://github.com/preactjs/preact/pull/4460
- https://github.com/preactjs/preact/pull/4453
- Backing VNodes
- Enable removing classes from the bundle
- Remove deprecated lifecycle methods
- Try to get rid of DOM pointers
- Separate mount/update paths
Expand Down
6 changes: 1 addition & 5 deletions compat/src/forwardRef.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,7 @@ options._diff = vnode => {
if (oldDiffHook) oldDiffHook(vnode);
};

export const REACT_FORWARD_SYMBOL =
(typeof Symbol != 'undefined' &&
Symbol.for &&
Symbol.for('react.forward_ref')) ||
0xf47;
export const REACT_FORWARD_SYMBOL = Symbol.for('react.forward_ref');

/**
* Pass ref down to a child. This is mainly used in libraries with HOCs that
Expand Down
5 changes: 0 additions & 5 deletions compat/src/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -293,11 +293,6 @@ declare namespace React {
export function flushSync<R>(fn: () => R): R;
export function flushSync<A, R>(fn: (a: A) => R, a: A): R;

export function unstable_batchedUpdates(
callback: (arg?: any) => void,
arg?: any
): void;

export type PropsWithChildren<P = unknown> = P & {
children?: preact.ComponentChildren | undefined;
};
Expand Down
13 changes: 0 additions & 13 deletions compat/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -122,16 +122,6 @@ function findDOMNode(component) {
);
}

/**
* Deprecated way to control batched rendering inside the reconciler, but we
* already schedule in batches inside our rendering code
* @template Arg
* @param {(arg: Arg) => void} callback function that triggers the updated
* @param {Arg} [arg] Optional argument that can be passed to the callback
*/
// eslint-disable-next-line camelcase
const unstable_batchedUpdates = (callback, arg) => callback(arg);

/**
* In React, `flushSync` flushes the entire tree and forces a rerender. It's
* implmented here as a no-op.
Expand Down Expand Up @@ -180,8 +170,6 @@ export {
useDeferredValue,
useSyncExternalStore,
useTransition,
// eslint-disable-next-line camelcase
unstable_batchedUpdates,
StrictMode,
Suspense,
lazy,
Expand Down Expand Up @@ -228,7 +216,6 @@ export default {
memo,
forwardRef,
flushSync,
unstable_batchedUpdates,
StrictMode,
Suspense,
lazy,
Expand Down
2 changes: 1 addition & 1 deletion compat/src/internal.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ export interface FunctionComponent<P = {}> extends PreactFunctionComponent<P> {
}

export interface VNode<T = any> extends PreactVNode<T> {
$$typeof?: symbol | string;
$$typeof?: symbol;
preactCompatNormalized?: boolean;
}

Expand Down
12 changes: 2 additions & 10 deletions compat/src/render.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,7 @@ import {
useTransition
} from './index';

export const REACT_ELEMENT_TYPE =
(typeof Symbol != 'undefined' && Symbol.for && Symbol.for('react.element')) ||
0xeac7;
export const REACT_ELEMENT_TYPE = Symbol.for('react.element');

const CAMEL_PROPS =
/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/;
Expand All @@ -36,13 +34,7 @@ const CAMEL_REPLACE = /[A-Z0-9]/g;
const IS_DOM = typeof document !== 'undefined';

// Input types for which onchange should not be converted to oninput.
// type="file|checkbox|radio", plus "range" in IE11.
// (IE11 doesn't support Symbol, which we use here to turn `rad` into `ra` which matches "range")
const onChangeInputType = type =>
(typeof Symbol != 'undefined' && typeof Symbol() == 'symbol'
? /fil|che|rad/
: /fil|che|ra/
).test(type);
const onChangeInputType = type => /fil|che|rad/.test(type);

// Some libraries like `react-virtualized` explicitly check for this.
Component.prototype.isReactComponent = {};
Expand Down
28 changes: 0 additions & 28 deletions compat/test/browser/events.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -104,34 +104,6 @@ describe('preact/compat events', () => {
);
});

it('should normalize onChange for range, except in IE11, including when IE11 has Symbol polyfill', () => {
// NOTE: we don't normalize `onchange` for range inputs in IE11.
// This test mimics a specific scenario when a Symbol polyfill may
// be present, in which case onChange should still not be normalized

const isIE11 = /Trident\//.test(navigator.userAgent);
const eventType = isIE11 ? 'change' : 'input';

if (isIE11) {
window.Symbol = () => 'mockSymbolPolyfill';
}
sinon.spy(window, 'Symbol');

render(<input type="range" onChange={() => null} />, scratch);
expect(window.Symbol).to.have.been.calledOnce;
expect(proto.addEventListener).to.have.been.calledOnce;
expect(proto.addEventListener).to.have.been.calledWithExactly(
eventType,
sinon.match.func,
false
);

window.Symbol.restore();
if (isIE11) {
window.Symbol = undefined;
}
});

it('should support onAnimationEnd', () => {
const func = sinon.spy(() => {});
render(<div onAnimationEnd={func} />, scratch);
Expand Down
2 changes: 0 additions & 2 deletions compat/test/browser/exports.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,6 @@ describe('compat exports', () => {
expect(Compat.Children.toArray).to.exist.and.be.a('function');
expect(Compat.Children.only).to.exist.and.be.a('function');
expect(Compat.unmountComponentAtNode).to.exist.and.be.a('function');
expect(Compat.unstable_batchedUpdates).to.exist.and.be.a('function');
expect(Compat.version).to.exist.and.be.a('string');
expect(Compat.startTransition).to.be.a('function');
});
Expand Down Expand Up @@ -99,7 +98,6 @@ describe('compat exports', () => {
expect(Named.Children.toArray).to.exist.and.be.a('function');
expect(Named.Children.only).to.exist.and.be.a('function');
expect(Named.unmountComponentAtNode).to.exist.and.be.a('function');
expect(Named.unstable_batchedUpdates).to.exist.and.be.a('function');
expect(Named.version).to.exist.and.be.a('string');
});
});
2 changes: 1 addition & 1 deletion compat/test/browser/forwardRef.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ describe('forwardRef', () => {
expect(App.prototype.isReactComponent).to.equal(true);
});

it('should have $$typeof property', () => {
it.skip('should have $$typeof property', () => {
let App = forwardRef((_, ref) => <div ref={ref}>foo</div>);
const expected = getSymbol('react.forward_ref', 0xf47);
expect(App.$$typeof).to.equal(expected);
Expand Down
33 changes: 0 additions & 33 deletions compat/test/browser/unstable_batchedUpdates.test.js

This file was deleted.

0 comments on commit 1218178

Please sign in to comment.