From c0186ebd8f1fbe39ec0508a857cf65a35788387f Mon Sep 17 00:00:00 2001 From: David Greenspan Date: Tue, 5 Nov 2013 13:39:01 -0800 Subject: [PATCH] first cut of UI.bind --- packages/ui/render2.js | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/packages/ui/render2.js b/packages/ui/render2.js index c141f5b4cf..5a1de77d4e 100644 --- a/packages/ui/render2.js +++ b/packages/ui/render2.js @@ -226,6 +226,36 @@ UI.emboxValue = function (funcOrValue, equals) { } }; +UI.bind = function (kindOrFunc, options) { + var boxedOptions = {}; + for (var k in options) + boxedOptions[k] = UI.emboxValue(options[k]); + + if (typeof kindOrFunc === 'function') { + return function () { + var kind = kindOrFunc(); + + if (! kind) + return null; + + if ((! UI.isComponent(kind)) || kind.isInited) + throw new Error("Expected Component kind"); + + return kind.extend(boxedOptions); + }; + } else { + var kind = kindOrFunc; + + if (! kind) + return null; + + if ((! UI.isComponent(kind)) || kind.isInited) + throw new Error("Expected Component kind"); + + return kind.extend(boxedOptions); + } +}; + //////////////////////////////////////// var sanitizeComment = function (content) {