diff --git a/package.json b/package.json index fed870163..59cf8b0b5 100644 --- a/package.json +++ b/package.json @@ -131,5 +131,9 @@ "version": "4.0.0-beta.4", "logo": { "url": "https://raw.githubusercontent.com/marko-js/branding/master/marko-logo-small.png" + }, + "minprops": { + "exclude": ["c", "ca", "e", "n", "r", "sa", "t"], + "matchPrefix": "$__" } } diff --git a/runtime/RenderResult.js b/runtime/RenderResult.js index cbc5166b5..2e93cfe84 100644 --- a/runtime/RenderResult.js +++ b/runtime/RenderResult.js @@ -1,16 +1,17 @@ var events = require('./events'); var domInsert = require('./dom-insert'); +var EMPTY_ARRAY = []; function checkAddedToDOM(result, method) { - if (!result.$__added) { + if (!result.$__widgets) { throw new Error('Cannot call ' + method + '() until after HTML fragment is added to DOM.'); } } function getWidgetDefs(result) { - var widgetDefs = result.$__out.data.widgets; + var widgetDefs = result.$__widgets; - if (!widgetDefs || widgetDefs.length === 0) { + if (widgetDefs.length === 0) { throw new Error('No widget rendered'); } return widgetDefs; @@ -18,7 +19,7 @@ function getWidgetDefs(result) { function RenderResult(out) { this.out = this.$__out = out; - this.$__added = false; + this.$__widgets = null; } module.exports = RenderResult; @@ -62,14 +63,9 @@ var proto = RenderResult.prototype = { }, afterInsert: function(doc) { - this.$__added = true; - - var data = this.$__out.data; - - var widgetsContext = this.$__out.global.widgets; - var widgetDefs = widgetsContext ? widgetsContext.widgets : null; - - data.widgets = widgetDefs; + var out = this.$__out; + var widgetsContext = out.global.widgets; + this.$__widgets = (widgetsContext && widgetsContext.$__widgets) || EMPTY_ARRAY; events.emit('mountNode', { result: this, diff --git a/runtime/package.json b/runtime/package.json index d07c835bf..858bc4f5a 100644 --- a/runtime/package.json +++ b/runtime/package.json @@ -1,9 +1,5 @@ { "browser": { "./loader/index.js": "./loader/index-browser.js" - }, - "minprops": { - "exclude": ["c", "ca", "e", "n", "sa", "t"], - "matchPrefix": "$__" } } \ No newline at end of file diff --git a/test/autotests/widgets-browser-deprecated/widget-conditional/test.js b/test/autotests/widgets-browser-deprecated/widget-conditional/test.js index ad9c6828d..4c8364ef7 100644 --- a/test/autotests/widgets-browser-deprecated/widget-conditional/test.js +++ b/test/autotests/widgets-browser-deprecated/widget-conditional/test.js @@ -5,7 +5,7 @@ module.exports = function(helpers) { includeWidget: false }); - expect(widget).to.equal(undefined); + expect(widget == null).to.equal(true); expect(helpers.targetEl.innerHTML).contain('[app-conditional-widget]'); diff --git a/test/autotests/widgets-browser/widget-conditional/test.js b/test/autotests/widgets-browser/widget-conditional/test.js index ad9c6828d..4c8364ef7 100644 --- a/test/autotests/widgets-browser/widget-conditional/test.js +++ b/test/autotests/widgets-browser/widget-conditional/test.js @@ -5,7 +5,7 @@ module.exports = function(helpers) { includeWidget: false }); - expect(widget).to.equal(undefined); + expect(widget == null).to.equal(true); expect(helpers.targetEl.innerHTML).contain('[app-conditional-widget]'); diff --git a/test/autotests/widgets-compilation/widget-types/expected.js b/test/autotests/widgets-compilation/widget-types/expected.js index 29ad1e14f..80a446105 100644 --- a/test/autotests/widgets-compilation/widget-types/expected.js +++ b/test/autotests/widgets-compilation/widget-types/expected.js @@ -13,7 +13,7 @@ var marko_template = module.exports = require("marko/html").t(__filename), marko_attr = marko_helpers.a; function render(data, out, widget, state) { - widget.type = marko_widgetTypes[data.isMobile ? "default" : "mobile"]; + widget.t(marko_widgetTypes[data.isMobile ? "default" : "mobile"]); out.w("