UNPKG

@wordpress/block-library

Version:
8 lines (7 loc) 2.6 kB
{ "version": 3, "sources": ["../../../src/navigation/edit/are-blocks-dirty.js"], "sourcesContent": ["export function areBlocksDirty( originalBlocks, blocks ) {\n\treturn ! isDeepEqual( originalBlocks, blocks, ( prop, x ) => {\n\t\t// Skip inner blocks of page list during comparison as they\n\t\t// are **always** controlled and may be updated async due to\n\t\t// syncing with entity records. Left unchecked this would\n\t\t// inadvertently trigger the dirty state.\n\t\tif ( x?.name === 'core/page-list' && prop === 'innerBlocks' ) {\n\t\t\treturn true;\n\t\t}\n\t} );\n}\n\n/**\n * Conditionally compares two candidates for deep equality.\n * Provides an option to skip a given property of an object during comparison.\n *\n * @param {*} x 1st candidate for comparison\n * @param {*} y 2nd candidate for comparison\n * @param {Function|undefined} shouldSkip a function which can be used to skip a given property of an object.\n * @return {boolean} whether the two candidates are deeply equal.\n */\nconst isDeepEqual = ( x, y, shouldSkip ) => {\n\tif ( x === y ) {\n\t\treturn true;\n\t} else if (\n\t\ttypeof x === 'object' &&\n\t\tx !== null &&\n\t\tx !== undefined &&\n\t\ttypeof y === 'object' &&\n\t\ty !== null &&\n\t\ty !== undefined\n\t) {\n\t\tif ( Object.keys( x ).length !== Object.keys( y ).length ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tfor ( const prop in x ) {\n\t\t\tif ( y.hasOwnProperty( prop ) ) {\n\t\t\t\t// Afford skipping a given property of an object.\n\t\t\t\tif ( shouldSkip && shouldSkip( prop, x ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tif ( ! isDeepEqual( x[ prop ], y[ prop ], shouldSkip ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n"], "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,SAAS,eAAgB,gBAAgB,QAAS;AACxD,SAAO,CAAE,YAAa,gBAAgB,QAAQ,CAAE,MAAM,MAAO;AAK5D,QAAK,GAAG,SAAS,oBAAoB,SAAS,eAAgB;AAC7D,aAAO;AAAA,IACR;AAAA,EACD,CAAE;AACH;AAWA,IAAM,cAAc,CAAE,GAAG,GAAG,eAAgB;AAC3C,MAAK,MAAM,GAAI;AACd,WAAO;AAAA,EACR,WACC,OAAO,MAAM,YACb,MAAM,QACN,MAAM,UACN,OAAO,MAAM,YACb,MAAM,QACN,MAAM,QACL;AACD,QAAK,OAAO,KAAM,CAAE,EAAE,WAAW,OAAO,KAAM,CAAE,EAAE,QAAS;AAC1D,aAAO;AAAA,IACR;AAEA,eAAY,QAAQ,GAAI;AACvB,UAAK,EAAE,eAAgB,IAAK,GAAI;AAE/B,YAAK,cAAc,WAAY,MAAM,CAAE,GAAI;AAC1C,iBAAO;AAAA,QACR;AAEA,YAAK,CAAE,YAAa,EAAG,IAAK,GAAG,EAAG,IAAK,GAAG,UAAW,GAAI;AACxD,iBAAO;AAAA,QACR;AAAA,MACD,OAAO;AACN,eAAO;AAAA,MACR;AAAA,IACD;AAEA,WAAO;AAAA,EACR;AAEA,SAAO;AACR;", "names": [] }