Skip to content

Commit f0c7e34

Browse files
authored
feat: remove defaultProps & propTypes
1 parent d4e27b6 commit f0c7e34

12 files changed

+47
-221
lines changed

packages/render-html/src/RenderHTMLConfigProvider.tsx

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import React, { PropsWithChildren, ReactElement, useMemo } from 'react';
2-
import PropTypes from 'prop-types';
32
import RenderersPropsProvider from './context/RenderersPropsProvider';
43
import SharedPropsProvider from './context/SharedPropsProvider';
54
import TChildrenRenderersContext from './context/TChildrenRendererContext';
@@ -20,29 +19,6 @@ const childrenRendererContext = {
2019
TNodeChildrenRenderer
2120
};
2221

23-
export type RenderHTMLConfigPropTypes = Record<keyof RenderHTMLConfig, any>;
24-
25-
export const renderHTMLConfigPropTypes: RenderHTMLConfigPropTypes = {
26-
bypassAnonymousTPhrasingNodes: PropTypes.bool,
27-
defaultTextProps: PropTypes.object,
28-
defaultViewProps: PropTypes.object,
29-
enableExperimentalBRCollapsing: PropTypes.bool,
30-
enableExperimentalGhostLinesPrevention: PropTypes.bool,
31-
enableExperimentalMarginCollapsing: PropTypes.bool,
32-
remoteErrorView: PropTypes.func,
33-
remoteLoadingView: PropTypes.func,
34-
debug: PropTypes.bool,
35-
computeEmbeddedMaxWidth: PropTypes.func,
36-
renderersProps: PropTypes.object,
37-
WebView: PropTypes.any,
38-
GenericPressable: PropTypes.any,
39-
defaultWebViewProps: PropTypes.object,
40-
pressableHightlightColor: PropTypes.string,
41-
customListStyleSpecs: PropTypes.object,
42-
renderers: PropTypes.object,
43-
provideEmbeddedHeaders: PropTypes.func
44-
};
45-
4622
/**
4723
* A component to provide configuration for {@link RenderHTMLSource}
4824
* descendants, to be used in conjunction with {@link TRenderEngineProvider}.
@@ -85,8 +61,3 @@ export default function RenderHTMLConfigProvider(
8561
</RenderRegistryProvider>
8662
);
8763
}
88-
89-
/**
90-
* @ignore
91-
*/
92-
RenderHTMLConfigProvider.propTypes = renderHTMLConfigPropTypes;

packages/render-html/src/RenderHTMLSource.tsx

Lines changed: 0 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import equals from 'ramda/src/equals';
22
import React, { memo, ReactElement, useMemo } from 'react';
33
import { Dimensions } from 'react-native';
4-
import PropTypes from 'prop-types';
54
import ttreeEventsContext from './context/ttreeEventsContext';
65
import isUriSource from './helpers/isUriSource';
76
import { SourceLoaderProps, TTreeEvents } from './internal-types';
@@ -20,34 +19,6 @@ import contentWidthContext from './context/contentWidthContext';
2019
import isDomSource from './helpers/isDomSource';
2120
import useProfiler from './hooks/useProfiler';
2221

23-
export type RenderHTMLSourcePropTypes = Record<
24-
keyof RenderHTMLSourceProps,
25-
any
26-
>;
27-
28-
export const renderSourcePropTypes: RenderHTMLSourcePropTypes = {
29-
source: PropTypes.oneOfType([
30-
PropTypes.shape({
31-
html: PropTypes.string.isRequired,
32-
baseUrl: PropTypes.string
33-
}),
34-
PropTypes.shape({
35-
dom: PropTypes.object.isRequired,
36-
baseUrl: PropTypes.string
37-
}),
38-
PropTypes.shape({
39-
uri: PropTypes.string.isRequired,
40-
method: PropTypes.string,
41-
body: PropTypes.any,
42-
headers: PropTypes.object
43-
})
44-
]),
45-
onTTreeChange: PropTypes.func,
46-
onHTMLLoaded: PropTypes.func,
47-
onDocumentMetadataLoaded: PropTypes.func,
48-
contentWidth: PropTypes.number
49-
};
50-
5122
function isEmptySource(source: undefined | HTMLSource) {
5223
return (
5324
!source ||
@@ -136,9 +107,4 @@ const RenderHTMLSource = memo(
136107
}
137108
);
138109

139-
/**
140-
* @ignore
141-
*/
142-
(RenderHTMLSource as any).propTypes = renderSourcePropTypes;
143-
144110
export default RenderHTMLSource;

packages/render-html/src/TChildrenRenderer.tsx

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,4 @@ import renderChildren from './renderChildren';
99
const TChildrenRenderer: FunctionComponent<TChildrenRendererProps> =
1010
renderChildren.bind(null);
1111

12-
export const tchildrenRendererDefaultProps: Pick<
13-
TChildrenRendererProps,
14-
'propsForChildren'
15-
> = {
16-
propsForChildren: {}
17-
};
18-
19-
/**
20-
* @ignore
21-
*/
22-
TChildrenRenderer.defaultProps = tchildrenRendererDefaultProps;
23-
2412
export default TChildrenRenderer;

packages/render-html/src/TNodeChildrenRenderer.tsx

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { ReactElement } from 'react';
22
import { TNode } from '@native-html/transient-render-engine';
33
import { useSharedProps } from './context/SharedPropsProvider';
4-
import { tchildrenRendererDefaultProps } from './TChildrenRenderer';
54
import {
65
TChildrenRendererProps,
76
TNodeChildrenRendererProps
@@ -73,9 +72,4 @@ function TNodeChildrenRenderer(
7372
return renderChildren(useTNodeChildrenProps(props));
7473
}
7574

76-
/**
77-
* @ignore
78-
*/
79-
TNodeChildrenRenderer.defaultProps = tchildrenRendererDefaultProps;
80-
8175
export default TNodeChildrenRenderer;

packages/render-html/src/TNodeRenderer.tsx

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ const TNodeRenderer = memo(function MemoizedTNodeRenderer(
4949
const renderRegistry = useRendererRegistry();
5050
const TNodeChildrenRenderer = useTNodeChildrenRenderer();
5151
const tnodeProps = {
52+
propsFromParent: { collapsedMarginTop: null },
5253
...props,
5354
TNodeChildrenRenderer,
5455
sharedProps
@@ -120,16 +121,6 @@ const TNodeRenderer = memo(function MemoizedTNodeRenderer(
120121
: React.createElement(Renderer as any, assembledProps);
121122
});
122123

123-
const defaultProps: Required<Pick<TNodeRendererProps<any>, 'propsFromParent'>> =
124-
{
125-
propsFromParent: {
126-
collapsedMarginTop: null
127-
}
128-
};
129-
130-
// @ts-expect-error default props must be defined
131-
TNodeRenderer.defaultProps = defaultProps;
132-
133124
export {
134125
TDefaultBlockRenderer,
135126
TDefaultPhrasingRenderer,
Lines changed: 0 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -1,73 +1,13 @@
11
import TRenderEngine from '@native-html/transient-render-engine';
22
import React, { PropsWithChildren, ReactElement } from 'react';
3-
import { Platform } from 'react-native';
4-
import PropTypes from 'prop-types';
53
import useTRenderEngine from './hooks/useTRenderEngine';
64
import { TRenderEngineConfig } from './shared-types';
7-
import defaultSystemFonts from './defaultSystemFonts';
85

96
const defaultTRenderEngine = {} as any;
107

118
const TRenderEngineContext =
129
React.createContext<TRenderEngine>(defaultTRenderEngine);
1310

14-
export const tRenderEngineProviderPropTypes: Record<
15-
keyof TRenderEngineConfig,
16-
any
17-
> = {
18-
customHTMLElementModels: PropTypes.object.isRequired,
19-
enableCSSInlineProcessing: PropTypes.bool,
20-
enableUserAgentStyles: PropTypes.bool,
21-
idsStyles: PropTypes.object,
22-
ignoredDomTags: PropTypes.array,
23-
ignoreDomNode: PropTypes.func,
24-
domVisitors: PropTypes.object,
25-
ignoredStyles: PropTypes.array.isRequired,
26-
allowedStyles: PropTypes.array,
27-
htmlParserOptions: PropTypes.object,
28-
tagsStyles: PropTypes.object,
29-
classesStyles: PropTypes.object,
30-
emSize: PropTypes.number.isRequired,
31-
baseStyle: PropTypes.object,
32-
systemFonts: PropTypes.arrayOf(PropTypes.string),
33-
fallbackFonts: PropTypes.shape({
34-
serif: PropTypes.string,
35-
'sans-serif': PropTypes.string,
36-
monospace: PropTypes.string
37-
}),
38-
setMarkersForTNode: PropTypes.func,
39-
dangerouslyDisableHoisting: PropTypes.bool,
40-
dangerouslyDisableWhitespaceCollapsing: PropTypes.bool,
41-
selectDomRoot: PropTypes.func
42-
};
43-
44-
/**
45-
* Default fallback font for special keys such as 'sans-serif', 'monospace',
46-
* 'serif', based on current platform.
47-
*/
48-
export const defaultFallbackFonts = {
49-
'sans-serif': Platform.select({ ios: 'system', default: 'sans-serif' }),
50-
monospace: Platform.select({ ios: 'Menlo', default: 'monospace' }),
51-
serif: Platform.select({ ios: 'Times New Roman', default: 'serif' })
52-
};
53-
54-
export const defaultTRenderEngineProviderProps: TRenderEngineConfig = {
55-
htmlParserOptions: {
56-
decodeEntities: true
57-
},
58-
emSize: 14,
59-
ignoredDomTags: [],
60-
ignoredStyles: [],
61-
baseStyle: { fontSize: 14 },
62-
tagsStyles: {},
63-
classesStyles: {},
64-
enableUserAgentStyles: true,
65-
enableCSSInlineProcessing: true,
66-
customHTMLElementModels: {},
67-
fallbackFonts: defaultFallbackFonts,
68-
systemFonts: defaultSystemFonts
69-
};
70-
7111
/**
7212
* Use the ambient transient render engine.
7313
*
@@ -106,13 +46,3 @@ export default function TRenderEngineProvider({
10646
</TRenderEngineContext.Provider>
10747
);
10848
}
109-
110-
/**
111-
* @ignore
112-
*/
113-
TRenderEngineProvider.defaultProps = defaultTRenderEngineProviderProps;
114-
115-
/**
116-
* @ignore
117-
*/
118-
TRenderEngineProvider.propTypes = tRenderEngineProviderPropTypes;
Lines changed: 0 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,13 @@
11
import React, { ReactElement, ReactNode } from 'react';
2-
import PropTypes from 'prop-types';
32
import useIMGElementState from './useIMGElementState';
43
import IMGElementContentSuccess from './IMGElementContentSuccess';
54
import IMGElementContainer from './IMGElementContainer';
65
import IMGElementContentLoading from './IMGElementContentLoading';
76
import IMGElementContentError from './IMGElementContentError';
87
import type { IMGElementProps } from './img-types';
9-
import defaultImageInitialDimensions from './defaultInitialImageDimensions';
108

119
export type { IMGElementProps } from './img-types';
1210

13-
function identity(arg: any) {
14-
return arg;
15-
}
16-
1711
/**
1812
* A component to render images based on an internal loading state.
1913
*
@@ -44,42 +38,4 @@ function IMGElement(props: IMGElementProps): ReactElement {
4438
);
4539
}
4640

47-
const imgDimensionsType = PropTypes.shape({
48-
width: PropTypes.number,
49-
height: PropTypes.number
50-
});
51-
52-
const propTypes: Record<keyof IMGElementProps, any> = {
53-
source: PropTypes.object.isRequired,
54-
alt: PropTypes.string,
55-
altColor: PropTypes.string,
56-
height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
57-
width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
58-
style: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),
59-
computeMaxWidth: PropTypes.func.isRequired,
60-
contentWidth: PropTypes.number,
61-
enableExperimentalPercentWidth: PropTypes.bool,
62-
initialDimensions: imgDimensionsType,
63-
onPress: PropTypes.func,
64-
testID: PropTypes.string,
65-
objectFit: PropTypes.string,
66-
cachedNaturalDimensions: imgDimensionsType,
67-
containerProps: PropTypes.object
68-
};
69-
70-
/**
71-
* @ignore
72-
*/
73-
IMGElement.propTypes = propTypes;
74-
75-
/**
76-
* @ignore
77-
*/
78-
IMGElement.defaultProps = {
79-
enableExperimentalPercentWidth: false,
80-
computeMaxWidth: identity,
81-
imagesInitialDimensions: defaultImageInitialDimensions,
82-
style: {}
83-
};
84-
8541
export default IMGElement;

packages/render-html/src/elements/useIMGElementState.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,10 @@ function useFetchedNaturalDimensions(props: {
100100
};
101101
}
102102

103+
function identity(arg: any) {
104+
return arg;
105+
}
106+
103107
/**
104108
* This hook will compute concrete dimensions from image natural dimensions and
105109
* constraints. It will fetch the image and get its dimensions.
@@ -116,7 +120,7 @@ export default function useIMGElementState(
116120
altColor,
117121
source,
118122
contentWidth,
119-
computeMaxWidth,
123+
computeMaxWidth = identity,
120124
objectFit,
121125
initialDimensions = defaultImageInitialDimensions,
122126
cachedNaturalDimensions

packages/render-html/src/elements/useImageSpecifiedDimensions.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ function deriveSpecifiedDimensionsFromProps({
7171
export default function useImageSpecifiedDimensions(
7272
props: UseIMGElementStateProps
7373
) {
74-
const { contentWidth, enableExperimentalPercentWidth, style, width, height } =
74+
const { contentWidth, enableExperimentalPercentWidth = false, style = {}, width, height } =
7575
props;
7676
const flatStyle = useMemo(() => StyleSheet.flatten(style) || {}, [style]);
7777
const specifiedDimensions = useMemo(

0 commit comments

Comments
 (0)