diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/html/chadombuilder.nim | 4 | ||||
-rw-r--r-- | src/html/dom.nim | 22 |
2 files changed, 14 insertions, 12 deletions
diff --git a/src/html/chadombuilder.nim b/src/html/chadombuilder.nim index 32e880bf..2359e65e 100644 --- a/src/html/chadombuilder.nim +++ b/src/html/chadombuilder.nim @@ -151,7 +151,7 @@ proc createDocumentTypeImpl(builder: ChaDOMBuilder; name, publicId, proc insertBeforeImpl(builder: ChaDOMBuilder; parent, child: Node; before: Option[Node]) = - discard parent.insertBefore(child, before.get(nil)) + discard parent.insertBefore(child, before) proc insertTextImpl(builder: ChaDOMBuilder; parent: Node; text: string; before: Option[Node]) = @@ -165,7 +165,7 @@ proc insertTextImpl(builder: ChaDOMBuilder; parent: Node; text: string; Element(parent).invalid = true else: let text = builder.document.createTextNode(text) - discard parent.insertBefore(text, before.get(nil)) + discard parent.insertBefore(text, before) proc removeImpl(builder: ChaDOMBuilder; child: Node) = if child.parentNode != nil: diff --git a/src/html/dom.nim b/src/html/dom.nim index a78f4107..49233e87 100644 --- a/src/html/dom.nim +++ b/src/html/dom.nim @@ -522,7 +522,7 @@ proc attr*(element: Element; name: StaticAtom; value: string) proc baseURL*(document: Document): URL proc delAttr(element: Element; i: int; keep = false) proc getImageId(window: Window): int -proc insertBefore*(parent, node, before: Node): DOMResult[Node] +proc insertBefore*(parent, node: Node; before: Option[Node]): DOMResult[Node] proc invalidateCollections(node: Node) proc newHTMLElement*(document: Document; tagType: TagType): HTMLElement proc parseColor(element: Element; s: string): ARGBColor @@ -3118,7 +3118,7 @@ proc add(ctx: JSContext; this: HTMLOptionsCollection; element: Element; if it of HTMLElement: beforeEl = HTMLElement(it) let parent = if beforeEl != nil: beforeEl.parentNode else: this.root - let res = ctx.toJS(parent.insertBefore(element, beforeEl)) + let res = ctx.toJS(parent.insertBefore(element, option(Node(beforeEl)))) if JS_IsException(res): return res JS_FreeValue(ctx, res) @@ -3257,7 +3257,7 @@ proc setCaption(this: HTMLTableElement; caption: HTMLTableCaptionElement): let old = this.caption if old != nil: old.remove() - discard this.insertBefore(caption, this.firstChild) + discard ?this.insertBefore(caption, option(this.firstChild)) ok() func tHead(this: HTMLTableElement): Element {.jsfget.} = @@ -3273,7 +3273,7 @@ proc setTSectImpl(this: HTMLTableElement; sect: HTMLTableSectionElement; let old = this.findFirstChildOf(tagType) if old != nil: old.remove() - discard ?this.insertBefore(sect, this.firstChild) + discard ?this.insertBefore(sect, option(this.firstChild)) ok() proc setTHead(this: HTMLTableElement; tHead: HTMLTableSectionElement): @@ -3318,7 +3318,7 @@ proc create(this: HTMLTableElement; tagType: TagType; before: Node): var element = this.findFirstChildOf(tagType) if element == nil: element = this.document.newHTMLElement(tagType) - discard this.insertBefore(element, before) + discard this.insertBefore(element, option(before)) return element proc delete(this: HTMLTableElement; tagType: TagType) = @@ -3361,7 +3361,7 @@ proc insertRow(this: HTMLTableElement; index = -1): DOMResult[Element] this.rows.item(uint32(nrows) - 1).parentNode.append(tr) else: let it = this.rows.item(uint32(index)) - discard it.parentNode.insertBefore(tr, it) + discard it.parentNode.insertBefore(tr, option(Node(it))) return ok(tr) proc deleteRow(rows: HTMLCollection; index: int): DOMResult[void] = @@ -3396,7 +3396,7 @@ proc insertRow(this: HTMLTableSectionElement; index = -1): DOMResult[Element] if index == -1 or index == nrows: this.append(tr) else: - discard this.insertBefore(tr, this.rows.item(uint32(index))) + discard this.insertBefore(tr, option(Node(this.rows.item(uint32(index))))) return ok(tr) proc deleteRow(this: HTMLTableSectionElement; index = -1): DOMResult[void] @@ -4693,7 +4693,9 @@ proc insert*(parent, node, before: Node; suppressObservers = false) = for node in nodes: insertNode(parent, node, before) -proc insertBefore*(parent, node, before: Node): DOMResult[Node] {.jsfunc.} = +proc insertBefore*(parent, node: Node; before: Option[Node]): DOMResult[Node] + {.jsfunc.} = + let before = before.get(nil) ?parent.preInsertionValidity(node, before) let referenceChild = if before == node: node.nextSibling @@ -4703,7 +4705,7 @@ proc insertBefore*(parent, node, before: Node): DOMResult[Node] {.jsfunc.} = return ok(node) proc appendChild(parent, node: Node): DOMResult[Node] {.jsfunc.} = - return parent.insertBefore(node, nil) + return parent.insertBefore(node, none(Node)) proc append*(parent, node: Node) = discard parent.appendChild(node) @@ -4806,7 +4808,7 @@ proc toNode(ctx: JSContext; nodes: openArray[JSValue]; document: Document): proc prependImpl(ctx: JSContext; parent: Node; nodes: openArray[JSValue]): Err[DOMException] = let node = ctx.toNode(nodes, parent.document) - discard ?parent.insertBefore(node, parent.firstChild) + discard ?parent.insertBefore(node, option(parent.firstChild)) ok() proc prepend(ctx: JSContext; this: Element; nodes: varargs[JSValue]): |