{
  "version": 3,
  "sources": ["../../src/utils/get-filtered-template-parts.js"],
  "sourcesContent": ["import { isTemplatePart } from '@wordpress/blocks';\n\nconst EMPTY_ARRAY = [];\n\n/**\n * Get a flattened and filtered list of template parts and the matching block for that template part.\n *\n * Takes a list of blocks defined within a template, and a list of template parts, and returns a\n * flattened list of template parts and the matching block for that template part.\n *\n * @param {Array}  blocks        Blocks to flatten.\n * @param {?Array} templateParts Available template parts.\n * @return {Array} An array of template parts and their blocks.\n */\nexport default function getFilteredTemplatePartBlocks(\n\tblocks = EMPTY_ARRAY,\n\ttemplateParts\n) {\n\tconst templatePartsById = templateParts\n\t\t? // Key template parts by their ID.\n\t\t  templateParts.reduce(\n\t\t\t\t( newTemplateParts, part ) => ( {\n\t\t\t\t\t...newTemplateParts,\n\t\t\t\t\t[ part.id ]: part,\n\t\t\t\t} ),\n\t\t\t\t{}\n\t\t  )\n\t\t: {};\n\n\tconst result = [];\n\n\t// Iterate over all blocks, recursing into inner blocks.\n\t// Output will be based on a depth-first traversal.\n\tconst stack = [ ...blocks ];\n\twhile ( stack.length ) {\n\t\tconst { innerBlocks, ...block } = stack.shift();\n\t\t// Place inner blocks at the beginning of the stack to preserve order.\n\t\tstack.unshift( ...innerBlocks );\n\n\t\tif ( isTemplatePart( block ) ) {\n\t\t\tconst {\n\t\t\t\tattributes: { theme, slug },\n\t\t\t} = block;\n\t\t\tconst templatePartId = `${ theme }//${ slug }`;\n\t\t\tconst templatePart = templatePartsById[ templatePartId ];\n\n\t\t\t// Only add to output if the found template part block is in the list of available template parts.\n\t\t\tif ( templatePart ) {\n\t\t\t\tresult.push( {\n\t\t\t\t\ttemplatePart,\n\t\t\t\t\tblock,\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n}\n"],
  "mappings": ";AAAA,SAAS,sBAAsB;AAE/B,IAAM,cAAc,CAAC;AAYN,SAAR,8BACN,SAAS,aACT,eACC;AACD,QAAM,oBAAoB;AAAA;AAAA,IAEvB,cAAc;AAAA,MACd,CAAE,kBAAkB,UAAY;AAAA,QAC/B,GAAG;AAAA,QACH,CAAE,KAAK,EAAG,GAAG;AAAA,MACd;AAAA,MACA,CAAC;AAAA,IACD;AAAA,MACA,CAAC;AAEJ,QAAM,SAAS,CAAC;AAIhB,QAAM,QAAQ,CAAE,GAAG,MAAO;AAC1B,SAAQ,MAAM,QAAS;AACtB,UAAM,EAAE,aAAa,GAAG,MAAM,IAAI,MAAM,MAAM;AAE9C,UAAM,QAAS,GAAG,WAAY;AAE9B,QAAK,eAAgB,KAAM,GAAI;AAC9B,YAAM;AAAA,QACL,YAAY,EAAE,OAAO,KAAK;AAAA,MAC3B,IAAI;AACJ,YAAM,iBAAiB,GAAI,KAAM,KAAM,IAAK;AAC5C,YAAM,eAAe,kBAAmB,cAAe;AAGvD,UAAK,cAAe;AACnB,eAAO,KAAM;AAAA,UACZ;AAAA,UACA;AAAA,QACD,CAAE;AAAA,MACH;AAAA,IACD;AAAA,EACD;AAEA,SAAO;AACR;",
  "names": []
}
