From 01cd34377d955bfe347d21727407a11709374a30 Mon Sep 17 00:00:00 2001 From: Severn Everett Date: Tue, 26 Mar 2024 09:27:23 +0100 Subject: [PATCH 1/4] Added IE-specific values for textarea wrap attribute --- .../main/kotlin/kotlinx/html/generate/rules.kt | 6 ++++-- buildSrc/src/main/resources/html_5.xsd | 3 +++ src/commonMain/kotlin/generated/gen-enums.kt | 5 ++++- .../kotlin/generated/gen-tag-unions.kt | 18 ++++++++++++++++++ 4 files changed, 29 insertions(+), 3 deletions(-) diff --git a/buildSrc/src/main/kotlin/kotlinx/html/generate/rules.kt b/buildSrc/src/main/kotlin/kotlinx/html/generate/rules.kt index a8beced2..48185e7e 100644 --- a/buildSrc/src/main/kotlin/kotlinx/html/generate/rules.kt +++ b/buildSrc/src/main/kotlin/kotlinx/html/generate/rules.kt @@ -78,8 +78,10 @@ fun isEnumExcluded(name: String) = excludedEnums.any { it.containsMatchIn(name) val contentlessTags = setOf("html", "head", "script", "style") -val deprecated = listOf(".*FormMethod#(put|patch|delete)" to "method is not allowed in browsers") - .map { it.first.toRegex(RegexOption.IGNORE_CASE) to it.second } +val deprecated = listOf( + ".*FormMethod#(put|patch|delete)" to "method is not allowed in browsers", + ".*TextAreaWrap#(virtual|physical|off)" to "values only supported in IE" +).map { it.first.toRegex(RegexOption.IGNORE_CASE) to it.second } fun findEnumDeprecation(attribute: AttributeInfo, value: AttributeEnumValue): String? { return deprecated.firstOrNull { p -> p.first.matches("""${attribute.enumTypeName}#${value.realName}""") }?.second diff --git a/buildSrc/src/main/resources/html_5.xsd b/buildSrc/src/main/resources/html_5.xsd index 6bc4ed82..acfc6feb 100644 --- a/buildSrc/src/main/resources/html_5.xsd +++ b/buildSrc/src/main/resources/html_5.xsd @@ -1688,6 +1688,9 @@ + + + diff --git a/src/commonMain/kotlin/generated/gen-enums.kt b/src/commonMain/kotlin/generated/gen-enums.kt index 6c666c19..add2025d 100644 --- a/src/commonMain/kotlin/generated/gen-enums.kt +++ b/src/commonMain/kotlin/generated/gen-enums.kt @@ -406,7 +406,10 @@ object StyleMedia { @Suppress("unused") enum class TextAreaWrap(override val realValue : String) : AttributeEnum { hard("hard"), - soft("soft") + soft("soft"), + @Deprecated("values only supported in IE") virtual("virtual"), + @Deprecated("values only supported in IE") physical("physical"), + @Deprecated("values only supported in IE") off("off") } internal val textAreaWrapValues : Map = TextAreaWrap.values().associateBy { it.realValue } diff --git a/src/commonMain/kotlin/generated/gen-tag-unions.kt b/src/commonMain/kotlin/generated/gen-tag-unions.kt index 620c12f7..e568b0f0 100644 --- a/src/commonMain/kotlin/generated/gen-tag-unions.kt +++ b/src/commonMain/kotlin/generated/gen-tag-unions.kt @@ -551,10 +551,28 @@ fun FlowOrInteractiveOrPhrasingContent.textArea(rows : String? = null, cols : St inline fun FlowOrInteractiveOrPhrasingContent.hardTextArea(rows : String? = null, cols : String? = null, classes : String? = null, crossinline block : TEXTAREA.() -> Unit = {}) : Unit = TEXTAREA(attributesMapOf("rows", rows,"cols", cols,"wrap", TextAreaWrap.hard.realValue,"class", classes), consumer).visit(block) @HtmlTagMarker inline fun FlowOrInteractiveOrPhrasingContent.softTextArea(rows : String? = null, cols : String? = null, classes : String? = null, crossinline block : TEXTAREA.() -> Unit = {}) : Unit = TEXTAREA(attributesMapOf("rows", rows,"cols", cols,"wrap", TextAreaWrap.soft.realValue,"class", classes), consumer).visit(block) +@Suppress("DEPRECATION") +@HtmlTagMarker +inline fun FlowOrInteractiveOrPhrasingContent.virtualTextArea(rows : String? = null, cols : String? = null, classes : String? = null, crossinline block : TEXTAREA.() -> Unit = {}) : Unit = TEXTAREA(attributesMapOf("rows", rows,"cols", cols,"wrap", TextAreaWrap.virtual.realValue,"class", classes), consumer).visit(block) +@Suppress("DEPRECATION") +@HtmlTagMarker +inline fun FlowOrInteractiveOrPhrasingContent.physicalTextArea(rows : String? = null, cols : String? = null, classes : String? = null, crossinline block : TEXTAREA.() -> Unit = {}) : Unit = TEXTAREA(attributesMapOf("rows", rows,"cols", cols,"wrap", TextAreaWrap.physical.realValue,"class", classes), consumer).visit(block) +@Suppress("DEPRECATION") +@HtmlTagMarker +inline fun FlowOrInteractiveOrPhrasingContent.offTextArea(rows : String? = null, cols : String? = null, classes : String? = null, crossinline block : TEXTAREA.() -> Unit = {}) : Unit = TEXTAREA(attributesMapOf("rows", rows,"cols", cols,"wrap", TextAreaWrap.off.realValue,"class", classes), consumer).visit(block) @HtmlTagMarker fun FlowOrInteractiveOrPhrasingContent.hardTextArea(rows : String? = null, cols : String? = null, classes : String? = null, content : String = "") : Unit = TEXTAREA(attributesMapOf("rows", rows,"cols", cols,"wrap", TextAreaWrap.hard.realValue,"class", classes), consumer).visit({+content}) @HtmlTagMarker fun FlowOrInteractiveOrPhrasingContent.softTextArea(rows : String? = null, cols : String? = null, classes : String? = null, content : String = "") : Unit = TEXTAREA(attributesMapOf("rows", rows,"cols", cols,"wrap", TextAreaWrap.soft.realValue,"class", classes), consumer).visit({+content}) +@Suppress("DEPRECATION") +@HtmlTagMarker +fun FlowOrInteractiveOrPhrasingContent.virtualTextArea(rows : String? = null, cols : String? = null, classes : String? = null, content : String = "") : Unit = TEXTAREA(attributesMapOf("rows", rows,"cols", cols,"wrap", TextAreaWrap.virtual.realValue,"class", classes), consumer).visit({+content}) +@Suppress("DEPRECATION") +@HtmlTagMarker +fun FlowOrInteractiveOrPhrasingContent.physicalTextArea(rows : String? = null, cols : String? = null, classes : String? = null, content : String = "") : Unit = TEXTAREA(attributesMapOf("rows", rows,"cols", cols,"wrap", TextAreaWrap.physical.realValue,"class", classes), consumer).visit({+content}) +@Suppress("DEPRECATION") +@HtmlTagMarker +fun FlowOrInteractiveOrPhrasingContent.offTextArea(rows : String? = null, cols : String? = null, classes : String? = null, content : String = "") : Unit = TEXTAREA(attributesMapOf("rows", rows,"cols", cols,"wrap", TextAreaWrap.off.realValue,"class", classes), consumer).visit({+content}) /** * Video player From 45024a0f1f355736d2a3c690d448a5a3def69d93 Mon Sep 17 00:00:00 2001 From: Severn Everett Date: Tue, 26 Mar 2024 09:28:56 +0100 Subject: [PATCH 2/4] Reworded deprecation message --- buildSrc/src/main/kotlin/kotlinx/html/generate/rules.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildSrc/src/main/kotlin/kotlinx/html/generate/rules.kt b/buildSrc/src/main/kotlin/kotlinx/html/generate/rules.kt index 48185e7e..19b484ce 100644 --- a/buildSrc/src/main/kotlin/kotlinx/html/generate/rules.kt +++ b/buildSrc/src/main/kotlin/kotlinx/html/generate/rules.kt @@ -80,7 +80,7 @@ val contentlessTags = setOf("html", "head", "script", "style") val deprecated = listOf( ".*FormMethod#(put|patch|delete)" to "method is not allowed in browsers", - ".*TextAreaWrap#(virtual|physical|off)" to "values only supported in IE" + ".*TextAreaWrap#(virtual|physical|off)" to "value only supported in IE" ).map { it.first.toRegex(RegexOption.IGNORE_CASE) to it.second } fun findEnumDeprecation(attribute: AttributeInfo, value: AttributeEnumValue): String? { From 0f4019c9e0e3847e29af30be7ce66b4d7d5dbe67 Mon Sep 17 00:00:00 2001 From: Severn Everett Date: Tue, 26 Mar 2024 09:29:51 +0100 Subject: [PATCH 3/4] Regenerated TextAreaWrap with corrected deprecation message --- src/commonMain/kotlin/generated/gen-enums.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/commonMain/kotlin/generated/gen-enums.kt b/src/commonMain/kotlin/generated/gen-enums.kt index add2025d..efba8ef5 100644 --- a/src/commonMain/kotlin/generated/gen-enums.kt +++ b/src/commonMain/kotlin/generated/gen-enums.kt @@ -407,9 +407,9 @@ object StyleMedia { enum class TextAreaWrap(override val realValue : String) : AttributeEnum { hard("hard"), soft("soft"), - @Deprecated("values only supported in IE") virtual("virtual"), - @Deprecated("values only supported in IE") physical("physical"), - @Deprecated("values only supported in IE") off("off") + @Deprecated("value only supported in IE") virtual("virtual"), + @Deprecated("value only supported in IE") physical("physical"), + @Deprecated("value only supported in IE") off("off") } internal val textAreaWrapValues : Map = TextAreaWrap.values().associateBy { it.realValue } From b590d6b73da361aef5ff03f70a19318ee2e6c4c2 Mon Sep 17 00:00:00 2001 From: Severn Everett Date: Sun, 5 May 2024 19:07:48 +0200 Subject: [PATCH 4/4] Updated gen-tag-unions.kt for code merged in from master --- .../kotlin/generated/gen-tag-unions.kt | 687 +++++++++++++++--- 1 file changed, 573 insertions(+), 114 deletions(-) diff --git a/src/commonMain/kotlin/generated/gen-tag-unions.kt b/src/commonMain/kotlin/generated/gen-tag-unions.kt index e568b0f0..6a161856 100644 --- a/src/commonMain/kotlin/generated/gen-tag-unions.kt +++ b/src/commonMain/kotlin/generated/gen-tag-unions.kt @@ -1,5 +1,8 @@ package kotlinx.html +import kotlin.contracts.ExperimentalContracts +import kotlin.contracts.InvocationKind +import kotlin.contracts.contract import kotlinx.html.* import kotlinx.html.impl.* import kotlinx.html.attributes.* @@ -33,37 +36,69 @@ interface FlowOrInteractiveOrPhrasingContent : Tag { @HtmlTagMarker -inline fun FlowOrMetaDataOrPhrasingContent.command(type : CommandType? = null, classes : String? = null, crossinline block : COMMAND.() -> Unit = {}) : Unit = COMMAND(attributesMapOf("type", type?.enumEncode(),"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrMetaDataOrPhrasingContent.command(type : CommandType? = null, classes : String? = null, crossinline block : COMMAND.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + COMMAND(attributesMapOf("type", type?.enumEncode(),"class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrMetaDataOrPhrasingContent.commandCommand(classes : String? = null, crossinline block : COMMAND.() -> Unit = {}) : Unit = COMMAND(attributesMapOf("type", CommandType.command.realValue,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrMetaDataOrPhrasingContent.commandCommand(classes : String? = null, crossinline block : COMMAND.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + COMMAND(attributesMapOf("type", CommandType.command.realValue,"class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrMetaDataOrPhrasingContent.checkBoxCommand(classes : String? = null, crossinline block : COMMAND.() -> Unit = {}) : Unit = COMMAND(attributesMapOf("type", CommandType.checkBox.realValue,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrMetaDataOrPhrasingContent.checkBoxCommand(classes : String? = null, crossinline block : COMMAND.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + COMMAND(attributesMapOf("type", CommandType.checkBox.realValue,"class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrMetaDataOrPhrasingContent.radioCommand(classes : String? = null, crossinline block : COMMAND.() -> Unit = {}) : Unit = COMMAND(attributesMapOf("type", CommandType.radio.realValue,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrMetaDataOrPhrasingContent.radioCommand(classes : String? = null, crossinline block : COMMAND.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + COMMAND(attributesMapOf("type", CommandType.radio.realValue,"class", classes), consumer).visit(block) +} /** * A media-independent link */ @HtmlTagMarker -inline fun FlowOrMetaDataOrPhrasingContent.link(href : String? = null, rel : String? = null, type : String? = null, crossinline block : LINK.() -> Unit = {}) : Unit = LINK(attributesMapOf("href", href,"rel", rel,"type", type), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrMetaDataOrPhrasingContent.link(href : String? = null, rel : String? = null, type : String? = null, crossinline block : LINK.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + LINK(attributesMapOf("href", href,"rel", rel,"type", type), consumer).visit(block) +} /** * Generic metainformation */ @HtmlTagMarker -inline fun FlowOrMetaDataOrPhrasingContent.meta(name : String? = null, content : String? = null, charset : String? = null, crossinline block : META.() -> Unit = {}) : Unit = META(attributesMapOf("name", name,"content", content,"charset", charset), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrMetaDataOrPhrasingContent.meta(name : String? = null, content : String? = null, charset : String? = null, crossinline block : META.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + META(attributesMapOf("name", name,"content", content,"charset", charset), consumer).visit(block) +} /** * Generic metainformation */ @HtmlTagMarker -inline fun FlowOrMetaDataOrPhrasingContent.noScript(classes : String? = null, crossinline block : NOSCRIPT.() -> Unit = {}) : Unit = NOSCRIPT(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrMetaDataOrPhrasingContent.noScript(classes : String? = null, crossinline block : NOSCRIPT.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + NOSCRIPT(attributesMapOf("class", classes), consumer).visit(block) +} /** * Script statements */ @HtmlTagMarker -inline fun FlowOrMetaDataOrPhrasingContent.script(type : String? = null, src : String? = null, crossorigin : ScriptCrossorigin? = null, crossinline block : SCRIPT.() -> Unit = {}) : Unit = SCRIPT(attributesMapOf("type", type,"src", src,"crossorigin", crossorigin?.enumEncode()), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrMetaDataOrPhrasingContent.script(type : String? = null, src : String? = null, crossorigin : ScriptCrossorigin? = null, crossinline block : SCRIPT.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + SCRIPT(attributesMapOf("type", type,"src", src,"crossorigin", crossorigin?.enumEncode()), consumer).visit(block) +} @Deprecated("This tag doesn't support content or requires unsafe (try unsafe {})") @Suppress("DEPRECATION") /** @@ -72,9 +107,17 @@ inline fun FlowOrMetaDataOrPhrasingContent.script(type : String? = null, src : S @HtmlTagMarker fun FlowOrMetaDataOrPhrasingContent.script(type : String? = null, src : String? = null, crossorigin : ScriptCrossorigin? = null, content : String = "") : Unit = SCRIPT(attributesMapOf("type", type,"src", src,"crossorigin", crossorigin?.enumEncode()), consumer).visit({+content}) @HtmlTagMarker -inline fun FlowOrMetaDataOrPhrasingContent.anonymousScript(type : String? = null, src : String? = null, crossinline block : SCRIPT.() -> Unit = {}) : Unit = SCRIPT(attributesMapOf("type", type,"src", src,"crossorigin", ScriptCrossorigin.anonymous.realValue), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrMetaDataOrPhrasingContent.anonymousScript(type : String? = null, src : String? = null, crossinline block : SCRIPT.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + SCRIPT(attributesMapOf("type", type,"src", src,"crossorigin", ScriptCrossorigin.anonymous.realValue), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrMetaDataOrPhrasingContent.useCredentialsScript(type : String? = null, src : String? = null, crossinline block : SCRIPT.() -> Unit = {}) : Unit = SCRIPT(attributesMapOf("type", type,"src", src,"crossorigin", ScriptCrossorigin.useCredentials.realValue), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrMetaDataOrPhrasingContent.useCredentialsScript(type : String? = null, src : String? = null, crossinline block : SCRIPT.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + SCRIPT(attributesMapOf("type", type,"src", src,"crossorigin", ScriptCrossorigin.useCredentials.realValue), consumer).visit(block) +} @Deprecated("This tag doesn't support content or requires unsafe (try unsafe {})") @Suppress("DEPRECATION") @HtmlTagMarker @@ -87,47 +130,79 @@ fun FlowOrMetaDataOrPhrasingContent.useCredentialsScript(type : String? = null, * Heading */ @HtmlTagMarker -inline fun FlowOrHeadingContent.h1(classes : String? = null, crossinline block : H1.() -> Unit = {}) : Unit = H1(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrHeadingContent.h1(classes : String? = null, crossinline block : H1.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + H1(attributesMapOf("class", classes), consumer).visit(block) +} /** * Heading */ @HtmlTagMarker -inline fun FlowOrHeadingContent.h2(classes : String? = null, crossinline block : H2.() -> Unit = {}) : Unit = H2(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrHeadingContent.h2(classes : String? = null, crossinline block : H2.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + H2(attributesMapOf("class", classes), consumer).visit(block) +} /** * Heading */ @HtmlTagMarker -inline fun FlowOrHeadingContent.h3(classes : String? = null, crossinline block : H3.() -> Unit = {}) : Unit = H3(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrHeadingContent.h3(classes : String? = null, crossinline block : H3.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + H3(attributesMapOf("class", classes), consumer).visit(block) +} /** * Heading */ @HtmlTagMarker -inline fun FlowOrHeadingContent.h4(classes : String? = null, crossinline block : H4.() -> Unit = {}) : Unit = H4(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrHeadingContent.h4(classes : String? = null, crossinline block : H4.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + H4(attributesMapOf("class", classes), consumer).visit(block) +} /** * Heading */ @HtmlTagMarker -inline fun FlowOrHeadingContent.h5(classes : String? = null, crossinline block : H5.() -> Unit = {}) : Unit = H5(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrHeadingContent.h5(classes : String? = null, crossinline block : H5.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + H5(attributesMapOf("class", classes), consumer).visit(block) +} /** * Heading */ @HtmlTagMarker -inline fun FlowOrHeadingContent.h6(classes : String? = null, crossinline block : H6.() -> Unit = {}) : Unit = H6(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrHeadingContent.h6(classes : String? = null, crossinline block : H6.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + H6(attributesMapOf("class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrHeadingContent.hGroup(classes : String? = null, crossinline block : HGROUP.() -> Unit = {}) : Unit = HGROUP(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrHeadingContent.hGroup(classes : String? = null, crossinline block : HGROUP.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + HGROUP(attributesMapOf("class", classes), consumer).visit(block) +} /** * Style info */ @HtmlTagMarker -inline fun FlowOrMetaDataContent.style(type : String? = null, crossinline block : STYLE.() -> Unit = {}) : Unit = STYLE(attributesMapOf("type", type), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrMetaDataContent.style(type : String? = null, crossinline block : STYLE.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + STYLE(attributesMapOf("type", type), consumer).visit(block) +} @Deprecated("This tag doesn't support content or requires unsafe (try unsafe {})") @Suppress("DEPRECATION") /** @@ -141,58 +216,106 @@ fun FlowOrMetaDataContent.style(type : String? = null, content : String = "") : * Disclosure control for hiding details */ @HtmlTagMarker -inline fun FlowOrInteractiveContent.details(classes : String? = null, crossinline block : DETAILS.() -> Unit = {}) : Unit = DETAILS(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveContent.details(classes : String? = null, crossinline block : DETAILS.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + DETAILS(attributesMapOf("class", classes), consumer).visit(block) +} /** * Abbreviated form (e.g., WWW, HTTP,etc.) */ @HtmlTagMarker -inline fun FlowOrPhrasingContent.abbr(classes : String? = null, crossinline block : ABBR.() -> Unit = {}) : Unit = ABBR(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrPhrasingContent.abbr(classes : String? = null, crossinline block : ABBR.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + ABBR(attributesMapOf("class", classes), consumer).visit(block) +} /** * Client-side image map area */ @HtmlTagMarker -inline fun FlowOrPhrasingContent.area(shape : AreaShape? = null, alt : String? = null, classes : String? = null, crossinline block : AREA.() -> Unit = {}) : Unit = AREA(attributesMapOf("Shape", shape?.enumEncode(),"alt", alt,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrPhrasingContent.area(shape : AreaShape? = null, alt : String? = null, classes : String? = null, crossinline block : AREA.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + AREA(attributesMapOf("Shape", shape?.enumEncode(),"alt", alt,"class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrPhrasingContent.rectArea(alt : String? = null, classes : String? = null, crossinline block : AREA.() -> Unit = {}) : Unit = AREA(attributesMapOf("Shape", AreaShape.rect.realValue,"alt", alt,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrPhrasingContent.rectArea(alt : String? = null, classes : String? = null, crossinline block : AREA.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + AREA(attributesMapOf("Shape", AreaShape.rect.realValue,"alt", alt,"class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrPhrasingContent.circleArea(alt : String? = null, classes : String? = null, crossinline block : AREA.() -> Unit = {}) : Unit = AREA(attributesMapOf("Shape", AreaShape.circle.realValue,"alt", alt,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrPhrasingContent.circleArea(alt : String? = null, classes : String? = null, crossinline block : AREA.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + AREA(attributesMapOf("Shape", AreaShape.circle.realValue,"alt", alt,"class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrPhrasingContent.polyArea(alt : String? = null, classes : String? = null, crossinline block : AREA.() -> Unit = {}) : Unit = AREA(attributesMapOf("Shape", AreaShape.poly.realValue,"alt", alt,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrPhrasingContent.polyArea(alt : String? = null, classes : String? = null, crossinline block : AREA.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + AREA(attributesMapOf("Shape", AreaShape.poly.realValue,"alt", alt,"class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrPhrasingContent.defaultArea(alt : String? = null, classes : String? = null, crossinline block : AREA.() -> Unit = {}) : Unit = AREA(attributesMapOf("Shape", AreaShape.default.realValue,"alt", alt,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrPhrasingContent.defaultArea(alt : String? = null, classes : String? = null, crossinline block : AREA.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + AREA(attributesMapOf("Shape", AreaShape.default.realValue,"alt", alt,"class", classes), consumer).visit(block) +} /** * Bold text style */ @HtmlTagMarker -inline fun FlowOrPhrasingContent.b(classes : String? = null, crossinline block : B.() -> Unit = {}) : Unit = B(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrPhrasingContent.b(classes : String? = null, crossinline block : B.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + B(attributesMapOf("class", classes), consumer).visit(block) +} /** * Text directionality isolation */ @HtmlTagMarker -inline fun FlowOrPhrasingContent.bdi(classes : String? = null, crossinline block : BDI.() -> Unit = {}) : Unit = BDI(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrPhrasingContent.bdi(classes : String? = null, crossinline block : BDI.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + BDI(attributesMapOf("class", classes), consumer).visit(block) +} /** * I18N BiDi over-ride */ @HtmlTagMarker -inline fun FlowOrPhrasingContent.bdo(classes : String? = null, crossinline block : BDO.() -> Unit = {}) : Unit = BDO(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrPhrasingContent.bdo(classes : String? = null, crossinline block : BDO.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + BDO(attributesMapOf("class", classes), consumer).visit(block) +} /** * Forced line break */ @HtmlTagMarker -inline fun FlowOrPhrasingContent.br(classes : String? = null, crossinline block : BR.() -> Unit = {}) : Unit = BR(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrPhrasingContent.br(classes : String? = null, crossinline block : BR.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + BR(attributesMapOf("class", classes), consumer).visit(block) +} /** * Scriptable bitmap canvas */ @HtmlTagMarker -inline fun FlowOrPhrasingContent.canvas(classes : String? = null, crossinline block : CANVAS.() -> Unit = {}) : Unit = CANVAS(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrPhrasingContent.canvas(classes : String? = null, crossinline block : CANVAS.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + CANVAS(attributesMapOf("class", classes), consumer).visit(block) +} /** * Scriptable bitmap canvas */ @@ -203,139 +326,235 @@ fun FlowOrPhrasingContent.canvas(classes : String? = null, content : String = "" * Citation */ @HtmlTagMarker -inline fun FlowOrPhrasingContent.cite(classes : String? = null, crossinline block : CITE.() -> Unit = {}) : Unit = CITE(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrPhrasingContent.cite(classes : String? = null, crossinline block : CITE.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + CITE(attributesMapOf("class", classes), consumer).visit(block) +} /** * Computer code fragment */ @HtmlTagMarker -inline fun FlowOrPhrasingContent.code(classes : String? = null, crossinline block : CODE.() -> Unit = {}) : Unit = CODE(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrPhrasingContent.code(classes : String? = null, crossinline block : CODE.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + CODE(attributesMapOf("class", classes), consumer).visit(block) +} /** * Container for options for */ @HtmlTagMarker -inline fun FlowOrPhrasingContent.dataList(classes : String? = null, crossinline block : DATALIST.() -> Unit = {}) : Unit = DATALIST(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrPhrasingContent.dataList(classes : String? = null, crossinline block : DATALIST.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + DATALIST(attributesMapOf("class", classes), consumer).visit(block) +} /** * Deleted text */ @HtmlTagMarker -inline fun FlowOrPhrasingContent.del(classes : String? = null, crossinline block : DEL.() -> Unit = {}) : Unit = DEL(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrPhrasingContent.del(classes : String? = null, crossinline block : DEL.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + DEL(attributesMapOf("class", classes), consumer).visit(block) +} /** * Instance definition */ @HtmlTagMarker -inline fun FlowOrPhrasingContent.dfn(classes : String? = null, crossinline block : DFN.() -> Unit = {}) : Unit = DFN(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrPhrasingContent.dfn(classes : String? = null, crossinline block : DFN.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + DFN(attributesMapOf("class", classes), consumer).visit(block) +} /** * Emphasis */ @HtmlTagMarker -inline fun FlowOrPhrasingContent.em(classes : String? = null, crossinline block : EM.() -> Unit = {}) : Unit = EM(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrPhrasingContent.em(classes : String? = null, crossinline block : EM.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + EM(attributesMapOf("class", classes), consumer).visit(block) +} /** * Italic text style */ @HtmlTagMarker -inline fun FlowOrPhrasingContent.i(classes : String? = null, crossinline block : I.() -> Unit = {}) : Unit = I(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrPhrasingContent.i(classes : String? = null, crossinline block : I.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + I(attributesMapOf("class", classes), consumer).visit(block) +} /** * Inserted text */ @HtmlTagMarker -inline fun FlowOrPhrasingContent.ins(classes : String? = null, crossinline block : INS.() -> Unit = {}) : Unit = INS(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrPhrasingContent.ins(classes : String? = null, crossinline block : INS.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + INS(attributesMapOf("class", classes), consumer).visit(block) +} /** * Text to be entered by the user */ @HtmlTagMarker -inline fun FlowOrPhrasingContent.kbd(classes : String? = null, crossinline block : KBD.() -> Unit = {}) : Unit = KBD(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrPhrasingContent.kbd(classes : String? = null, crossinline block : KBD.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + KBD(attributesMapOf("class", classes), consumer).visit(block) +} /** * Client-side image map */ @HtmlTagMarker -inline fun FlowOrPhrasingContent.map(name : String? = null, classes : String? = null, crossinline block : MAP.() -> Unit = {}) : Unit = MAP(attributesMapOf("name", name,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrPhrasingContent.map(name : String? = null, classes : String? = null, crossinline block : MAP.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + MAP(attributesMapOf("name", name,"class", classes), consumer).visit(block) +} /** * Highlight */ @HtmlTagMarker -inline fun FlowOrPhrasingContent.mark(classes : String? = null, crossinline block : MARK.() -> Unit = {}) : Unit = MARK(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrPhrasingContent.mark(classes : String? = null, crossinline block : MARK.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + MARK(attributesMapOf("class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrPhrasingContent.math(classes : String? = null, crossinline block : MATH.() -> Unit = {}) : Unit = MATH(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrPhrasingContent.math(classes : String? = null, crossinline block : MATH.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + MATH(attributesMapOf("class", classes), consumer).visit(block) +} /** * Gauge */ @HtmlTagMarker -inline fun FlowOrPhrasingContent.meter(classes : String? = null, crossinline block : METER.() -> Unit = {}) : Unit = METER(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrPhrasingContent.meter(classes : String? = null, crossinline block : METER.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + METER(attributesMapOf("class", classes), consumer).visit(block) +} /** * Calculated output value */ @HtmlTagMarker -inline fun FlowOrPhrasingContent.output(classes : String? = null, crossinline block : OUTPUT.() -> Unit = {}) : Unit = OUTPUT(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrPhrasingContent.output(classes : String? = null, crossinline block : OUTPUT.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + OUTPUT(attributesMapOf("class", classes), consumer).visit(block) +} /** * Progress bar */ @HtmlTagMarker -inline fun FlowOrPhrasingContent.progress(classes : String? = null, crossinline block : PROGRESS.() -> Unit = {}) : Unit = PROGRESS(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrPhrasingContent.progress(classes : String? = null, crossinline block : PROGRESS.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + PROGRESS(attributesMapOf("class", classes), consumer).visit(block) +} /** * Short inline quotation */ @HtmlTagMarker -inline fun FlowOrPhrasingContent.q(classes : String? = null, crossinline block : Q.() -> Unit = {}) : Unit = Q(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrPhrasingContent.q(classes : String? = null, crossinline block : Q.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + Q(attributesMapOf("class", classes), consumer).visit(block) +} /** * Ruby annotation(s) */ @HtmlTagMarker -inline fun FlowOrPhrasingContent.ruby(classes : String? = null, crossinline block : RUBY.() -> Unit = {}) : Unit = RUBY(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrPhrasingContent.ruby(classes : String? = null, crossinline block : RUBY.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + RUBY(attributesMapOf("class", classes), consumer).visit(block) +} /** * Sample or quote text style */ @HtmlTagMarker -inline fun FlowOrPhrasingContent.samp(classes : String? = null, crossinline block : SAMP.() -> Unit = {}) : Unit = SAMP(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrPhrasingContent.samp(classes : String? = null, crossinline block : SAMP.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + SAMP(attributesMapOf("class", classes), consumer).visit(block) +} /** * Small text style */ @HtmlTagMarker -inline fun FlowOrPhrasingContent.small(classes : String? = null, crossinline block : SMALL.() -> Unit = {}) : Unit = SMALL(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrPhrasingContent.small(classes : String? = null, crossinline block : SMALL.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + SMALL(attributesMapOf("class", classes), consumer).visit(block) +} /** * Generic language/style container */ @HtmlTagMarker -inline fun FlowOrPhrasingContent.span(classes : String? = null, crossinline block : SPAN.() -> Unit = {}) : Unit = SPAN(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrPhrasingContent.span(classes : String? = null, crossinline block : SPAN.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + SPAN(attributesMapOf("class", classes), consumer).visit(block) +} /** * Strong emphasis */ @HtmlTagMarker -inline fun FlowOrPhrasingContent.strong(classes : String? = null, crossinline block : STRONG.() -> Unit = {}) : Unit = STRONG(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrPhrasingContent.strong(classes : String? = null, crossinline block : STRONG.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + STRONG(attributesMapOf("class", classes), consumer).visit(block) +} /** * Subscript */ @HtmlTagMarker -inline fun FlowOrPhrasingContent.sub(classes : String? = null, crossinline block : SUB.() -> Unit = {}) : Unit = SUB(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrPhrasingContent.sub(classes : String? = null, crossinline block : SUB.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + SUB(attributesMapOf("class", classes), consumer).visit(block) +} /** * Superscript */ @HtmlTagMarker -inline fun FlowOrPhrasingContent.sup(classes : String? = null, crossinline block : SUP.() -> Unit = {}) : Unit = SUP(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrPhrasingContent.sup(classes : String? = null, crossinline block : SUP.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + SUP(attributesMapOf("class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrPhrasingContent.svg(classes : String? = null, crossinline block : SVG.() -> Unit = {}) : Unit = SVG(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrPhrasingContent.svg(classes : String? = null, crossinline block : SVG.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + SVG(attributesMapOf("class", classes), consumer).visit(block) +} @HtmlTagMarker fun FlowOrPhrasingContent.svg(classes : String? = null, content : String = "") : Unit = SVG(attributesMapOf("class", classes), consumer).visit({+content}) @@ -343,99 +562,179 @@ fun FlowOrPhrasingContent.svg(classes : String? = null, content : String = "") : * Machine-readable equivalent of date- or time-related data */ @HtmlTagMarker -inline fun FlowOrPhrasingContent.time(classes : String? = null, crossinline block : TIME.() -> Unit = {}) : Unit = TIME(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrPhrasingContent.time(classes : String? = null, crossinline block : TIME.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + TIME(attributesMapOf("class", classes), consumer).visit(block) +} /** * Unordered list */ @HtmlTagMarker -inline fun FlowOrPhrasingContent.htmlVar(classes : String? = null, crossinline block : VAR.() -> Unit = {}) : Unit = VAR(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrPhrasingContent.htmlVar(classes : String? = null, crossinline block : VAR.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + VAR(attributesMapOf("class", classes), consumer).visit(block) +} /** * Self-contained syndicatable or reusable composition */ @HtmlTagMarker -inline fun SectioningOrFlowContent.article(classes : String? = null, crossinline block : ARTICLE.() -> Unit = {}) : Unit = ARTICLE(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun SectioningOrFlowContent.article(classes : String? = null, crossinline block : ARTICLE.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + ARTICLE(attributesMapOf("class", classes), consumer).visit(block) +} /** * Sidebar for tangentially related content */ @HtmlTagMarker -inline fun SectioningOrFlowContent.aside(classes : String? = null, crossinline block : ASIDE.() -> Unit = {}) : Unit = ASIDE(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun SectioningOrFlowContent.aside(classes : String? = null, crossinline block : ASIDE.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + ASIDE(attributesMapOf("class", classes), consumer).visit(block) +} /** * Container for the dominant contents of another element */ @HtmlTagMarker -inline fun SectioningOrFlowContent.main(classes : String? = null, crossinline block : MAIN.() -> Unit = {}) : Unit = MAIN(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun SectioningOrFlowContent.main(classes : String? = null, crossinline block : MAIN.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + MAIN(attributesMapOf("class", classes), consumer).visit(block) +} /** * Section with navigational links */ @HtmlTagMarker -inline fun SectioningOrFlowContent.nav(classes : String? = null, crossinline block : NAV.() -> Unit = {}) : Unit = NAV(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun SectioningOrFlowContent.nav(classes : String? = null, crossinline block : NAV.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + NAV(attributesMapOf("class", classes), consumer).visit(block) +} /** * Generic document or application section */ @HtmlTagMarker -inline fun SectioningOrFlowContent.section(classes : String? = null, crossinline block : SECTION.() -> Unit = {}) : Unit = SECTION(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun SectioningOrFlowContent.section(classes : String? = null, crossinline block : SECTION.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + SECTION(attributesMapOf("class", classes), consumer).visit(block) +} /** * Anchor */ @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.a(href : String? = null, target : String? = null, classes : String? = null, crossinline block : A.() -> Unit = {}) : Unit = A(attributesMapOf("href", href,"target", target,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.a(href : String? = null, target : String? = null, classes : String? = null, crossinline block : A.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + A(attributesMapOf("href", href,"target", target,"class", classes), consumer).visit(block) +} /** * Audio player */ @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.audio(classes : String? = null, crossinline block : AUDIO.() -> Unit = {}) : Unit = AUDIO(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.audio(classes : String? = null, crossinline block : AUDIO.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + AUDIO(attributesMapOf("class", classes), consumer).visit(block) +} /** * Push button */ @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.button(formEncType : ButtonFormEncType? = null, formMethod : ButtonFormMethod? = null, name : String? = null, type : ButtonType? = null, classes : String? = null, crossinline block : BUTTON.() -> Unit = {}) : Unit = BUTTON(attributesMapOf("formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"type", type?.enumEncode(),"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.button(formEncType : ButtonFormEncType? = null, formMethod : ButtonFormMethod? = null, name : String? = null, type : ButtonType? = null, classes : String? = null, crossinline block : BUTTON.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + BUTTON(attributesMapOf("formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"type", type?.enumEncode(),"class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.getButton(formEncType : ButtonFormEncType? = null, name : String? = null, type : ButtonType? = null, classes : String? = null, crossinline block : BUTTON.() -> Unit = {}) : Unit = BUTTON(attributesMapOf("formenctype", formEncType?.enumEncode(),"formmethod", ButtonFormMethod.get.realValue,"name", name,"type", type?.enumEncode(),"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.getButton(formEncType : ButtonFormEncType? = null, name : String? = null, type : ButtonType? = null, classes : String? = null, crossinline block : BUTTON.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + BUTTON(attributesMapOf("formenctype", formEncType?.enumEncode(),"formmethod", ButtonFormMethod.get.realValue,"name", name,"type", type?.enumEncode(),"class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.postButton(formEncType : ButtonFormEncType? = null, name : String? = null, type : ButtonType? = null, classes : String? = null, crossinline block : BUTTON.() -> Unit = {}) : Unit = BUTTON(attributesMapOf("formenctype", formEncType?.enumEncode(),"formmethod", ButtonFormMethod.post.realValue,"name", name,"type", type?.enumEncode(),"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.postButton(formEncType : ButtonFormEncType? = null, name : String? = null, type : ButtonType? = null, classes : String? = null, crossinline block : BUTTON.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + BUTTON(attributesMapOf("formenctype", formEncType?.enumEncode(),"formmethod", ButtonFormMethod.post.realValue,"name", name,"type", type?.enumEncode(),"class", classes), consumer).visit(block) +} @Suppress("DEPRECATION") @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.putButton(formEncType : ButtonFormEncType? = null, name : String? = null, type : ButtonType? = null, classes : String? = null, crossinline block : BUTTON.() -> Unit = {}) : Unit = BUTTON(attributesMapOf("formenctype", formEncType?.enumEncode(),"formmethod", ButtonFormMethod.put.realValue,"name", name,"type", type?.enumEncode(),"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.putButton(formEncType : ButtonFormEncType? = null, name : String? = null, type : ButtonType? = null, classes : String? = null, crossinline block : BUTTON.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + BUTTON(attributesMapOf("formenctype", formEncType?.enumEncode(),"formmethod", ButtonFormMethod.put.realValue,"name", name,"type", type?.enumEncode(),"class", classes), consumer).visit(block) +} @Suppress("DEPRECATION") @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.deleteButton(formEncType : ButtonFormEncType? = null, name : String? = null, type : ButtonType? = null, classes : String? = null, crossinline block : BUTTON.() -> Unit = {}) : Unit = BUTTON(attributesMapOf("formenctype", formEncType?.enumEncode(),"formmethod", ButtonFormMethod.delete.realValue,"name", name,"type", type?.enumEncode(),"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.deleteButton(formEncType : ButtonFormEncType? = null, name : String? = null, type : ButtonType? = null, classes : String? = null, crossinline block : BUTTON.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + BUTTON(attributesMapOf("formenctype", formEncType?.enumEncode(),"formmethod", ButtonFormMethod.delete.realValue,"name", name,"type", type?.enumEncode(),"class", classes), consumer).visit(block) +} @Suppress("DEPRECATION") @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.patchButton(formEncType : ButtonFormEncType? = null, name : String? = null, type : ButtonType? = null, classes : String? = null, crossinline block : BUTTON.() -> Unit = {}) : Unit = BUTTON(attributesMapOf("formenctype", formEncType?.enumEncode(),"formmethod", ButtonFormMethod.patch.realValue,"name", name,"type", type?.enumEncode(),"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.patchButton(formEncType : ButtonFormEncType? = null, name : String? = null, type : ButtonType? = null, classes : String? = null, crossinline block : BUTTON.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + BUTTON(attributesMapOf("formenctype", formEncType?.enumEncode(),"formmethod", ButtonFormMethod.patch.realValue,"name", name,"type", type?.enumEncode(),"class", classes), consumer).visit(block) +} /** * Plugin */ @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.embed(classes : String? = null, crossinline block : EMBED.() -> Unit = {}) : Unit = EMBED(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.embed(classes : String? = null, crossinline block : EMBED.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + EMBED(attributesMapOf("class", classes), consumer).visit(block) +} /** * Inline subwindow */ @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.iframe(sandbox : IframeSandbox? = null, classes : String? = null, crossinline block : IFRAME.() -> Unit = {}) : Unit = IFRAME(attributesMapOf("sandbox", sandbox?.enumEncode(),"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.iframe(sandbox : IframeSandbox? = null, classes : String? = null, crossinline block : IFRAME.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + IFRAME(attributesMapOf("sandbox", sandbox?.enumEncode(),"class", classes), consumer).visit(block) +} /** * Inline subwindow */ @HtmlTagMarker fun FlowOrInteractiveOrPhrasingContent.iframe(sandbox : IframeSandbox? = null, classes : String? = null, content : String = "") : Unit = IFRAME(attributesMapOf("sandbox", sandbox?.enumEncode(),"class", classes), consumer).visit({+content}) @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.allowSameOriginIframe(classes : String? = null, crossinline block : IFRAME.() -> Unit = {}) : Unit = IFRAME(attributesMapOf("sandbox", IframeSandbox.allowSameOrigin.realValue,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.allowSameOriginIframe(classes : String? = null, crossinline block : IFRAME.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + IFRAME(attributesMapOf("sandbox", IframeSandbox.allowSameOrigin.realValue,"class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.allowFormSIframe(classes : String? = null, crossinline block : IFRAME.() -> Unit = {}) : Unit = IFRAME(attributesMapOf("sandbox", IframeSandbox.allowFormS.realValue,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.allowFormSIframe(classes : String? = null, crossinline block : IFRAME.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + IFRAME(attributesMapOf("sandbox", IframeSandbox.allowFormS.realValue,"class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.allowScriptsIframe(classes : String? = null, crossinline block : IFRAME.() -> Unit = {}) : Unit = IFRAME(attributesMapOf("sandbox", IframeSandbox.allowScripts.realValue,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.allowScriptsIframe(classes : String? = null, crossinline block : IFRAME.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + IFRAME(attributesMapOf("sandbox", IframeSandbox.allowScripts.realValue,"class", classes), consumer).visit(block) +} @HtmlTagMarker fun FlowOrInteractiveOrPhrasingContent.allowSameOriginIframe(classes : String? = null, content : String = "") : Unit = IFRAME(attributesMapOf("sandbox", IframeSandbox.allowSameOrigin.realValue,"class", classes), consumer).visit({+content}) @HtmlTagMarker @@ -447,119 +746,275 @@ fun FlowOrInteractiveOrPhrasingContent.allowScriptsIframe(classes : String? = nu * Embedded image */ @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.img(alt : String? = null, src : String? = null, loading : ImgLoading? = null, classes : String? = null, crossinline block : IMG.() -> Unit = {}) : Unit = IMG(attributesMapOf("alt", alt,"src", src,"loading", loading?.enumEncode(),"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.img(alt : String? = null, src : String? = null, loading : ImgLoading? = null, classes : String? = null, crossinline block : IMG.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + IMG(attributesMapOf("alt", alt,"src", src,"loading", loading?.enumEncode(),"class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.eagerImg(alt : String? = null, src : String? = null, classes : String? = null, crossinline block : IMG.() -> Unit = {}) : Unit = IMG(attributesMapOf("alt", alt,"src", src,"loading", ImgLoading.eager.realValue,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.eagerImg(alt : String? = null, src : String? = null, classes : String? = null, crossinline block : IMG.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + IMG(attributesMapOf("alt", alt,"src", src,"loading", ImgLoading.eager.realValue,"class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.lazyImg(alt : String? = null, src : String? = null, classes : String? = null, crossinline block : IMG.() -> Unit = {}) : Unit = IMG(attributesMapOf("alt", alt,"src", src,"loading", ImgLoading.lazy.realValue,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.lazyImg(alt : String? = null, src : String? = null, classes : String? = null, crossinline block : IMG.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + IMG(attributesMapOf("alt", alt,"src", src,"loading", ImgLoading.lazy.realValue,"class", classes), consumer).visit(block) +} /** * Pictures container */ @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.picture(crossinline block : PICTURE.() -> Unit = {}) : Unit = PICTURE(emptyMap, consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.picture(crossinline block : PICTURE.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + PICTURE(emptyMap, consumer).visit(block) +} /** * Form control */ @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.input(type : InputType? = null, formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit = INPUT(attributesMapOf("type", type?.enumEncode(),"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.input(type : InputType? = null, formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + INPUT(attributesMapOf("type", type?.enumEncode(),"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.buttonInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit = INPUT(attributesMapOf("type", InputType.button.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.buttonInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + INPUT(attributesMapOf("type", InputType.button.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.checkBoxInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit = INPUT(attributesMapOf("type", InputType.checkBox.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.checkBoxInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + INPUT(attributesMapOf("type", InputType.checkBox.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.colorInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit = INPUT(attributesMapOf("type", InputType.color.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.colorInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + INPUT(attributesMapOf("type", InputType.color.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.dateInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit = INPUT(attributesMapOf("type", InputType.date.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.dateInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + INPUT(attributesMapOf("type", InputType.date.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.dateTimeInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit = INPUT(attributesMapOf("type", InputType.dateTime.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.dateTimeInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + INPUT(attributesMapOf("type", InputType.dateTime.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.dateTimeLocalInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit = INPUT(attributesMapOf("type", InputType.dateTimeLocal.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.dateTimeLocalInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + INPUT(attributesMapOf("type", InputType.dateTimeLocal.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.emailInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit = INPUT(attributesMapOf("type", InputType.email.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.emailInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + INPUT(attributesMapOf("type", InputType.email.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.fileInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit = INPUT(attributesMapOf("type", InputType.file.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.fileInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + INPUT(attributesMapOf("type", InputType.file.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.hiddenInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit = INPUT(attributesMapOf("type", InputType.hidden.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.hiddenInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + INPUT(attributesMapOf("type", InputType.hidden.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.imageInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit = INPUT(attributesMapOf("type", InputType.image.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.imageInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + INPUT(attributesMapOf("type", InputType.image.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.monthInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit = INPUT(attributesMapOf("type", InputType.month.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.monthInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + INPUT(attributesMapOf("type", InputType.month.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.numberInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit = INPUT(attributesMapOf("type", InputType.number.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.numberInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + INPUT(attributesMapOf("type", InputType.number.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.passwordInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit = INPUT(attributesMapOf("type", InputType.password.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.passwordInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + INPUT(attributesMapOf("type", InputType.password.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.radioInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit = INPUT(attributesMapOf("type", InputType.radio.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.radioInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + INPUT(attributesMapOf("type", InputType.radio.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.rangeInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit = INPUT(attributesMapOf("type", InputType.range.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.rangeInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + INPUT(attributesMapOf("type", InputType.range.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.resetInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit = INPUT(attributesMapOf("type", InputType.reset.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.resetInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + INPUT(attributesMapOf("type", InputType.reset.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.searchInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit = INPUT(attributesMapOf("type", InputType.search.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.searchInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + INPUT(attributesMapOf("type", InputType.search.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.submitInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit = INPUT(attributesMapOf("type", InputType.submit.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.submitInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + INPUT(attributesMapOf("type", InputType.submit.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.textInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit = INPUT(attributesMapOf("type", InputType.text.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.textInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + INPUT(attributesMapOf("type", InputType.text.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.telInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit = INPUT(attributesMapOf("type", InputType.tel.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.telInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + INPUT(attributesMapOf("type", InputType.tel.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.timeInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit = INPUT(attributesMapOf("type", InputType.time.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.timeInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + INPUT(attributesMapOf("type", InputType.time.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.urlInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit = INPUT(attributesMapOf("type", InputType.url.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.urlInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + INPUT(attributesMapOf("type", InputType.url.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.weekInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit = INPUT(attributesMapOf("type", InputType.week.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.weekInput(formEncType : InputFormEncType? = null, formMethod : InputFormMethod? = null, name : String? = null, classes : String? = null, crossinline block : INPUT.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + INPUT(attributesMapOf("type", InputType.week.realValue,"formenctype", formEncType?.enumEncode(),"formmethod", formMethod?.enumEncode(),"name", name,"class", classes), consumer).visit(block) +} /** * Cryptographic key-pair generator form control */ @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.keyGen(keyType : KeyGenKeyType? = null, classes : String? = null, crossinline block : KEYGEN.() -> Unit = {}) : Unit = KEYGEN(attributesMapOf("keytype", keyType?.enumEncode(),"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.keyGen(keyType : KeyGenKeyType? = null, classes : String? = null, crossinline block : KEYGEN.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + KEYGEN(attributesMapOf("keytype", keyType?.enumEncode(),"class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.rsaKeyGen(classes : String? = null, crossinline block : KEYGEN.() -> Unit = {}) : Unit = KEYGEN(attributesMapOf("keytype", KeyGenKeyType.rsa.realValue,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.rsaKeyGen(classes : String? = null, crossinline block : KEYGEN.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + KEYGEN(attributesMapOf("keytype", KeyGenKeyType.rsa.realValue,"class", classes), consumer).visit(block) +} /** * Form field label text */ @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.label(classes : String? = null, crossinline block : LABEL.() -> Unit = {}) : Unit = LABEL(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.label(classes : String? = null, crossinline block : LABEL.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + LABEL(attributesMapOf("class", classes), consumer).visit(block) +} /** * Generic embedded object */ @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.htmlObject(classes : String? = null, crossinline block : OBJECT.() -> Unit = {}) : Unit = OBJECT(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.htmlObject(classes : String? = null, crossinline block : OBJECT.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + OBJECT(attributesMapOf("class", classes), consumer).visit(block) +} /** * Option selector */ @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.select(classes : String? = null, crossinline block : SELECT.() -> Unit = {}) : Unit = SELECT(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.select(classes : String? = null, crossinline block : SELECT.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + SELECT(attributesMapOf("class", classes), consumer).visit(block) +} /** * Multi-line text field */ @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.textArea(rows : String? = null, cols : String? = null, wrap : TextAreaWrap? = null, classes : String? = null, crossinline block : TEXTAREA.() -> Unit = {}) : Unit = TEXTAREA(attributesMapOf("rows", rows,"cols", cols,"wrap", wrap?.enumEncode(),"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.textArea(rows : String? = null, cols : String? = null, wrap : TextAreaWrap? = null, classes : String? = null, crossinline block : TEXTAREA.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + TEXTAREA(attributesMapOf("rows", rows,"cols", cols,"wrap", wrap?.enumEncode(),"class", classes), consumer).visit(block) +} /** * Multi-line text field */ @HtmlTagMarker fun FlowOrInteractiveOrPhrasingContent.textArea(rows : String? = null, cols : String? = null, wrap : TextAreaWrap? = null, classes : String? = null, content : String = "") : Unit = TEXTAREA(attributesMapOf("rows", rows,"cols", cols,"wrap", wrap?.enumEncode(),"class", classes), consumer).visit({+content}) @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.hardTextArea(rows : String? = null, cols : String? = null, classes : String? = null, crossinline block : TEXTAREA.() -> Unit = {}) : Unit = TEXTAREA(attributesMapOf("rows", rows,"cols", cols,"wrap", TextAreaWrap.hard.realValue,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.hardTextArea(rows : String? = null, cols : String? = null, classes : String? = null, crossinline block : TEXTAREA.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + TEXTAREA(attributesMapOf("rows", rows,"cols", cols,"wrap", TextAreaWrap.hard.realValue,"class", classes), consumer).visit(block) +} @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.softTextArea(rows : String? = null, cols : String? = null, classes : String? = null, crossinline block : TEXTAREA.() -> Unit = {}) : Unit = TEXTAREA(attributesMapOf("rows", rows,"cols", cols,"wrap", TextAreaWrap.soft.realValue,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.softTextArea(rows : String? = null, cols : String? = null, classes : String? = null, crossinline block : TEXTAREA.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + TEXTAREA(attributesMapOf("rows", rows,"cols", cols,"wrap", TextAreaWrap.soft.realValue,"class", classes), consumer).visit(block) +} @Suppress("DEPRECATION") @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.virtualTextArea(rows : String? = null, cols : String? = null, classes : String? = null, crossinline block : TEXTAREA.() -> Unit = {}) : Unit = TEXTAREA(attributesMapOf("rows", rows,"cols", cols,"wrap", TextAreaWrap.virtual.realValue,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.virtualTextArea(rows : String? = null, cols : String? = null, classes : String? = null, crossinline block : TEXTAREA.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + TEXTAREA(attributesMapOf("rows", rows,"cols", cols,"wrap", TextAreaWrap.virtual.realValue,"class", classes), consumer).visit(block) +} @Suppress("DEPRECATION") @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.physicalTextArea(rows : String? = null, cols : String? = null, classes : String? = null, crossinline block : TEXTAREA.() -> Unit = {}) : Unit = TEXTAREA(attributesMapOf("rows", rows,"cols", cols,"wrap", TextAreaWrap.physical.realValue,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.physicalTextArea(rows : String? = null, cols : String? = null, classes : String? = null, crossinline block : TEXTAREA.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + TEXTAREA(attributesMapOf("rows", rows,"cols", cols,"wrap", TextAreaWrap.physical.realValue,"class", classes), consumer).visit(block) +} @Suppress("DEPRECATION") @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.offTextArea(rows : String? = null, cols : String? = null, classes : String? = null, crossinline block : TEXTAREA.() -> Unit = {}) : Unit = TEXTAREA(attributesMapOf("rows", rows,"cols", cols,"wrap", TextAreaWrap.off.realValue,"class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.offTextArea(rows : String? = null, cols : String? = null, classes : String? = null, crossinline block : TEXTAREA.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + TEXTAREA(attributesMapOf("rows", rows,"cols", cols,"wrap", TextAreaWrap.off.realValue,"class", classes), consumer).visit(block) +} @HtmlTagMarker fun FlowOrInteractiveOrPhrasingContent.hardTextArea(rows : String? = null, cols : String? = null, classes : String? = null, content : String = "") : Unit = TEXTAREA(attributesMapOf("rows", rows,"cols", cols,"wrap", TextAreaWrap.hard.realValue,"class", classes), consumer).visit({+content}) @HtmlTagMarker @@ -578,6 +1033,10 @@ fun FlowOrInteractiveOrPhrasingContent.offTextArea(rows : String? = null, cols : * Video player */ @HtmlTagMarker -inline fun FlowOrInteractiveOrPhrasingContent.video(classes : String? = null, crossinline block : VIDEO.() -> Unit = {}) : Unit = VIDEO(attributesMapOf("class", classes), consumer).visit(block) +@OptIn(ExperimentalContracts::class) +inline fun FlowOrInteractiveOrPhrasingContent.video(classes : String? = null, crossinline block : VIDEO.() -> Unit = {}) : Unit { + contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } + VIDEO(attributesMapOf("class", classes), consumer).visit(block) +}