@wordpress/editor
Version:
Enhanced block editor for WordPress posts.
8 lines (7 loc) • 3.59 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../../../src/components/revision-fields-diff/index.js"],
"sourcesContent": ["/**\n * External dependencies\n */\nimport { diffWords } from 'diff/lib/diff/word';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport RevisionDiffPanel from '../revision-diff-panel';\nimport { store as editorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\n/**\n * Safely stringifies a value for display and comparison.\n *\n * @param {*} value The value to stringify.\n * @return {string} The stringified value.\n */\nfunction stringifyValue( value ) {\n\tif ( value === null || value === undefined ) {\n\t\treturn '';\n\t}\n\tif ( typeof value === 'object' ) {\n\t\treturn JSON.stringify( value, null, 2 );\n\t}\n\treturn String( value );\n}\n\n/**\n * Panel that shows meta field diffs between the current revision and\n * the previous revision in the document sidebar during revision mode.\n */\nexport default function RevisionFieldsDiffPanel() {\n\tconst { revision, previousRevision } = useSelect( ( select ) => {\n\t\tconst { getCurrentRevision, getPreviousRevision } = unlock(\n\t\t\tselect( editorStore )\n\t\t);\n\n\t\treturn {\n\t\t\trevision: getCurrentRevision(),\n\t\t\tpreviousRevision: getPreviousRevision(),\n\t\t};\n\t}, [] );\n\n\tconst entries = useMemo( () => {\n\t\tif ( ! revision ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst revisionMeta = revision.meta ?? {};\n\t\tconst previousMeta = previousRevision?.meta ?? {};\n\t\tconst allMetaKeys = new Set( [\n\t\t\t...Object.keys( revisionMeta ),\n\t\t\t...Object.keys( previousMeta ),\n\t\t] );\n\n\t\tconst result = {};\n\n\t\tfor ( const key of allMetaKeys ) {\n\t\t\tconst revStr = stringifyValue( revisionMeta[ key ] );\n\t\t\tconst prevStr = stringifyValue( previousMeta[ key ] );\n\n\t\t\tif ( ! revStr && ! prevStr ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tresult[ key ] = diffWords( prevStr, revStr );\n\t\t}\n\n\t\tif ( Object.keys( result ).length === 0 ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn result;\n\t}, [ revision, previousRevision ] );\n\n\treturn (\n\t\t<RevisionDiffPanel\n\t\t\ttitle={ __( 'Meta' ) }\n\t\t\tentries={ entries }\n\t\t\tinitialOpen={ false }\n\t\t/>\n\t);\n}\n"],
"mappings": ";AAGA,SAAS,iBAAiB;AAK1B,SAAS,iBAAiB;AAC1B,SAAS,eAAe;AACxB,SAAS,UAAU;AAKnB,OAAO,uBAAuB;AAC9B,SAAS,SAAS,mBAAmB;AACrC,SAAS,cAAc;AAmErB;AA3DF,SAAS,eAAgB,OAAQ;AAChC,MAAK,UAAU,QAAQ,UAAU,QAAY;AAC5C,WAAO;AAAA,EACR;AACA,MAAK,OAAO,UAAU,UAAW;AAChC,WAAO,KAAK,UAAW,OAAO,MAAM,CAAE;AAAA,EACvC;AACA,SAAO,OAAQ,KAAM;AACtB;AAMe,SAAR,0BAA2C;AACjD,QAAM,EAAE,UAAU,iBAAiB,IAAI,UAAW,CAAE,WAAY;AAC/D,UAAM,EAAE,oBAAoB,oBAAoB,IAAI;AAAA,MACnD,OAAQ,WAAY;AAAA,IACrB;AAEA,WAAO;AAAA,MACN,UAAU,mBAAmB;AAAA,MAC7B,kBAAkB,oBAAoB;AAAA,IACvC;AAAA,EACD,GAAG,CAAC,CAAE;AAEN,QAAM,UAAU,QAAS,MAAM;AAC9B,QAAK,CAAE,UAAW;AACjB,aAAO;AAAA,IACR;AAEA,UAAM,eAAe,SAAS,QAAQ,CAAC;AACvC,UAAM,eAAe,kBAAkB,QAAQ,CAAC;AAChD,UAAM,cAAc,oBAAI,IAAK;AAAA,MAC5B,GAAG,OAAO,KAAM,YAAa;AAAA,MAC7B,GAAG,OAAO,KAAM,YAAa;AAAA,IAC9B,CAAE;AAEF,UAAM,SAAS,CAAC;AAEhB,eAAY,OAAO,aAAc;AAChC,YAAM,SAAS,eAAgB,aAAc,GAAI,CAAE;AACnD,YAAM,UAAU,eAAgB,aAAc,GAAI,CAAE;AAEpD,UAAK,CAAE,UAAU,CAAE,SAAU;AAC5B;AAAA,MACD;AAEA,aAAQ,GAAI,IAAI,UAAW,SAAS,MAAO;AAAA,IAC5C;AAEA,QAAK,OAAO,KAAM,MAAO,EAAE,WAAW,GAAI;AACzC,aAAO;AAAA,IACR;AAEA,WAAO;AAAA,EACR,GAAG,CAAE,UAAU,gBAAiB,CAAE;AAElC,SACC;AAAA,IAAC;AAAA;AAAA,MACA,OAAQ,GAAI,MAAO;AAAA,MACnB;AAAA,MACA,aAAc;AAAA;AAAA,EACf;AAEF;",
"names": []
}