{"version":3,"file":"applyMask.mjs","names":[],"sources":["../../../src/reduceDictionaryContent/applyMask.ts"],"sourcesContent":["import type { Dictionary } from '@intlayer/types/dictionary';\n\nexport const applyMask = (full: Dictionary, mask: any): Dictionary => {\n  // the mask \"true\" → we don't filter\n  if (mask === true) {\n    return full;\n  }\n\n  // arrays\n  if (Array.isArray(mask) && Array.isArray(full)) {\n    return mask.map((m, i) => applyMask(full[i], m)) as any;\n  }\n\n  // handle node with nodeType property\n  if (full && typeof full === 'object' && 'nodeType' in full) {\n    if (mask && typeof mask === 'object') {\n      return full; // Keep the full object with nodeType intact\n    }\n    return full;\n  }\n\n  // generic object\n  if (mask && typeof mask === 'object' && full && typeof full === 'object') {\n    const out: any = {};\n    const maskEntries = Object.entries(mask);\n    const allChildrenAreArrays = maskEntries.every(([, value]) =>\n      Array.isArray(value)\n    );\n\n    for (const [k, m] of maskEntries) {\n      const fullValue = (full as any)[k];\n\n      // If this child is an array, decide preservation rules.\n      // - Preserve when all children at this level are arrays in the mask\n      // - Also preserve when the array is an array of translation nodes\n      if (Array.isArray(m) && Array.isArray(fullValue)) {\n        const isTranslationNode = (val: unknown): boolean =>\n          !!val && typeof val === 'object' && 'nodeType' in (val as any);\n        const isArrayOfTranslationNodes = fullValue.every((item: any) =>\n          isTranslationNode(item)\n        );\n\n        if (!allChildrenAreArrays && !isArrayOfTranslationNodes) {\n          continue; // skip incidental arrays when mixed with non-arrays\n        }\n      }\n\n      out[k] = applyMask(fullValue, m);\n    }\n    return out;\n  }\n\n  // unexpected case: we return the original value\n  return full;\n};\n"],"mappings":";AAEA,MAAa,aAAa,MAAkB,SAA0B;CAEpE,IAAI,SAAS,MACX,OAAO;CAIT,IAAI,MAAM,QAAQ,IAAI,KAAK,MAAM,QAAQ,IAAI,GAC3C,OAAO,KAAK,KAAK,GAAG,MAAM,UAAU,KAAK,IAAI,CAAC,CAAC;CAIjD,IAAI,QAAQ,OAAO,SAAS,YAAY,cAAc,MAAM;EAC1D,IAAI,QAAQ,OAAO,SAAS,UAC1B,OAAO;EAET,OAAO;CACT;CAGA,IAAI,QAAQ,OAAO,SAAS,YAAY,QAAQ,OAAO,SAAS,UAAU;EACxE,MAAM,MAAW,CAAC;EAClB,MAAM,cAAc,OAAO,QAAQ,IAAI;EACvC,MAAM,uBAAuB,YAAY,OAAO,GAAG,WACjD,MAAM,QAAQ,KAAK,CACrB;EAEA,KAAK,MAAM,CAAC,GAAG,MAAM,aAAa;GAChC,MAAM,YAAa,KAAa;GAKhC,IAAI,MAAM,QAAQ,CAAC,KAAK,MAAM,QAAQ,SAAS,GAAG;IAChD,MAAM,qBAAqB,QACzB,CAAC,CAAC,OAAO,OAAO,QAAQ,YAAY,cAAe;IACrD,MAAM,4BAA4B,UAAU,OAAO,SACjD,kBAAkB,IAAI,CACxB;IAEA,IAAI,CAAC,wBAAwB,CAAC,2BAC5B;GAEJ;GAEA,IAAI,KAAK,UAAU,WAAW,CAAC;EACjC;EACA,OAAO;CACT;CAGA,OAAO;AACT"}