diff --git a/.changeset/serious-garlics-refuse.md b/.changeset/serious-garlics-refuse.md new file mode 100644 index 000000000..2ec07ac17 --- /dev/null +++ b/.changeset/serious-garlics-refuse.md @@ -0,0 +1,7 @@ +--- +'@craftjs/layers': patch +'@craftjs/utils': patch +'@craftjs/core': patch +--- + +Cleanup React.FC prop types diff --git a/packages/core/src/editor/Editor.tsx b/packages/core/src/editor/Editor.tsx index 721bcb576..a400c9f49 100644 --- a/packages/core/src/editor/Editor.tsx +++ b/packages/core/src/editor/Editor.tsx @@ -8,13 +8,14 @@ import { useEditorStore } from './store'; import { Events } from '../events'; import { Options } from '../interfaces'; +type EditorProps = Partial & { + children?: React.ReactNode; +}; + /** * A React Component that provides the Editor context */ -export const Editor: React.FC>> = ({ - children, - ...options -}) => { +export const Editor = ({ children, ...options }: EditorProps) => { // we do not want to warn the user if no resolver was supplied if (options.resolver !== undefined) { invariant( @@ -101,9 +102,13 @@ export const Editor: React.FC>> = ({ ); }, [context]); - return context ? ( + if (!context) { + return null; + } + + return ( {children} - ) : null; + ); }; diff --git a/packages/core/src/events/Events.tsx b/packages/core/src/events/Events.tsx index 879c73048..bfe0d18c3 100644 --- a/packages/core/src/events/Events.tsx +++ b/packages/core/src/events/Events.tsx @@ -9,7 +9,7 @@ type EventsProps = { children?: React.ReactNode; }; -export const Events: React.FC = ({ children }) => { +export const Events = ({ children }: EventsProps) => { const store = useContext(EditorContext); const handler = useMemo(() => store.query.getOptions().handlers(store), [ diff --git a/packages/core/src/nodes/NodeContext.tsx b/packages/core/src/nodes/NodeContext.tsx index d7928183b..df43cb915 100644 --- a/packages/core/src/nodes/NodeContext.tsx +++ b/packages/core/src/nodes/NodeContext.tsx @@ -9,11 +9,15 @@ export type NodeContextType = { export const NodeContext = React.createContext(null); -export type NodeProviderProps = Omit; +export type NodeProviderProps = Omit & { + children?: React.ReactNode; +}; -export const NodeProvider: React.FC> = ({ id, related = false, children }) => { +export const NodeProvider = ({ + id, + related = false, + children, +}: NodeProviderProps) => { return ( {children} diff --git a/packages/core/src/nodes/NodeElement.tsx b/packages/core/src/nodes/NodeElement.tsx index 6e899f353..df1145685 100644 --- a/packages/core/src/nodes/NodeElement.tsx +++ b/packages/core/src/nodes/NodeElement.tsx @@ -10,9 +10,7 @@ export type NodeElementProps = { render?: React.ReactElement; }; -export const NodeElement: React.FC> = ({ id, render }) => { +export const NodeElement = ({ id, render }: NodeElementProps) => { return ( diff --git a/packages/core/src/render/Frame.tsx b/packages/core/src/render/Frame.tsx index 3a4acd688..65a5eca23 100644 --- a/packages/core/src/render/Frame.tsx +++ b/packages/core/src/render/Frame.tsx @@ -6,6 +6,7 @@ import { SerializedNodes } from '../interfaces'; import { NodeElement } from '../nodes/NodeElement'; export type FrameProps = { + children?: React.ReactNode; json?: string; data?: string | SerializedNodes; }; @@ -26,11 +27,7 @@ const RenderRootNode = () => { /** * A React Component that defines the editable area */ -export const Frame: React.FC> = ({ - children, - json, - data, -}) => { +export const Frame = ({ children, json, data }: FrameProps) => { const { actions, query } = useInternalEditor(); if (!!json) { diff --git a/packages/core/src/render/RenderNode.tsx b/packages/core/src/render/RenderNode.tsx index 541505b51..cd2871efb 100644 --- a/packages/core/src/render/RenderNode.tsx +++ b/packages/core/src/render/RenderNode.tsx @@ -5,12 +5,11 @@ import { DefaultRender } from './DefaultRender'; import { useInternalEditor } from '../editor/useInternalEditor'; import { useInternalNode } from '../nodes/useInternalNode'; -type RenderNodeToElementType = { +type RenderNodeToElementProps = { render?: React.ReactElement; + children?: React.ReactNode; }; -export const RenderNodeToElement: React.FC> = ({ render }) => { +export const RenderNodeToElement = ({ render }: RenderNodeToElementProps) => { const { hidden } = useInternalNode((node) => ({ hidden: node.data.hidden, })); diff --git a/packages/core/src/render/RenderPlaceholder.tsx b/packages/core/src/render/RenderPlaceholder.tsx index b980a3360..3483202cd 100644 --- a/packages/core/src/render/RenderPlaceholder.tsx +++ b/packages/core/src/render/RenderPlaceholder.tsx @@ -3,14 +3,15 @@ import React from 'react'; import { useEditor } from '../hooks'; import { Indicator } from '../interfaces'; -export type Placeholder = { +export type RenderPlaceholderProps = { placeholder: Indicator; suggestedStyles: any; }; -export const RenderPlaceholder: React.FC> = ({ placeholder, suggestedStyles }) => { +export const RenderPlaceholder = ({ + placeholder, + suggestedStyles, +}: RenderPlaceholderProps) => { const { indicator } = useEditor((state) => ({ indicator: state.options.indicator, })); diff --git a/packages/layers/src/events/RenderLayerIndicator.tsx b/packages/layers/src/events/RenderLayerIndicator.tsx index dae4c700b..538a325c1 100644 --- a/packages/layers/src/events/RenderLayerIndicator.tsx +++ b/packages/layers/src/events/RenderLayerIndicator.tsx @@ -4,7 +4,13 @@ import React, { useMemo } from 'react'; import { useLayerManager } from '../manager/useLayerManager'; -export const RenderLayerIndicator: React.FC = ({ children }) => { +type RenderLayerIndicatorProps = { + children?: React.ReactNode; +}; + +export const RenderLayerIndicator = ({ + children, +}: RenderLayerIndicatorProps) => { const { layers, events } = useLayerManager((state) => state); const { query } = useEditor((state) => ({ enabled: state.options.enabled })); const { indicator: indicatorStyles } = query.getOptions(); diff --git a/packages/layers/src/index.tsx b/packages/layers/src/index.tsx index 88406ae62..579b2f59d 100644 --- a/packages/layers/src/index.tsx +++ b/packages/layers/src/index.tsx @@ -11,7 +11,9 @@ export { EditableLayerName, } from './layers'; -export const Layers: React.FC> = ({ ...options }) => { +type LayersProps = LayerOptions; + +export const Layers = ({ ...options }: LayersProps) => { return ( diff --git a/packages/layers/src/layers/DefaultLayer/DefaultLayer.tsx b/packages/layers/src/layers/DefaultLayer/DefaultLayer.tsx index ece508461..b5418c411 100644 --- a/packages/layers/src/layers/DefaultLayer/DefaultLayer.tsx +++ b/packages/layers/src/layers/DefaultLayer/DefaultLayer.tsx @@ -44,9 +44,11 @@ const LayerChildren = styled.div<{ hasCanvases: boolean }>` : ''} `; -export const DefaultLayer: React.FC<{ children?: React.ReactNode }> = ({ - children, -}) => { +export type DefaultLayerProps = { + children?: React.ReactNode; +}; + +export const DefaultLayer = ({ children }: DefaultLayerProps) => { const { id, expanded, diff --git a/packages/layers/src/layers/DefaultLayer/DefaultLayerHeader.tsx b/packages/layers/src/layers/DefaultLayer/DefaultLayerHeader.tsx index 12ef914fb..3e4330919 100644 --- a/packages/layers/src/layers/DefaultLayer/DefaultLayerHeader.tsx +++ b/packages/layers/src/layers/DefaultLayer/DefaultLayerHeader.tsx @@ -91,7 +91,7 @@ const TopLevelIndicator = styled.div` } `; -export const DefaultLayerHeader: React.FC = () => { +export const DefaultLayerHeader = () => { const { id, depth, diff --git a/packages/layers/src/layers/LayerContextProvider.tsx b/packages/layers/src/layers/LayerContextProvider.tsx index 6ef5589d2..7a97c45b9 100644 --- a/packages/layers/src/layers/LayerContextProvider.tsx +++ b/packages/layers/src/layers/LayerContextProvider.tsx @@ -8,10 +8,12 @@ import { LayerNode } from './LayerNode'; import { useLayerEventHandler } from '../events/LayerEventContext'; import { LayerManagerContext } from '../manager'; -export const LayerContextProvider: React.FC> = ({ id, depth }) => { +export type LayerContextProviderProps = Omit; + +export const LayerContextProvider = ({ + id, + depth, +}: LayerContextProviderProps) => { const handlers = useLayerEventHandler(); const { store } = useContext(LayerManagerContext); diff --git a/packages/layers/src/layers/LayerIndicator.tsx b/packages/layers/src/layers/LayerIndicator.tsx index 7a3f5da64..430148b74 100644 --- a/packages/layers/src/layers/LayerIndicator.tsx +++ b/packages/layers/src/layers/LayerIndicator.tsx @@ -1,15 +1,15 @@ import { Indicator, useEditor } from '@craftjs/core'; import React from 'react'; -export type Placeholder = { +export type LayerIndicatorProps = { placeholder: Indicator; suggestedStyles: any; }; -export const LayerIndicator: React.FC = ({ +export const LayerIndicator = ({ placeholder, suggestedStyles, -}) => { +}: LayerIndicatorProps) => { const { indicator } = useEditor((state) => ({ indicator: state.options.indicator, })); diff --git a/packages/layers/src/layers/LayerNode.tsx b/packages/layers/src/layers/LayerNode.tsx index ee5bdbcce..b8a9692b3 100644 --- a/packages/layers/src/layers/LayerNode.tsx +++ b/packages/layers/src/layers/LayerNode.tsx @@ -6,7 +6,7 @@ import { useLayer } from './useLayer'; import { useLayerManager } from '../manager/useLayerManager'; -export const LayerNode: React.FC = () => { +export const LayerNode = () => { const { id, depth, children, expanded } = useLayer((layer) => ({ expanded: layer.expanded, })); diff --git a/packages/layers/src/manager/LayerManagerProvider.tsx b/packages/layers/src/manager/LayerManagerProvider.tsx index e700cb6d5..df13df1ff 100644 --- a/packages/layers/src/manager/LayerManagerProvider.tsx +++ b/packages/layers/src/manager/LayerManagerProvider.tsx @@ -8,10 +8,15 @@ import { LayerEventContextProvider } from '../events'; import { LayerOptions } from '../interfaces'; import { DefaultLayer } from '../layers'; -export const LayerManagerProvider: React.FC<{ +type LayerManagerProviderProps = { options: Partial; children?: React.ReactNode; -}> = ({ children, options }) => { +}; + +export const LayerManagerProvider = ({ + children, + options, +}: LayerManagerProviderProps) => { // TODO: fix type const store = useMethods(LayerMethods, { layers: {}, diff --git a/packages/utils/src/RenderIndicator.tsx b/packages/utils/src/RenderIndicator.tsx index e69c6920f..3199ea266 100644 --- a/packages/utils/src/RenderIndicator.tsx +++ b/packages/utils/src/RenderIndicator.tsx @@ -1,7 +1,12 @@ import React from 'react'; import ReactDOM from 'react-dom'; -export const RenderIndicator: React.FC = ({ style, parentDom }) => { +type RenderIndicatorProps = { + style: React.CSSProperties; + parentDom?: HTMLElement; +}; + +export const RenderIndicator = ({ style, parentDom }: RenderIndicatorProps) => { const indicator = (