diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ee7da8..fa5d12e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ * Use shorter compiled function body ids when not on development environment * Add basic `Optional` value-wrapper class support +* Make sure variables are always cast to a `Variables` instance ## 2.3.19 (2024-04-13) diff --git a/lib/core/renderer.js b/lib/core/renderer.js index 153d001..9312f4f 100644 --- a/lib/core/renderer.js +++ b/lib/core/renderer.js @@ -2144,7 +2144,7 @@ Renderer.setMethod(function applySynchronousRenderElementOptions(element, option * * @author Jelle De Loecker * @since 2.0.0 - * @version 2.3.1 + * @version 2.4.0 * * @param {Element} element * @param {Object} options @@ -2242,7 +2242,7 @@ Renderer.setMethod(function applyElementOptions(element, options, for_sync_rende if (options.variables) { if (!element[Hawkejs.VARIABLES]) { - element[Hawkejs.VARIABLES] = {}; + element[Hawkejs.VARIABLES] = this.prepareVariables({}); } for (i = 0; i < options.variables.length; i++) { diff --git a/lib/element/custom_element.js b/lib/element/custom_element.js index abe847f..cd743b1 100644 --- a/lib/element/custom_element.js +++ b/lib/element/custom_element.js @@ -2516,7 +2516,7 @@ function _resolveRender(err) { * * @author Jelle De Loecker * @since 2.1.3 - * @version 2.2.9 + * @version 2.4.0 * * @param {Function} fnc */ @@ -2531,10 +2531,12 @@ Element.setMethod(function applyCompiledTemplate(fnc) { let renderer = this.ensureHawkejsRenderer(); - let render_vars = {}; + let render_vars; if (this[Hawkejs.VARIABLES]) { - Object.assign(render_vars, this[Hawkejs.VARIABLES]); + render_vars = this[Hawkejs.VARIABLES].overlay(); + } else { + render_vars = renderer.prepareVariables({}); } Blast.defineGet(render_vars, 'self', () => {