1{"version":3,"file":"Styles.js","names":["_Paths","data","require","_Resources","fallbackResourceString","readStylesXMLAsync","path","fallback","readResourcesXMLAsync","getProjectStylesXMLPathAsync","projectRoot","kind","getResourceXMLPathAsync","name","ensureDefaultStyleResourceXML","xml","_xml","_xml$resources","ensureDefaultResourceXML","Array","isArray","resources","style","getStyleParent","group","findResourceGroup","getStylesItem","parent","appTheme","item","existingItem","filter","$","head","setStylesItem","buildResourceGroup","push","_","removeStylesItem","index","findIndex","splice","getAppThemeLightNoActionBarGroup","assignStylesValue","add","value","targetApi","buildResourceItem","getStylesGroupAsObject","xmlGroup","getResourceItemsAsObject"],"sources":["../../src/android/Styles.ts"],"sourcesContent":["import { getResourceXMLPathAsync } from './Paths';\nimport {\n  buildResourceGroup,\n  buildResourceItem,\n  ensureDefaultResourceXML,\n  findResourceGroup,\n  getResourceItemsAsObject,\n  readResourcesXMLAsync,\n  ResourceGroupXML,\n  ResourceItemXML,\n  ResourceKind,\n  ResourceXML,\n} from './Resources';\n\n// Adds support for `tools:x`\nconst fallbackResourceString = `<?xml version=\"1.0\" encoding=\"utf-8\"?><resources xmlns:tools=\"http://schemas.android.com/tools\"></resources>`;\n\nexport async function readStylesXMLAsync({\n  path,\n  fallback = fallbackResourceString,\n}: {\n  path: string;\n  fallback?: string | null;\n}): Promise<ResourceXML> {\n  return readResourcesXMLAsync({ path, fallback });\n}\n\nexport async function getProjectStylesXMLPathAsync(\n  projectRoot: string,\n  { kind }: { kind?: ResourceKind } = {}\n): Promise<string> {\n  return getResourceXMLPathAsync(projectRoot, { kind, name: 'styles' });\n}\n\nfunction ensureDefaultStyleResourceXML(xml: ResourceXML): ResourceXML {\n  xml = ensureDefaultResourceXML(xml);\n  if (!Array.isArray(xml?.resources?.style)) {\n    xml.resources.style = [];\n  }\n  return xml;\n}\n\nexport function getStyleParent(\n  xml: ResourceXML,\n  group: { name: string; parent?: string }\n): ResourceGroupXML | null {\n  return findResourceGroup(xml.resources.style, group);\n}\n\nexport function getStylesItem({\n  name,\n  xml,\n  parent,\n}: {\n  name: string;\n  xml: ResourceXML;\n  parent: { name: string; parent?: string };\n}): ResourceItemXML | null {\n  xml = ensureDefaultStyleResourceXML(xml);\n\n  const appTheme = getStyleParent(xml, parent);\n\n  if (!appTheme) {\n    return null;\n  }\n\n  if (appTheme.item) {\n    const existingItem = appTheme.item.filter(({ $: head }) => head.name === name)[0];\n\n    // Don't want to 2 of the same item, so if one exists, we overwrite it\n    if (existingItem) {\n      return existingItem;\n    }\n  }\n  return null;\n}\n\nexport function setStylesItem({\n  item,\n  xml,\n  parent,\n}: {\n  item: ResourceItemXML;\n  xml: ResourceXML;\n  parent: { name: string; parent: string };\n}): ResourceXML {\n  xml = ensureDefaultStyleResourceXML(xml);\n\n  let appTheme = getStyleParent(xml, parent);\n\n  if (!appTheme) {\n    appTheme = buildResourceGroup(parent);\n    xml.resources!.style!.push(appTheme);\n  }\n\n  if (appTheme.item) {\n    const existingItem = appTheme.item.filter(({ $: head }) => head.name === item.$.name)[0];\n\n    // Don't want to 2 of the same item, so if one exists, we overwrite it\n    if (existingItem) {\n      existingItem._ = item._;\n      existingItem.$ = item.$;\n    } else {\n      appTheme.item.push(item);\n    }\n  } else {\n    appTheme.item = [item];\n  }\n  return xml;\n}\n\nexport function removeStylesItem({\n  name,\n  xml,\n  parent,\n}: {\n  name: string;\n  xml: ResourceXML;\n  parent: { name: string; parent: string };\n}): ResourceXML {\n  xml = ensureDefaultStyleResourceXML(xml);\n  const appTheme = getStyleParent(xml, parent);\n  if (appTheme?.item) {\n    const index = appTheme.item.findIndex(({ $: head }: ResourceItemXML) => head.name === name);\n    if (index > -1) {\n      appTheme.item.splice(index, 1);\n    }\n  }\n  return xml;\n}\n\n// This is a very common theme so make it reusable.\nexport function getAppThemeLightNoActionBarGroup() {\n  return { name: 'AppTheme', parent: 'Theme.AppCompat.Light.NoActionBar' };\n}\n\nexport function assignStylesValue(\n  xml: ResourceXML,\n  {\n    add,\n    value,\n    targetApi,\n    name,\n    parent,\n  }: {\n    add: boolean;\n    value: string;\n    targetApi?: string;\n    name: string;\n    parent: { name: string; parent: string };\n  }\n): ResourceXML {\n  if (add) {\n    return setStylesItem({\n      xml,\n      parent,\n      item: buildResourceItem({\n        name,\n        targetApi,\n        value,\n      }),\n    });\n  }\n  return removeStylesItem({\n    xml,\n    parent,\n    name,\n  });\n}\n\n/**\n * Helper to convert a styles.xml parent's children into a simple k/v pair.\n * Added for testing purposes.\n *\n * @param xml\n * @returns\n */\nexport function getStylesGroupAsObject(\n  xml: ResourceXML,\n  group: { name: string; parent?: string }\n): Record<string, string> | null {\n  const xmlGroup = getStyleParent(xml, group);\n  return xmlGroup?.item ? getResourceItemsAsObject(xmlGroup.item) : null;\n}\n"],"mappings":"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"}