From 4b5ef84a33e318741ba33f1656f1cbacd9d1d5f9 Mon Sep 17 00:00:00 2001 From: "P.Conrad" Date: Fri, 2 Jan 2026 07:44:45 +0000 Subject: [PATCH 1/2] fix) nativeTemplateEngine never use cloneNode fix) anonymousTemplate correction for typescript class porting --- packages/binding.template/src/nativeTemplateEngine.ts | 10 +--------- packages/binding.template/src/templateSources.ts | 10 +++++++--- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/packages/binding.template/src/nativeTemplateEngine.ts b/packages/binding.template/src/nativeTemplateEngine.ts index 09262d7e..7607eb38 100644 --- a/packages/binding.template/src/nativeTemplateEngine.ts +++ b/packages/binding.template/src/nativeTemplateEngine.ts @@ -14,15 +14,7 @@ nativeTemplateEngine.prototype.renderTemplateSource = function ( options: TemplateOptions, templateDocument?: Document ): Node[] { - let version: number - if (ieVersion instanceof Array) { - version = parseInt(ieVersion[1], 10) - } else { - version = ieVersion ?? 0 - } - const useNodesIfAvailable = !(version < 9), // IE<9 cloneNode doesn't work properly - templateNodesFunc = useNodesIfAvailable ? templateSource.nodes : null, - templateNodes = templateNodesFunc ? templateSource.nodes?.() : null + const templateNodes = templateSource.nodes ? templateSource.nodes() : null if (templateNodes) { return makeArray(templateNodes.cloneNode(true).childNodes) diff --git a/packages/binding.template/src/templateSources.ts b/packages/binding.template/src/templateSources.ts index 90d002b2..9e2ffaac 100644 --- a/packages/binding.template/src/templateSources.ts +++ b/packages/binding.template/src/templateSources.ts @@ -30,7 +30,8 @@ import { tagNameLower as tagNameLowerFn, setHtml, domData, parseHtmlForTemplateN const templateScript = 1, templateTextArea = 2, templateTemplate = 3, - templateElement = 4 + templateElement = 4, + templateAnonymous = 5 export interface TemplateSource { //constructor(element: Node); @@ -55,8 +56,8 @@ function setTemplateDomData(element, data) { } export class domElement implements TemplateSource { - domElement: Element | Comment - templateType: number + protected domElement: Element | Comment + protected templateType: number constructor(element: Element | Comment) { this.domElement = element @@ -143,6 +144,9 @@ export class domElement implements TemplateSource { export class anonymousTemplate extends domElement { constructor(element: Element | Comment) { super(element) + //The old prototyp construct uses an empty-constructor from domElement, so templateType and element was 'undefined'. + //With the new templateType = templateAnonymous (5) we achieve the same behave in the "nodes" Method + this.templateType = templateAnonymous } override text(): string From 007658a62e1c63ee7b323fc4f2a6c2a62c63fd46 Mon Sep 17 00:00:00 2001 From: "P.Conrad" Date: Fri, 2 Jan 2026 19:41:26 +0000 Subject: [PATCH 2/2] fix typo and update interface --- .../binding.template/src/templateSources.ts | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/packages/binding.template/src/templateSources.ts b/packages/binding.template/src/templateSources.ts index 9e2ffaac..ce7466b4 100644 --- a/packages/binding.template/src/templateSources.ts +++ b/packages/binding.template/src/templateSources.ts @@ -34,16 +34,17 @@ const templateScript = 1, templateAnonymous = 5 export interface TemplateSource { - //constructor(element: Node); - text(): string text(valueToWrite: string): void + text(valueToWrite?: string): string | void data(key: string): any data(key: string): T data(key: string, valueToWrite: T): void - nodes?: { (): Node; (valueToWrite: Node): void } + nodes(): Node + nodes(valueToWrite: Node): undefined + nodes(valueToWrite?: any): Node | undefined } const dataDomDataPrefix = domData.nextKey() + '_' @@ -144,14 +145,14 @@ export class domElement implements TemplateSource { export class anonymousTemplate extends domElement { constructor(element: Element | Comment) { super(element) - //The old prototyp construct uses an empty-constructor from domElement, so templateType and element was 'undefined'. - //With the new templateType = templateAnonymous (5) we achieve the same behave in the "nodes" Method + //The old prototype construct uses an empty-constructor from domElement, so templateType and element was 'undefined'. + //With the new templateType = templateAnonymous (5) we achieve the same behavior in the "nodes" Method this.templateType = templateAnonymous } override text(): string - override text(valueToWrite: string): undefined - override text(/* valueToWrite */): string | undefined { + override text(valueToWrite: string): void + override text(valueToWrite?: string): string | void { if (arguments.length == 0) { const templateData = getTemplateDomData(this.domElement) if (templateData.textData === undefined && templateData.containerData) { @@ -159,9 +160,7 @@ export class anonymousTemplate extends domElement { } return templateData.textData } else { - const valueToWrite = arguments[0] setTemplateDomData(this.domElement, { textData: valueToWrite }) } - return undefined } }