{"mappings":";AAAA,OAAS,eAAAA,MAAmB,aAC5B,OAAS,aAAAC,MAAiB,aAK1B,SAASC,EAAuBC,EAAM,CAClC,GAAI,CAACA,GAAQ,OAAOA,GAAS,UAAY,EAAE,UAAWA,GAClD,OAAOA,EACX,GAAM,CAAE,MAAAC,EAAO,GAAGC,CAAK,EAAIF,EACrBG,EAASL,EAAU,EAAE,OACrBM,EAAOD,GAAUF,EAAQA,EAAME,CAAM,EAAI,OAC/C,OAAOC,GAAQ,OAAOA,GAAS,SAAW,CAAE,GAAGF,EAAM,GAAGE,CAAK,EAAIF,CACrE,CACA,SAASG,EAAWC,EAAM,CACtB,OAAOA,GAAQA,EAAK,KAAO,CAAE,GAAGA,EAAM,KAAMP,EAAuBO,EAAK,IAAI,CAAE,EAAIA,CACtF,CACA,eAAsBC,EAAqBC,EAAKC,EAAS,CACrD,OAAOZ,EAAY,QAAQW,CAAG,GAAI,OAAWC,CAAO,CACxD,CACA,eAAsBC,EAAaF,EAAKG,EAAS,CAAC,EAAGF,EAAS,CAC1D,IAAMG,EAAW,MAAMf,EAAY,QAAQW,CAAG,gBAAiB,CAC3D,OAAQ,OACR,KAAM,KAAK,UAAU,CACjB,MAAOG,EAAO,MACd,OAAQA,EAAO,OACf,WAAYA,EAAO,UACnB,SAAUA,EAAO,QACjB,YAAaA,EAAO,WACpB,OAAQA,EAAO,MACnB,CAAC,CACL,EAAGF,CAAO,EACV,OAAIG,EAAS,OACTA,EAAS,KAAOA,EAAS,KAAK,IAAIP,CAAU,GACzCO,CACX,CACA,eAAsBC,EAAWL,EAAKM,EAAMH,EAAQF,EAAS,CACzD,IAAMM,EAAM,IAAI,IAAI,QAAQP,CAAG,WAAY,uBAAuB,EAClEO,EAAI,aAAa,IAAI,OAAQD,CAAI,EAC7BH,GAAQ,YAAc,MACtBI,EAAI,aAAa,IAAI,cAAe,OAAOJ,EAAO,UAAU,CAAC,EAEjE,IAAML,EAAO,MAAMT,EAAYkB,EAAI,SAAWA,EAAI,OAAQ,OAAWN,CAAO,EAC5E,OAAOJ,EAAWC,CAAI,CAC1B,CACA,eAAsBU,EAAuBR,EAAKM,EAAMH,EAAS,CAAC,EAAGF,EAAS,CAC1E,IAAMQ,EAAM,MAAMpB,EAAY,QAAQW,CAAG,0BAA2B,CAChE,OAAQ,OACR,KAAM,KAAK,UAAU,CACjB,KAAAM,EACA,KAAMH,EAAO,KACb,KAAMA,EAAO,KACb,WAAYA,EAAO,UACnB,SAAUA,EAAO,QACjB,YAAaA,EAAO,WACpB,OAAQA,EAAO,MACnB,CAAC,CACL,EAAGF,CAAO,EACV,MAAO,CACH,QAASQ,EAAI,QAAUZ,EAAWY,EAAI,OAAO,EAAIA,EAAI,QACrD,KAAMA,EAAI,KAAOZ,EAAWY,EAAI,IAAI,EAAIA,EAAI,KAC5C,KAAMA,EAAI,KAAOZ,EAAWY,EAAI,IAAI,EAAIA,EAAI,IAChD,CACJ","names":["requestJson","getLocale","decodeBodyLocalization","body","_i18n","base","locale","over","decodeItem","item","getContentCollection","key","options","listContents","params","response","getContent","slug","url","getContentWithPrevNext","res"],"sources":["../esm/npm/talizen@0.2.55/node_modules/talizen/cms.js"],"sourcesContent":["import { requestJson } from \"./core.js\";\nimport { getLocale } from \"./i18n.js\";\n// 字段级本地化解码：把 body._i18n[当前语言] 覆盖到同级字段并删除 _i18n。\n// 无论 SSR（getServerSideProps 取数）、客户端还是编辑器预览，都在此处按当前语言解码——\n// 渲染引擎不再解码 CMS，只透传原始 body（含 _i18n）。用 getLocale()（非 hook），\n// 因此在 getServerSideProps 里调用也合法。当前语言由引擎注入的 __TALIZEN_I18N__ 提供。\nfunction decodeBodyLocalization(body) {\n    if (!body || typeof body !== \"object\" || !(\"_i18n\" in body))\n        return body;\n    const { _i18n, ...base } = body;\n    const locale = getLocale().locale;\n    const over = locale \u0026\u0026 _i18n ? _i18n[locale] : undefined;\n    return over \u0026\u0026 typeof over === \"object\" ? { ...base, ...over } : base;\n}\nfunction decodeItem(item) {\n    return item \u0026\u0026 item.body ? { ...item, body: decodeBodyLocalization(item.body) } : item;\n}\nexport async function getContentCollection(key, options) {\n    return requestJson(`/cms/${key}`, undefined, options);\n}\nexport async function listContents(key, params = {}, options) {\n    const response = await requestJson(`/cms/${key}/content_list`, {\n        method: \"POST\",\n        body: JSON.stringify({\n            limit: params.limit,\n            offset: params.offset,\n            search_key: params.searchKey,\n            order_by: params.orderBy,\n            builtin_ref: params.builtinRef,\n            filter: params.filter,\n        }),\n    }, options);\n    if (response.list)\n        response.list = response.list.map(decodeItem);\n    return response;\n}\nexport async function getContent(key, slug, params, options) {\n    const url = new URL(`/cms/${key}/content`, \"https://talizen.local\");\n    url.searchParams.set(\"slug\", slug);\n    if (params?.builtinRef != null) {\n        url.searchParams.set(\"builtin_ref\", String(params.builtinRef));\n    }\n    const item = await requestJson(url.pathname + url.search, undefined, options);\n    return decodeItem(item);\n}\nexport async function getContentWithPrevNext(key, slug, params = {}, options) {\n    const res = await requestJson(`/cms/${key}/content_with_prev_next`, {\n        method: \"POST\",\n        body: JSON.stringify({\n            slug,\n            prev: params.prev,\n            next: params.next,\n            search_key: params.searchKey,\n            order_by: params.orderBy,\n            builtin_ref: params.builtinRef,\n            filter: params.filter,\n        }),\n    }, options);\n    return {\n        current: res.current ? decodeItem(res.current) : res.current,\n        next: res.next ? decodeItem(res.next) : res.next,\n        prev: res.prev ? decodeItem(res.prev) : res.prev,\n    };\n}\n"],"version":3}
