lib/element/custom_element.js
function renderCustomTemplate() {

	var that = this,
	    child,
	    vars = {},
	    i;

	for (i = 0; i < this.children.length; i++) {
		child = this.children[i];

		if (!child.getAttribute) {
			continue;
		}

		if (child.getAttribute('slot')) {
			vars[child.getAttribute('slot')] = child;
		}
	}

	Hawkejs.removeChildren(this);

	return Fn.series(function renderTemplate(next) {

		var template = that.constructor.compiled_template || that.constructor.template_file;

		that.hawkejs_renderer.renderTemplate(template, {self: that}, String(c++)).done(next);
	}, function assembleBlock(next, template) {
		template.target_block.assemble().done(next);
	}, function assembledBlock(next, block) {

		var slots,
		    slot,
		    name,
		    i;

		for (i = 0; i < block.lines.length; i++) {
			that.append(block.lines[i]);
		}

		slots = Hawkejs.getElementsByAttribute(that, 'data-he-slot');

		for (i = 0; i < slots.length; i++) {
			slot = slots[i];
			name = slot.dataset.heSlot;

			if (vars[name]) {
				Hawkejs.replaceChildren(slot, vars[name].childNodes);
			}
		}

		next();
	}, null);
}
function renderCustomTemplate() {

	var that = this,
	    child,
	    vars = {},
	    i;

	for (i = 0; i < this.children.length; i++) {
		child = this.children[i];

		if (!child.getAttribute) {
			continue;
		}

		if (child.getAttribute('slot')) {
			vars[child.getAttribute('slot')] = child;
		}
	}

	Hawkejs.removeChildren(this);

	return Fn.series(function renderTemplate(next) {

		var template = that.constructor.compiled_template || that.constructor.template_file;

		that.hawkejs_renderer.renderTemplate(template, {self: that}, String(c++)).done(next);
	}, function assembleBlock(next, template) {
		template.target_block.assemble().done(next);
	}, function assembledBlock(next, block) {

		var slots,
		    slot,
		    name,
		    i;

		for (i = 0; i < block.lines.length; i++) {
			that.append(block.lines[i]);
		}

		slots = Hawkejs.getElementsByAttribute(that, 'data-he-slot');

		for (i = 0; i < slots.length; i++) {
			slot = slots[i];
			name = slot.dataset.heSlot;

			if (vars[name]) {
				Hawkejs.replaceChildren(slot, vars[name].childNodes);
			}
		}

		next();
	}, null);
}
function renderCustomTemplate ( ) { var that = this , child , vars = { } , i ; for ( i = 0 ; i < this . children . length ; i ++ ) { child = this . children [ i ] ; if ( ! child . getAttribute ) { continue ; } if ( child . getAttribute ( 'slot' ) ) { vars [ child . getAttribute ( 'slot' ) ] = child ; } } Hawkejs . removeChildren ( this ) ; return Fn . series ( function renderTemplate ( next ) { var template = that . constructor . compiled_template || that . constructor . template_file ; that . hawkejs_renderer . renderTemplate ( template , { self : that } , String ( c ++ ) ) . done ( next ) ; } , function assembleBlock ( next , template ) { template . target_block . assemble ( ) . done ( next ) ; } , function assembledBlock ( next , block ) { var slots , slot , name , i ; for ( i = 0 ; i < block . lines . length ; i ++ ) { that . append ( block . lines [ i ] ) ; } slots = Hawkejs . getElementsByAttribute ( that , 'data-he-slot' ) ; for ( i = 0 ; i < slots . length ; i ++ ) { slot = slots [ i ] ; name = slot . dataset . heSlot ; if ( vars [ name ] ) { Hawkejs . replaceChildren ( slot , vars [ name ] . childNodes ) ; } } next ( ) ; } , null ) ; }
The custom template render function

@author   Jelle De Loecker <jelle@develry.be>
@since    2.0.0
@version  2.0.0
The custom template render function