UNPKG

@tohuhono/puck-rich-text

Version:

A puck component for rich text editing made for OberonCMS

54 lines (46 loc) 1.04 kB
import { usePuck } from "@measured/puck" export const useSelected = (componentId: string) => { const { appState: { ui: { itemSelector }, data, }, dispatch, } = usePuck() if (!itemSelector) { return { isSelected: false, onChange: () => {}, } } const { index: destinationIndex, zone: destinationZone } = itemSelector if (!destinationZone) { return { isSelected: false, onChange: () => {}, } } const item = destinationZone !== "default-zone" ? data.zones?.[destinationZone]?.[destinationIndex] : data.content[destinationIndex] if (item?.props.id !== componentId) { return { isSelected: false, onChange: () => {}, } } return { isSelected: true, onChange: (props: Partial<typeof item.props>) => dispatch({ type: "replace", destinationIndex, destinationZone, data: { props: { ...item.props, ...props }, type: item.type, }, }), } }