1{"version":3,"file":"Resources.js","names":["fallbackResourceString","readResourcesXMLAsync","path","fallback","xml","readXMLAsync","resources","ensureDefaultResourceXML","buildResourceItem","name","value","targetApi","translatable","item","$","_","undefined","String","buildResourceGroup","parent","items","findResourceGroup","group","app","filter","head","matches","getResourceItemsAsObject","reduce","prev","curr","getObjectAsResourceItems","obj","Object","entries","map","getObjectAsResourceGroup"],"sources":["../../src/android/Resources.ts"],"sourcesContent":["import { readXMLAsync, XMLObject } from '../utils/XML';\n\nexport type ResourceGroupXML = {\n $: {\n name: string;\n parent: string;\n };\n item: ResourceItemXML[];\n};\n\nexport type ResourceXML = {\n resources: {\n $?: {\n 'xmlns:tools'?: string;\n };\n color?: ResourceItemXML[];\n string?: ResourceItemXML[];\n style?: ResourceGroupXML[];\n // Add more if needed...\n };\n};\n\nexport type ResourceItemXML = {\n _: string;\n $: {\n name: string;\n 'tools:targetApi'?: string;\n translatable?: string;\n };\n};\n/**\n * Name of the resource folder.\n */\nexport type ResourceKind =\n | 'values'\n | 'values-night'\n | 'values-v23'\n | 'values-night-v23'\n | 'drawable';\n\nconst fallbackResourceString = `<?xml version=\"1.0\" encoding=\"utf-8\"?><resources></resources>`;\n\n/**\n * Read an XML file while providing a default fallback for resource files.\n *\n * @param options path to the XML file, returns a fallback XML if the path doesn't exist.\n */\nexport async function readResourcesXMLAsync({\n path,\n fallback = fallbackResourceString,\n}: {\n path: string;\n fallback?: string | null;\n}): Promise<ResourceXML> {\n const xml = await readXMLAsync({ path, fallback });\n // Ensure the type is expected.\n if (!xml.resources) {\n xml.resources = {};\n }\n return xml as ResourceXML;\n}\n\n/**\n * Ensure the provided xml has a `resources` object (the expected shape).\n *\n * @param xml\n */\nexport function ensureDefaultResourceXML(xml: XMLObject): ResourceXML {\n if (!xml) {\n xml = { resources: {} };\n }\n if (!xml.resources) {\n xml.resources = {};\n }\n\n return xml as ResourceXML;\n}\n\n/**\n * Build a `ResourceItemXML` given its `name` and `value`. This makes things a bit more readable.\n *\n * - JSON: `{ $: { name }, _: value }`\n * - XML: `<item name=\"NAME\">VALUE</item>`\n *\n * @param props name and value strings.\n */\nexport function buildResourceItem({\n name,\n value,\n targetApi,\n translatable,\n}: {\n name: string;\n value: string;\n targetApi?: string;\n translatable?: boolean;\n}): ResourceItemXML {\n const item: ResourceItemXML = { $: { name }, _: value };\n if (targetApi) {\n item.$['tools:targetApi'] = targetApi;\n }\n if (translatable !== undefined) {\n item.$['translatable'] = String(translatable);\n }\n return item;\n}\n\nexport function buildResourceGroup(parent: {\n name: string;\n parent: string;\n items?: ResourceItemXML[];\n}): ResourceGroupXML {\n return {\n $: { name: parent.name, parent: parent.parent },\n item: parent.items ?? [],\n };\n}\n\nexport function findResourceGroup(\n xml: ResourceGroupXML[] | undefined,\n group: { name: string; parent?: string }\n): ResourceGroupXML | null {\n const app = xml?.filter?.(({ $: head }) => {\n let matches = head.name === group.name;\n if (group.parent != null && matches) {\n matches = head.parent === group.parent;\n }\n return matches;\n })?.[0];\n return app ?? null;\n}\n\n/**\n * Helper to convert a basic XML object into a simple k/v pair.\n *\n * @param xml\n * @returns\n */\nexport function getResourceItemsAsObject(xml: ResourceItemXML[]): Record<string, string> | null {\n return xml.reduce(\n (prev, curr) => ({\n ...prev,\n [curr.$.name]: curr._,\n }),\n {}\n );\n}\n\n/**\n * Helper to convert a basic k/v object to a ResourceItemXML array.\n *\n * @param xml\n * @returns\n */\nexport function getObjectAsResourceItems(obj: Record<string, string>): ResourceItemXML[] {\n return Object.entries(obj).map(([name, value]) => ({\n $: { name },\n _: value,\n }));\n}\n\nexport function getObjectAsResourceGroup(group: {\n name: string;\n parent: string;\n item: Record<string, string>;\n}): ResourceGroupXML {\n return {\n $: {\n name: group.name,\n parent: group.parent,\n },\n item: getObjectAsResourceItems(group.item),\n };\n}\n"],"mappings":"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"}