{"version":3,"sources":["../../../src/activities/utils/strip-mentions-text.ts"],"names":[],"mappings":"AA4BO,SAAS,kBACd,QAAA,EACA,EAAE,WAAW,OAAA,EAAQ,GAA8B,EAAC,EACjC;AACnB,EAAA,IAAI,CAAC,SAAS,IAAA,EAAM;AAEpB,EAAA,IAAI,OAAO,QAAA,CAAS,IAAA;AAEpB,EAAA,KAAA,MAAW,OAAA,IAAW,QAAA,CAAS,QAAA,EAAU,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,KAAS,SAAS,CAAA,IAAK,EAAC,EAAG;AAClF,IAAA,IAAI,SAAA,IAAa,OAAA,CAAQ,SAAA,CAAU,EAAA,KAAO,SAAA,EAAW;AACnD,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,MAAA,MAAM,eAAA,GAAkB,QAAQ,IAAA,CAAK,OAAA,CAAQ,QAAQ,EAAE,CAAA,CAAE,OAAA,CAAQ,OAAA,EAAS,EAAE,CAAA;AAC5E,MAAA,IAAA,GAAO,KAAK,OAAA,CAAQ,OAAA,CAAQ,MAAM,CAAC,OAAA,GAAU,KAAK,eAAe,CAAA;AAAA,IACnE,CAAA,MAAA,IAAW,OAAA,CAAQ,SAAA,CAAU,IAAA,EAAM;AACjC,MAAA,IAAA,GAAO,IAAA,CAAK,OAAA;AAAA,QACV,CAAA,IAAA,EAAO,OAAA,CAAQ,SAAA,CAAU,IAAI,CAAA,KAAA,CAAA;AAAA,QAC7B,CAAC,OAAA,GAAU,EAAA,GAAK,OAAA,CAAQ,SAAA,CAAU;AAAA,OACpC;AAAA,IACF;AAAA,EACF;AAEA,EAAA,OAAO,KAAK,IAAA,EAAK;AACnB","file":"strip-mentions-text.mjs","sourcesContent":["import { IMessageActivity, IMessageUpdateActivity } from '../message';\nimport { ITypingActivity } from '../typing';\n\n/**\n * any activity type that has a `text` property\n */\ntype TextActivity = IMessageActivity | IMessageUpdateActivity | ITypingActivity;\n\nexport type StripMentionsTextOptions = {\n  /**\n   * the account to remove mentions for\n   * by default, all at-mentions listed in `entities` are removed.\n   */\n  accountId?: string;\n\n  /**\n   * when `true`, the inner text of the tag\n   * will not be removed\n   * Eg. input: Hello <at>my-bot</at>! How are you?\n   *     output: Hello my-bot! How are you?\n   */\n  tagOnly?: boolean;\n};\n\n/**\n * remove \"\\<at>...\\</at>\" text from an activity\n * @param activity the activity\n */\nexport function stripMentionsText<TActivity extends TextActivity>(\n  activity: TActivity,\n  { accountId, tagOnly }: StripMentionsTextOptions = {}\n): TActivity['text'] {\n  if (!activity.text) return;\n\n  let text = activity.text;\n\n  for (const mention of activity.entities?.filter((e) => e.type === 'mention') || []) {\n    if (accountId && mention.mentioned.id !== accountId) {\n      continue;\n    }\n\n    if (mention.text) {\n      const textWithoutTags = mention.text.replace('<at>', '').replace('</at>', '');\n      text = text.replace(mention.text, !tagOnly ? '' : textWithoutTags);\n    } else if (mention.mentioned.name) {\n      text = text.replace(\n        `<at>${mention.mentioned.name}</at>`,\n        !tagOnly ? '' : mention.mentioned.name\n      );\n    }\n  }\n\n  return text.trim();\n}\n"]}