{"version":3,"file":"types.cjs","names":[],"sources":["../../src/react-ui/types.ts"],"sourcesContent":["export interface UIMessage<\n  TName extends string = string,\n  TProps extends Record<string, unknown> = Record<string, unknown>,\n> {\n  type: \"ui\";\n\n  id: string;\n  name: TName;\n  props: TProps;\n  metadata?: {\n    merge?: boolean;\n    run_id?: string;\n    name?: string;\n    tags?: string[];\n    id?: string;\n    [key: string]: unknown;\n  };\n}\n\nexport interface RemoveUIMessage {\n  type: \"remove-ui\";\n  id: string;\n}\n\nexport function isUIMessage(message: unknown): message is UIMessage {\n  if (typeof message !== \"object\" || message == null) return false;\n  if (!(\"type\" in message)) return false;\n  return message.type === \"ui\";\n}\n\nexport function isRemoveUIMessage(\n  message: unknown\n): message is RemoveUIMessage {\n  if (typeof message !== \"object\" || message == null) return false;\n  if (!(\"type\" in message)) return false;\n  return message.type === \"remove-ui\";\n}\n\nexport function uiMessageReducer(\n  state: UIMessage[],\n  update: UIMessage | RemoveUIMessage | (UIMessage | RemoveUIMessage)[]\n) {\n  const events = Array.isArray(update) ? update : [update];\n  let newState = state.slice();\n\n  for (const event of events) {\n    if (event.type === \"remove-ui\") {\n      newState = newState.filter((ui) => ui.id !== event.id);\n      continue;\n    }\n\n    const index = state.findIndex((ui) => ui.id === event.id);\n    if (index !== -1) {\n      newState[index] =\n        typeof event.metadata === \"object\" &&\n        event.metadata != null &&\n        event.metadata.merge\n          ? { ...event, props: { ...state[index].props, ...event.props } }\n          : event;\n    } else {\n      newState.push(event);\n    }\n  }\n\n  return newState;\n}\n"],"mappings":";AAwBA,SAAgB,YAAY,SAAwC;AAClE,KAAI,OAAO,YAAY,YAAY,WAAW,KAAM,QAAO;AAC3D,KAAI,EAAE,UAAU,SAAU,QAAO;AACjC,QAAO,QAAQ,SAAS;;AAG1B,SAAgB,kBACd,SAC4B;AAC5B,KAAI,OAAO,YAAY,YAAY,WAAW,KAAM,QAAO;AAC3D,KAAI,EAAE,UAAU,SAAU,QAAO;AACjC,QAAO,QAAQ,SAAS;;AAG1B,SAAgB,iBACd,OACA,QACA;CACA,MAAM,SAAS,MAAM,QAAQ,OAAO,GAAG,SAAS,CAAC,OAAO;CACxD,IAAI,WAAW,MAAM,OAAO;AAE5B,MAAK,MAAM,SAAS,QAAQ;AAC1B,MAAI,MAAM,SAAS,aAAa;AAC9B,cAAW,SAAS,QAAQ,OAAO,GAAG,OAAO,MAAM,GAAG;AACtD;;EAGF,MAAM,QAAQ,MAAM,WAAW,OAAO,GAAG,OAAO,MAAM,GAAG;AACzD,MAAI,UAAU,GACZ,UAAS,SACP,OAAO,MAAM,aAAa,YAC1B,MAAM,YAAY,QAClB,MAAM,SAAS,QACX;GAAE,GAAG;GAAO,OAAO;IAAE,GAAG,MAAM,OAAO;IAAO,GAAG,MAAM;IAAO;GAAE,GAC9D;MAEN,UAAS,KAAK,MAAM;;AAIxB,QAAO"}