// Copyright 2018-2022 The MathJax Consortium
// SPDX-License-Identifier: Apache-2.0
// Sources: ts/output/{common,svg}/Wrappers/mfenced.ts.

package svg

import (
	
	
)

// CommonMfenced creates an empty inferred MML row, then interleaves wrappers
// for its already-inherited fake operators and authored children. Their MML
// parents remain mfenced; a semantic mrow would change MathML spacing.
func ( *wrapper) () {
	 := syntheticMMLFactory.Create("inferredMrow")
	.Kind = "mrow"
	.Attributes.SetInherited("displaystyle", attribute(.node, "displaystyle", .displayStyle))
	.Attributes.SetInherited("scriptlevel", attribute(.node, "scriptlevel", .scriptLevel))
	if .node.Attributes.IsSet("mathsize") {
		.Attributes.SetInherited("mathsize", attribute(.node, "mathsize", "normal"))
	}
	if ,  := .node.Property("texprimestyle");  && truthy() {
		.SetProperty("texprimestyle", true)
	}
	.fencedRow = .renderer.wrap(, , .scriptLevel, .displayStyle)
	 := func( *mml.Node) {
		if  == nil {
			return
		}
		 := .renderer.wrap(, , .scriptLevel, .displayStyle)
		.fencedRow.children = append(.fencedRow.children, )
		.parent = .fencedRow
	}
	if .node.Fenced != nil {
		(.node.Fenced.Open)
	}
	for ,  := range .children {
		if  > 0 && .node.Fenced != nil && -1 < len(.node.Fenced.Separators) {
			(.node.Fenced.Separators[-1])
		}
		.fencedRow.children = append(.fencedRow.children, )
	}
	if .node.Fenced != nil {
		(.node.Fenced.Close)
	}
	.fencedRow.stretchRowChildren()
}

func ( *wrapper) ( *layout.BBox) {
	.UpdateFrom(.fencedRow.outerBBox())
}

func ( *wrapper) ( *Element) {
	 := .standardSVG()
	// SVGmfenced changes only wrapper ownership during output. Neither its
	// real MML children nor the fake operators join the temporary row's node.
	for ,  := range .children {
		.parent = .fencedRow
	}
	.fencedRow.toSVG()
	for ,  := range .children {
		.parent = 
	}
}