UNPKG

@wordpress/block-editor

Version:
54 lines (44 loc) 1.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = useInternalValue; var _element = require("@wordpress/element"); /** * WordPress dependencies */ function useInternalValue(value) { const [internalValue, setInternalValue] = (0, _element.useState)(value || {}); // If the value prop changes, update the internal state. (0, _element.useEffect)(() => { setInternalValue(prevValue => { if (value && value !== prevValue) { return value; } return prevValue; }); }, [value]); const setInternalURLInputValue = nextValue => { setInternalValue({ ...internalValue, url: nextValue }); }; const setInternalTextInputValue = nextValue => { setInternalValue({ ...internalValue, title: nextValue }); }; const createSetInternalSettingValueHandler = settingsKeys => nextValue => { // Only apply settings values which are defined in the settings prop. 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]; } //# sourceMappingURL=use-internal-value.js.map