diff --git a/app_scripts.js b/app_scripts.js index 0ab24af..605c4b5 100644 --- a/app_scripts.js +++ b/app_scripts.js @@ -237,6 +237,16 @@ function insertElementAtStart(elementId, content) { } } +function replaceElement(elementId, html) { + const element = document.getElementById(elementId); + if (element) { + const div = document.createElement("div"); + div.innerHTML = html + element.replaceWith(div.firstChild); + scanElementsSize(); + } +} + function appendToInputValue(elementId, content) { const element = document.getElementById(elementId); if (element) { diff --git a/view.go b/view.go index fd27178..f702101 100644 --- a/view.go +++ b/view.go @@ -989,6 +989,15 @@ func (view *viewData) propertyChanged(tag PropertyName) { session.updateCSSProperty(htmlID, string(Opacity), "") } + case Semantics: + htmlID := view.htmlID() + if v := session.viewByHTMLID(htmlID); v != nil { + buffer := allocStringBuilder() + defer freeStringBuilder(buffer) + viewHTML(v, buffer, "") + session.callFunc("replaceElement", htmlID, buffer.String()) + } + default: if cssTag, ok := sizeProperties[tag]; ok && cssTag != "" { if size, ok := sizeProperty(view, tag, session); ok {