{"version":3,"file":"render.mjs","sources":["../../../../../pro-components/chat/chat-engine/components/activity/render.tsx"],"sourcesContent":["import { computed, defineComponent, h } from 'vue';\nimport type { ActivityData } from 'tdesign-web-components';\nimport type { ActivityComponentProps } from './types';\nimport { activityRegistry, ACTIVITY_REGISTERED_EVENT, ACTIVITY_EVENT_DETAIL_KEY } from './registry';\nimport { ComponentErrorBoundary, useRegistrationListener } from '../shared';\n\ninterface Props {\n  activity: ActivityData;\n}\n\n/**\n * 默认的 Activity 渲染器\n * 当没有注册对应类型的组件时使用\n * TODO: 后续支持配置化的默认 UI\n */\nconst DefaultActivityRenderer = ({ activity }: { activity: ActivityData }): null => {\n  // 空白兜底，仅在控制台输出警告\n  console.warn(`[ActivityRenderer] Unknown activity type: ${activity.activityType}`, activity.content);\n  return null;\n};\n\n/**\n * Activity 渲染器组件\n * 根据 activityType 精确匹配查找注册的组件进行渲染\n *\n * 性能优化：\n * - Vue3 的响应式系统会自动进行深度比较\n * - computed 会缓存计算结果，只在依赖变化时重新计算\n */\nexport default defineComponent({\n  name: 'ActivityRenderer',\n  props: {\n    activity: {\n      type: Object as () => ActivityData,\n      required: true,\n    },\n  },\n  setup(props: Props) {\n    // 使用公共 Hook 监听动态注册\n    const { MemoizedComponent } = useRegistrationListener({\n      componentKey: computed(() => props.activity.activityType),\n      eventName: ACTIVITY_REGISTERED_EVENT,\n      eventDetailKey: ACTIVITY_EVENT_DETAIL_KEY,\n      getRenderFunction: activityRegistry.getRenderFunction,\n    });\n\n    // 缓存组件 props\n    const componentProps = computed<ActivityComponentProps>(() => ({\n      activityType: props.activity.activityType,\n      content: props.activity.content,\n      messageId: props.activity.messageId || '',\n    }));\n\n    return () => (\n      <ComponentErrorBoundary componentName={props.activity.activityType} logPrefix=\"ActivityRenderer\">\n        {MemoizedComponent.value ? (\n          h(MemoizedComponent.value, componentProps.value)\n        ) : (\n          <DefaultActivityRenderer activity={props.activity} />\n        )}\n      </ComponentErrorBoundary>\n    );\n  },\n});\n"],"names":["DefaultActivityRenderer","_ref","activity","console","warn","concat","activityType","content","defineComponent","name","props","type","Object","required","setup","_useRegistrationListe","useRegistrationListener","componentKey","computed","eventName","ACTIVITY_REGISTERED_EVENT","eventDetailKey","ACTIVITY_EVENT_DETAIL_KEY","getRenderFunction","activityRegistry","MemoizedComponent","componentProps","messageId","_createVNode","ComponentErrorBoundary","_default","value","h"],"mappings":";;;;;;;;;;;;;;;AAeA,IAAMA,uBAA0B,GAAA,SAA1BA,uBAA0BA,CAAAC,IAAA,EAAoD;AAAA,EAAA,IAAjDC,QAAA,GAAAD,IAAA,CAAAC,QAAA,CAAA;AAEjCC,EAAAA,OAAA,CAAQC,IAAK,CAAAC,4CAAAA,CAAAA,MAAA,CAA6CH,QAAS,CAAAI,YAAA,CAAgBJ,EAAAA,SAASK,OAAO,CAAA,CAAA;AAC5F,EAAA,OAAA,IAAA,CAAA;AACT,CAAA,CAAA;AAUA,aAAeC,eAAgB,CAAA;AAC7BC,EAAAA,IAAM,EAAA,kBAAA;AACNC,EAAAA,KAAO,EAAA;AACLR,IAAAA,QAAU,EAAA;AACRS,MAAAA,IAAM,EAAAC,MAAA;AACNC,MAAAA,QAAU,EAAA,IAAA;AACZ,KAAA;GACF;AACAC,EAAAA,OAAAA,SAAAA,MAAMJ,KAAc,EAAA;IAEZ,IAAAK,qBAAA,GAAwBC,uBAAwB,CAAA;QACpDC,YAAc,EAAAC,QAAA,CAAS,YAAA;AAAA,UAAA,OAAMR,KAAA,CAAMR,SAASI,YAAY,CAAA;SAAA,CAAA;AACxDa,QAAAA,SAAW,EAAAC,yBAAA;AACXC,QAAAA,cAAgB,EAAAC,yBAAA;QAChBC,mBAAmBC,gBAAiB,CAAAD,iBAAAA;AACtC,OAAC,CAAA;MALOE,iBAAkB,GAAAV,qBAAA,CAAlBU,iBAAkB,CAAA;IAQpB,IAAAC,cAAA,GAAiBR,SAAiC,YAAA;MAAA,OAAO;AAC7DZ,QAAAA,YAAA,EAAcI,MAAMR,QAAS,CAAAI,YAAA;AAC7BC,QAAAA,OAAA,EAASG,MAAMR,QAAS,CAAAK,OAAA;AACxBoB,QAAAA,SAAA,EAAWjB,KAAM,CAAAR,QAAA,CAASyB,SAAa,IAAA,EAAA;OACvC,CAAA;AAAA,KAAA,CAAA,CAAA;IAEK,OAAA,YAAA;MAAA,OAAAC,WAAA,CAAAC,sBAAA,EAAA;AAAA,QAAA,eAAA,EACkCnB,MAAMR,QAAS,CAAAI,YAAA;AAAA,QAAA,WAAA,EAAA,kBAAA;AAAA,OAAA,EAAA;AAAA,QAAA,SAAA,EAAA,SAAAwB,QAAA,GAAA;AAAA,UAAA,OAAA,CACnDL,iBAAkB,CAAAM,KAAA,GACjBC,EAAEP,iBAAkB,CAAAM,KAAA,EAAOL,cAAe,CAAAK,KAAK,CAE/C,GAAAH,WAAA,CAAA5B,uBAAA,EAAA;AAAA,YAAA,UAAA,EAAmCU,KAAA,CAAMR,QAAAA;WAAU,EAAA,IAAA,CAAA,CAAA,CAAA;AAAA,SAAA;AAAA,OAAA,CAAA,CAAA;KAJtD,CAAA;AAQL,GAAA;AACF,CAAC,CAAA;;;;"}