{
  "version": 3,
  "sources": ["../../../src/components/sidebar-navigation-screen-patterns/use-pattern-categories.js"],
  "sourcesContent": ["import { useMemo } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport useDefaultPatternCategories from './use-default-pattern-categories';\nimport useThemePatterns from './use-theme-patterns';\nimport usePatterns from '../page-patterns/use-patterns';\nimport {\n\tPATTERN_TYPES,\n\tPATTERN_DEFAULT_CATEGORY,\n\tPATTERN_USER_CATEGORY,\n\tTEMPLATE_PART_AREA_DEFAULT_CATEGORY,\n} from '../../utils/constants';\n\nexport default function usePatternCategories() {\n\tconst defaultCategories = useDefaultPatternCategories();\n\tdefaultCategories.push( {\n\t\tname: TEMPLATE_PART_AREA_DEFAULT_CATEGORY,\n\t\tlabel: __( 'Uncategorized' ),\n\t} );\n\tconst themePatterns = useThemePatterns();\n\tconst { patterns: userPatterns, categories: userPatternCategories } =\n\t\tusePatterns( PATTERN_TYPES.user );\n\n\tconst patternCategories = useMemo( () => {\n\t\tconst categoryMap = {};\n\t\tconst categoriesWithCounts = [];\n\n\t\t// Create a map for easier counting of patterns in categories.\n\t\tdefaultCategories.forEach( ( category ) => {\n\t\t\tif ( ! categoryMap[ category.name ] ) {\n\t\t\t\tcategoryMap[ category.name ] = { ...category, count: 0 };\n\t\t\t}\n\t\t} );\n\t\tuserPatternCategories.forEach( ( category ) => {\n\t\t\tif ( ! categoryMap[ category.name ] ) {\n\t\t\t\tcategoryMap[ category.name ] = { ...category, count: 0 };\n\t\t\t}\n\t\t} );\n\n\t\t// Update the category counts to reflect theme registered patterns.\n\t\tthemePatterns.forEach( ( pattern ) => {\n\t\t\tpattern.categories?.forEach( ( category ) => {\n\t\t\t\tif ( categoryMap[ category ] ) {\n\t\t\t\t\tcategoryMap[ category ].count += 1;\n\t\t\t\t}\n\t\t\t} );\n\t\t\t// If the pattern has no categories, add it to uncategorized.\n\t\t\tif ( ! pattern.categories?.length ) {\n\t\t\t\tcategoryMap.uncategorized.count += 1;\n\t\t\t}\n\t\t} );\n\n\t\t// Update the category counts to reflect user registered patterns.\n\t\tuserPatterns.forEach( ( pattern ) => {\n\t\t\tpattern.wp_pattern_category?.forEach( ( catId ) => {\n\t\t\t\tconst category = userPatternCategories.find(\n\t\t\t\t\t( cat ) => cat.id === catId\n\t\t\t\t)?.name;\n\t\t\t\tif ( categoryMap[ category ] ) {\n\t\t\t\t\tcategoryMap[ category ].count += 1;\n\t\t\t\t}\n\t\t\t} );\n\t\t\t// If the pattern has no categories, add it to uncategorized.\n\t\t\tif (\n\t\t\t\t! pattern.wp_pattern_category?.length ||\n\t\t\t\t! pattern.wp_pattern_category?.some( ( catId ) =>\n\t\t\t\t\tuserPatternCategories.find( ( cat ) => cat.id === catId )\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tcategoryMap.uncategorized.count += 1;\n\t\t\t}\n\t\t} );\n\n\t\t// Filter categories so we only have those containing patterns.\n\t\t[ ...defaultCategories, ...userPatternCategories ].forEach(\n\t\t\t( category ) => {\n\t\t\t\tif (\n\t\t\t\t\tcategoryMap[ category.name ].count &&\n\t\t\t\t\t! categoriesWithCounts.find(\n\t\t\t\t\t\t( cat ) => cat.name === category.name\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tcategoriesWithCounts.push( categoryMap[ category.name ] );\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t\tconst sortedCategories = categoriesWithCounts.sort( ( a, b ) =>\n\t\t\ta.label.localeCompare( b.label )\n\t\t);\n\n\t\tsortedCategories.unshift( {\n\t\t\tname: PATTERN_USER_CATEGORY,\n\t\t\tlabel: __( 'My patterns' ),\n\t\t\tcount: userPatterns.length,\n\t\t} );\n\n\t\tsortedCategories.unshift( {\n\t\t\tname: PATTERN_DEFAULT_CATEGORY,\n\t\t\tlabel: __( 'All patterns' ),\n\t\t\tdescription: __( 'A list of all patterns from all sources.' ),\n\t\t\tcount: themePatterns.length + userPatterns.length,\n\t\t} );\n\n\t\treturn sortedCategories;\n\t}, [\n\t\tdefaultCategories,\n\t\tthemePatterns,\n\t\tuserPatternCategories,\n\t\tuserPatterns,\n\t] );\n\n\treturn { patternCategories, hasPatterns: !! patternCategories.length };\n}\n"],
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAwB;AACxB,kBAAmB;AACnB,4CAAwC;AACxC,gCAA6B;AAC7B,0BAAwB;AACxB,uBAKO;AAEQ,SAAR,uBAAwC;AAC9C,QAAM,wBAAoB,sCAAAA,SAA4B;AACtD,oBAAkB,KAAM;AAAA,IACvB,MAAM;AAAA,IACN,WAAO,gBAAI,eAAgB;AAAA,EAC5B,CAAE;AACF,QAAM,oBAAgB,0BAAAC,SAAiB;AACvC,QAAM,EAAE,UAAU,cAAc,YAAY,sBAAsB,QACjE,oBAAAC,SAAa,+BAAc,IAAK;AAEjC,QAAM,wBAAoB,wBAAS,MAAM;AACxC,UAAM,cAAc,CAAC;AACrB,UAAM,uBAAuB,CAAC;AAG9B,sBAAkB,QAAS,CAAE,aAAc;AAC1C,UAAK,CAAE,YAAa,SAAS,IAAK,GAAI;AACrC,oBAAa,SAAS,IAAK,IAAI,EAAE,GAAG,UAAU,OAAO,EAAE;AAAA,MACxD;AAAA,IACD,CAAE;AACF,0BAAsB,QAAS,CAAE,aAAc;AAC9C,UAAK,CAAE,YAAa,SAAS,IAAK,GAAI;AACrC,oBAAa,SAAS,IAAK,IAAI,EAAE,GAAG,UAAU,OAAO,EAAE;AAAA,MACxD;AAAA,IACD,CAAE;AAGF,kBAAc,QAAS,CAAE,YAAa;AACrC,cAAQ,YAAY,QAAS,CAAE,aAAc;AAC5C,YAAK,YAAa,QAAS,GAAI;AAC9B,sBAAa,QAAS,EAAE,SAAS;AAAA,QAClC;AAAA,MACD,CAAE;AAEF,UAAK,CAAE,QAAQ,YAAY,QAAS;AACnC,oBAAY,cAAc,SAAS;AAAA,MACpC;AAAA,IACD,CAAE;AAGF,iBAAa,QAAS,CAAE,YAAa;AACpC,cAAQ,qBAAqB,QAAS,CAAE,UAAW;AAClD,cAAM,WAAW,sBAAsB;AAAA,UACtC,CAAE,QAAS,IAAI,OAAO;AAAA,QACvB,GAAG;AACH,YAAK,YAAa,QAAS,GAAI;AAC9B,sBAAa,QAAS,EAAE,SAAS;AAAA,QAClC;AAAA,MACD,CAAE;AAEF,UACC,CAAE,QAAQ,qBAAqB,UAC/B,CAAE,QAAQ,qBAAqB;AAAA,QAAM,CAAE,UACtC,sBAAsB,KAAM,CAAE,QAAS,IAAI,OAAO,KAAM;AAAA,MACzD,GACC;AACD,oBAAY,cAAc,SAAS;AAAA,MACpC;AAAA,IACD,CAAE;AAGF,KAAE,GAAG,mBAAmB,GAAG,qBAAsB,EAAE;AAAA,MAClD,CAAE,aAAc;AACf,YACC,YAAa,SAAS,IAAK,EAAE,SAC7B,CAAE,qBAAqB;AAAA,UACtB,CAAE,QAAS,IAAI,SAAS,SAAS;AAAA,QAClC,GACC;AACD,+BAAqB,KAAM,YAAa,SAAS,IAAK,CAAE;AAAA,QACzD;AAAA,MACD;AAAA,IACD;AACA,UAAM,mBAAmB,qBAAqB;AAAA,MAAM,CAAE,GAAG,MACxD,EAAE,MAAM,cAAe,EAAE,KAAM;AAAA,IAChC;AAEA,qBAAiB,QAAS;AAAA,MACzB,MAAM;AAAA,MACN,WAAO,gBAAI,aAAc;AAAA,MACzB,OAAO,aAAa;AAAA,IACrB,CAAE;AAEF,qBAAiB,QAAS;AAAA,MACzB,MAAM;AAAA,MACN,WAAO,gBAAI,cAAe;AAAA,MAC1B,iBAAa,gBAAI,0CAA2C;AAAA,MAC5D,OAAO,cAAc,SAAS,aAAa;AAAA,IAC5C,CAAE;AAEF,WAAO;AAAA,EACR,GAAG;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAE;AAEF,SAAO,EAAE,mBAAmB,aAAa,CAAC,CAAE,kBAAkB,OAAO;AACtE;",
  "names": ["useDefaultPatternCategories", "useThemePatterns", "usePatterns"]
}
