From d39cada0c62a9e8649ef8aa874736e1140a9a11d Mon Sep 17 00:00:00 2001 From: Karl Seguin Date: Fri, 30 May 2025 18:02:38 +0800 Subject: [PATCH] support null referene node to Node.insertBefore --- src/browser/dom/node.zig | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/browser/dom/node.zig b/src/browser/dom/node.zig index 61cd1301..90ee72d0 100644 --- a/src/browser/dom/node.zig +++ b/src/browser/dom/node.zig @@ -289,8 +289,11 @@ pub const Node = struct { } } - pub fn _insertBefore(self: *parser.Node, new_node: *parser.Node, ref_node: *parser.Node) !*parser.Node { - return try parser.nodeInsertBefore(self, new_node, ref_node); + pub fn _insertBefore(self: *parser.Node, new_node: *parser.Node, ref_node_: ?*parser.Node) !Union { + if (ref_node_) |ref_node| { + return Node.toInterface(try parser.nodeInsertBefore(self, new_node, ref_node)); + } + return _appendChild(self, new_node); } pub fn _isDefaultNamespace(self: *parser.Node, namespace: ?[]const u8) !bool { @@ -662,6 +665,10 @@ test "Browser.DOM.node" { .{ "let insertBefore = document.createElement('a')", "undefined" }, .{ "link.insertBefore(insertBefore, text) !== undefined", "true" }, .{ "link.firstChild.localName === 'a'", "true" }, + + .{ "let insertBefore2 = document.createElement('b')", null }, + .{ "link.insertBefore(insertBefore2, null).localName", "b" }, + .{ "link.childNodes[link.childNodes.length - 1].localName", "b" }, }, .{}); try runner.testCases(&.{