UNPKG

@wordpress/block-editor

Version:
50 lines (49 loc) 1.34 kB
// packages/block-editor/src/components/link-control/use-internal-value.js import { useState } from "@wordpress/element"; import fastDeepEqual from "fast-deep-equal"; function useInternalValue(value) { const [internalValue, setInternalValue] = useState(value || {}); const [previousValue, setPreviousValue] = useState(value); if (!fastDeepEqual(value, previousValue)) { setPreviousValue(value); setInternalValue(value); } const setInternalURLInputValue = (nextValue) => { setInternalValue({ ...internalValue, url: nextValue }); }; const setInternalTextInputValue = (nextValue) => { setInternalValue({ ...internalValue, title: nextValue }); }; const createSetInternalSettingValueHandler = (settingsKeys) => (nextValue) => { const settingsUpdates = Object.keys(nextValue).reduce( (acc, key) => { if (settingsKeys.includes(key)) { acc[key] = nextValue[key]; } return acc; }, {} ); setInternalValue({ ...internalValue, ...settingsUpdates }); }; return [ internalValue, setInternalValue, setInternalURLInputValue, setInternalTextInputValue, createSetInternalSettingValueHandler ]; } export { useInternalValue as default }; //# sourceMappingURL=use-internal-value.js.map