{"version":3,"file":"index.mjs","sources":["../../../../../packages/hooks/use-slot-has-content/index.ts"],"sourcesContent":["import {\r\n  Comment,\r\n  computed,\r\n  Text,\r\n  useSlots,\r\n  type ComputedRef,\r\n  type Slots,\r\n  type VNode,\r\n} from 'vue'\r\n\r\n/**\r\n * 检测指定插槽是否包含有效内容\r\n * @param slotName - 要检测的插槽名称\r\n * @returns 返回一个计算属性，表示插槽是否有内容\r\n */\r\nexport function useSlotHasContent(slotName: string): ComputedRef<boolean> {\r\n  const slots = useSlots() as Slots\r\n\r\n  return computed<boolean>(() => {\r\n    const slotContent = slots[slotName]?.()\r\n\r\n    // 如果插槽不存在或内容为空数组，返回false\r\n    if (!slotContent || slotContent.length === 0) {\r\n      return false\r\n    }\r\n\r\n    // 遍历所有VNode节点\r\n    return slotContent.some((vnode: VNode) => {\r\n      // 忽略注释节点\r\n      if (vnode.type === Comment) {\r\n        return false\r\n      }\r\n\r\n      // 处理文本节点 - 检查是否包含非空白内容\r\n      if (vnode.type === Text) {\r\n        const children = vnode.children\r\n        return typeof children === 'string' && children.trim() !== ''\r\n      }\r\n\r\n      // 其他类型的节点（元素、组件等）都视为有效内容\r\n      return true\r\n    })\r\n  })\r\n}\r\n"],"names":[],"mappings":";;;AAeO,SAAS,kBAAkB,QAAA,EAAwC;AACxE,EAAA,MAAM,QAAQ,QAAA,EAAS;AAEvB,EAAA,OAAO,SAAkB,MAAM;AAC7B,IAAA,MAAM,WAAA,GAAc,KAAA,CAAM,QAAQ,CAAA,IAAI;AAGtC,IAAA,IAAI,CAAC,WAAA,IAAe,WAAA,CAAY,MAAA,KAAW,CAAA,EAAG;AAC5C,MAAA,OAAO,KAAA;AAAA,IACT;AAGA,IAAA,OAAO,WAAA,CAAY,IAAA,CAAK,CAAC,KAAA,KAAiB;AAExC,MAAA,IAAI,KAAA,CAAM,SAAS,OAAA,EAAS;AAC1B,QAAA,OAAO,KAAA;AAAA,MACT;AAGA,MAAA,IAAI,KAAA,CAAM,SAAS,IAAA,EAAM;AACvB,QAAA,MAAM,WAAW,KAAA,CAAM,QAAA;AACvB,QAAA,OAAO,OAAO,QAAA,KAAa,QAAA,IAAY,QAAA,CAAS,MAAK,KAAM,EAAA;AAAA,MAC7D;AAGA,MAAA,OAAO,IAAA;AAAA,IACT,CAAC,CAAA;AAAA,EACH,CAAC,CAAA;AACH;;;;"}