Skip to content

Commit

Permalink
refactor: move override logic to hooks and components
Browse files Browse the repository at this point in the history
  • Loading branch information
xaviemirmon authored Aug 15, 2024
1 parent 04fd6c5 commit 1beaf6b
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 17 deletions.
5 changes: 5 additions & 0 deletions packages/core/components/DefaultOverride/index.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import { ReactNode } from "react";

export const DefaultOverride = ({ children }: { children?: ReactNode }) => (
<>{children}</>
);
26 changes: 9 additions & 17 deletions packages/core/components/Puck/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ import { Components } from "./components/Components";
import { Preview } from "./components/Preview";
import { Outline } from "./components/Outline";
import { Overrides } from "../../types/Overrides";
import { loadOverrides } from "../../lib/load-overrides";
import { usePuckHistory } from "../../lib/use-puck-history";
import { useHistoryStore, type History } from "../../lib/use-history-store";
import { Canvas } from "./components/Canvas";
Expand All @@ -49,6 +48,8 @@ import { Viewports } from "../../types/Viewports";
import { DragDropContext } from "../DragDropContext";
import { IframeConfig } from "../../types/IframeConfig";
import { insertComponent } from "../../lib/insert-component";
import { useLoadedOverrides } from "../../lib/use-loaded-overrides";
import { DefaultOverride } from "../DefaultOverride";

const getClassName = getClassNameFactory("Puck", styles);
const getLayoutClassName = getClassNameFactory("PuckLayout", styles);
Expand Down Expand Up @@ -301,16 +302,6 @@ export function Puck<UserConfig extends Config = Config>({
};
}, []);

const defaultRender = useMemo<
React.FunctionComponent<{ children?: ReactNode }>
>(() => {
const PuckDefault = ({ children }: { children?: ReactNode }) => (
<>{children}</>
);

return PuckDefault;
}, []);

// DEPRECATED
const defaultHeaderRender = useMemo(() => {
if (renderHeader) {
Expand All @@ -331,7 +322,7 @@ export function Puck<UserConfig extends Config = Config>({
return RenderHeader;
}

return defaultRender;
return DefaultOverride;
}, [renderHeader]);

// DEPRECATED
Expand All @@ -350,16 +341,17 @@ export function Puck<UserConfig extends Config = Config>({
return RenderHeader;
}

return defaultRender;
return DefaultOverride;
}, [renderHeader]);

// Load all plugins into the overrides
const loadedOverrides = useMemo(() => {
return loadOverrides({ overrides, plugins });
}, [plugins]);
const loadedOverrides = useLoadedOverrides({
overrides: overrides,
plugins: plugins,
});

const CustomPuck = useMemo(
() => loadedOverrides.puck || defaultRender,
() => loadedOverrides.puck || DefaultOverride,
[loadedOverrides]
);

Expand Down
16 changes: 16 additions & 0 deletions packages/core/lib/use-loaded-overrides.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { useMemo } from "react";
import { loadOverrides } from "./load-overrides";
import { Plugin } from "../types/Plugin";
import { Overrides } from "../types/Overrides";

export const useLoadedOverrides = ({
overrides,
plugins,
}: {
overrides: Partial<Overrides>;
plugins: Plugin[];
}) => {
return useMemo(() => {
return loadOverrides({ overrides, plugins });
}, [plugins, overrides]);
};

0 comments on commit 1beaf6b

Please sign in to comment.