{"version":3,"file":"getReplacedValuesContent.cjs","names":["deepTransformNode"],"sources":["../../../src/deepTransformPlugins/getReplacedValuesContent.ts"],"sourcesContent":["import type { ContentNode, TypedNode } from '@intlayer/types/dictionary';\nimport type { KeyPath } from '@intlayer/types/keyPath';\nimport type { NodeType } from '@intlayer/types/nodeType';\nimport {\n  deepTransformNode,\n  type NodeProps,\n  type Plugins,\n} from '../interpreter';\n\nconst replaceValuesPlugin = (value: string | number | boolean): Plugins => ({\n  id: 'replace-values-plugin',\n  canHandle: (node) =>\n    typeof node === 'string' ||\n    typeof node === 'number' ||\n    typeof node === 'boolean',\n  transform: () => value,\n});\n\nconst skipTypedNodePlugin: Plugins = {\n  id: 'skip-typed-node-plugin',\n  canHandle: (node) =>\n    typeof node === 'object' && typeof node?.nodeType === 'string',\n  transform: (node: TypedNode, props, deepTransformNode) => {\n    const nodeType = node.nodeType as NodeType;\n    const result = structuredClone(\n      node[nodeType as unknown as keyof TypedNode] as any\n    );\n\n    // If the result is a primitive value (string, number, boolean),\n    // we need to transform it directly instead of iterating over its properties\n    if (typeof result !== 'object' || result === null) {\n      const transformedResult = deepTransformNode(result, {\n        ...props,\n        children: result,\n        keyPath: [\n          ...props.keyPath,\n          { type: nodeType, key: nodeType } as KeyPath,\n        ],\n      });\n      return {\n        ...node,\n        [nodeType as unknown as keyof TypedNode]: transformedResult,\n      };\n    }\n\n    // For objects and arrays, iterate over their properties\n    for (const key in result) {\n      const childProps = {\n        ...props,\n        children: result[key as unknown as keyof typeof result],\n        keyPath: [...props.keyPath, { type: nodeType, key } as KeyPath],\n      };\n      result[key as unknown as keyof typeof result] = deepTransformNode(\n        result[key as unknown as keyof typeof result],\n        childProps\n      );\n    }\n\n    return { ...node, [nodeType as unknown as keyof TypedNode]: result };\n  },\n};\n\nexport const getReplacedValuesContent = (\n  node: ContentNode,\n  value: string | number | boolean,\n  nodeProps: NodeProps\n) => {\n  const plugins: Plugins[] = [\n    skipTypedNodePlugin,\n    replaceValuesPlugin(value),\n    ...(nodeProps.plugins ?? []),\n  ];\n\n  const JSONNode = JSON.parse(JSON.stringify(node));\n\n  return deepTransformNode(JSONNode, {\n    ...nodeProps,\n    plugins,\n  });\n};\n"],"mappings":";;;;AASA,MAAM,uBAAuB,WAA+C;CAC1E,IAAI;CACJ,YAAY,SACV,OAAO,SAAS,YAChB,OAAO,SAAS,YAChB,OAAO,SAAS;CAClB,iBAAiB;CAClB;AAED,MAAM,sBAA+B;CACnC,IAAI;CACJ,YAAY,SACV,OAAO,SAAS,YAAY,OAAO,MAAM,aAAa;CACxD,YAAY,MAAiB,OAAO,sBAAsB;EACxD,MAAM,WAAW,KAAK;EACtB,MAAM,SAAS,gBACb,KAAK,UACN;AAID,MAAI,OAAO,WAAW,YAAY,WAAW,MAAM;GACjD,MAAM,oBAAoB,kBAAkB,QAAQ;IAClD,GAAG;IACH,UAAU;IACV,SAAS,CACP,GAAG,MAAM,SACT;KAAE,MAAM;KAAU,KAAK;KAAU,CAClC;IACF,CAAC;AACF,UAAO;IACL,GAAG;KACF,WAAyC;IAC3C;;AAIH,OAAK,MAAM,OAAO,QAAQ;GACxB,MAAM,aAAa;IACjB,GAAG;IACH,UAAU,OAAO;IACjB,SAAS,CAAC,GAAG,MAAM,SAAS;KAAE,MAAM;KAAU;KAAK,CAAY;IAChE;AACD,UAAO,OAAyC,kBAC9C,OAAO,MACP,WACD;;AAGH,SAAO;GAAE,GAAG;IAAO,WAAyC;GAAQ;;CAEvE;AAED,MAAa,4BACX,MACA,OACA,cACG;CACH,MAAM,UAAqB;EACzB;EACA,oBAAoB,MAAM;EAC1B,GAAI,UAAU,WAAW,EAAE;EAC5B;AAID,QAAOA,+DAFU,KAAK,MAAM,KAAK,UAAU,KAAK,CAEf,EAAE;EACjC,GAAG;EACH;EACD,CAAC"}