Blame | Last modification | View Log | RSS feed
if(!dojo._hasResource["dijit.Declaration"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.dojo._hasResource["dijit.Declaration"] = true;dojo.provide("dijit.Declaration");dojo.require("dijit._Widget");dojo.require("dijit._Templated");dojo.declare("dijit.Declaration",dijit._Widget,{// summary:// The Declaration widget allows a user to declare new widget// classes directly from a snippet of markup._noScript: true,widgetClass: "",replaceVars: true,defaults: null,mixins: [],buildRendering: function(){var src = this.srcNodeRef.parentNode.removeChild(this.srcNodeRef);var preambles = dojo.query("> script[type='dojo/method'][event='preamble']", src).orphan();var scripts = dojo.query("> script[type^='dojo/']", src).orphan();var srcType = src.nodeName;var propList = this.defaults||{};// map array of strings like [ "dijit.form.Button" ] to array of mixin objects// (note that dojo.map(this.mixins, dojo.getObject) doesn't work because it passes// a bogus third argument to getObject(), confusing it)this.mixins = this.mixins.length ?dojo.map(this.mixins, function(name){ return dojo.getObject(name); } ) :[ dijit._Widget, dijit._Templated ];if(preambles.length){// we only support one preamble. So be it.propList.preamble = dojo.parser._functionFromScript(preambles[0]);}var parsedScripts = dojo.map(scripts, function(s){var evt = s.getAttribute("event")||"postscript";return {event: evt,func: dojo.parser._functionFromScript(s)};});// do the connects for each <script type="dojo/connect" event="foo"> block and make// all <script type="dojo/method"> tags execute right after constructionthis.mixins.push(function(){dojo.forEach(parsedScripts, function(s){dojo.connect(this, s.event, this, s.func);}, this);});propList.widgetsInTemplate = true;propList._skipNodeCache = true;propList.templateString = "<"+srcType+" class='"+src.className+"' dojoAttachPoint='"+(src.getAttribute("dojoAttachPoint")||'')+"' dojoAttachEvent='"+(src.getAttribute("dojoAttachEvent")||'')+"' >"+src.innerHTML.replace(/\%7B/g,"{").replace(/\%7D/g,"}")+"</"+srcType+">";// console.debug(propList.templateString);// strip things so we don't create stuff under us in the initial setup phasedojo.query("[dojoType]", src).forEach(function(node){node.removeAttribute("dojoType");});// create the new widget classdojo.declare(this.widgetClass,this.mixins,propList);}});}