From facbe77fedc210c27bc01efb9c19fd14aee4f1f6 Mon Sep 17 00:00:00 2001 From: Chris Ball Date: Mon, 31 Aug 2020 22:26:32 -0400 Subject: [PATCH] adds ability to override components from consuming app --- src/block.tsx | 14 ++++++++++++-- src/components/asset.tsx | 4 +++- src/renderer.tsx | 8 +++++++- src/types.ts | 20 +++++++++++++++++++- 4 files changed, 41 insertions(+), 5 deletions(-) diff --git a/src/block.tsx b/src/block.tsx index 672b34f..5733db1 100644 --- a/src/block.tsx +++ b/src/block.tsx @@ -5,7 +5,9 @@ import { ContentValueType, BlockMapType, MapPageUrl, - MapImageUrl + MapImageUrl, + BlockValueTypeKeys, + CustomComponent } from "./types"; import Asset from "./components/asset"; import Code from "./components/code"; @@ -62,6 +64,7 @@ interface Block { fullPage?: boolean; hideHeader?: boolean; + customComponents?: Record; } export const Block: React.FC = props => { @@ -73,10 +76,17 @@ export const Block: React.FC = props => { hideHeader, blockMap, mapPageUrl, - mapImageUrl + mapImageUrl, + customComponents } = props; const blockValue = block?.value; + // render a custom component first if passed. + if (customComponents && customComponents[blockValue?.type]) { + const CustomComponent = customComponents[blockValue?.type] as any; + return ; + } + switch (blockValue?.type) { case "page": if (level === 0) { diff --git a/src/components/asset.tsx b/src/components/asset.tsx index a6026f1..86de042 100644 --- a/src/components/asset.tsx +++ b/src/components/asset.tsx @@ -34,7 +34,9 @@ const Asset: React.FC<{ >