kickstart_rails 3.0.41 → 3.0.42

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 602f8faaf36de4e94015cde3cfc40baa8627ad9a
4
- data.tar.gz: 245a0bac486d09dd0947f7f3b86438cb2faf9870
3
+ metadata.gz: dec7a79c168fab7ca6367949a911b8d98c8ff066
4
+ data.tar.gz: afa58a07e02fc6b714b1e6ac8bce395534197545
5
5
  SHA512:
6
- metadata.gz: a5af6dfd5198cdcc8399cec2ab0ce24982c6d952613a72019457b6d565fc52380053f88e40dd3251ab8ff9e34c1a18277b80f1f403b8553d87be9877d647bed6
7
- data.tar.gz: dcd374ac1d6b81d3b1aa2ec3864e4396f45e63ad11857a964f0ec6db6eef84dda843908e9b64a8f87a3add8d80aa00b9d6ee9afd268914c2dfba2d2f3dac69d4
6
+ metadata.gz: d26afb65dc8adc9f9fbd3a6245546a538233246844a5095930e853c1dd1db6412633be85cccdcd920e62fb9e77f1f0065f983f3769fde4225a87c1788c370d1e
7
+ data.tar.gz: 9e579483663e30940ff4cfbda8dd5591bc5cf6e6ab531d249c9a62ecb8f9694fbbcedf51999e7c72af2b92dbf4c1ef0a11b868483ea46195e2ff94f6e57cd408
@@ -0,0 +1,450 @@
1
+ (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({"./lib/coffee/app.coffee":[function(require,module,exports){
2
+ var Buffer, Buttons, Debounce, Dropdown, Growl, KS, Modal, Navbar, Status, Tabs, Throttler;
3
+
4
+ KS = require('./ks');
5
+
6
+ Modal = require('./modal');
7
+
8
+ Dropdown = require('./dropdown');
9
+
10
+ Navbar = require('./navbar');
11
+
12
+ Debounce = require('./debouncer');
13
+
14
+ Status = require('./status');
15
+
16
+ Tabs = require('./tabs');
17
+
18
+ Throttler = require('./throttler');
19
+
20
+ Buttons = require('./buttons');
21
+
22
+ Buffer = require('./buffer');
23
+
24
+ Growl = require('./growl');
25
+
26
+ k$.ready = function() {
27
+ k$.button();
28
+ return k$.dropdown();
29
+ };
30
+
31
+ document.addEventListener('DOMContentLoaded', function() {
32
+ return k$.ready();
33
+ });
34
+
35
+
36
+
37
+ },{"./buffer":"/Users/adamkochanowicz/sites/kickstart/lib/coffee/buffer.coffee","./buttons":"/Users/adamkochanowicz/sites/kickstart/lib/coffee/buttons.coffee","./debouncer":"/Users/adamkochanowicz/sites/kickstart/lib/coffee/debouncer.coffee","./dropdown":"/Users/adamkochanowicz/sites/kickstart/lib/coffee/dropdown.coffee","./growl":"/Users/adamkochanowicz/sites/kickstart/lib/coffee/growl.coffee","./ks":"/Users/adamkochanowicz/sites/kickstart/lib/coffee/ks.coffee","./modal":"/Users/adamkochanowicz/sites/kickstart/lib/coffee/modal.coffee","./navbar":"/Users/adamkochanowicz/sites/kickstart/lib/coffee/navbar.coffee","./status":"/Users/adamkochanowicz/sites/kickstart/lib/coffee/status.coffee","./tabs":"/Users/adamkochanowicz/sites/kickstart/lib/coffee/tabs.coffee","./throttler":"/Users/adamkochanowicz/sites/kickstart/lib/coffee/throttler.coffee"}],"/Users/adamkochanowicz/sites/kickstart/lib/coffee/buffer.coffee":[function(require,module,exports){
38
+ var buffer;
39
+
40
+ buffer = function(fn, delay) {
41
+ var i;
42
+ k$.bufferArray = k$.bufferArray || new Array();
43
+ if (!k$.bufferArray.length) {
44
+ k$.bufferArray = new Array();
45
+ delay = delay || 500;
46
+ i = 1;
47
+ k$.bufferInterval = setInterval(function() {
48
+ if (k$.bufferArray[i]) {
49
+ k$.bufferArray[i]();
50
+ }
51
+ i++;
52
+ if (i >= k$.bufferArray.length) {
53
+ clearInterval(k$.bufferInterval);
54
+ k$.bufferArray = void 0;
55
+ return i = 1;
56
+ }
57
+ }, delay);
58
+ }
59
+ k$.bufferArray.push(fn);
60
+ if (k$.bufferArray.length === 1) {
61
+ k$.bufferArray[0]();
62
+ }
63
+ return console.info("Function queued (" + k$.bufferArray.length + " in queue)");
64
+ };
65
+
66
+ k$.buffer = buffer;
67
+
68
+ module.exports = buffer;
69
+
70
+
71
+
72
+ },{}],"/Users/adamkochanowicz/sites/kickstart/lib/coffee/buttons.coffee":[function(require,module,exports){
73
+ var button;
74
+
75
+ button = function() {
76
+ var $button, $buttonDropdown, _i, _j, _len, _len1, _ref, _ref1, _results;
77
+ _ref = k$.$$("button");
78
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
79
+ $button = _ref[_i];
80
+ if ($button.querySelectorAll('ul').length) {
81
+ $button.classList.add('menu-item');
82
+ }
83
+ }
84
+ _ref1 = k$.$$('.button-dropdown');
85
+ _results = [];
86
+ for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
87
+ $buttonDropdown = _ref1[_j];
88
+ _results.push($buttonDropdown.parentNode.classList.add('menu-item'));
89
+ }
90
+ return _results;
91
+ };
92
+
93
+ k$.button = button;
94
+
95
+ module.exports = button;
96
+
97
+
98
+
99
+ },{}],"/Users/adamkochanowicz/sites/kickstart/lib/coffee/debouncer.coffee":[function(require,module,exports){
100
+ var debounce;
101
+
102
+ debounce = function(fn, id, delay) {
103
+ var $delay;
104
+ $delay = delay || 1000;
105
+ if (k$.debounceQueue === null) {
106
+ k$.debounceQueue = id;
107
+ }
108
+ if (id === k$.debounceQueue) {
109
+ clearTimeout(k$.debounceTimer);
110
+ }
111
+ return k$.debounceTimer = setTimeout(function() {
112
+ fn();
113
+ return k$.debounceQueue = null;
114
+ }, $delay);
115
+ };
116
+
117
+ k$.debounce = debounce;
118
+
119
+ module.exports = debounce;
120
+
121
+
122
+
123
+ },{}],"/Users/adamkochanowicz/sites/kickstart/lib/coffee/dropdown.coffee":[function(require,module,exports){
124
+ var dropdown;
125
+
126
+ dropdown = function() {
127
+ var $_menuItem, $menuItem, $menuItems, _fn, _i, _len;
128
+ $menuItems = k$.$$('.menu-item');
129
+ _fn = function($menuItem) {
130
+ return $menuItem.addEventListener('click', function(e) {
131
+ var $openable, _$menuItem, _j, _len1, _ref;
132
+ if ($menuItem.classList.contains('open')) {
133
+ $menuItem.classList.remove('open');
134
+ return;
135
+ }
136
+ _ref = document.querySelectorAll('.menu-item');
137
+ for (_j = 0, _len1 = _ref.length; _j < _len1; _j++) {
138
+ _$menuItem = _ref[_j];
139
+ _$menuItem.classList.remove('open');
140
+ }
141
+ $openable = $menuItem.querySelector('ul');
142
+ if ($openable) {
143
+ $menuItem.classList.add('open');
144
+ }
145
+ return e.stopPropagation();
146
+ });
147
+ };
148
+ for (_i = 0, _len = $menuItems.length; _i < _len; _i++) {
149
+ $_menuItem = $menuItems[_i];
150
+ $menuItem = $_menuItem.cloneNode(true);
151
+ $_menuItem.parentNode.replaceChild($menuItem, $_menuItem);
152
+ _fn($menuItem);
153
+ }
154
+ return document.body.addEventListener('click', function() {
155
+ var $li, $ul, _j, _k, _len1, _len2, _ref, _ref1, _results;
156
+ _ref = k$.$$('.menu-item > ul');
157
+ for (_j = 0, _len1 = _ref.length; _j < _len1; _j++) {
158
+ $ul = _ref[_j];
159
+ $ul.parentNode.classList.remove('open');
160
+ }
161
+ _ref1 = k$.$$('.menu-item.open');
162
+ _results = [];
163
+ for (_k = 0, _len2 = _ref1.length; _k < _len2; _k++) {
164
+ $li = _ref1[_k];
165
+ _results.push($li.classList.remove('open'));
166
+ }
167
+ return _results;
168
+ });
169
+ };
170
+
171
+ k$.dropdown = dropdown;
172
+
173
+ module.exports = dropdown;
174
+
175
+
176
+
177
+ },{}],"/Users/adamkochanowicz/sites/kickstart/lib/coffee/growl.coffee":[function(require,module,exports){
178
+ var growl;
179
+
180
+ growl = function(params) {
181
+ return k$.buffer(function() {
182
+ var className, content, defaults, delay, growlContainer, id;
183
+ defaults = {
184
+ title: void 0,
185
+ text: void 0,
186
+ delay: 2000,
187
+ type: 'alert-warn',
188
+ id: Date.now()
189
+ };
190
+ params = k$.extend(defaults, params);
191
+ if (!k$.$$('.growl_container').length) {
192
+ growlContainer = document.createElement('div');
193
+ growlContainer.className = 'growl_container';
194
+ document.body.appendChild(growlContainer);
195
+ }
196
+ growl = document.createElement('div');
197
+ className = "alert growl show " + params.type + " growl-" + params.id;
198
+ growl.className = className;
199
+ content = "";
200
+ if (params.title) {
201
+ content += "<h1>" + params.title + "</h1>";
202
+ }
203
+ if (params.text) {
204
+ content += "<p>" + params.text + "</p>";
205
+ }
206
+ growl.innerHTML = content;
207
+ k$.$('.growl_container').appendChild(growl);
208
+ delay = params.delay;
209
+ id = params.id;
210
+ if (delay > 0) {
211
+ return (function(delay, id) {
212
+ return setTimeout(function() {
213
+ var $growl, $newGrowl;
214
+ $growl = k$.$(".growl-" + id);
215
+ $growl.classList.remove('show');
216
+ $newGrowl = $growl.cloneNode(true);
217
+ $growl.parentNode.replaceChild($newGrowl, $growl);
218
+ $newGrowl.classList.add('hide');
219
+ return (function(delay, id) {
220
+ return setTimeout(function() {
221
+ if (!k$.$$('.growl.show').length) {
222
+ return k$.$('.growl_container').parentNode.removeChild(k$.$('.growl_container'));
223
+ }
224
+ }, 500);
225
+ })(delay, id);
226
+ }, delay);
227
+ })(delay, id);
228
+ }
229
+ });
230
+ };
231
+
232
+ k$.growl = growl;
233
+
234
+ module.exports = growl;
235
+
236
+
237
+
238
+ },{}],"/Users/adamkochanowicz/sites/kickstart/lib/coffee/ks.coffee":[function(require,module,exports){
239
+ (function (global){
240
+ global.k$ = new Object();
241
+
242
+ k$.$$ = function(el) {
243
+ return document.querySelectorAll(el);
244
+ };
245
+
246
+ k$.$ = function(el) {
247
+ return k$.$$(el)[0];
248
+ };
249
+
250
+ k$.debounceTimer = false;
251
+
252
+ k$.debounceQueue = null;
253
+
254
+ k$.extend = function(destination, source) {
255
+ var property;
256
+ for (property in source) {
257
+ if (source[property] && source[property].constructor && source[property].constructor === Object) {
258
+ destination[property] = destination[property] || {};
259
+ arguments.callee(destination[property], source[property]);
260
+ } else {
261
+ destination[property] = source[property];
262
+ }
263
+ }
264
+ return destination;
265
+ };
266
+
267
+ module.exports = k$;
268
+
269
+
270
+
271
+ }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
272
+ },{}],"/Users/adamkochanowicz/sites/kickstart/lib/coffee/modal.coffee":[function(require,module,exports){
273
+ var modal;
274
+
275
+ modal = function(el) {
276
+ var iOS = /(iPad|iPhone|iPod)/g.test( navigator.userAgent );
277
+ if (iOS) {
278
+ document.body.classList.add('dismiss-modal');
279
+ }
280
+ (function(el) {
281
+ var $closer, $hideModal;
282
+ $hideModal = function() {
283
+ return k$.$(el).style.display = 'none';
284
+ };
285
+ document.body.addEventListener('click', function() {
286
+ return $hideModal();
287
+ });
288
+ k$.$(el).addEventListener('click', function(e) {
289
+ return e.stopPropagation();
290
+ });
291
+ $closer = k$.$(el).querySelector('a[data-modal-close]');
292
+ if ($closer) {
293
+ return $closer.addEventListener('click', function() {
294
+ return $hideModal();
295
+ });
296
+ }
297
+ })(el);
298
+ return k$.$(el);
299
+ };
300
+
301
+ k$.modal = modal;
302
+
303
+ module.exports = modal;
304
+
305
+
306
+
307
+ },{}],"/Users/adamkochanowicz/sites/kickstart/lib/coffee/navbar.coffee":[function(require,module,exports){
308
+ var nav;
309
+
310
+ nav = function(el) {
311
+ var $button, $menuItem, $menuItems, e, _$menuItems, _i, _j, _len, _len1;
312
+ try {
313
+ $menuItems = k$.$(el).querySelectorAll('ul > li');
314
+ _$menuItems = new Array();
315
+ for (_i = 0, _len = $menuItems.length; _i < _len; _i++) {
316
+ $menuItem = $menuItems[_i];
317
+ if ($menuItem.querySelectorAll('ul').length && !$menuItem.querySelectorAll('[role="button"]').length) {
318
+ _$menuItems.push($menuItem);
319
+ }
320
+ }
321
+ $menuItems = _$menuItems;
322
+ for (_j = 0, _len1 = $menuItems.length; _j < _len1; _j++) {
323
+ $menuItem = $menuItems[_j];
324
+ $menuItem.classList.add('menu-item');
325
+ }
326
+ k$.dropdown();
327
+ } catch (_error) {
328
+ e = _error;
329
+ console.error("Could not instantiate as a nav.", e.message);
330
+ }
331
+ $button = k$.$(el).querySelector('.navbar-title button');
332
+ if ($button) {
333
+ return $button.addEventListener('click', function() {
334
+ var $nav;
335
+ $nav = k$.$(el).querySelector('nav');
336
+ if ($nav.classList.contains('expand')) {
337
+ return $nav.classList.remove('expand');
338
+ } else {
339
+ return $nav.classList.add('expand');
340
+ }
341
+ });
342
+ }
343
+ };
344
+
345
+ k$.nav = nav;
346
+
347
+ module.exports = nav;
348
+
349
+
350
+
351
+ },{}],"/Users/adamkochanowicz/sites/kickstart/lib/coffee/status.coffee":[function(require,module,exports){
352
+ var status;
353
+
354
+ status = function(opts) {
355
+ var $status, $statusBar, defaults, hideStatusBar;
356
+ defaults = {
357
+ type: 'status-yellow',
358
+ delay: 2000
359
+ };
360
+ status = k$.extend(defaults, opts);
361
+ if (!k$.$$('#status_bar').length) {
362
+ $statusBar = document.createElement('div');
363
+ $statusBar.id = 'status_bar';
364
+ $statusBar.className = 'status_bar';
365
+ $statusBar.innerHTML = "<div class='status_bar-status' id='status_bar-status'></div>";
366
+ document.body.appendChild($statusBar);
367
+ }
368
+ $statusBar = k$.$('#status_bar');
369
+ hideStatusBar = function() {
370
+ return $statusBar.parentNode.removeChild($statusBar);
371
+ };
372
+ if (status.delay > 0) {
373
+ k$.debounce(hideStatusBar, 'hideStatusBar', status.delay);
374
+ }
375
+ $status = k$.$("#status_bar-status");
376
+ $status.innerHTML = status.text;
377
+ return $status.dataset.type = status.type;
378
+ };
379
+
380
+ k$.status = status;
381
+
382
+ module.exports = status;
383
+
384
+
385
+
386
+ },{}],"/Users/adamkochanowicz/sites/kickstart/lib/coffee/tabs.coffee":[function(require,module,exports){
387
+ var tabs;
388
+
389
+ tabs = function(el) {
390
+ var $_tab, $id, $pane, $paneSet, $tab, $tabLink, $tabSet, _i, _j, _k, _len, _len1, _len2, _results;
391
+ $tabSet = k$.$(el).querySelectorAll('li');
392
+ for (_i = 0, _len = $tabSet.length; _i < _len; _i++) {
393
+ $tab = $tabSet[_i];
394
+ $tab.classList.add('tab-item');
395
+ }
396
+ $paneSet = new Array();
397
+ for (_j = 0, _len1 = $tabSet.length; _j < _len1; _j++) {
398
+ $_tab = $tabSet[_j];
399
+ $id = $_tab.querySelector('a').getAttribute('href');
400
+ $pane = k$.$("article" + $id);
401
+ if ($_tab.classList.contains('open')) {
402
+ $pane.classList.add('open');
403
+ }
404
+ $paneSet.push($pane);
405
+ $pane.dataset.panel = 'true';
406
+ }
407
+ _results = [];
408
+ for (_k = 0, _len2 = $tabSet.length; _k < _len2; _k++) {
409
+ $tab = $tabSet[_k];
410
+ $tabLink = $tab.querySelector('a');
411
+ $tabLink.dataset.link = $tabLink.getAttribute('href');
412
+ $tabLink.href = 'javascript:void(0);';
413
+ _results.push((function($tab, $tabLink, $paneSet) {
414
+ return $tab.addEventListener('click', function() {
415
+ var _$tab, _l, _len3, _len4, _m;
416
+ for (_l = 0, _len3 = $paneSet.length; _l < _len3; _l++) {
417
+ $pane = $paneSet[_l];
418
+ $pane.classList.remove('open');
419
+ }
420
+ for (_m = 0, _len4 = $tabSet.length; _m < _len4; _m++) {
421
+ _$tab = $tabSet[_m];
422
+ _$tab.classList.remove('open');
423
+ }
424
+ k$.$("article" + $tabLink.dataset.link).classList.add('open');
425
+ return $tab.classList.add('open');
426
+ });
427
+ })($tab, $tabLink, $paneSet));
428
+ }
429
+ return _results;
430
+ };
431
+
432
+ k$.tabs = tabs;
433
+
434
+ module.exports = tabs;
435
+
436
+
437
+
438
+ },{}],"/Users/adamkochanowicz/sites/kickstart/lib/coffee/throttler.coffee":[function(require,module,exports){
439
+ var throttle;
440
+
441
+ throttle = function(fn, id, delay) {};
442
+
443
+ k$.throttle = throttle;
444
+
445
+ module.exports = throttle;
446
+
447
+
448
+
449
+ },{}]},{},["./lib/coffee/app.coffee"])
450
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hZGFta29jaGFub3dpY3ovc2l0ZXMva2lja3N0YXJ0L25vZGVfbW9kdWxlcy9icm93c2VyaWZ5L25vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCIvVXNlcnMvYWRhbWtvY2hhbm93aWN6L3NpdGVzL2tpY2tzdGFydC9saWIvY29mZmVlL2FwcC5jb2ZmZWUiLCIvVXNlcnMvYWRhbWtvY2hhbm93aWN6L3NpdGVzL2tpY2tzdGFydC9saWIvY29mZmVlL2J1ZmZlci5jb2ZmZWUiLCIvVXNlcnMvYWRhbWtvY2hhbm93aWN6L3NpdGVzL2tpY2tzdGFydC9saWIvY29mZmVlL2J1dHRvbnMuY29mZmVlIiwiL1VzZXJzL2FkYW1rb2NoYW5vd2ljei9zaXRlcy9raWNrc3RhcnQvbGliL2NvZmZlZS9kZWJvdW5jZXIuY29mZmVlIiwiL1VzZXJzL2FkYW1rb2NoYW5vd2ljei9zaXRlcy9raWNrc3RhcnQvbGliL2NvZmZlZS9kcm9wZG93bi5jb2ZmZWUiLCIvVXNlcnMvYWRhbWtvY2hhbm93aWN6L3NpdGVzL2tpY2tzdGFydC9saWIvY29mZmVlL2dyb3dsLmNvZmZlZSIsIi9Vc2Vycy9hZGFta29jaGFub3dpY3ovc2l0ZXMva2lja3N0YXJ0L2xpYi9jb2ZmZWUva3MuY29mZmVlIiwiL1VzZXJzL2FkYW1rb2NoYW5vd2ljei9zaXRlcy9raWNrc3RhcnQvbGliL2NvZmZlZS9tb2RhbC5jb2ZmZWUiLCIvVXNlcnMvYWRhbWtvY2hhbm93aWN6L3NpdGVzL2tpY2tzdGFydC9saWIvY29mZmVlL25hdmJhci5jb2ZmZWUiLCIvVXNlcnMvYWRhbWtvY2hhbm93aWN6L3NpdGVzL2tpY2tzdGFydC9saWIvY29mZmVlL3N0YXR1cy5jb2ZmZWUiLCIvVXNlcnMvYWRhbWtvY2hhbm93aWN6L3NpdGVzL2tpY2tzdGFydC9saWIvY29mZmVlL3RhYnMuY29mZmVlIiwiL1VzZXJzL2FkYW1rb2NoYW5vd2ljei9zaXRlcy9raWNrc3RhcnQvbGliL2NvZmZlZS90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QSxDQUFYLENBQUE7O0FBQUEsRUFJRSxDQUFDLFFBQUgsR0FBYyxRQUpkLENBQUE7O0FBQUEsTUFNTSxDQUFDLE9BQVAsR0FBaUIsUUFOakIsQ0FBQSIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIGUodCxuLHIpe2Z1bmN0aW9uIHMobyx1KXtpZighbltvXSl7aWYoIXRbb10pe3ZhciBhPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7aWYoIXUmJmEpcmV0dXJuIGEobywhMCk7aWYoaSlyZXR1cm4gaShvLCEwKTt2YXIgZj1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK28rXCInXCIpO3Rocm93IGYuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixmfXZhciBsPW5bb109e2V4cG9ydHM6e319O3Rbb11bMF0uY2FsbChsLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG49dFtvXVsxXVtlXTtyZXR1cm4gcyhuP246ZSl9LGwsbC5leHBvcnRzLGUsdCxuLHIpfXJldHVybiBuW29dLmV4cG9ydHN9dmFyIGk9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKylzKHJbb10pO3JldHVybiBzfSkiLCJLUyAgICAgICAgPSByZXF1aXJlICcuL2tzJ1xuTW9kYWwgICAgID0gcmVxdWlyZSAnLi9tb2RhbCdcbkRyb3Bkb3duICA9IHJlcXVpcmUgJy4vZHJvcGRvd24nXG5OYXZiYXIgICAgPSByZXF1aXJlICcuL25hdmJhcidcbkRlYm91bmNlICA9IHJlcXVpcmUgJy4vZGVib3VuY2VyJ1xuU3RhdHVzICAgID0gcmVxdWlyZSAnLi9zdGF0dXMnXG5UYWJzICAgICAgPSByZXF1aXJlICcuL3RhYnMnXG5UaHJvdHRsZXIgPSByZXF1aXJlICcuL3Rocm90dGxlcidcbkJ1dHRvbnMgICA9IHJlcXVpcmUgJy4vYnV0dG9ucydcbkJ1ZmZlciAgICA9IHJlcXVpcmUgJy4vYnVmZmVyJ1xuR3Jvd2wgICAgID0gcmVxdWlyZSAnLi9ncm93bCdcblxuayQucmVhZHkgPSAtPlxuICBrJC5idXR0b24oKVxuICBrJC5kcm9wZG93bigpXG5cbmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIgJ0RPTUNvbnRlbnRMb2FkZWQnLCAtPiBrJC5yZWFkeSgpXG4iLCJidWZmZXIgPSAoZm4sIGRlbGF5KSAtPlxuXG4gICMgQ3JlYXRlIGEgbmV3IGJ1ZmZlckFycmF5IGlmIG9uZSBkb2VzIG5vdCBleGlzdCBhbHJlYWR5LlxuICBrJC5idWZmZXJBcnJheSA9IGskLmJ1ZmZlckFycmF5IHx8IG5ldyBBcnJheSgpXG4gIGlmIG5vdCBrJC5idWZmZXJBcnJheS5sZW5ndGhcbiAgICBrJC5idWZmZXJBcnJheSA9IG5ldyBBcnJheSgpXG5cbiAgICBkZWxheSA9IGRlbGF5IHx8IDUwMFxuXG4gICAgIyBDcmVhdGUgYW4gaW50ZXJ2YWwgdG8gZmlyZSB0aGUgZm5zIGluIGJ1ZmZlckFycmF5XG4gICAgaSA9IDFcblxuICAgIGskLmJ1ZmZlckludGVydmFsID0gc2V0SW50ZXJ2YWwgLT5cbiAgICAgIGskLmJ1ZmZlckFycmF5W2ldKCkgaWYgayQuYnVmZmVyQXJyYXlbaV1cbiAgICAgIGkrK1xuICAgICAgaWYgaSA+PSBrJC5idWZmZXJBcnJheS5sZW5ndGhcbiAgICAgICAgY2xlYXJJbnRlcnZhbCBrJC5idWZmZXJJbnRlcnZhbFxuICAgICAgICBrJC5idWZmZXJBcnJheSA9IHVuZGVmaW5lZFxuICAgICAgICBpID0gMVxuICAgICwgZGVsYXlcblxuICAjIEFkZCB0aGlzIGZ1bmN0aW9uIHRvIHRoZSBhcnJheS5cbiAgayQuYnVmZmVyQXJyYXkucHVzaCBmblxuXG4gICMgRmlyZSByaWdodCBhd2F5IGlmIGl0J3MgdGhlIGZpcnN0IGluIGxpbmUuXG4gIGskLmJ1ZmZlckFycmF5WzBdKCkgaWYgayQuYnVmZmVyQXJyYXkubGVuZ3RoID09IDFcblxuICBjb25zb2xlLmluZm8gXCJGdW5jdGlvbiBxdWV1ZWQgKCN7ayQuYnVmZmVyQXJyYXkubGVuZ3RofSBpbiBxdWV1ZSlcIlxuXG5rJC5idWZmZXIgPSBidWZmZXJcblxubW9kdWxlLmV4cG9ydHMgPSBidWZmZXJcbiIsImJ1dHRvbiA9IC0+XG5cbiAgKCRidXR0b24uY2xhc3NMaXN0LmFkZCAnbWVudS1pdGVtJyBpZiAkYnV0dG9uLnF1ZXJ5U2VsZWN0b3JBbGwoJ3VsJykubGVuZ3RoKSBmb3IgJGJ1dHRvbiBpbiBrJC4kJChcImJ1dHRvblwiKVxuICAkYnV0dG9uRHJvcGRvd24ucGFyZW50Tm9kZS5jbGFzc0xpc3QuYWRkICdtZW51LWl0ZW0nIGZvciAkYnV0dG9uRHJvcGRvd24gaW4gayQuJCQgJy5idXR0b24tZHJvcGRvd24nXG5cbmskLmJ1dHRvbiA9IGJ1dHRvblxuXG5tb2R1bGUuZXhwb3J0cyA9IGJ1dHRvblxuIiwiZGVib3VuY2UgPSAoZm4sIGlkLCBkZWxheSkgLT5cblxuICAkZGVsYXkgPSBkZWxheSB8fCAxMDAwXG5cbiAgayQuZGVib3VuY2VRdWV1ZSA9IGlkIGlmIGskLmRlYm91bmNlUXVldWUgPT0gbnVsbFxuICBjbGVhclRpbWVvdXQgayQuZGVib3VuY2VUaW1lciBpZiBpZCA9PSBrJC5kZWJvdW5jZVF1ZXVlXG4gIGskLmRlYm91bmNlVGltZXIgPSBzZXRUaW1lb3V0IC0+XG4gICAgZm4oKVxuICAgIGskLmRlYm91bmNlUXVldWUgPSBudWxsXG4gICwgJGRlbGF5XG5cbmskLmRlYm91bmNlID0gZGVib3VuY2VcblxubW9kdWxlLmV4cG9ydHMgPSBkZWJvdW5jZVxuIiwiZHJvcGRvd24gPSAoKSAtPlxuXG4gICMgVGhlIGZvbGxvd2luZyBzaG91bGQgYXBwbHkgdG8gc2V2ZXJhbCBlbGVtZW50cy5cblxuICAkbWVudUl0ZW1zID0gayQuJCQgJy5tZW51LWl0ZW0nXG5cbiAgZm9yICRfbWVudUl0ZW0gaW4gJG1lbnVJdGVtc1xuXG4gICAgJG1lbnVJdGVtID0gJF9tZW51SXRlbS5jbG9uZU5vZGUgdHJ1ZVxuICAgICRfbWVudUl0ZW0ucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQgJG1lbnVJdGVtLCAkX21lbnVJdGVtXG5cbiAgICBkbyAoJG1lbnVJdGVtKSAtPlxuICAgICAgIyBUT0RPOiBJcyB0aGVyZSBhIHdheSB3ZSBjb3VsZCBub3QgaGF2ZSBhbiBldmVudCBsaXN0ZW5lciBmb3IgZXZlcnlcbiAgICAgICMgc2luZ2xlIG9uZT9cbiAgICAgICRtZW51SXRlbS5hZGRFdmVudExpc3RlbmVyICdjbGljaycsIChlKSAtPlxuXG4gICAgICAgICMgSnVzdCBjbG9zZSBpdCBpZiBpdCdzIGFscmVhZHkgb3BlblxuICAgICAgICBpZiAkbWVudUl0ZW0uY2xhc3NMaXN0LmNvbnRhaW5zICdvcGVuJ1xuICAgICAgICAgICRtZW51SXRlbS5jbGFzc0xpc3QucmVtb3ZlICdvcGVuJ1xuICAgICAgICAgIHJldHVyblxuXG4gICAgICAgICMgUmVzZXQgYWxsXG4gICAgICAgIF8kbWVudUl0ZW0uY2xhc3NMaXN0LnJlbW92ZSAnb3BlbicgZm9yIF8kbWVudUl0ZW0gaW4gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm1lbnUtaXRlbScpXG4gICAgICAgICRvcGVuYWJsZSA9ICRtZW51SXRlbS5xdWVyeVNlbGVjdG9yICd1bCdcblxuICAgICAgICAjIE9wZW4gdGhpcyBvbmVcbiAgICAgICAgaWYgJG9wZW5hYmxlXG4gICAgICAgICAgJG1lbnVJdGVtLmNsYXNzTGlzdC5hZGQgJ29wZW4nXG5cbiAgICAgICAgIyBQcmV2ZW50IGJ1YmJsaW5nXG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcblxuICAjIERpc21pc3MgYWxsXG4gIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lciAnY2xpY2snLCAtPlxuICAgICR1bC5wYXJlbnROb2RlLmNsYXNzTGlzdC5yZW1vdmUgJ29wZW4nIGZvciAkdWwgaW4gayQuJCQoJy5tZW51LWl0ZW0gPiB1bCcpXG4gICAgJGxpLmNsYXNzTGlzdC5yZW1vdmUgJ29wZW4nIGZvciAkbGkgaW4gayQuJCQoJy5tZW51LWl0ZW0ub3BlbicpXG5cbmskLmRyb3Bkb3duID0gZHJvcGRvd25cblxubW9kdWxlLmV4cG9ydHMgPSBkcm9wZG93blxuIiwiZ3Jvd2wgPSAocGFyYW1zKSAtPlxuXG4gIGskLmJ1ZmZlciAtPlxuICAgIGRlZmF1bHRzID1cbiAgICAgIHRpdGxlOiB1bmRlZmluZWRcbiAgICAgIHRleHQ6IHVuZGVmaW5lZFxuICAgICAgZGVsYXk6IDIwMDBcbiAgICAgIHR5cGU6ICdhbGVydC13YXJuJ1xuICAgICAgaWQ6IERhdGUubm93KClcblxuICAgIHBhcmFtcyA9IGskLmV4dGVuZCBkZWZhdWx0cywgcGFyYW1zXG5cbiAgICAjIENyZWF0ZSBncm93bCBjb250YWluZXJcbiAgICBpZiBub3QgayQuJCQoJy5ncm93bF9jb250YWluZXInKS5sZW5ndGhcbiAgICAgIGdyb3dsQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCAnZGl2J1xuICAgICAgZ3Jvd2xDb250YWluZXIuY2xhc3NOYW1lID0gJ2dyb3dsX2NvbnRhaW5lcidcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQgZ3Jvd2xDb250YWluZXJcblxuICAgICMgQ3JlYXRlIGdyb3dsXG4gICAgZ3Jvd2wgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50ICdkaXYnXG5cbiAgICAjIEFkZCBhcHByb3ByaWF0ZSBjbGFzc2VzXG4gICAgY2xhc3NOYW1lID0gXCJhbGVydCBncm93bCBzaG93ICN7cGFyYW1zLnR5cGV9IGdyb3dsLSN7cGFyYW1zLmlkfVwiXG4gICAgZ3Jvd2wuY2xhc3NOYW1lID0gY2xhc3NOYW1lXG5cbiAgICAjIEFkZCBjb250ZW50XG4gICAgY29udGVudCA9IFwiXCJcbiAgICBjb250ZW50ICs9IFwiPGgxPiN7cGFyYW1zLnRpdGxlfTwvaDE+XCIgaWYgcGFyYW1zLnRpdGxlXG4gICAgY29udGVudCArPSBcIjxwPiN7cGFyYW1zLnRleHR9PC9wPlwiIGlmIHBhcmFtcy50ZXh0XG4gICAgZ3Jvd2wuaW5uZXJIVE1MID0gY29udGVudFxuXG4gICAgIyBBcHBlbmQgY2hpbGQgdG8gY29udGFpbmVyXG4gICAgayQuJCgnLmdyb3dsX2NvbnRhaW5lcicpLmFwcGVuZENoaWxkIGdyb3dsXG5cbiAgICBkZWxheSA9IHBhcmFtcy5kZWxheVxuICAgIGlkID0gcGFyYW1zLmlkXG5cbiAgICBpZiBkZWxheSA+IDBcbiAgICAgIGRvIChkZWxheSwgaWQpIC0+XG4gICAgICAgIHNldFRpbWVvdXQgLT5cbiAgICAgICAgICAkZ3Jvd2wgPSBrJC4kKFwiLmdyb3dsLSN7aWR9XCIpXG4gICAgICAgICAgJGdyb3dsLmNsYXNzTGlzdC5yZW1vdmUoJ3Nob3cnKVxuICAgICAgICAgICRuZXdHcm93bCA9ICRncm93bC5jbG9uZU5vZGUgdHJ1ZVxuICAgICAgICAgICRncm93bC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZCAkbmV3R3Jvd2wsICRncm93bFxuICAgICAgICAgICRuZXdHcm93bC5jbGFzc0xpc3QuYWRkKCdoaWRlJylcblxuICAgICAgICAgIGRvIChkZWxheSwgaWQpIC0+XG4gICAgICAgICAgICBzZXRUaW1lb3V0IC0+XG4gICAgICAgICAgICAgICMgUmVtb3ZlIGdob3N0IGdyb3dsc1xuICAgICAgICAgICAgICBrJC4kKCcuZ3Jvd2xfY29udGFpbmVyJykucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCBrJC4kKCcuZ3Jvd2xfY29udGFpbmVyJykgaWYgbm90IGskLiQkKCcuZ3Jvd2wuc2hvdycpLmxlbmd0aFxuICAgICAgICAgICAgLCA1MDBcbiAgICAgICAgLCBkZWxheVxuXG5rJC5ncm93bCA9IGdyb3dsXG5cbm1vZHVsZS5leHBvcnRzID0gZ3Jvd2xcbiIsImdsb2JhbC5rJCA9IG5ldyBPYmplY3QoKVxuXG5rJC4kJCA9IChlbCkgLT4gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCBlbFxuayQuJCA9IChlbCkgLT4gayQuJCQoZWwpWzBdXG5rJC5kZWJvdW5jZVRpbWVyID0gZmFsc2VcbmskLmRlYm91bmNlUXVldWUgPSBudWxsXG5rJC5leHRlbmQgPSAoZGVzdGluYXRpb24sIHNvdXJjZSkgLT5cbiAgZm9yIHByb3BlcnR5IG9mIHNvdXJjZVxuICAgIGlmIHNvdXJjZVtwcm9wZXJ0eV0gYW5kIHNvdXJjZVtwcm9wZXJ0eV0uY29uc3RydWN0b3IgYW5kIHNvdXJjZVtwcm9wZXJ0eV0uY29uc3RydWN0b3IgaXMgT2JqZWN0XG4gICAgICBkZXN0aW5hdGlvbltwcm9wZXJ0eV0gPSBkZXN0aW5hdGlvbltwcm9wZXJ0eV0gb3Ige31cbiAgICAgIGFyZ3VtZW50cy5jYWxsZWUgZGVzdGluYXRpb25bcHJvcGVydHldLCBzb3VyY2VbcHJvcGVydHldXG4gICAgZWxzZVxuICAgICAgZGVzdGluYXRpb25bcHJvcGVydHldID0gc291cmNlW3Byb3BlcnR5XVxuICBkZXN0aW5hdGlvblxuXG5tb2R1bGUuZXhwb3J0cyA9IGskXG4iLCJtb2RhbCA9IChlbCkgLT5cblxuICBgdmFyIGlPUyA9IC8oaVBhZHxpUGhvbmV8aVBvZCkvZy50ZXN0KCBuYXZpZ2F0b3IudXNlckFnZW50IClgXG4gIFxuICAjIEN1cnNvciBwb2ludGVyIGhhY2sgaWYgaU9TXG4gIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCAnZGlzbWlzcy1tb2RhbCcgaWYgaU9TXG5cbiAgZG8gKGVsKSAtPlxuXG4gICAgJGhpZGVNb2RhbCA9IC0+XG4gICAgICBrJC4kKGVsKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXG5cbiAgICAjIEFsbG93IG1vZGFsIHRvIGRpc21pc3Mgd2hlbiBjbGlja2VkIG91dHNpZGVcbiAgICBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIgJ2NsaWNrJywgLT5cbiAgICAgICRoaWRlTW9kYWwoKVxuXG4gICAgayQuJChlbCkuYWRkRXZlbnRMaXN0ZW5lciAnY2xpY2snLCAoZSkgLT5cbiAgICAgIHJldHVybiBlLnN0b3BQcm9wYWdhdGlvbigpXG5cbiAgICAkY2xvc2VyID0gayQuJChlbCkucXVlcnlTZWxlY3RvcignYVtkYXRhLW1vZGFsLWNsb3NlXScpXG4gICAgaWYgJGNsb3NlclxuICAgICAgJGNsb3Nlci5hZGRFdmVudExpc3RlbmVyICdjbGljaycsIC0+XG4gICAgICAgICRoaWRlTW9kYWwoKVxuXG4gIGskLiQgZWxcblxuayQubW9kYWwgPSBtb2RhbFxuXG5tb2R1bGUuZXhwb3J0cyA9IG1vZGFsXG4iLCJuYXYgPSAoZWwpIC0+XG5cbiAgdHJ5XG4gICAgIyBXaXJlIHVwIG1lbnUgaXRlbXNcbiAgICAkbWVudUl0ZW1zID0gayQuJChlbCkucXVlcnlTZWxlY3RvckFsbCgndWwgPiBsaScpXG5cbiAgICAjIFBydW5lIGl0ZW1zIHRoYXQgZG9uJ3QgY29udGFpbiB1bHNcbiAgICBfJG1lbnVJdGVtcyA9IG5ldyBBcnJheSgpXG4gICAgZm9yICRtZW51SXRlbSBpbiAkbWVudUl0ZW1zXG4gICAgICBpZiAkbWVudUl0ZW0ucXVlcnlTZWxlY3RvckFsbCgndWwnKS5sZW5ndGggYW5kICEkbWVudUl0ZW0ucXVlcnlTZWxlY3RvckFsbCgnW3JvbGU9XCJidXR0b25cIl0nKS5sZW5ndGhcbiAgICAgICAgXyRtZW51SXRlbXMucHVzaCAkbWVudUl0ZW1cblxuICAgICRtZW51SXRlbXMgPSBfJG1lbnVJdGVtc1xuICAgIGZvciAkbWVudUl0ZW0gaW4gJG1lbnVJdGVtc1xuXG4gICAgICAjIEZvciBzdHlsaW5nXG4gICAgICAkbWVudUl0ZW0uY2xhc3NMaXN0LmFkZCAnbWVudS1pdGVtJ1xuXG4gICAgIyBXaXJlIHVwIHRoZSBtZW51XG4gICAgayQuZHJvcGRvd24oKVxuXG4gIGNhdGNoIGVcbiAgICBjb25zb2xlLmVycm9yIFwiQ291bGQgbm90IGluc3RhbnRpYXRlIGFzIGEgbmF2LlwiLCBlLm1lc3NhZ2VcblxuICAkYnV0dG9uID0gayQuJChlbCkucXVlcnlTZWxlY3RvcignLm5hdmJhci10aXRsZSBidXR0b24nKVxuICBpZiAkYnV0dG9uXG4gICAgJGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyICdjbGljaycsIC0+XG4gICAgICAkbmF2ID0gayQuJChlbCkucXVlcnlTZWxlY3RvcignbmF2JylcbiAgICAgIGlmICRuYXYuY2xhc3NMaXN0LmNvbnRhaW5zICdleHBhbmQnXG4gICAgICAgICRuYXYuY2xhc3NMaXN0LnJlbW92ZSAnZXhwYW5kJ1xuICAgICAgZWxzZVxuICAgICAgICAkbmF2LmNsYXNzTGlzdC5hZGQgJ2V4cGFuZCdcblxuayQubmF2ID0gbmF2XG5cbm1vZHVsZS5leHBvcnRzID0gbmF2XG4iLCJzdGF0dXMgPSAob3B0cykgLT5cblxuICBkZWZhdWx0cyA9XG4gICAgdHlwZTogJ3N0YXR1cy15ZWxsb3cnXG4gICAgZGVsYXk6IDIwMDBcblxuICBzdGF0dXMgPSBrJC5leHRlbmQgZGVmYXVsdHMsIG9wdHNcblxuICBpZiBub3QgayQuJCQoJyNzdGF0dXNfYmFyJykubGVuZ3RoXG4gICAgJHN0YXR1c0JhciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gICAgJHN0YXR1c0Jhci5pZCA9ICdzdGF0dXNfYmFyJ1xuICAgICRzdGF0dXNCYXIuY2xhc3NOYW1lID0gJ3N0YXR1c19iYXInXG4gICAgJHN0YXR1c0Jhci5pbm5lckhUTUwgPSBcIjxkaXYgY2xhc3M9J3N0YXR1c19iYXItc3RhdHVzJyBpZD0nc3RhdHVzX2Jhci1zdGF0dXMnPjwvZGl2PlwiXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCgkc3RhdHVzQmFyKVxuXG4gICRzdGF0dXNCYXIgPSBrJC4kKCcjc3RhdHVzX2JhcicpXG5cbiAgaGlkZVN0YXR1c0JhciA9IC0+XG4gICAgJHN0YXR1c0Jhci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkICRzdGF0dXNCYXJcblxuICBpZiBzdGF0dXMuZGVsYXkgPiAwXG4gICAgayQuZGVib3VuY2UgaGlkZVN0YXR1c0JhciwgJ2hpZGVTdGF0dXNCYXInLCBzdGF0dXMuZGVsYXlcblxuICAkc3RhdHVzID0gayQuJChcIiNzdGF0dXNfYmFyLXN0YXR1c1wiKVxuICAkc3RhdHVzLmlubmVySFRNTCA9IHN0YXR1cy50ZXh0XG4gICRzdGF0dXMuZGF0YXNldC50eXBlID0gc3RhdHVzLnR5cGVcblxuayQuc3RhdHVzID0gc3RhdHVzXG5cbm1vZHVsZS5leHBvcnRzID0gc3RhdHVzXG4iLCJ0YWJzID0gKGVsKSAtPlxuICAkdGFiU2V0ID0gayQuJChlbCkucXVlcnlTZWxlY3RvckFsbCgnbGknKVxuICAkdGFiLmNsYXNzTGlzdC5hZGQoJ3RhYi1pdGVtJykgZm9yICR0YWIgaW4gJHRhYlNldFxuXG4gICRwYW5lU2V0ID0gbmV3IEFycmF5KClcbiAgZm9yICRfdGFiIGluICR0YWJTZXRcbiAgICAkaWQgPSAkX3RhYi5xdWVyeVNlbGVjdG9yKCdhJykuZ2V0QXR0cmlidXRlKCdocmVmJylcbiAgICAkcGFuZSA9IGskLiQoXCJhcnRpY2xlI3skaWR9XCIpXG4gICAgJHBhbmUuY2xhc3NMaXN0LmFkZCAnb3BlbicgaWYgJF90YWIuY2xhc3NMaXN0LmNvbnRhaW5zICdvcGVuJ1xuICAgICRwYW5lU2V0LnB1c2goJHBhbmUpXG4gICAgJHBhbmUuZGF0YXNldC5wYW5lbCA9ICd0cnVlJ1xuXG4gIGZvciAkdGFiIGluICR0YWJTZXRcbiAgICAjIENyZWF0ZSBhbiBhcnJheSBvZiBwYW5lbHMgYnkgcmVhZGluZyB0aGUgbGlua3MgZnJvbSBlYWNoIHRhYi5cbiAgICAkdGFiTGluayA9ICR0YWIucXVlcnlTZWxlY3RvcignYScpXG4gICAgJHRhYkxpbmsuZGF0YXNldC5saW5rID0gJHRhYkxpbmsuZ2V0QXR0cmlidXRlICdocmVmJ1xuICAgICR0YWJMaW5rLmhyZWYgPSAnamF2YXNjcmlwdDp2b2lkKDApOydcblxuICAgIGRvICgkdGFiLCAkdGFiTGluaywgJHBhbmVTZXQpIC0+XG4gICAgICAkdGFiLmFkZEV2ZW50TGlzdGVuZXIgJ2NsaWNrJywgLT5cblxuICAgICAgICAjIFJlc2V0IHRhYnMgYW5kIHBhbmVzIG9ubHkgaW4gdGhpcyB0YWJzZXRcbiAgICAgICAgJHBhbmUuY2xhc3NMaXN0LnJlbW92ZSAnb3BlbicgZm9yICRwYW5lIGluICRwYW5lU2V0XG4gICAgICAgIF8kdGFiLmNsYXNzTGlzdC5yZW1vdmUgJ29wZW4nIGZvciBfJHRhYiBpbiAkdGFiU2V0XG5cbiAgICAgICAgIyBBZGQgYW4gb3BlbiBjbGFzcyB1bmlxdWVseSB0byB0aGlzIHRhYiBhbmQgcGFuZS5cbiAgICAgICAgayQuJChcImFydGljbGUjeyR0YWJMaW5rLmRhdGFzZXQubGlua31cIikuY2xhc3NMaXN0LmFkZCAnb3BlbidcbiAgICAgICAgJHRhYi5jbGFzc0xpc3QuYWRkICdvcGVuJ1xuXG5rJC50YWJzID0gdGFic1xuXG5tb2R1bGUuZXhwb3J0cyA9IHRhYnNcbiIsInRocm90dGxlID0gKGZuLCBpZCwgZGVsYXkpIC0+XG5cbiAgXG5cbmskLnRocm90dGxlID0gdGhyb3R0bGVcblxubW9kdWxlLmV4cG9ydHMgPSB0aHJvdHRsZVxuIl19
@@ -1,3 +1,3 @@
1
1
  module Kickstart_rails
2
- VERSION = "3.0.41"
2
+ VERSION = "3.0.42"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kickstart_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.41
4
+ version: 3.0.42
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Kochanowicz
@@ -90,21 +90,7 @@ files:
90
90
  - README.md
91
91
  - Rakefile
92
92
  - app/assets/javascripts/kickstart_rails.js
93
- - app/assets/javascripts/kickstart_rails/app.coffee
94
- - app/assets/javascripts/kickstart_rails/buffer.coffee
95
- - app/assets/javascripts/kickstart_rails/buttons.coffee
96
- - app/assets/javascripts/kickstart_rails/debouncer.coffee
97
- - app/assets/javascripts/kickstart_rails/docs.coffee
98
- - app/assets/javascripts/kickstart_rails/dropdown.coffee
99
- - app/assets/javascripts/kickstart_rails/growl.coffee
100
- - app/assets/javascripts/kickstart_rails/ks.coffee
101
- - app/assets/javascripts/kickstart_rails/modal.coffee
102
- - app/assets/javascripts/kickstart_rails/navbar-fixer.coffee
103
- - app/assets/javascripts/kickstart_rails/navbar.coffee
104
- - app/assets/javascripts/kickstart_rails/status.coffee
105
- - app/assets/javascripts/kickstart_rails/tabs.coffee
106
- - app/assets/javascripts/kickstart_rails/tests.coffee
107
- - app/assets/javascripts/kickstart_rails/throttler.coffee
93
+ - app/assets/javascripts/kickstart_rails/kickstart.js
108
94
  - app/assets/stylesheets/core/_animations.sass
109
95
  - app/assets/stylesheets/core/_base.sass
110
96
  - app/assets/stylesheets/core/_base_components.sass
@@ -1,17 +0,0 @@
1
- KS = require './ks'
2
- Modal = require './modal'
3
- Dropdown = require './dropdown'
4
- Navbar = require './navbar'
5
- Debounce = require './debouncer'
6
- Status = require './status'
7
- Tabs = require './tabs'
8
- Throttler = require './throttler'
9
- Buttons = require './buttons'
10
- Buffer = require './buffer'
11
- Growl = require './growl'
12
-
13
- k$.ready = ->
14
- k$.button()
15
- k$.dropdown()
16
-
17
- document.addEventListener 'DOMContentLoaded', -> k$.ready()
@@ -1,32 +0,0 @@
1
- buffer = (fn, delay) ->
2
-
3
- # Create a new bufferArray if one does not exist already.
4
- k$.bufferArray = k$.bufferArray || new Array()
5
- if not k$.bufferArray.length
6
- k$.bufferArray = new Array()
7
-
8
- delay = delay || 500
9
-
10
- # Create an interval to fire the fns in bufferArray
11
- i = 1
12
-
13
- k$.bufferInterval = setInterval ->
14
- k$.bufferArray[i]() if k$.bufferArray[i]
15
- i++
16
- if i >= k$.bufferArray.length
17
- clearInterval k$.bufferInterval
18
- k$.bufferArray = undefined
19
- i = 1
20
- , delay
21
-
22
- # Add this function to the array.
23
- k$.bufferArray.push fn
24
-
25
- # Fire right away if it's the first in line.
26
- k$.bufferArray[0]() if k$.bufferArray.length == 1
27
-
28
- console.info "Function queued (#{k$.bufferArray.length} in queue)"
29
-
30
- k$.buffer = buffer
31
-
32
- module.exports = buffer
@@ -1,8 +0,0 @@
1
- button = ->
2
-
3
- ($button.classList.add 'menu-item' if $button.querySelectorAll('ul').length) for $button in k$.$$("button")
4
- $buttonDropdown.parentNode.classList.add 'menu-item' for $buttonDropdown in k$.$$ '.button-dropdown'
5
-
6
- k$.button = button
7
-
8
- module.exports = button
@@ -1,14 +0,0 @@
1
- debounce = (fn, id, delay) ->
2
-
3
- $delay = delay || 1000
4
-
5
- k$.debounceQueue = id if k$.debounceQueue == null
6
- clearTimeout k$.debounceTimer if id == k$.debounceQueue
7
- k$.debounceTimer = setTimeout ->
8
- fn()
9
- k$.debounceQueue = null
10
- , $delay
11
-
12
- k$.debounce = debounce
13
-
14
- module.exports = debounce
@@ -1,179 +0,0 @@
1
- document.addEventListener 'DOMContentLoaded', ->
2
-
3
- window.$$ = (el) -> document.querySelectorAll(el)
4
- window.$ = (el) -> $$(el)[0]
5
-
6
- ###
7
- CRUD DOCUMENTATION SETTINGS
8
- ###
9
-
10
- # Default settings
11
- defaults =
12
- viewOptions:
13
- jquery: false
14
- semantic: true
15
-
16
- booleanViewOptions = ['jquery', 'semantic']
17
-
18
- # Retrieve user's saved settings
19
- options = JSON.parse localStorage.getItem 'kickstartDocs'
20
-
21
- # Create shallow extend function
22
- # (http://andrewdupont.net/2009/08/28/deep-extending-objects-in-javascript/)
23
- extend = (destination, source) ->
24
- for property of source
25
- if source[property] and source[property].constructor and source[property].constructor is Object
26
- destination[property] = destination[property] or {}
27
- arguments.callee destination[property], source[property]
28
- else
29
- destination[property] = source[property]
30
- destination
31
-
32
- # Extend from defaults
33
- settings = if options then extend defaults, options else defaults
34
-
35
- # Create function to write to localStorage
36
- setSettings = (settings) ->
37
- localStorage.setItem 'kickstartDocs', JSON.stringify settings
38
-
39
- for option in booleanViewOptions
40
- if settings.viewOptions["#{option}"]
41
- document.body.classList.add "show-#{option}"
42
- else
43
- document.body.classList.remove "show-#{option}"
44
-
45
- # Write to localStorage
46
- setSettings(settings)
47
-
48
- els = []
49
- for option in booleanViewOptions
50
- option = "#docs-#{option}"
51
- els.push option
52
-
53
- if $$(els).length
54
- # This page has checkboxes for view options.
55
- for option in booleanViewOptions
56
- # Closure needed for event listeners
57
- do (option) ->
58
- window["$opt#{option}"] = $ "#docs-#{option}"
59
-
60
- # Set state of buttons based on saved options in localStorage
61
- window["$opt#{option}"].checked = (if settings.viewOptions["#{option}"] then true else false)
62
-
63
- # Listen for checkbox changes
64
- window["$opt#{option}"].addEventListener 'click', ->
65
- settings.viewOptions["#{option}"] = this.checked
66
- setSettings settings
67
-
68
- # Show growls
69
- if k$.$('#example-showGrowl')
70
- k$.$('#example-showGrowl').addEventListener 'click', ->
71
- growls = [
72
- {
73
- title: 'Document Saved.',
74
- text: 'Your document was successfully saved.'
75
- type: 'alert-green'
76
- },
77
- {
78
- title: 'Library book not found'
79
- text: 'Sorry, we could find that library book.',
80
- type: 'alert-red'
81
- },
82
- {
83
- title: 'Wide clearance selection',
84
- text: 'Remember to check out our clearance',
85
- type: 'alert-blue'
86
- },
87
- {
88
- title: 'Deadline approaching',
89
- text: 'Friendly reminder that your deadline is quickly approaching.',
90
- type: 'alert-yellow'
91
- }
92
- ]
93
-
94
- k$.exampleCounter++
95
- k$.exampleCounter = 0 if not k$.exampleCounter or k$.exampleCounter > 3
96
-
97
- k$.growl growls[k$.exampleCounter]
98
-
99
- # Show status message
100
- if k$.$('#example-showStatus')
101
- k$.$('#example-showStatus').addEventListener 'click', ->
102
- statuses = [
103
- {
104
- text: 'Document Saved.',
105
- type: 'status-green'
106
- },
107
- {
108
- text: 'Sorry, we could find that library book.',
109
- type: 'status-red'
110
- },
111
- {
112
- text: 'Remember to check out our clearance',
113
- type: 'status-blue'
114
- },
115
- {
116
- text: 'Deadline is approaching!',
117
- type: 'status-yellow'
118
- }
119
- ]
120
-
121
- k$.exampleCounter++
122
- k$.exampleCounter = 0 if not k$.exampleCounter or k$.exampleCounter > 3
123
-
124
- k$.status(statuses[k$.exampleCounter])
125
-
126
- k$.slugify = (str) ->
127
- `str.toLowerCase().replace(/ /g,'-').replace(/[^\w-]+/g,'')`
128
-
129
- # Create a table of contents
130
-
131
- if k$.$$('#toc').length
132
- k$.$('.creating-table').parentNode.removeChild k$.$('.creating-table')
133
- $toc = document.createElement 'ul'
134
- $toc.className = "list list-unstyled"
135
- $link = document.createElement('li')
136
- $link.innerHTML = '<a></a>'
137
-
138
- # Assuming proper html, start with h1.
139
- $headingLevel = 1
140
-
141
- # The node we're currently appending to. Always a ul.
142
- $targetNode = $toc
143
-
144
- $documentContainer = k$.$('.document-container')
145
- for heading in $documentContainer.querySelectorAll('h1, h2, h3, h4, h5, h6')
146
- # Ignore headings that declare themselves as exempt from the TOC
147
- if not heading.classList.contains 'toc-exempt'
148
- # For extra unique names.
149
- # heading.id = "#{k$.slugify heading.innerHTML}-#{_k}"
150
-
151
- heading.id = k$.slugify heading.innerHTML
152
-
153
- # If this is a lower level.
154
- $thisHeadingLevel = parseInt(heading.tagName.substr(1, 2))
155
-
156
- if $thisHeadingLevel > $headingLevel
157
- # Append a new submenu and make that the targetNode.
158
- $newSubmenu = document.createElement 'ul'
159
- $targetNode.children[$targetNode.children.length - 1].appendChild $newSubmenu
160
- $targetNode = $newSubmenu
161
- $headingLevel = $thisHeadingLevel
162
-
163
- # If this is a higher level
164
- if $thisHeadingLevel < $headingLevel
165
- $stepsUp = $headingLevel - $thisHeadingLevel
166
-
167
- while $stepsUp > -1
168
- $targetNode = $targetNode.parentNode
169
- $stepsUp--
170
-
171
- $headingLevel = $thisHeadingLevel
172
-
173
- # Make a new li and append it to the target ul node.
174
- $menuItem = $link.cloneNode true
175
- $menuItem.querySelector('a').href = "##{heading.id}"
176
- $menuItem.querySelector('a').innerHTML = heading.innerHTML
177
- $targetNode.appendChild $menuItem
178
-
179
- k$.$('#toc').appendChild $toc
@@ -1,40 +0,0 @@
1
- dropdown = () ->
2
-
3
- # The following should apply to several elements.
4
-
5
- $menuItems = k$.$$ '.menu-item'
6
-
7
- for $_menuItem in $menuItems
8
-
9
- $menuItem = $_menuItem.cloneNode true
10
- $_menuItem.parentNode.replaceChild $menuItem, $_menuItem
11
-
12
- do ($menuItem) ->
13
- # TODO: Is there a way we could not have an event listener for every
14
- # single one?
15
- $menuItem.addEventListener 'click', (e) ->
16
-
17
- # Just close it if it's already open
18
- if $menuItem.classList.contains 'open'
19
- $menuItem.classList.remove 'open'
20
- return
21
-
22
- # Reset all
23
- _$menuItem.classList.remove 'open' for _$menuItem in document.querySelectorAll('.menu-item')
24
- $openable = $menuItem.querySelector 'ul'
25
-
26
- # Open this one
27
- if $openable
28
- $menuItem.classList.add 'open'
29
-
30
- # Prevent bubbling
31
- e.stopPropagation()
32
-
33
- # Dismiss all
34
- document.body.addEventListener 'click', ->
35
- $ul.parentNode.classList.remove 'open' for $ul in k$.$$('.menu-item > ul')
36
- $li.classList.remove 'open' for $li in k$.$$('.menu-item.open')
37
-
38
- k$.dropdown = dropdown
39
-
40
- module.exports = dropdown
@@ -1,56 +0,0 @@
1
- growl = (params) ->
2
-
3
- k$.buffer ->
4
- defaults =
5
- title: undefined
6
- text: undefined
7
- delay: 2000
8
- type: 'alert-warn'
9
- id: Date.now()
10
-
11
- params = k$.extend defaults, params
12
-
13
- # Create growl container
14
- if not k$.$$('.growl_container').length
15
- growlContainer = document.createElement 'div'
16
- growlContainer.className = 'growl_container'
17
- document.body.appendChild growlContainer
18
-
19
- # Create growl
20
- growl = document.createElement 'div'
21
-
22
- # Add appropriate classes
23
- className = "alert growl show #{params.type} growl-#{params.id}"
24
- growl.className = className
25
-
26
- # Add content
27
- content = ""
28
- content += "<h1>#{params.title}</h1>" if params.title
29
- content += "<p>#{params.text}</p>" if params.text
30
- growl.innerHTML = content
31
-
32
- # Append child to container
33
- k$.$('.growl_container').appendChild growl
34
-
35
- delay = params.delay
36
- id = params.id
37
-
38
- if delay > 0
39
- do (delay, id) ->
40
- setTimeout ->
41
- $growl = k$.$(".growl-#{id}")
42
- $growl.classList.remove('show')
43
- $newGrowl = $growl.cloneNode true
44
- $growl.parentNode.replaceChild $newGrowl, $growl
45
- $newGrowl.classList.add('hide')
46
-
47
- do (delay, id) ->
48
- setTimeout ->
49
- # Remove ghost growls
50
- k$.$('.growl_container').parentNode.removeChild k$.$('.growl_container') if not k$.$$('.growl.show').length
51
- , 500
52
- , delay
53
-
54
- k$.growl = growl
55
-
56
- module.exports = growl
@@ -1,16 +0,0 @@
1
- global.k$ = new Object()
2
-
3
- k$.$$ = (el) -> document.querySelectorAll el
4
- k$.$ = (el) -> k$.$$(el)[0]
5
- k$.debounceTimer = false
6
- k$.debounceQueue = null
7
- k$.extend = (destination, source) ->
8
- for property of source
9
- if source[property] and source[property].constructor and source[property].constructor is Object
10
- destination[property] = destination[property] or {}
11
- arguments.callee destination[property], source[property]
12
- else
13
- destination[property] = source[property]
14
- destination
15
-
16
- module.exports = k$
@@ -1,29 +0,0 @@
1
- modal = (el) ->
2
-
3
- `var iOS = /(iPad|iPhone|iPod)/g.test( navigator.userAgent )`
4
-
5
- # Cursor pointer hack if iOS
6
- document.body.classList.add 'dismiss-modal' if iOS
7
-
8
- do (el) ->
9
-
10
- $hideModal = ->
11
- k$.$(el).style.display = 'none'
12
-
13
- # Allow modal to dismiss when clicked outside
14
- document.body.addEventListener 'click', ->
15
- $hideModal()
16
-
17
- k$.$(el).addEventListener 'click', (e) ->
18
- return e.stopPropagation()
19
-
20
- $closer = k$.$(el).querySelector('a[data-modal-close]')
21
- if $closer
22
- $closer.addEventListener 'click', ->
23
- $hideModal()
24
-
25
- k$.$ el
26
-
27
- k$.modal = modal
28
-
29
- module.exports = modal
@@ -1,9 +0,0 @@
1
- window.onscroll = ->
2
- $marker = k$.$('#marker')
3
- $fixedArea = k$.$('.fixed-area')
4
- $offset = $marker.getBoundingClientRect().top
5
- $isFixed = $fixedArea.classList.contains 'fixed'
6
- if $offset < 1
7
- $fixedArea.classList.add 'fixed' if not $isFixed
8
- else
9
- $fixedArea.classList.remove 'fixed' if $isFixed
@@ -1,36 +0,0 @@
1
- nav = (el) ->
2
-
3
- try
4
- # Wire up menu items
5
- $menuItems = k$.$(el).querySelectorAll('ul > li')
6
-
7
- # Prune items that don't contain uls
8
- _$menuItems = new Array()
9
- for $menuItem in $menuItems
10
- if $menuItem.querySelectorAll('ul').length and !$menuItem.querySelectorAll('[role="button"]').length
11
- _$menuItems.push $menuItem
12
-
13
- $menuItems = _$menuItems
14
- for $menuItem in $menuItems
15
-
16
- # For styling
17
- $menuItem.classList.add 'menu-item'
18
-
19
- # Wire up the menu
20
- k$.dropdown()
21
-
22
- catch e
23
- console.error "Could not instantiate as a nav.", e.message
24
-
25
- $button = k$.$(el).querySelector('.navbar-title button')
26
- if $button
27
- $button.addEventListener 'click', ->
28
- $nav = k$.$(el).querySelector('nav')
29
- if $nav.classList.contains 'expand'
30
- $nav.classList.remove 'expand'
31
- else
32
- $nav.classList.add 'expand'
33
-
34
- k$.nav = nav
35
-
36
- module.exports = nav
@@ -1,30 +0,0 @@
1
- status = (opts) ->
2
-
3
- defaults =
4
- type: 'status-yellow'
5
- delay: 2000
6
-
7
- status = k$.extend defaults, opts
8
-
9
- if not k$.$$('#status_bar').length
10
- $statusBar = document.createElement('div')
11
- $statusBar.id = 'status_bar'
12
- $statusBar.className = 'status_bar'
13
- $statusBar.innerHTML = "<div class='status_bar-status' id='status_bar-status'></div>"
14
- document.body.appendChild($statusBar)
15
-
16
- $statusBar = k$.$('#status_bar')
17
-
18
- hideStatusBar = ->
19
- $statusBar.parentNode.removeChild $statusBar
20
-
21
- if status.delay > 0
22
- k$.debounce hideStatusBar, 'hideStatusBar', status.delay
23
-
24
- $status = k$.$("#status_bar-status")
25
- $status.innerHTML = status.text
26
- $status.dataset.type = status.type
27
-
28
- k$.status = status
29
-
30
- module.exports = status
@@ -1,32 +0,0 @@
1
- tabs = (el) ->
2
- $tabSet = k$.$(el).querySelectorAll('li')
3
- $tab.classList.add('tab-item') for $tab in $tabSet
4
-
5
- $paneSet = new Array()
6
- for $_tab in $tabSet
7
- $id = $_tab.querySelector('a').getAttribute('href')
8
- $pane = k$.$("article#{$id}")
9
- $pane.classList.add 'open' if $_tab.classList.contains 'open'
10
- $paneSet.push($pane)
11
- $pane.dataset.panel = 'true'
12
-
13
- for $tab in $tabSet
14
- # Create an array of panels by reading the links from each tab.
15
- $tabLink = $tab.querySelector('a')
16
- $tabLink.dataset.link = $tabLink.getAttribute 'href'
17
- $tabLink.href = 'javascript:void(0);'
18
-
19
- do ($tab, $tabLink, $paneSet) ->
20
- $tab.addEventListener 'click', ->
21
-
22
- # Reset tabs and panes only in this tabset
23
- $pane.classList.remove 'open' for $pane in $paneSet
24
- _$tab.classList.remove 'open' for _$tab in $tabSet
25
-
26
- # Add an open class uniquely to this tab and pane.
27
- k$.$("article#{$tabLink.dataset.link}").classList.add 'open'
28
- $tab.classList.add 'open'
29
-
30
- k$.tabs = tabs
31
-
32
- module.exports = tabs
@@ -1,10 +0,0 @@
1
- App = require './app'
2
- testDef = require '../tests/default'
3
- testModal = require '../tests/modal'
4
- testNavbar = require '../tests/navbar'
5
- testGrowl = require '../tests/growl'
6
- testDropdownButtons = require '../tests/dropdown-buttons'
7
- testTabs = require '../tests/tabs'
8
- testStatus = require '../tests/status'
9
- testDebouncer = require '../tests/debouncer'
10
- testBuffer = require '../tests/buffer'
@@ -1,7 +0,0 @@
1
- throttle = (fn, id, delay) ->
2
-
3
-
4
-
5
- k$.throttle = throttle
6
-
7
- module.exports = throttle