a:10:{s:9:"#provides";s:17:"dijit.Declaration";s:9:"#resource";s:14:"Declaration.js";s:9:"#requires";a:2:{i:0;a:2:{i:0;s:6:"common";i:1;s:13:"dijit._Widget";}i:1;a:2:{i:0;s:6:"common";i:1;s:16:"dijit._Templated";}}s:17:"dijit.Declaration";a:4:{s:4:"type";s:8:"Function";s:6:"chains";a:2:{s:9:"prototype";a:1:{i:0;s:13:"dijit._Widget";}s:4:"call";a:1:{i:0;s:13:"dijit._Widget";}}s:7:"summary";s:106:"The Declaration widget allows a developer to declare new widget
classes directly from a snippet of markup.";s:9:"classlike";b:1;}s:27:"dijit.Declaration._noScript";a:5:{s:9:"prototype";s:17:"dijit.Declaration";s:4:"tags";a:1:{i:0;s:7:"private";}s:4:"type";s:7:"Boolean";s:7:"summary";s:68:"Flag to parser to leave alone the script tags contained inside of me";s:7:"private";b:1;}s:29:"dijit.Declaration.widgetClass";a:3:{s:9:"prototype";s:17:"dijit.Declaration";s:4:"type";s:6:"String";s:7:"summary";s:59:"Name of class being declared, ex: "acme.myWidget"";}s:26:"dijit.Declaration.defaults";a:2:{s:9:"prototype";s:17:"dijit.Declaration";s:7:"summary";s:0:"";}s:24:"dijit.Declaration.mixins";a:4:{s:9:"prototype";s:17:"dijit.Declaration";s:8:"instance";s:17:"dijit.Declaration";s:4:"type";s:7:"String[";s:7:"summary";s:129:"List containing the prototype for this widget, and also any mixins,
ex: ["dijit._Widget", "dijit._Container"]";}s:32:"dijit.Declaration.buildRendering";a:4:{s:9:"prototype";s:17:"dijit.Declaration";s:4:"type";s:8:"Function";s:6:"source";s:2277:"			var src = this.srcNodeRef.parentNode.removeChild(this.srcNodeRef),
				methods = dojo.query("> script[type^='dojo/method'][event]", src).orphan(),
				postscriptConnects = dojo.query("> script[type^='dojo/method']", src).orphan(),
				regularConnects = dojo.query("> script[type^='dojo/connect']", src).orphan(),
				srcType = src.nodeName;


			var propList = this.defaults||{};


			// For all methods defined like <script type="dojo/method" event="foo">,
			// add that method to prototype
			dojo.forEach(methods, function(s){
				var evt = s.getAttribute("event"),
					func = dojo.parser._functionFromScript(s);
				propList[evt] = func;
			});


			// 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 ];


			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+">";


			// strip things so we don't create stuff under us in the initial setup phase
			dojo.query("[dojoType]", src).forEach(function(node){
				node.removeAttribute("dojoType");
			});


			// create the new widget class
			var wc = dojo.declare(
				this.widgetClass,
				this.mixins,
				propList
			);


			// Handle <script> blocks of form:
			//		<script type="dojo/connect" event="foo">
			// and
			//		<script type="dojo/method">
			// (Note that the second one is just shorthand for a dojo/connect to postscript)
			// Since this is a connect in the declaration, we are actually connection to the method
			// in the _prototype_.
			var connects = regularConnects.concat(postscriptConnects);
			dojo.forEach(connects, function(s){
				var evt = s.getAttribute("event")||"postscript",
					func = dojo.parser._functionFromScript(s);
				dojo.connect(wc.prototype, evt, func);
			});";s:7:"summary";s:0:"";}s:5:"dijit";a:2:{s:4:"type";s:6:"Object";s:7:"summary";s:0:"";}}