{"version":3,"sources":["/Users/shyun/comcom/ain-enterprise/ain-adk/dist/cjs/chunk-53GLF7QR.cjs","../../src/utils/document-render.ts"],"names":[],"mappings":"AAAA;ACGA,IAAM,WAAA,EAAa,sCAAA;AAInB,IAAM,mBAAA,EAA4C,CAAC,IAAA,EAAA,GAAS;AAC3D,EAAA,OAAA,CAAQ,IAAA,CAAK,MAAA,EAAQ;AAAA,IACpB,KAAK,SAAA;AACJ,MAAA,OAAO,CAAA,CAAA,mBAAI,IAAA,CAAK,KAAA,UAAS,IAAA,CAAK,QAAM,CAAA,2BAAA,CAAA;AAAA,IACrC,KAAK,QAAA;AACJ,MAAA,OAAO,CAAA,CAAA,mBAAI,IAAA,CAAK,KAAA,UAAS,IAAA,CAAK,QAAM,CAAA,2BAAA,CAAA;AAAA,IACrC,OAAA;AACC,MAAA,OAAO,CAAA,CAAA,mBAAI,IAAA,CAAK,KAAA,UAAS,IAAA,CAAK,QAAM,CAAA,uBAAA,CAAA;AAAA,EACtC;AACD,CAAA;AASO,SAAS,cAAA,CACf,QAAA,EACA,YAAA,EAAqC,kBAAA,EAC5B;AACT,EAAA,MAAM,UAAA,EAAY,IAAI,GAAA;AAAA,IAAA,kBACpB,QAAA,CAAS,KAAA,UAAS,CAAC,GAAA,CAAA,CAAG,GAAA,CAAI,CAAC,IAAA,EAAA,GAAS,CAAC,IAAA,CAAK,MAAA,EAAQ,IAAI,CAAC;AAAA,EACzD,CAAA;AAEA,EAAA,OAAO,QAAA,CAAS,OAAA,CAAQ,OAAA,CAAQ,UAAA,EAAY,CAAC,KAAA,EAAO,MAAA,EAAA,GAAmB;AACtE,IAAA,MAAM,KAAA,EAAO,SAAA,CAAU,GAAA,CAAI,MAAM,CAAA;AACjC,IAAA,GAAA,CAAI,CAAC,IAAA,EAAM;AACV,MAAA,OAAO,KAAA;AAAA,IACR;AACA,IAAA,GAAA,CAAI,IAAA,CAAK,OAAA,IAAW,WAAA,GAAc,IAAA,CAAK,QAAA,EAAU;AAChD,MAAA,OAAO,IAAA,CAAK,QAAA,CAAS,OAAA;AAAA,IACtB;AACA,IAAA,OAAO,WAAA,CAAY,IAAI,CAAA;AAAA,EACxB,CAAC,CAAA;AACF;ADhBA;AACA;AACE;AACF,wCAAC","file":"/Users/shyun/comcom/ain-enterprise/ain-adk/dist/cjs/chunk-53GLF7QR.cjs","sourcesContent":[null,"import type { Document, DocumentSlot } from \"@/types/document\";\n\n/** Matches `{{slot:slotId}}` tokens (slotId: letters, digits, _ or -). */\nconst SLOT_TOKEN = /\\{\\{\\s*slot:([A-Za-z0-9_-]+)\\s*\\}\\}/g;\n\nexport type RenderSlotPlaceholder = (slot: DocumentSlot) => string;\n\nconst defaultPlaceholder: RenderSlotPlaceholder = (slot) => {\n\tswitch (slot.status) {\n\t\tcase \"running\":\n\t\t\treturn `_${slot.label ?? slot.slotId} 조회 중…_`;\n\t\tcase \"failed\":\n\t\t\treturn `_${slot.label ?? slot.slotId} 조회 실패_`;\n\t\tdefault:\n\t\t\treturn `_${slot.label ?? slot.slotId} (조회 전)_`;\n\t}\n};\n\n/**\n * Renders a document to final markdown by substituting each `{{slot:slotId}}`\n * token in `content` with the resolved fragment of the matching slot. Slots\n * that are not yet resolved fall back to a status placeholder.\n *\n * Tokens with no matching slot are left untouched.\n */\nexport function renderDocument(\n\tdocument: Document,\n\tplaceholder: RenderSlotPlaceholder = defaultPlaceholder,\n): string {\n\tconst slotsById = new Map(\n\t\t(document.slots ?? []).map((slot) => [slot.slotId, slot]),\n\t);\n\n\treturn document.content.replace(SLOT_TOKEN, (token, slotId: string) => {\n\t\tconst slot = slotsById.get(slotId);\n\t\tif (!slot) {\n\t\t\treturn token;\n\t\t}\n\t\tif (slot.status === \"resolved\" && slot.fragment) {\n\t\t\treturn slot.fragment.content;\n\t\t}\n\t\treturn placeholder(slot);\n\t});\n}\n"]}