{"version":3,"sources":["../../src/utilities/filterDataToSelectedLocales.spec.ts"],"sourcesContent":["import type { Field } from '../fields/config/types.js'\n\nimport { describe, expect, it } from 'vitest'\n\nimport { filterDataToSelectedLocales } from './filterDataToSelectedLocales.js'\n\ndescribe('filterDataToSelectedLocales', () => {\n  const selectedLocales = ['en']\n  const configBlockReferences = []\n\n  describe('block metadata preservation', () => {\n    it('should preserve blockType, id, and blockName on non-localized blocks', () => {\n      const fields: Field[] = [\n        {\n          name: 'layout',\n          type: 'blocks',\n          blocks: [\n            {\n              slug: 'content',\n              fields: [\n                {\n                  name: 'richText',\n                  type: 'richText',\n                  localized: true,\n                },\n              ],\n            },\n          ],\n        },\n      ]\n\n      const docWithLocales = {\n        layout: [\n          {\n            blockType: 'content',\n            id: 'abc123',\n            blockName: 'My Block',\n            richText: { en: 'English', es: 'Spanish' },\n          },\n        ],\n      }\n\n      const result = filterDataToSelectedLocales({\n        configBlockReferences: [],\n        docWithLocales,\n        fields,\n        selectedLocales,\n      })\n\n      expect(result.layout).toHaveLength(1)\n      expect(result.layout[0].blockType).toBe('content')\n      expect(result.layout[0].id).toBe('abc123')\n      expect(result.layout[0].blockName).toBe('My Block')\n      expect(result.layout[0].richText).toEqual({ en: 'English' })\n    })\n\n    it('should preserve blockType and id when block has no blockName', () => {\n      const fields: Field[] = [\n        {\n          name: 'layout',\n          type: 'blocks',\n          blocks: [\n            {\n              slug: 'text',\n              fields: [\n                {\n                  name: 'text',\n                  type: 'text',\n                  localized: true,\n                },\n              ],\n            },\n          ],\n        },\n      ]\n\n      const docWithLocales = {\n        layout: [\n          {\n            blockType: 'text',\n            id: 'def456',\n            text: { en: 'English', es: 'Spanish' },\n          },\n        ],\n      }\n\n      const result = filterDataToSelectedLocales({\n        configBlockReferences: [],\n        docWithLocales,\n        fields,\n        selectedLocales,\n      })\n\n      expect(result.layout).toHaveLength(1)\n      expect(result.layout[0].blockType).toBe('text')\n      expect(result.layout[0].id).toBe('def456')\n      expect(result.layout[0].text).toEqual({ en: 'English' })\n    })\n\n    it('should preserve blockType and id with configBlockReferences', () => {\n      const fields: Field[] = [\n        {\n          name: 'layout',\n          type: 'blocks',\n          blocks: [],\n          blockReferences: ['content'],\n        },\n      ]\n\n      const result = filterDataToSelectedLocales({\n        configBlockReferences: [\n          {\n            slug: 'content',\n            flattenedFields: [],\n            fields: [\n              {\n                name: 'body',\n                type: 'text',\n                localized: true,\n              },\n            ],\n          },\n        ],\n        docWithLocales: {\n          layout: [\n            {\n              blockType: 'content',\n              id: 'ref123',\n              body: { en: 'English', es: 'Spanish' },\n            },\n          ],\n        },\n        fields,\n        selectedLocales,\n      })\n\n      expect(result.layout).toHaveLength(1)\n      expect(result.layout[0].blockType).toBe('content')\n      expect(result.layout[0].id).toBe('ref123')\n      expect(result.layout[0].body).toEqual({ en: 'English' })\n    })\n  })\n\n  describe('localized arrays', () => {\n    it('should filter localized array to selected locales and recurse into rows', () => {\n      const fields: Field[] = [\n        {\n          name: 'items',\n          type: 'array',\n          localized: true,\n          fields: [\n            {\n              name: 'title',\n              type: 'text',\n            },\n          ],\n        },\n      ]\n\n      const docWithLocales = {\n        items: {\n          en: [{ title: 'English Item' }],\n          es: [{ title: 'Spanish Item' }],\n          de: [{ title: 'German Item' }],\n        },\n      }\n\n      const result = filterDataToSelectedLocales({\n        configBlockReferences: [],\n        docWithLocales,\n        fields,\n        selectedLocales,\n      })\n\n      expect(result.items).toEqual({\n        en: [{ title: 'English Item' }],\n      })\n    })\n\n    it('should handle non-localized array with localized children', () => {\n      const fields: Field[] = [\n        {\n          name: 'items',\n          type: 'array',\n          fields: [\n            {\n              name: 'label',\n              type: 'text',\n              localized: true,\n            },\n            {\n              name: 'value',\n              type: 'text',\n            },\n          ],\n        },\n      ]\n\n      const docWithLocales = {\n        items: [\n          { label: { en: 'English', es: 'Spanish' }, value: 'one' },\n          { label: { en: 'English 2', es: 'Spanish 2' }, value: 'two' },\n        ],\n      }\n\n      const result = filterDataToSelectedLocales({\n        configBlockReferences: [],\n        docWithLocales,\n        fields,\n        selectedLocales,\n      })\n\n      expect(result.items).toEqual([\n        { label: { en: 'English' }, value: 'one' },\n        { label: { en: 'English 2' }, value: 'two' },\n      ])\n    })\n  })\n\n  describe('localized blocks', () => {\n    it('should filter localized blocks field to selected locales', () => {\n      const fields: Field[] = [\n        {\n          name: 'layout',\n          type: 'blocks',\n          localized: true,\n          blocks: [\n            {\n              slug: 'hero',\n              fields: [\n                {\n                  name: 'heading',\n                  type: 'text',\n                },\n              ],\n            },\n          ],\n        },\n      ]\n\n      const docWithLocales = {\n        layout: {\n          en: [{ blockType: 'hero', id: '1', blockName: 'Hero EN', heading: 'Hello' }],\n          es: [{ blockType: 'hero', id: '2', blockName: 'Hero ES', heading: 'Hola' }],\n          de: [{ blockType: 'hero', id: '3', blockName: 'Hero DE', heading: 'Hallo' }],\n        },\n      }\n\n      const result = filterDataToSelectedLocales({\n        configBlockReferences: [],\n        docWithLocales,\n        fields,\n        selectedLocales,\n      })\n\n      expect(result.layout).toEqual({\n        en: [{ blockType: 'hero', id: '1', blockName: 'Hero EN', heading: 'Hello' }],\n      })\n    })\n\n    it('should filter localized blocks with multiple selected locales', () => {\n      const fields: Field[] = [\n        {\n          name: 'layout',\n          type: 'blocks',\n          localized: true,\n          blocks: [\n            {\n              slug: 'text',\n              fields: [\n                {\n                  name: 'body',\n                  type: 'text',\n                },\n              ],\n            },\n          ],\n        },\n      ]\n\n      const docWithLocales = {\n        layout: {\n          en: [{ blockType: 'text', id: '1', blockName: 'Text EN', body: 'English' }],\n          es: [{ blockType: 'text', id: '2', blockName: 'Text ES', body: 'Spanish' }],\n          de: [{ blockType: 'text', id: '3', blockName: 'Text DE', body: 'German' }],\n        },\n      }\n\n      const result = filterDataToSelectedLocales({\n        configBlockReferences: [],\n        docWithLocales,\n        fields,\n        selectedLocales: ['en', 'es'],\n      })\n\n      expect(result.layout).toEqual({\n        en: [{ blockType: 'text', id: '1', blockName: 'Text EN', body: 'English' }],\n        es: [{ blockType: 'text', id: '2', blockName: 'Text ES', body: 'Spanish' }],\n      })\n    })\n  })\n\n  describe('localized groups', () => {\n    it('should filter localized group to selected locales and recurse into children', () => {\n      const fields: Field[] = [\n        {\n          name: 'meta',\n          type: 'group',\n          localized: true,\n          fields: [\n            {\n              name: 'title',\n              type: 'text',\n            },\n            {\n              name: 'description',\n              type: 'text',\n            },\n          ],\n        },\n      ]\n\n      const docWithLocales = {\n        meta: {\n          en: { title: 'English Title', description: 'English Desc' },\n          es: { title: 'Spanish Title', description: 'Spanish Desc' },\n          de: { title: 'German Title', description: 'German Desc' },\n        },\n      }\n\n      const result = filterDataToSelectedLocales({\n        configBlockReferences: [],\n        docWithLocales,\n        fields,\n        selectedLocales,\n      })\n\n      expect(result.meta).toEqual({\n        en: { title: 'English Title', description: 'English Desc' },\n      })\n    })\n\n    it('should handle non-localized group with localized children', () => {\n      const fields: Field[] = [\n        {\n          name: 'seo',\n          type: 'group',\n          fields: [\n            {\n              name: 'title',\n              type: 'text',\n              localized: true,\n            },\n            {\n              name: 'slug',\n              type: 'text',\n            },\n          ],\n        },\n      ]\n\n      const docWithLocales = {\n        seo: {\n          title: { en: 'English SEO', es: 'Spanish SEO' },\n          slug: 'my-page',\n        },\n      }\n\n      const result = filterDataToSelectedLocales({\n        configBlockReferences: [],\n        docWithLocales,\n        fields,\n        selectedLocales,\n      })\n\n      expect(result.seo).toEqual({\n        title: { en: 'English SEO' },\n        slug: 'my-page',\n      })\n    })\n  })\n\n  describe('simple fields', () => {\n    it('should filter localized field values to selected locales', () => {\n      const fields: Field[] = [\n        {\n          name: 'title',\n          type: 'text',\n          localized: true,\n        },\n      ]\n\n      const docWithLocales = {\n        title: {\n          en: 'English Title',\n          es: 'Spanish Title',\n          de: 'German Title',\n        },\n      }\n\n      const result = filterDataToSelectedLocales({\n        configBlockReferences: [],\n        docWithLocales,\n        fields,\n        selectedLocales,\n      })\n\n      expect(result.title).toEqual({ en: 'English Title' })\n    })\n\n    it('should pass through non-localized fields as-is', () => {\n      const fields: Field[] = [\n        {\n          name: 'slug',\n          type: 'text',\n        },\n      ]\n\n      const docWithLocales = {\n        slug: 'my-slug',\n      }\n\n      const result = filterDataToSelectedLocales({\n        configBlockReferences: [],\n        docWithLocales,\n        fields,\n        selectedLocales,\n      })\n\n      expect(result.slug).toBe('my-slug')\n    })\n  })\n})\n"],"names":["describe","expect","it","filterDataToSelectedLocales","selectedLocales","configBlockReferences","fields","name","type","blocks","slug","localized","docWithLocales","layout","blockType","id","blockName","richText","en","es","result","toHaveLength","toBe","toEqual","text","blockReferences","flattenedFields","body","items","title","de","label","value","heading","meta","description","seo"],"mappings":"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"}