UNPKG

@lucidcms/core

Version:

The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.

1 lines 1.89 kB
{"version":3,"file":"build-hierachy.mjs","names":[],"sources":["../../../../src/services/media-folders/helpers/build-hierachy.ts"],"sourcesContent":["import type {\n\tMediaFolderPropsT,\n\tMediaFolderWithHierarchyPropsT,\n} from \"../../../libs/formatters/media-folders.js\";\n\n/**\n * Builds a hierarchy of media folders\n */\nconst buildHierarchy = (\n\tfolders: MediaFolderPropsT[],\n): MediaFolderWithHierarchyPropsT[] => {\n\tconst orderedFolders: MediaFolderWithHierarchyPropsT[] = [];\n\tlet orderCounter = 0;\n\n\tconst processFolder = (folder: MediaFolderPropsT, level: number) => {\n\t\tconst prefix = \"-\".repeat(level);\n\t\tconst label = level > 0 ? `${prefix} ${folder.title}` : folder.title;\n\n\t\torderedFolders.push({\n\t\t\t...folder,\n\t\t\tlevel,\n\t\t\torder: orderCounter++,\n\t\t\tlabel,\n\t\t});\n\n\t\tconst children = folders\n\t\t\t.filter((f) => f.parent_folder_id === folder.id)\n\t\t\t.sort((a, b) => a.title.localeCompare(b.title));\n\n\t\tfor (const child of children) {\n\t\t\tprocessFolder(child, level + 1);\n\t\t}\n\t};\n\n\tconst rootFolders = folders\n\t\t.filter((f) => f.parent_folder_id === null)\n\t\t.sort((a, b) => a.title.localeCompare(b.title));\n\n\tfor (const folder of rootFolders) {\n\t\tprocessFolder(folder, 0);\n\t}\n\n\treturn orderedFolders;\n};\n\nexport default buildHierarchy;\n"],"mappings":"AAQA,MAAM,EACL,GACsC,CACtC,IAAM,EAAmD,CAAC,EACtD,EAAe,EAEb,GAAiB,EAA2B,IAAkB,CACnE,IAAM,EAAS,IAAI,OAAO,CAAK,EACzB,EAAQ,EAAQ,EAAI,GAAG,EAAO,GAAG,EAAO,QAAU,EAAO,MAE/D,EAAe,KAAK,CACnB,GAAG,EACH,QACA,MAAO,IACP,OACD,CAAC,EAED,IAAM,EAAW,EACf,OAAQ,GAAM,EAAE,mBAAqB,EAAO,EAAE,CAAC,CAC/C,MAAM,EAAG,IAAM,EAAE,MAAM,cAAc,EAAE,KAAK,CAAC,EAE/C,IAAK,IAAM,KAAS,EACnB,EAAc,EAAO,EAAQ,CAAC,CAEhC,EAEM,EAAc,EAClB,OAAQ,GAAM,EAAE,mBAAqB,IAAI,CAAC,CAC1C,MAAM,EAAG,IAAM,EAAE,MAAM,cAAc,EAAE,KAAK,CAAC,EAE/C,IAAK,IAAM,KAAU,EACpB,EAAc,EAAQ,CAAC,EAGxB,OAAO,CACR"}