/**
* `v-unwrap` —— 运行时把宿主元素**替换为自己的子节点**(宿主自身消失)。
*
* 用途:Vue 用 `v-html` 承载从 v2.9.2 搬运来的 HTML 时会多出一层 `
`,
* 而旧页是把同一段 HTML **直接注入**页签容器(无宿主)⇒ 结构/样式计数不一致。
* 该指令在挂载后解包,使**运行时 DOM 与 v2.9.2 完全一致**。
*
* 注:SSR 不执行指令,故结构对拍工具(`tools/struct_diff*.mjs`)对带 `unwrap-host` 类的
* 元素做等价**解包**后再比 —— 判据与运行时口径一致。
*/
import type { Directive } from 'vue'
function unwrap(el: Element): void {
const parent = el.parentNode
if (!parent) return
while (el.firstChild) parent.insertBefore(el.firstChild, el)
parent.removeChild(el)
}
export const vUnwrap: Directive = {
mounted: (el) => unwrap(el),
}