UNPKG

1.51 kBJavaScriptView Raw
1(function() {
2 'use strict';
3
4 window.Ractive.bootstrap = function(callback) {
5 function _inScope(element, rvRequireCount) {
6 rvRequireCount = rvRequireCount || 0;
7
8 if (!element.parentNode) {
9 return true;
10 }
11
12 var tag = element.parentNode.tagName.toLowerCase();
13
14 if (tag == 'rv-require') {
15 rvRequireCount++;
16
17 if (rvRequireCount > 1) {
18 return false;
19 }
20 }
21 else if (tag == 'rv-partial') {
22 return false;
23 }
24
25 return _inScope(element.parentNode, rvRequireCount);
26 }
27
28 $(function() {
29 var partials = {},
30 $cleaner = $('<div />').append($('body').html());
31
32 $cleaner.find('script[type="text/javascript"]').remove();
33
34 var $rvPartials = $cleaner.find('rv-partial');
35
36 $rvPartials.each(function(i, rvPartial) {
37 var src = rvPartial.getAttribute('src') || false,
38 target = rvPartial.getAttribute('target');
39
40 if (!src && target && _inScope(rvPartial)) {
41 partials[target] = $.trim(rvPartial.innerHTML);
42 }
43 });
44
45 $rvPartials.remove();
46
47 var page = new window.Ractive({
48 plName: 'pl-page',
49 el: 'body',
50 data: {
51 cls: []
52 },
53 template: $.trim($cleaner.html()),
54 partials: partials
55 });
56
57 page.observe('cls', function(cls) {
58 $(page.el).attr('class', cls ? cls.join(' ') : '');
59 });
60
61 if (callback) {
62 callback(page);
63 }
64 });
65 };
66
67})();