{"version":3,"file":"highlight2.mjs","sources":["../../../../../../packages/components/highlight/src/highlight.vue"],"sourcesContent":["<template>\n  <div :class=\"ns.b()\">\n    <span\n      v-for=\"(part, index) in parts\"\n      :key=\"index\"\n      :class=\"{ [ns.e('highlight-text')]: part.isKeyword }\"\n      :style=\"part.isKeyword ? highlightStyle : {}\"\n    >\n      <slot v-if=\"part.isKeyword\" name=\"keyword\" :text=\"part.text\">\n        {{ part.text }}\n      </slot>\n      <template v-else>{{ part.text }}</template>\n    </span>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { useNamespace } from '@lit-element/hooks'\nimport { highlightProps } from './highlight'\n\ndefineOptions({ name: 'LtHighlight' })\n\nconst props = defineProps(highlightProps)\n\nconst ns = useNamespace('highlight')\n\nconst parts = computed(() => {\n  // 创建正则表达式，匹配关键词数组中的所有关键词\n  const flags = props.caseSensitive ? 'g' : 'gi'\n  const keywords = props.keyword.join('|')\n  const regex = new RegExp(`(${keywords})`, flags)\n\n  // 将文本分割为关键词和非关键词部分\n  const splitParts = props.text.split(regex).map((part: string) => ({\n    text: part,\n    isKeyword: regex.test(part),\n  }))\n\n  const mergedParts: { text: string; isKeyword: boolean }[] = []\n  let currentPart: { text: string; isKeyword: boolean } | null = null\n  // 合并连续的关键词或非关键词部分\n  for (const part of splitParts) {\n    if (currentPart === null) {\n      currentPart = part\n    } else if (currentPart.isKeyword === part.isKeyword) {\n      currentPart.text += part.text\n    } else {\n      mergedParts.push(currentPart)\n      currentPart = part\n    }\n  }\n\n  if (currentPart !== null) {\n    mergedParts.push(currentPart)\n  }\n\n  return mergedParts\n})\n</script>\n"],"names":[],"mappings":";;;;;;mCAqBc,CAAA,EAAE,IAAM,EAAA,aAAA,EAAc,CAAA,CAAA;;;;;;AAIpC,IAAM,MAAA,EAAA,GAAK,aAAa,WAAW,CAAA,CAAA;AAEnC,IAAM,MAAA,KAAA,GAAQ,SAAS,MAAM;AAE3B,MAAM,MAAA,KAAA,GAAQ,KAAM,CAAA,aAAA,GAAgB,GAAM,GAAA,IAAA,CAAA;AAC1C,MAAA,MAAM,QAAW,GAAA,KAAA,CAAM,OAAQ,CAAA,IAAA,CAAK,GAAG,CAAA,CAAA;AACvC,MAAA,MAAM,QAAQ,IAAI,MAAA,CAAO,CAAI,CAAA,EAAA,QAAQ,KAAK,KAAK,CAAA,CAAA;AAG/C,MAAM,MAAA,UAAA,GAAa,MAAM,IAAK,CAAA,KAAA,CAAM,KAAK,CAAE,CAAA,GAAA,CAAI,CAAC,IAAkB,MAAA;AAAA,QAChE,IAAM,EAAA,IAAA;AAAA,QACN,SAAA,EAAW,KAAM,CAAA,IAAA,CAAK,IAAI,CAAA;AAAA,OAC1B,CAAA,CAAA,CAAA;AAEF,MAAA,MAAM,cAAsD,EAAC,CAAA;AAC7D,MAAA,IAAI,WAA2D,GAAA,IAAA,CAAA;AAE/D,MAAA,KAAA,MAAW,QAAQ,UAAY,EAAA;AAC7B,QAAA,IAAI,gBAAgB,IAAM,EAAA;AACxB,UAAc,WAAA,GAAA,IAAA,CAAA;AAAA,SACL,MAAA,IAAA,WAAA,CAAY,SAAc,KAAA,IAAA,CAAK,SAAW,EAAA;AACnD,UAAA,WAAA,CAAY,QAAQ,IAAK,CAAA,IAAA,CAAA;AAAA,SACpB,MAAA;AACL,UAAA,WAAA,CAAY,KAAK,WAAW,CAAA,CAAA;AAC5B,UAAc,WAAA,GAAA,IAAA,CAAA;AAAA,SAChB;AAAA,OACF;AAEA,MAAA,IAAI,gBAAgB,IAAM,EAAA;AACxB,QAAA,WAAA,CAAY,KAAK,WAAW,CAAA,CAAA;AAAA,OAC9B;AAEA,MAAO,OAAA,WAAA,CAAA;AAAA,KACR,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}