@portabletext/react
Advanced tools
+1
-1
@@ -13,3 +13,3 @@ import { ToolkitListNestMode, ToolkitListNestMode as ListNestMode, ToolkitPortableTextList, ToolkitPortableTextListItem, toPlainText } from "@portabletext/toolkit"; | ||
| */ | ||
| value: B | B[]; | ||
| value: B | B[] | null | undefined; | ||
| /** | ||
@@ -16,0 +16,0 @@ * React components to use for rendering |
+3
-1
@@ -75,3 +75,5 @@ import { Fragment, jsx } from "react/jsx-runtime"; | ||
| function PortableText({ value: input, components: componentOverrides, listNestingMode, onMissingComponent: missingComponentHandler = printWarning }) { | ||
| let handleMissingComponent = missingComponentHandler || noop, nested = nestLists(Array.isArray(input) ? input : [input], listNestingMode || LIST_NEST_MODE_HTML), components = useMemo(() => componentOverrides ? mergeComponents(defaultComponents, componentOverrides) : defaultComponents, [componentOverrides]), renderNode = useMemo(() => getNodeRenderer(components, handleMissingComponent), [components, handleMissingComponent]); | ||
| let handleMissingComponent = missingComponentHandler || noop, blocks; | ||
| blocks = Array.isArray(input) ? input : input == null ? [] : [input]; | ||
| let nested = nestLists(blocks, listNestingMode || LIST_NEST_MODE_HTML), components = useMemo(() => componentOverrides ? mergeComponents(defaultComponents, componentOverrides) : defaultComponents, [componentOverrides]), renderNode = useMemo(() => getNodeRenderer(components, handleMissingComponent), [components, handleMissingComponent]); | ||
| return /* @__PURE__ */ jsx(Fragment, { children: nested.map((node, index) => renderNode({ | ||
@@ -78,0 +80,0 @@ node, |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","names":[],"sources":["../src/components/list.tsx","../src/components/marks.tsx","../src/warnings.ts","../src/components/unknown.tsx","../src/components/defaults.tsx","../src/components/merge.ts","../src/react-portable-text.tsx"],"sourcesContent":["import type {PortableTextListComponent, PortableTextListItemComponent} from '../types'\n\nexport const defaultLists: Record<'number' | 'bullet', PortableTextListComponent> = {\n number: ({children}) => <ol>{children}</ol>,\n bullet: ({children}) => <ul>{children}</ul>,\n}\n\nexport const DefaultListItem: PortableTextListItemComponent = ({children}) => <li>{children}</li>\n","import type {TypedObject} from '@portabletext/types'\n\nimport type {PortableTextMarkComponent} from '../types'\n\ninterface DefaultLink extends TypedObject {\n _type: 'link'\n href: string\n}\n\nconst link: PortableTextMarkComponent<DefaultLink> = ({children, value}) => (\n <a href={value?.href}>{children}</a>\n)\n\nconst underlineStyle = {textDecoration: 'underline'}\n\nexport const defaultMarks: Record<string, PortableTextMarkComponent | undefined> = {\n em: ({children}) => <em>{children}</em>,\n strong: ({children}) => <strong>{children}</strong>,\n code: ({children}) => <code>{children}</code>,\n underline: ({children}) => <span style={underlineStyle}>{children}</span>,\n 'strike-through': ({children}) => <del>{children}</del>,\n link,\n}\n","const getTemplate = (type: string, prop: string): string =>\n `[@portabletext/react] Unknown ${type}, specify a component for it in the \\`components.${prop}\\` prop`\n\nexport const unknownTypeWarning = (typeName: string): string =>\n getTemplate(`block type \"${typeName}\"`, 'types')\n\nexport const unknownMarkWarning = (markType: string): string =>\n getTemplate(`mark type \"${markType}\"`, 'marks')\n\nexport const unknownBlockStyleWarning = (blockStyle: string): string =>\n getTemplate(`block style \"${blockStyle}\"`, 'block')\n\nexport const unknownListStyleWarning = (listStyle: string): string =>\n getTemplate(`list style \"${listStyle}\"`, 'list')\n\nexport const unknownListItemStyleWarning = (listStyle: string): string =>\n getTemplate(`list item style \"${listStyle}\"`, 'listItem')\n\nexport function printWarning(message: string): void {\n // oxlint-disable-next-line no-console\n console.warn(message)\n}\n","import type {PortableTextReactComponents} from '../types'\nimport {unknownTypeWarning} from '../warnings'\n\nconst hidden = {display: 'none'}\n\nexport const DefaultUnknownType: PortableTextReactComponents['unknownType'] = ({\n value,\n isInline,\n}) => {\n const warning = unknownTypeWarning(value._type)\n return isInline ? <span style={hidden}>{warning}</span> : <div style={hidden}>{warning}</div>\n}\n\nexport const DefaultUnknownMark: PortableTextReactComponents['unknownMark'] = ({\n markType,\n children,\n}) => {\n return <span className={`unknown__pt__mark__${markType}`}>{children}</span>\n}\n\nexport const DefaultUnknownBlockStyle: PortableTextReactComponents['unknownBlockStyle'] = ({\n children,\n}) => {\n return <p>{children}</p>\n}\n\nexport const DefaultUnknownList: PortableTextReactComponents['unknownList'] = ({children}) => {\n return <ul>{children}</ul>\n}\n\nexport const DefaultUnknownListItem: PortableTextReactComponents['unknownListItem'] = ({\n children,\n}) => {\n return <li>{children}</li>\n}\n","import type {PortableTextBlockStyle} from '@portabletext/types'\nimport type {JSX} from 'react'\n\nimport type {PortableTextBlockComponent, PortableTextReactComponents} from '../types'\nimport {DefaultListItem, defaultLists} from './list'\nimport {defaultMarks} from './marks'\nimport {\n DefaultUnknownBlockStyle,\n DefaultUnknownList,\n DefaultUnknownListItem,\n DefaultUnknownMark,\n DefaultUnknownType,\n} from './unknown'\n\nexport const DefaultHardBreak = (): JSX.Element => <br />\n\nexport const defaultBlockStyles: Record<\n PortableTextBlockStyle,\n PortableTextBlockComponent | undefined\n> = {\n normal: ({children}) => <p>{children}</p>,\n blockquote: ({children}) => <blockquote>{children}</blockquote>,\n h1: ({children}) => <h1>{children}</h1>,\n h2: ({children}) => <h2>{children}</h2>,\n h3: ({children}) => <h3>{children}</h3>,\n h4: ({children}) => <h4>{children}</h4>,\n h5: ({children}) => <h5>{children}</h5>,\n h6: ({children}) => <h6>{children}</h6>,\n}\n\nexport const defaultComponents: PortableTextReactComponents = {\n types: {},\n\n block: defaultBlockStyles,\n marks: defaultMarks,\n list: defaultLists,\n listItem: DefaultListItem,\n hardBreak: DefaultHardBreak,\n\n unknownType: DefaultUnknownType,\n unknownMark: DefaultUnknownMark,\n unknownList: DefaultUnknownList,\n unknownListItem: DefaultUnknownListItem,\n unknownBlockStyle: DefaultUnknownBlockStyle,\n}\n","import type {PortableTextComponents, PortableTextReactComponents} from '../types'\n\nexport function mergeComponents(\n parent: PortableTextReactComponents,\n overrides: PortableTextComponents,\n): PortableTextReactComponents {\n const {\n block: _block,\n list: _list,\n listItem: _listItem,\n marks: _marks,\n types: _types,\n ...rest\n } = overrides\n // @todo figure out how to not `as ...` these\n return {\n ...parent,\n block: mergeDeeply(parent, overrides, 'block') as PortableTextReactComponents['block'],\n list: mergeDeeply(parent, overrides, 'list') as PortableTextReactComponents['list'],\n listItem: mergeDeeply(parent, overrides, 'listItem') as PortableTextReactComponents['listItem'],\n marks: mergeDeeply(parent, overrides, 'marks') as PortableTextReactComponents['marks'],\n types: mergeDeeply(parent, overrides, 'types') as PortableTextReactComponents['types'],\n ...rest,\n }\n}\n\nfunction mergeDeeply(\n parent: PortableTextReactComponents,\n overrides: PortableTextComponents,\n key: 'block' | 'list' | 'listItem' | 'marks' | 'types',\n): PortableTextReactComponents[typeof key] {\n const override = overrides[key]\n const parentVal = parent[key]\n\n if (typeof override === 'function') {\n return override\n }\n\n if (override && typeof parentVal === 'function') {\n return override\n }\n\n if (override) {\n return {...parentVal, ...override} as PortableTextReactComponents[typeof key]\n }\n\n return parentVal\n}\n","import type {ToolkitNestedPortableTextSpan, ToolkitTextNode} from '@portabletext/toolkit'\nimport {\n buildMarksTree,\n isPortableTextBlock,\n isPortableTextListItemBlock,\n isPortableTextToolkitList,\n isPortableTextToolkitSpan,\n isPortableTextToolkitTextNode,\n LIST_NEST_MODE_HTML,\n nestLists,\n spanToPlainText,\n} from '@portabletext/toolkit'\nimport type {PortableTextBlock, PortableTextListItemBlock, TypedObject} from '@portabletext/types'\nimport {type JSX, type ReactNode, useMemo} from 'react'\n\nimport {defaultComponents} from './components/defaults'\nimport {mergeComponents} from './components/merge'\nimport type {\n MissingComponentHandler,\n NodeRenderer,\n PortableTextProps,\n PortableTextReactComponents,\n ReactPortableTextList,\n Serializable,\n SerializedBlock,\n} from './types'\nimport {\n printWarning,\n unknownBlockStyleWarning,\n unknownListItemStyleWarning,\n unknownListStyleWarning,\n unknownMarkWarning,\n unknownTypeWarning,\n} from './warnings'\n\nexport function PortableText<B extends TypedObject = PortableTextBlock>({\n value: input,\n components: componentOverrides,\n listNestingMode,\n onMissingComponent: missingComponentHandler = printWarning,\n}: PortableTextProps<B>): JSX.Element {\n const handleMissingComponent = missingComponentHandler || noop\n const blocks = Array.isArray(input) ? input : [input]\n const nested = nestLists(blocks, listNestingMode || LIST_NEST_MODE_HTML)\n\n const components = useMemo(() => {\n return componentOverrides\n ? mergeComponents(defaultComponents, componentOverrides)\n : defaultComponents\n }, [componentOverrides])\n\n const renderNode = useMemo(\n () => getNodeRenderer(components, handleMissingComponent),\n [components, handleMissingComponent],\n )\n const rendered = nested.map((node, index) =>\n renderNode({node: node, index, isInline: false, renderNode}),\n )\n\n return <>{rendered}</>\n}\n\nconst getNodeRenderer = (\n components: PortableTextReactComponents,\n handleMissingComponent: MissingComponentHandler,\n): NodeRenderer => {\n function renderNode<N extends TypedObject>(options: Serializable<N>): ReactNode {\n const {node, index, isInline} = options\n const key = node._key || `node-${index}`\n\n if (isPortableTextToolkitList(node)) {\n return renderList(node, index, key)\n }\n\n if (isPortableTextListItemBlock(node)) {\n return renderListItem(node, index, key)\n }\n\n if (isPortableTextToolkitSpan(node)) {\n return renderSpan(node, index, key)\n }\n\n if (hasCustomComponentForNode(node)) {\n return renderCustomBlock(node, index, key, isInline)\n }\n\n if (isPortableTextBlock(node)) {\n return renderBlock(node, index, key, isInline)\n }\n\n if (isPortableTextToolkitTextNode(node)) {\n return renderText(node, key)\n }\n\n return renderUnknownType(node, index, key, isInline)\n }\n\n function hasCustomComponentForNode(node: TypedObject): boolean {\n return node._type in components.types\n }\n\n function renderListItem(node: PortableTextListItemBlock, index: number, key: string) {\n const tree = serializeBlock({node, index, isInline: false, renderNode})\n const renderer = components.listItem\n const handler = typeof renderer === 'function' ? renderer : renderer[node.listItem]\n const Li = handler || components.unknownListItem\n\n if (Li === components.unknownListItem) {\n const style = node.listItem || 'bullet'\n handleMissingComponent(unknownListItemStyleWarning(style), {\n type: style,\n nodeType: 'listItemStyle',\n })\n }\n\n let children = tree.children\n if (node.style && node.style !== 'normal') {\n // Wrap any other style in whatever the block serializer says to use\n const {listItem: _listItem, ...blockNode} = node\n children = renderNode({\n node: blockNode,\n index,\n isInline: false,\n renderNode,\n })\n }\n\n return (\n <Li key={key} value={node} index={index} isInline={false} renderNode={renderNode}>\n {children}\n </Li>\n )\n }\n\n function renderList(node: ReactPortableTextList, index: number, key: string) {\n const children = node.children.map((child, childIndex) =>\n renderNode({\n node: child._key ? child : {...child, _key: `li-${index}-${childIndex}`},\n index: childIndex,\n isInline: false,\n renderNode,\n }),\n )\n\n const component = components.list\n const handler = typeof component === 'function' ? component : component[node.listItem]\n const List = handler || components.unknownList\n\n if (List === components.unknownList) {\n const style = node.listItem || 'bullet'\n handleMissingComponent(unknownListStyleWarning(style), {\n nodeType: 'listStyle',\n type: style,\n })\n }\n\n return (\n <List key={key} value={node} index={index} isInline={false} renderNode={renderNode}>\n {children}\n </List>\n )\n }\n\n function renderSpan(node: ToolkitNestedPortableTextSpan, _index: number, key: string) {\n const {markDef, markType, markKey} = node\n const Span = components.marks[markType] || components.unknownMark\n const children = node.children.map((child, childIndex) =>\n renderNode({\n node: child,\n index: childIndex,\n isInline: true,\n renderNode,\n }),\n )\n\n if (Span === components.unknownMark) {\n handleMissingComponent(unknownMarkWarning(markType), {\n nodeType: 'mark',\n type: markType,\n })\n }\n\n return (\n <Span\n key={key}\n text={spanToPlainText(node)}\n value={markDef}\n markType={markType}\n markKey={markKey}\n renderNode={renderNode}\n >\n {children}\n </Span>\n )\n }\n\n function renderBlock(node: PortableTextBlock, index: number, key: string, isInline: boolean) {\n const {_key, ...props} = serializeBlock({\n node,\n index,\n isInline,\n renderNode,\n })\n const style = props.node.style || 'normal'\n const handler =\n typeof components.block === 'function' ? components.block : components.block[style]\n const Block = handler || components.unknownBlockStyle\n\n if (Block === components.unknownBlockStyle) {\n handleMissingComponent(unknownBlockStyleWarning(style), {\n nodeType: 'blockStyle',\n type: style,\n })\n }\n\n return <Block key={key} {...props} value={props.node} renderNode={renderNode} />\n }\n\n function renderText(node: ToolkitTextNode, key: string) {\n if (node.text === '\\n') {\n const HardBreak = components.hardBreak\n return HardBreak ? <HardBreak key={key} /> : '\\n'\n }\n\n return node.text\n }\n\n function renderUnknownType(node: TypedObject, index: number, key: string, isInline: boolean) {\n const nodeOptions = {\n value: node,\n isInline,\n index,\n renderNode,\n }\n\n handleMissingComponent(unknownTypeWarning(node._type), {\n nodeType: 'block',\n type: node._type,\n })\n\n const UnknownType = components.unknownType\n return <UnknownType key={key} {...nodeOptions} />\n }\n\n function renderCustomBlock(node: TypedObject, index: number, key: string, isInline: boolean) {\n const nodeOptions = {\n value: node,\n isInline,\n index,\n renderNode,\n }\n\n const Node = components.types[node._type]\n return Node ? <Node key={key} {...nodeOptions} /> : null\n }\n\n return renderNode\n}\n\nfunction serializeBlock(options: Serializable<PortableTextBlock>): SerializedBlock {\n const {node, index, isInline, renderNode} = options\n const tree = buildMarksTree(node)\n const children = tree.map((child, i) =>\n renderNode({node: child, isInline: true, index: i, renderNode}),\n )\n\n return {\n _key: node._key || `block-${index}`,\n children,\n index,\n isInline,\n node,\n }\n}\n\nfunction noop() {\n // Intentional noop\n}\n"],"mappings":"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"} | ||
| {"version":3,"file":"index.js","names":[],"sources":["../src/components/list.tsx","../src/components/marks.tsx","../src/warnings.ts","../src/components/unknown.tsx","../src/components/defaults.tsx","../src/components/merge.ts","../src/react-portable-text.tsx"],"sourcesContent":["import type {PortableTextListComponent, PortableTextListItemComponent} from '../types'\n\nexport const defaultLists: Record<'number' | 'bullet', PortableTextListComponent> = {\n number: ({children}) => <ol>{children}</ol>,\n bullet: ({children}) => <ul>{children}</ul>,\n}\n\nexport const DefaultListItem: PortableTextListItemComponent = ({children}) => <li>{children}</li>\n","import type {TypedObject} from '@portabletext/types'\n\nimport type {PortableTextMarkComponent} from '../types'\n\ninterface DefaultLink extends TypedObject {\n _type: 'link'\n href: string\n}\n\nconst link: PortableTextMarkComponent<DefaultLink> = ({children, value}) => (\n <a href={value?.href}>{children}</a>\n)\n\nconst underlineStyle = {textDecoration: 'underline'}\n\nexport const defaultMarks: Record<string, PortableTextMarkComponent | undefined> = {\n em: ({children}) => <em>{children}</em>,\n strong: ({children}) => <strong>{children}</strong>,\n code: ({children}) => <code>{children}</code>,\n underline: ({children}) => <span style={underlineStyle}>{children}</span>,\n 'strike-through': ({children}) => <del>{children}</del>,\n link,\n}\n","const getTemplate = (type: string, prop: string): string =>\n `[@portabletext/react] Unknown ${type}, specify a component for it in the \\`components.${prop}\\` prop`\n\nexport const unknownTypeWarning = (typeName: string): string =>\n getTemplate(`block type \"${typeName}\"`, 'types')\n\nexport const unknownMarkWarning = (markType: string): string =>\n getTemplate(`mark type \"${markType}\"`, 'marks')\n\nexport const unknownBlockStyleWarning = (blockStyle: string): string =>\n getTemplate(`block style \"${blockStyle}\"`, 'block')\n\nexport const unknownListStyleWarning = (listStyle: string): string =>\n getTemplate(`list style \"${listStyle}\"`, 'list')\n\nexport const unknownListItemStyleWarning = (listStyle: string): string =>\n getTemplate(`list item style \"${listStyle}\"`, 'listItem')\n\nexport function printWarning(message: string): void {\n // oxlint-disable-next-line no-console\n console.warn(message)\n}\n","import type {PortableTextReactComponents} from '../types'\nimport {unknownTypeWarning} from '../warnings'\n\nconst hidden = {display: 'none'}\n\nexport const DefaultUnknownType: PortableTextReactComponents['unknownType'] = ({\n value,\n isInline,\n}) => {\n const warning = unknownTypeWarning(value._type)\n return isInline ? <span style={hidden}>{warning}</span> : <div style={hidden}>{warning}</div>\n}\n\nexport const DefaultUnknownMark: PortableTextReactComponents['unknownMark'] = ({\n markType,\n children,\n}) => {\n return <span className={`unknown__pt__mark__${markType}`}>{children}</span>\n}\n\nexport const DefaultUnknownBlockStyle: PortableTextReactComponents['unknownBlockStyle'] = ({\n children,\n}) => {\n return <p>{children}</p>\n}\n\nexport const DefaultUnknownList: PortableTextReactComponents['unknownList'] = ({children}) => {\n return <ul>{children}</ul>\n}\n\nexport const DefaultUnknownListItem: PortableTextReactComponents['unknownListItem'] = ({\n children,\n}) => {\n return <li>{children}</li>\n}\n","import type {PortableTextBlockStyle} from '@portabletext/types'\nimport type {JSX} from 'react'\n\nimport type {PortableTextBlockComponent, PortableTextReactComponents} from '../types'\nimport {DefaultListItem, defaultLists} from './list'\nimport {defaultMarks} from './marks'\nimport {\n DefaultUnknownBlockStyle,\n DefaultUnknownList,\n DefaultUnknownListItem,\n DefaultUnknownMark,\n DefaultUnknownType,\n} from './unknown'\n\nexport const DefaultHardBreak = (): JSX.Element => <br />\n\nexport const defaultBlockStyles: Record<\n PortableTextBlockStyle,\n PortableTextBlockComponent | undefined\n> = {\n normal: ({children}) => <p>{children}</p>,\n blockquote: ({children}) => <blockquote>{children}</blockquote>,\n h1: ({children}) => <h1>{children}</h1>,\n h2: ({children}) => <h2>{children}</h2>,\n h3: ({children}) => <h3>{children}</h3>,\n h4: ({children}) => <h4>{children}</h4>,\n h5: ({children}) => <h5>{children}</h5>,\n h6: ({children}) => <h6>{children}</h6>,\n}\n\nexport const defaultComponents: PortableTextReactComponents = {\n types: {},\n\n block: defaultBlockStyles,\n marks: defaultMarks,\n list: defaultLists,\n listItem: DefaultListItem,\n hardBreak: DefaultHardBreak,\n\n unknownType: DefaultUnknownType,\n unknownMark: DefaultUnknownMark,\n unknownList: DefaultUnknownList,\n unknownListItem: DefaultUnknownListItem,\n unknownBlockStyle: DefaultUnknownBlockStyle,\n}\n","import type {PortableTextComponents, PortableTextReactComponents} from '../types'\n\nexport function mergeComponents(\n parent: PortableTextReactComponents,\n overrides: PortableTextComponents,\n): PortableTextReactComponents {\n const {\n block: _block,\n list: _list,\n listItem: _listItem,\n marks: _marks,\n types: _types,\n ...rest\n } = overrides\n // @todo figure out how to not `as ...` these\n return {\n ...parent,\n block: mergeDeeply(parent, overrides, 'block') as PortableTextReactComponents['block'],\n list: mergeDeeply(parent, overrides, 'list') as PortableTextReactComponents['list'],\n listItem: mergeDeeply(parent, overrides, 'listItem') as PortableTextReactComponents['listItem'],\n marks: mergeDeeply(parent, overrides, 'marks') as PortableTextReactComponents['marks'],\n types: mergeDeeply(parent, overrides, 'types') as PortableTextReactComponents['types'],\n ...rest,\n }\n}\n\nfunction mergeDeeply(\n parent: PortableTextReactComponents,\n overrides: PortableTextComponents,\n key: 'block' | 'list' | 'listItem' | 'marks' | 'types',\n): PortableTextReactComponents[typeof key] {\n const override = overrides[key]\n const parentVal = parent[key]\n\n if (typeof override === 'function') {\n return override\n }\n\n if (override && typeof parentVal === 'function') {\n return override\n }\n\n if (override) {\n return {...parentVal, ...override} as PortableTextReactComponents[typeof key]\n }\n\n return parentVal\n}\n","import type {ToolkitNestedPortableTextSpan, ToolkitTextNode} from '@portabletext/toolkit'\nimport {\n buildMarksTree,\n isPortableTextBlock,\n isPortableTextListItemBlock,\n isPortableTextToolkitList,\n isPortableTextToolkitSpan,\n isPortableTextToolkitTextNode,\n LIST_NEST_MODE_HTML,\n nestLists,\n spanToPlainText,\n} from '@portabletext/toolkit'\nimport type {PortableTextBlock, PortableTextListItemBlock, TypedObject} from '@portabletext/types'\nimport {type JSX, type ReactNode, useMemo} from 'react'\n\nimport {defaultComponents} from './components/defaults'\nimport {mergeComponents} from './components/merge'\nimport type {\n MissingComponentHandler,\n NodeRenderer,\n PortableTextProps,\n PortableTextReactComponents,\n ReactPortableTextList,\n Serializable,\n SerializedBlock,\n} from './types'\nimport {\n printWarning,\n unknownBlockStyleWarning,\n unknownListItemStyleWarning,\n unknownListStyleWarning,\n unknownMarkWarning,\n unknownTypeWarning,\n} from './warnings'\n\nexport function PortableText<B extends TypedObject = PortableTextBlock>({\n value: input,\n components: componentOverrides,\n listNestingMode,\n onMissingComponent: missingComponentHandler = printWarning,\n}: PortableTextProps<B>): JSX.Element {\n const handleMissingComponent = missingComponentHandler || noop\n let blocks: B[]\n if (Array.isArray(input)) {\n blocks = input\n } else if (input == null) {\n blocks = []\n } else {\n blocks = [input]\n }\n const nested = nestLists(blocks, listNestingMode || LIST_NEST_MODE_HTML)\n\n const components = useMemo(() => {\n return componentOverrides\n ? mergeComponents(defaultComponents, componentOverrides)\n : defaultComponents\n }, [componentOverrides])\n\n const renderNode = useMemo(\n () => getNodeRenderer(components, handleMissingComponent),\n [components, handleMissingComponent],\n )\n const rendered = nested.map((node, index) =>\n renderNode({node: node, index, isInline: false, renderNode}),\n )\n\n return <>{rendered}</>\n}\n\nconst getNodeRenderer = (\n components: PortableTextReactComponents,\n handleMissingComponent: MissingComponentHandler,\n): NodeRenderer => {\n function renderNode<N extends TypedObject>(options: Serializable<N>): ReactNode {\n const {node, index, isInline} = options\n const key = node._key || `node-${index}`\n\n if (isPortableTextToolkitList(node)) {\n return renderList(node, index, key)\n }\n\n if (isPortableTextListItemBlock(node)) {\n return renderListItem(node, index, key)\n }\n\n if (isPortableTextToolkitSpan(node)) {\n return renderSpan(node, index, key)\n }\n\n if (hasCustomComponentForNode(node)) {\n return renderCustomBlock(node, index, key, isInline)\n }\n\n if (isPortableTextBlock(node)) {\n return renderBlock(node, index, key, isInline)\n }\n\n if (isPortableTextToolkitTextNode(node)) {\n return renderText(node, key)\n }\n\n return renderUnknownType(node, index, key, isInline)\n }\n\n function hasCustomComponentForNode(node: TypedObject): boolean {\n return node._type in components.types\n }\n\n function renderListItem(node: PortableTextListItemBlock, index: number, key: string) {\n const tree = serializeBlock({node, index, isInline: false, renderNode})\n const renderer = components.listItem\n const handler = typeof renderer === 'function' ? renderer : renderer[node.listItem]\n const Li = handler || components.unknownListItem\n\n if (Li === components.unknownListItem) {\n const style = node.listItem || 'bullet'\n handleMissingComponent(unknownListItemStyleWarning(style), {\n type: style,\n nodeType: 'listItemStyle',\n })\n }\n\n let children = tree.children\n if (node.style && node.style !== 'normal') {\n // Wrap any other style in whatever the block serializer says to use\n const {listItem: _listItem, ...blockNode} = node\n children = renderNode({\n node: blockNode,\n index,\n isInline: false,\n renderNode,\n })\n }\n\n return (\n <Li key={key} value={node} index={index} isInline={false} renderNode={renderNode}>\n {children}\n </Li>\n )\n }\n\n function renderList(node: ReactPortableTextList, index: number, key: string) {\n const children = node.children.map((child, childIndex) =>\n renderNode({\n node: child._key ? child : {...child, _key: `li-${index}-${childIndex}`},\n index: childIndex,\n isInline: false,\n renderNode,\n }),\n )\n\n const component = components.list\n const handler = typeof component === 'function' ? component : component[node.listItem]\n const List = handler || components.unknownList\n\n if (List === components.unknownList) {\n const style = node.listItem || 'bullet'\n handleMissingComponent(unknownListStyleWarning(style), {\n nodeType: 'listStyle',\n type: style,\n })\n }\n\n return (\n <List key={key} value={node} index={index} isInline={false} renderNode={renderNode}>\n {children}\n </List>\n )\n }\n\n function renderSpan(node: ToolkitNestedPortableTextSpan, _index: number, key: string) {\n const {markDef, markType, markKey} = node\n const Span = components.marks[markType] || components.unknownMark\n const children = node.children.map((child, childIndex) =>\n renderNode({\n node: child,\n index: childIndex,\n isInline: true,\n renderNode,\n }),\n )\n\n if (Span === components.unknownMark) {\n handleMissingComponent(unknownMarkWarning(markType), {\n nodeType: 'mark',\n type: markType,\n })\n }\n\n return (\n <Span\n key={key}\n text={spanToPlainText(node)}\n value={markDef}\n markType={markType}\n markKey={markKey}\n renderNode={renderNode}\n >\n {children}\n </Span>\n )\n }\n\n function renderBlock(node: PortableTextBlock, index: number, key: string, isInline: boolean) {\n const {_key, ...props} = serializeBlock({\n node,\n index,\n isInline,\n renderNode,\n })\n const style = props.node.style || 'normal'\n const handler =\n typeof components.block === 'function' ? components.block : components.block[style]\n const Block = handler || components.unknownBlockStyle\n\n if (Block === components.unknownBlockStyle) {\n handleMissingComponent(unknownBlockStyleWarning(style), {\n nodeType: 'blockStyle',\n type: style,\n })\n }\n\n return <Block key={key} {...props} value={props.node} renderNode={renderNode} />\n }\n\n function renderText(node: ToolkitTextNode, key: string) {\n if (node.text === '\\n') {\n const HardBreak = components.hardBreak\n return HardBreak ? <HardBreak key={key} /> : '\\n'\n }\n\n return node.text\n }\n\n function renderUnknownType(node: TypedObject, index: number, key: string, isInline: boolean) {\n const nodeOptions = {\n value: node,\n isInline,\n index,\n renderNode,\n }\n\n handleMissingComponent(unknownTypeWarning(node._type), {\n nodeType: 'block',\n type: node._type,\n })\n\n const UnknownType = components.unknownType\n return <UnknownType key={key} {...nodeOptions} />\n }\n\n function renderCustomBlock(node: TypedObject, index: number, key: string, isInline: boolean) {\n const nodeOptions = {\n value: node,\n isInline,\n index,\n renderNode,\n }\n\n const Node = components.types[node._type]\n return Node ? <Node key={key} {...nodeOptions} /> : null\n }\n\n return renderNode\n}\n\nfunction serializeBlock(options: Serializable<PortableTextBlock>): SerializedBlock {\n const {node, index, isInline, renderNode} = options\n const tree = buildMarksTree(node)\n const children = tree.map((child, i) =>\n renderNode({node: child, isInline: true, index: i, renderNode}),\n )\n\n return {\n _key: node._key || `block-${index}`,\n children,\n index,\n isInline,\n node,\n }\n}\n\nfunction noop() {\n // Intentional noop\n}\n"],"mappings":"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"} |
+19
-16
| { | ||
| "name": "@portabletext/react", | ||
| "version": "6.0.3", | ||
| "version": "6.1.0", | ||
| "description": "Render Portable Text with React", | ||
@@ -36,7 +36,8 @@ "keywords": [ | ||
| "devDependencies": { | ||
| "@changesets/changelog-github": "^0.5.2", | ||
| "@changesets/cli": "^2.29.8", | ||
| "@changesets/changelog-github": "^0.6.0", | ||
| "@changesets/cli": "^2.31.0", | ||
| "@sanity/client": "^7.22.0", | ||
| "@sanity/tsconfig": "^2.1.0", | ||
| "@sanity/tsdown-config": "^0.5.8", | ||
| "@sanity/ui": "^3.1.13", | ||
| "@sanity/tsdown-config": "^0.6.1", | ||
| "@sanity/ui": "^3.1.14", | ||
| "@types/leaflet": "^1.9.21", | ||
@@ -46,13 +47,14 @@ "@types/react": "^19.2.14", | ||
| "@types/ws": "^8.18.1", | ||
| "@vitejs/plugin-react": "^5.1.4", | ||
| "@vitejs/plugin-react": "^5.2.0", | ||
| "babel-plugin-react-compiler": "^1.0.0", | ||
| "esbuild": "^0.27.3", | ||
| "esbuild": "^0.28.0", | ||
| "esbuild-register": "^3.6.0", | ||
| "groq": "^5.23.0", | ||
| "leaflet": "^1.9.4", | ||
| "oxfmt": "^0.36.0", | ||
| "oxlint": "^1.51.0", | ||
| "oxlint-tsgolint": "^0.16.0", | ||
| "react": "^19.2.4", | ||
| "react-dom": "^19.2.4", | ||
| "react-is": "^19.2.4", | ||
| "oxfmt": "^0.47.0", | ||
| "oxlint": "^1.62.0", | ||
| "oxlint-tsgolint": "^0.22.1", | ||
| "react": "^19.2.5", | ||
| "react-dom": "^19.2.5", | ||
| "react-is": "^19.2.5", | ||
| "react-leaflet": "^5.0.0", | ||
@@ -62,8 +64,9 @@ "react-refractor": "^4.0.0", | ||
| "rimraf": "^5.0.1", | ||
| "rollup-plugin-visualizer": "^7.0.0", | ||
| "rollup-plugin-visualizer": "^7.0.1", | ||
| "sanity": "^5.23.0", | ||
| "styled-components": "npm:@sanity/css-in-js@6.2.1", | ||
| "tsdown": "^0.20.3", | ||
| "tsdown": "^0.21.10", | ||
| "typescript": "5.9.3", | ||
| "vite": "^7.3.1", | ||
| "vitest": "^4.0.18" | ||
| "vitest": "^4.1.5" | ||
| }, | ||
@@ -70,0 +73,0 @@ "peerDependencies": { |
60842
0.56%505
0.4%33
10%