function _type_of(obj) {
    "@swc/helpers - typeof";
    return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
}
import { Node } from "slate";
function hasElementChildren(element) {
    return !!element && (typeof element === "undefined" ? "undefined" : _type_of(element)) === 'object' && Array.isArray(element.children);
}
/**
 * 从 Slate 元素读取正文：优先 `Node.string`（与子节点同步），再回退到 string `value`。
 * 用于流式 updateNodeList 只更新 text leaf、未同步 `value` 的场景。
 *
 * 不使用 `Element.isElement`：Vitest 中对 `slate` 的部分 mock 常缺少 `Element`，会导致用例报错。
 */ export function getSlateElementPlainText(element) {
    if (!element) return '';
    if (hasElementChildren(element)) {
        try {
            var fromSlate = Node.string(element);
            if (fromSlate !== '') {
                return fromSlate;
            }
        } catch (unused) {
        // 测试中可能对 slate / 节点结构部分 mock，退回到 value
        }
    }
    var v = element.value;
    return typeof v === 'string' ? v : '';
}
/**
 * 从 `CodeNode` 取正文，与 {@link getSlateElementPlainText} 行为一致。
 */ export function getCodeBlockPlainText(element) {
    return getSlateElementPlainText(element);
}
