{"version":3,"sources":["../../src/getFilteredLocalesContent.ts"],"sourcesContent":["import type { Locales, LocalesValues } from '@intlayer/config/client';\nimport {\n  ContentNode,\n  deepTransformNode,\n  NodeType,\n  type NodeProps,\n  type Plugins,\n} from '@intlayer/core';\n\nconst filterTranlationsPlugin = (\n  locales: LocalesValues[] | LocalesValues,\n  fallback: LocalesValues | undefined = undefined // fallback mean that if field is not translated, it will use the default locale,\n): Plugins => ({\n  id: 'filter-translations-plugin',\n  canHandle: (node) =>\n    typeof node === 'object' && node?.nodeType === NodeType.Translation,\n  transform: (node, props, deepTransformNode) => {\n    const translationMap = node.translation as Record<Locales, string>;\n\n    const localesArray = Array.isArray(locales) ? locales : [locales];\n    const isSingleLocale = localesArray.length === 1;\n\n    if (isSingleLocale) {\n      let content = translationMap[localesArray[0] as Locales];\n\n      if (typeof content === 'undefined' && fallback) {\n        content = translationMap[fallback as Locales];\n      }\n\n      return deepTransformNode(content, props);\n    }\n\n    const filteredTranslationMap = Object.fromEntries(\n      Object.entries(translationMap).filter(([key]) =>\n        locales.includes(key as Locales)\n      )\n    );\n\n    return {\n      ...node,\n      translation: deepTransformNode(filteredTranslationMap, {\n        ...props,\n        keyPath: [\n          ...props.keyPath,\n          { type: NodeType.Object, key: NodeType.Translation },\n        ],\n      }),\n    };\n  },\n});\n\nexport const getFilteredLocalesContent = (\n  node: ContentNode,\n  locale: LocalesValues | LocalesValues[],\n  nodeProps: NodeProps,\n  fallback?: LocalesValues // fallback mean that if field is not translated, it will use the default locale,\n) => {\n  const plugins: Plugins[] = [\n    filterTranlationsPlugin(locale, fallback),\n    ...(nodeProps.plugins ?? []),\n  ];\n\n  return deepTransformNode(node, {\n    ...nodeProps,\n    plugins,\n  });\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,kBAMO;AAEP,MAAM,0BAA0B,CAC9B,SACA,WAAsC,YACzB;AAAA,EACb,IAAI;AAAA,EACJ,WAAW,CAAC,SACV,OAAO,SAAS,YAAY,MAAM,aAAa,qBAAS;AAAA,EAC1D,WAAW,CAAC,MAAM,OAAOA,uBAAsB;AAC7C,UAAM,iBAAiB,KAAK;AAE5B,UAAM,eAAe,MAAM,QAAQ,OAAO,IAAI,UAAU,CAAC,OAAO;AAChE,UAAM,iBAAiB,aAAa,WAAW;AAE/C,QAAI,gBAAgB;AAClB,UAAI,UAAU,eAAe,aAAa,CAAC,CAAY;AAEvD,UAAI,OAAO,YAAY,eAAe,UAAU;AAC9C,kBAAU,eAAe,QAAmB;AAAA,MAC9C;AAEA,aAAOA,mBAAkB,SAAS,KAAK;AAAA,IACzC;AAEA,UAAM,yBAAyB,OAAO;AAAA,MACpC,OAAO,QAAQ,cAAc,EAAE;AAAA,QAAO,CAAC,CAAC,GAAG,MACzC,QAAQ,SAAS,GAAc;AAAA,MACjC;AAAA,IACF;AAEA,WAAO;AAAA,MACL,GAAG;AAAA,MACH,aAAaA,mBAAkB,wBAAwB;AAAA,QACrD,GAAG;AAAA,QACH,SAAS;AAAA,UACP,GAAG,MAAM;AAAA,UACT,EAAE,MAAM,qBAAS,QAAQ,KAAK,qBAAS,YAAY;AAAA,QACrD;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAEO,MAAM,4BAA4B,CACvC,MACA,QACA,WACA,aACG;AACH,QAAM,UAAqB;AAAA,IACzB,wBAAwB,QAAQ,QAAQ;AAAA,IACxC,GAAI,UAAU,WAAW,CAAC;AAAA,EAC5B;AAEA,aAAO,+BAAkB,MAAM;AAAA,IAC7B,GAAG;AAAA,IACH;AAAA,EACF,CAAC;AACH;","names":["deepTransformNode"]}