{"version":3,"sources":["../../../src/interpreter/getNesting.ts"],"sourcesContent":["// @ts-ignore intlayer declared for module augmentation\nimport type { IntlayerDictionaryTypesConnector } from 'intlayer';\nimport type { ValidDotPathsFor } from '../transpiler';\nimport type { DictionaryKeys } from '../types';\nimport type {\n  DeepTransformContent,\n  IInterpreterPluginState,\n  NodeProps,\n} from './getContent';\nimport { getIntlayer } from './getIntlayer';\n\ntype GetSubPath<T, P> = P extends `${infer K}.${infer Rest}`\n  ? K extends keyof T\n    ? GetSubPath<T[K], Rest>\n    : never\n  : P extends keyof T\n    ? T[P]\n    : T;\n\nexport type GetNestingResult<\n  K extends DictionaryKeys,\n  P = undefined,\n  S = IInterpreterPluginState,\n> = GetSubPath<\n  DeepTransformContent<IntlayerDictionaryTypesConnector[K]['content'], S>,\n  P\n>;\n\n/**\n * Allow to extract the content of another dictionary.\n *\n * Usage:\n * ```ts\n * const content = getNesting(\"dictionaryKey\", \"path.to.content\");\n * // 'Example content'\n * ```\n */\nexport const getNesting = <K extends DictionaryKeys, P>(\n  dictionaryKey: K,\n  path?: P extends ValidDotPathsFor<K> ? P : never,\n  props?: NodeProps\n): GetNestingResult<K, P> => {\n  const dictionary = getIntlayer(dictionaryKey, props?.locale, props?.plugins);\n\n  if (typeof path === 'string') {\n    const pathArray = (path as string).split('.');\n    let current: any = dictionary;\n\n    for (const key of pathArray) {\n      // Safely traverse down the object using the path\n      current = current?.[key];\n      // If we cannot find the path, return the whole dictionary as a fallback\n      if (current === undefined) {\n        return dictionary as any;\n      }\n    }\n\n    return current;\n  }\n\n  // Default or error handling if path is not a string or otherwise undefined\n  return dictionary as any;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,yBAA4B;AA4BrB,MAAM,aAAa,CACxB,eACA,MACA,UAC2B;AAC3B,QAAM,iBAAa,gCAAY,eAAe,OAAO,QAAQ,OAAO,OAAO;AAE3E,MAAI,OAAO,SAAS,UAAU;AAC5B,UAAM,YAAa,KAAgB,MAAM,GAAG;AAC5C,QAAI,UAAe;AAEnB,eAAW,OAAO,WAAW;AAE3B,gBAAU,UAAU,GAAG;AAEvB,UAAI,YAAY,QAAW;AACzB,eAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAGA,SAAO;AACT;","names":[]}