UNPKG

@wordpress/block-editor

Version:
8 lines (7 loc) 2.74 kB
{ "version": 3, "sources": ["../../../src/components/link-control/use-internal-value.js"], "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useState } from '@wordpress/element';\n\n/**\n * External dependencies\n */\nimport fastDeepEqual from 'fast-deep-equal';\n\nexport default function useInternalValue( value ) {\n\tconst [ internalValue, setInternalValue ] = useState( value || {} );\n\tconst [ previousValue, setPreviousValue ] = useState( value );\n\n\t// If the value prop changes, update the internal state.\n\t// See:\n\t// - https://github.com/WordPress/gutenberg/pull/51387#issuecomment-1722927384.\n\t// - https://react.dev/reference/react/useState#storing-information-from-previous-renders.\n\tif ( ! fastDeepEqual( value, previousValue ) ) {\n\t\tsetPreviousValue( value );\n\t\tsetInternalValue( value );\n\t}\n\n\tconst setInternalURLInputValue = ( nextValue ) => {\n\t\tsetInternalValue( {\n\t\t\t...internalValue,\n\t\t\turl: nextValue,\n\t\t} );\n\t};\n\n\tconst setInternalTextInputValue = ( nextValue ) => {\n\t\tsetInternalValue( {\n\t\t\t...internalValue,\n\t\t\ttitle: nextValue,\n\t\t} );\n\t};\n\n\tconst createSetInternalSettingValueHandler =\n\t\t( settingsKeys ) => ( nextValue ) => {\n\t\t\t// Only apply settings values which are defined in the settings prop.\n\t\t\tconst settingsUpdates = Object.keys( nextValue ).reduce(\n\t\t\t\t( acc, key ) => {\n\t\t\t\t\tif ( settingsKeys.includes( key ) ) {\n\t\t\t\t\t\tacc[ key ] = nextValue[ key ];\n\t\t\t\t\t}\n\t\t\t\t\treturn acc;\n\t\t\t\t},\n\t\t\t\t{}\n\t\t\t);\n\n\t\t\tsetInternalValue( {\n\t\t\t\t...internalValue,\n\t\t\t\t...settingsUpdates,\n\t\t\t} );\n\t\t};\n\n\treturn [\n\t\tinternalValue,\n\t\tsetInternalValue,\n\t\tsetInternalURLInputValue,\n\t\tsetInternalTextInputValue,\n\t\tcreateSetInternalSettingValueHandler,\n\t];\n}\n"], "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,qBAAyB;AAKzB,6BAA0B;AAEX,SAAR,iBAAmC,OAAQ;AACjD,QAAM,CAAE,eAAe,gBAAiB,QAAI,yBAAU,SAAS,CAAC,CAAE;AAClE,QAAM,CAAE,eAAe,gBAAiB,QAAI,yBAAU,KAAM;AAM5D,MAAK,KAAE,uBAAAA,SAAe,OAAO,aAAc,GAAI;AAC9C,qBAAkB,KAAM;AACxB,qBAAkB,KAAM;AAAA,EACzB;AAEA,QAAM,2BAA2B,CAAE,cAAe;AACjD,qBAAkB;AAAA,MACjB,GAAG;AAAA,MACH,KAAK;AAAA,IACN,CAAE;AAAA,EACH;AAEA,QAAM,4BAA4B,CAAE,cAAe;AAClD,qBAAkB;AAAA,MACjB,GAAG;AAAA,MACH,OAAO;AAAA,IACR,CAAE;AAAA,EACH;AAEA,QAAM,uCACL,CAAE,iBAAkB,CAAE,cAAe;AAEpC,UAAM,kBAAkB,OAAO,KAAM,SAAU,EAAE;AAAA,MAChD,CAAE,KAAK,QAAS;AACf,YAAK,aAAa,SAAU,GAAI,GAAI;AACnC,cAAK,GAAI,IAAI,UAAW,GAAI;AAAA,QAC7B;AACA,eAAO;AAAA,MACR;AAAA,MACA,CAAC;AAAA,IACF;AAEA,qBAAkB;AAAA,MACjB,GAAG;AAAA,MACH,GAAG;AAAA,IACJ,CAAE;AAAA,EACH;AAED,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;", "names": ["fastDeepEqual"] }