upjs-rails 0.3.0 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 58b9bda1086a0ac50783289b009de30dd0ffa228
4
- data.tar.gz: 83901a4346b18ede730a146b6409e0b50fc7d4d5
3
+ metadata.gz: f2bd908d4b8ae9ccc80617aab947a39f49e91cd6
4
+ data.tar.gz: 3d82e0f710813f128f9e8ae4aa48311b0990c04f
5
5
  SHA512:
6
- metadata.gz: 948fc5f12e782d99b428761a381cb8ea61ea5158d47fb1c6ac3820863bd57614a8cd6a89afe89bc408ea71307656824ac65966350247d834869adb1c74c98d99
7
- data.tar.gz: 364e9d0048c8d594f2de7786ee7d4f559179683e71fe4de6dafe7e084cc263e814f8cadf3bcae9911e34073be32c916bebe015375390c016115729b15bf69b78
6
+ metadata.gz: 8eac37753503ff8163ff92fc7e37b34c3a8c20a1d76033e0f5784ed6077f52cd4b4bb8e84cc3584c68e83d559f9e7f5a2d62eb9a89f292408de556428a1bfbe3
7
+ data.tar.gz: e8fe7e337a8c754f45b5fe0b5e849ed79d60a8bb95b819a33236a4d98178ddaa4d228489cd48f854099692b31f2f8e21b757e85c2cf03e0ff7afa5f6fd31a4c5
data/dist/up.css CHANGED
@@ -16,6 +16,8 @@
16
16
  top: 50%;
17
17
  left: 50%;
18
18
  transform: translate(-50%, -50%);
19
+ -ms-transform: translate(-50%, -50%);
20
+ -webkit-transform: translate(-50%, -50%);
19
21
  max-width: 100%;
20
22
  max-height: 100%;
21
23
  background-color: #fff;
@@ -35,7 +37,9 @@
35
37
  font-weight: bold;
36
38
  text-transform: uppercase;
37
39
  cursor: pointer;
38
- transform: translateY(-100%); }
40
+ transform: translateY(-100%);
41
+ -ms-transform: translateY(-100%);
42
+ -webkit-transform: translateY(-100%); }
39
43
 
40
44
  .up-modal-content {
41
45
  overflow-x: hidden;
data/dist/up.js CHANGED
@@ -25,7 +25,7 @@ If you use them in your own code, you will get hurt.
25
25
  var __slice = [].slice;
26
26
 
27
27
  up.util = (function() {
28
- var $createElementFromSelector, ajax, castsToFalse, castsToTrue, clientSize, contains, copy, copyAttributes, createElement, createElementFromHtml, createSelectorFromElement, cssAnimate, detect, each, error, escapePressed, extend, findWithSelf, forceCompositing, get, ifGiven, isArray, isBlank, isDefined, isFunction, isGiven, isHash, isJQuery, isMissing, isNull, isObject, isPresent, isPromise, isStandardPort, isString, isUndefined, last, locationFromXhr, measure, merge, nextFrame, normalizeUrl, option, options, prependGhost, presence, presentAttr, select, temporaryCss, unwrap;
28
+ var $createElementFromSelector, ajax, castsToFalse, castsToTrue, clientSize, contains, copy, copyAttributes, createElement, createElementFromHtml, createSelectorFromElement, cssAnimate, detect, each, error, escapePressed, extend, findWithSelf, forceCompositing, get, ifGiven, isArray, isBlank, isDefined, isFunction, isGiven, isHash, isJQuery, isMissing, isNull, isObject, isPresent, isPromise, isStandardPort, isString, isUndefined, keys, last, locationFromXhr, measure, merge, nextFrame, normalizeUrl, only, option, options, prependGhost, presence, presentAttr, resolvedPromise, select, temporaryCss, trim, unwrap;
29
29
  get = function(url, options) {
30
30
  options = options || {};
31
31
  options.url = url;
@@ -126,7 +126,9 @@ If you use them in your own code, you will get hurt.
126
126
  createElement = function(tagName, html) {
127
127
  var element;
128
128
  element = document.createElement(tagName);
129
- element.innerHTML = html;
129
+ if (isPresent(html)) {
130
+ element.innerHTML = html;
131
+ }
130
132
  return element;
131
133
  };
132
134
  error = function() {
@@ -153,17 +155,47 @@ If you use them in your own code, you will get hurt.
153
155
  return selector;
154
156
  };
155
157
  createElementFromHtml = function(html) {
156
- var htmlElementPattern, innerHtml, match;
157
- htmlElementPattern = /<html>((?:.|\n)*)<\/html>/i;
158
- innerHtml = void 0;
159
- if (match = html.match(htmlElementPattern)) {
160
- innerHtml = match[1];
158
+ var anything, bodyElement, bodyMatch, bodyPattern, capture, closeTag, headElement, htmlElement, openTag, titleElement, titleMatch, titlePattern;
159
+ openTag = function(tag) {
160
+ return "<" + tag + "(?: [^>]*)?>";
161
+ };
162
+ closeTag = function(tag) {
163
+ return "</" + tag + ">";
164
+ };
165
+ anything = '(?:.|\\n)*?';
166
+ capture = function(pattern) {
167
+ return "(" + pattern + ")";
168
+ };
169
+ titlePattern = new RegExp(openTag('head') + anything + openTag('title') + capture(anything) + closeTag('title') + anything + closeTag('body'), 'i');
170
+ bodyPattern = new RegExp(openTag('body') + capture(anything) + closeTag('body'), 'i');
171
+ if (bodyMatch = html.match(bodyPattern)) {
172
+ htmlElement = document.createElement('html');
173
+ bodyElement = createElement('body', bodyMatch[1]);
174
+ htmlElement.appendChild(bodyElement);
175
+ if (titleMatch = html.match(titlePattern)) {
176
+ headElement = createElement('head');
177
+ htmlElement.appendChild(headElement);
178
+ titleElement = createElement('title', titleMatch[1]);
179
+ headElement.appendChild(titleElement);
180
+ }
181
+ return htmlElement;
161
182
  } else {
162
- innerHtml = "<html><body>" + html + "</body></html>";
183
+ return createElement('div', html);
163
184
  }
164
- return createElement('html', innerHtml);
165
185
  };
166
186
  extend = $.extend;
187
+ trim = $.trim;
188
+ keys = Object.keys || function(object) {
189
+ var key, result, _i, _len;
190
+ result = [];
191
+ for (_i = 0, _len = object.length; _i < _len; _i++) {
192
+ key = object[_i];
193
+ if (object.hasOwnProperty(key)) {
194
+ result.push(key);
195
+ }
196
+ }
197
+ return result;
198
+ };
167
199
  each = function(collection, block) {
168
200
  var index, item, _i, _len, _results;
169
201
  _results = [];
@@ -189,7 +221,7 @@ If you use them in your own code, you will get hurt.
189
221
  return !isMissing(object);
190
222
  };
191
223
  isBlank = function(object) {
192
- return isMissing(object) || (isObject(object) && Object.keys(object).length === 0) || (object.length === 0);
224
+ return isMissing(object) || (isObject(object) && keys(object).length === 0) || (object.length === 0);
193
225
  };
194
226
  presence = function(object, checker) {
195
227
  if (checker == null) {
@@ -227,7 +259,9 @@ If you use them in your own code, you will get hurt.
227
259
  return object;
228
260
  }
229
261
  };
230
- isArray = Array.isArray;
262
+ isArray = Array.isArray || function(object) {
263
+ return Object.prototype.toString.call(object) === '[object Array]';
264
+ };
231
265
  copy = function(object) {
232
266
  if (isArray(object)) {
233
267
  return object.slice();
@@ -274,35 +308,32 @@ If you use them in your own code, you will get hurt.
274
308
  @param {Array} args...
275
309
  */
276
310
  option = function() {
277
- var args, match;
311
+ var arg, args, match, value, _i, _len;
278
312
  args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
279
313
  match = null;
280
- args.every(function(arg) {
281
- var value;
314
+ for (_i = 0, _len = args.length; _i < _len; _i++) {
315
+ arg = args[_i];
282
316
  value = arg;
283
317
  if (isFunction(value)) {
284
318
  value = value();
285
319
  }
286
320
  if (isPresent(value)) {
287
321
  match = value;
288
- return false;
289
- } else {
290
- return true;
322
+ break;
291
323
  }
292
- });
324
+ }
293
325
  return match;
294
326
  };
295
327
  detect = function(array, tester) {
296
- var match;
328
+ var element, match, _i, _len;
297
329
  match = null;
298
- array.every(function(element) {
330
+ for (_i = 0, _len = array.length; _i < _len; _i++) {
331
+ element = array[_i];
299
332
  if (tester(element)) {
300
333
  match = element;
301
- return false;
302
- } else {
303
- return true;
334
+ break;
304
335
  }
305
- });
336
+ }
306
337
  return match;
307
338
  };
308
339
  select = function(array, tester) {
@@ -345,7 +376,7 @@ If you use them in your own code, you will get hurt.
345
376
  };
346
377
  temporaryCss = function($element, css, block) {
347
378
  var memo, oldCss;
348
- oldCss = $element.css(Object.keys(css));
379
+ oldCss = $element.css(keys(css));
349
380
  $element.css(css);
350
381
  memo = function() {
351
382
  return $element.css(oldCss);
@@ -395,28 +426,33 @@ If you use them in your own code, you will get hurt.
395
426
  */
396
427
  cssAnimate = function(elementOrSelector, lastFrame, opts) {
397
428
  var $element, deferred, transition, withoutCompositing, withoutTransition;
398
- opts = options(opts, {
399
- duration: 300,
400
- delay: 0,
401
- easing: 'ease'
402
- });
403
429
  $element = $(elementOrSelector);
404
- deferred = $.Deferred();
405
- transition = {
406
- 'transition-property': Object.keys(lastFrame).join(', '),
407
- 'transition-duration': opts.duration + "ms",
408
- 'transition-delay': opts.delay + "ms",
409
- 'transition-timing-function': opts.easing
410
- };
411
- withoutCompositing = forceCompositing($element);
412
- withoutTransition = temporaryCss($element, transition);
413
- $element.css(lastFrame);
414
- deferred.then(withoutCompositing);
415
- deferred.then(withoutTransition);
416
- setTimeout((function() {
417
- return deferred.resolve();
418
- }), opts.duration + opts.delay);
419
- return deferred.promise();
430
+ if (up.browser.canCssAnimation()) {
431
+ opts = options(opts, {
432
+ duration: 300,
433
+ delay: 0,
434
+ easing: 'ease'
435
+ });
436
+ deferred = $.Deferred();
437
+ transition = {
438
+ 'transition-property': keys(lastFrame).join(', '),
439
+ 'transition-duration': opts.duration + "ms",
440
+ 'transition-delay': opts.delay + "ms",
441
+ 'transition-timing-function': opts.easing
442
+ };
443
+ withoutCompositing = forceCompositing($element);
444
+ withoutTransition = temporaryCss($element, transition);
445
+ $element.css(lastFrame);
446
+ deferred.then(withoutCompositing);
447
+ deferred.then(withoutTransition);
448
+ setTimeout((function() {
449
+ return deferred.resolve();
450
+ }), opts.duration + opts.delay);
451
+ return deferred.promise();
452
+ } else {
453
+ $element.css(lastFrame);
454
+ return resolvedPromise();
455
+ }
420
456
  };
421
457
  measure = function($element, options) {
422
458
  var box, coordinates, viewport;
@@ -488,6 +524,24 @@ If you use them in your own code, you will get hurt.
488
524
  locationFromXhr = function(xhr) {
489
525
  return xhr.getResponseHeader('X-Up-Current-Location');
490
526
  };
527
+ only = function() {
528
+ var filtered, key, keys, object, _i, _len;
529
+ object = arguments[0], keys = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
530
+ filtered = {};
531
+ for (_i = 0, _len = keys.length; _i < _len; _i++) {
532
+ key = keys[_i];
533
+ if (object.hasOwnProperty(key)) {
534
+ filtered[key] = object[key];
535
+ }
536
+ }
537
+ return filtered;
538
+ };
539
+ resolvedPromise = function() {
540
+ var deferred;
541
+ deferred = $.Deferred();
542
+ deferred.resolve();
543
+ return deferred.promise();
544
+ };
491
545
  return {
492
546
  presentAttr: presentAttr,
493
547
  createElement: createElement,
@@ -537,7 +591,11 @@ If you use them in your own code, you will get hurt.
537
591
  castsToTrue: castsToTrue,
538
592
  castsToFalse: castsToFalse,
539
593
  locationFromXhr: locationFromXhr,
540
- clientSize: clientSize
594
+ clientSize: clientSize,
595
+ only: only,
596
+ trim: trim,
597
+ keys: keys,
598
+ resolvedPromise: resolvedPromise
541
599
  };
542
600
  })();
543
601
 
@@ -551,13 +609,76 @@ Browser interface
551
609
  */
552
610
 
553
611
  (function() {
612
+ var __slice = [].slice;
613
+
554
614
  up.browser = (function() {
555
- var url;
615
+ var canCssAnimation, canPushState, ensureConsoleExists, isSupported, loadPage, memoize, u, url;
616
+ u = up.util;
617
+ loadPage = function(url, options) {
618
+ var $form, csrfParam, csrfToken, metadataInput, method, target;
619
+ if (options == null) {
620
+ options = {};
621
+ }
622
+ method = u.option(options.method, 'get').toLowerCase();
623
+ if (method === 'get') {
624
+ return location.href = url;
625
+ } else if ($.rails) {
626
+ target = options.target;
627
+ csrfToken = $.rails.csrfToken();
628
+ csrfParam = $.rails.csrfParam();
629
+ $form = $("<form method='post' action='" + url + "'></form>");
630
+ metadataInput = "<input name='_method' value='" + method + "' type='hidden' />";
631
+ if (u.isDefined(csrfParam) && u.isDefined(csrfToken)) {
632
+ metadataInput += "<input name='" + csrfParam + "' value='" + csrfToken + "' type='hidden' />";
633
+ }
634
+ if (target) {
635
+ $form.attr('target', target);
636
+ }
637
+ $form.hide().append(metadataInput).appendTo('body');
638
+ return $form.submit();
639
+ } else {
640
+ return error("Can't fake a " + (method.toUpperCase()) + " request without Rails UJS");
641
+ }
642
+ };
556
643
  url = function() {
557
644
  return location.href;
558
645
  };
646
+ ensureConsoleExists = function() {
647
+ var _base;
648
+ window.console || (window.console = {});
649
+ return (_base = window.console).log || (_base.log = function() {});
650
+ };
651
+ memoize = function(func) {
652
+ var cache, cached;
653
+ cache = void 0;
654
+ cached = false;
655
+ return function() {
656
+ var args;
657
+ args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
658
+ if (cached) {
659
+ return cache;
660
+ } else {
661
+ cached = true;
662
+ return cache = func.apply(null, args);
663
+ }
664
+ };
665
+ };
666
+ canPushState = memoize(function() {
667
+ return u.isDefined(history.pushState);
668
+ });
669
+ canCssAnimation = memoize(function() {
670
+ return 'transition' in document.documentElement.style;
671
+ });
672
+ isSupported = memoize(function() {
673
+ return u.isDefined(document.addEventListener);
674
+ });
559
675
  return {
560
- url: url
676
+ url: url,
677
+ ensureConsoleExists: ensureConsoleExists,
678
+ loadPage: loadPage,
679
+ canPushState: canPushState,
680
+ canCssAnimation: canCssAnimation,
681
+ isSupported: isSupported
561
682
  };
562
683
  })();
563
684
 
@@ -720,6 +841,7 @@ We need to work on this page:
720
841
  @param {String} url
721
842
  The URL to fetch from the server.
722
843
  @param {String} [options.title]
844
+ @param {String} [options.method='get']
723
845
  @param {String|Boolean} [options.history=true]
724
846
  If a `String` is given, it is used as the URL the browser's location bar and history.
725
847
  If omitted or true, the `url` argument will be used.
@@ -732,10 +854,14 @@ We need to work on this page:
732
854
  var selector;
733
855
  options = u.options(options);
734
856
  selector = u.presence(selectorOrElement) ? selectorOrElement : u.createSelectorFromElement($(selectorOrElement));
857
+ if (!up.browser.canPushState() && !u.castsToFalse(options.history)) {
858
+ up.browser.loadPage(url, u.only(options, 'method'));
859
+ return;
860
+ }
735
861
  return u.ajax({
736
862
  url: url,
737
863
  selector: selector
738
- }).done(function(html, textStatus, xhr) {
864
+ }, u.only(options, 'method')).done(function(html, textStatus, xhr) {
739
865
  var currentLocation;
740
866
  if (currentLocation = u.locationFromXhr(xhr)) {
741
867
  url = currentLocation;
@@ -778,7 +904,7 @@ We need to work on this page:
778
904
  _results = [];
779
905
  for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
780
906
  step = _ref1[_i];
781
- $old = u.presence($(".up-popup " + step.selector)) || u.presence($(".up-modal " + step.selector)) || u.presence($(step.selector));
907
+ $old = u.presence($(".up-popup " + step.selector)) || u.presence($(".up-modal " + step.selector)) || u.presence($(step.selector)) || u.error("Could not find selector (" + step.selector + ") in current body HTML");
782
908
  if (fragment = htmlElement.querySelector(step.selector)) {
783
909
  $new = $(fragment);
784
910
  _results.push(swapElements($old, $new, step.pseudoClass, step.transition, options));
@@ -981,6 +1107,9 @@ We need to work on this page:
981
1107
  defaultLiveDescriptions = null;
982
1108
  live = function(events, selector, behavior) {
983
1109
  var description, _ref;
1110
+ if (!up.browser.isSupported()) {
1111
+ return;
1112
+ }
984
1113
  description = [
985
1114
  events, selector, function(event) {
986
1115
  return behavior.apply(this, [event, $(this)]);
@@ -1014,6 +1143,9 @@ We need to work on this page:
1014
1143
  awaken = function() {
1015
1144
  var args, awakener, options, selector;
1016
1145
  selector = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
1146
+ if (!up.browser.isSupported()) {
1147
+ return;
1148
+ }
1017
1149
  awakener = args.pop();
1018
1150
  options = u.options(args[0], {
1019
1151
  batch: false
@@ -1194,10 +1326,14 @@ We need to work on this page:
1194
1326
  }
1195
1327
  };
1196
1328
  manipulate = function(method, url) {
1197
- method += "State";
1198
- return window.history[method]({
1199
- fromUp: true
1200
- }, '', url);
1329
+ if (up.browser.canPushState()) {
1330
+ method += "State";
1331
+ return window.history[method]({
1332
+ fromUp: true
1333
+ }, '', url);
1334
+ } else {
1335
+ return u.error("This browser doesn't support history.pushState");
1336
+ }
1201
1337
  };
1202
1338
  pop = function(event) {
1203
1339
  var state;
@@ -1212,12 +1348,14 @@ We need to work on this page:
1212
1348
  return console.log("strange state", state);
1213
1349
  }
1214
1350
  };
1215
- setTimeout((function() {
1216
- $(window).on("popstate", pop);
1217
- return replace(up.browser.url(), {
1218
- force: true
1219
- });
1220
- }), 200);
1351
+ if (up.browser.canPushState()) {
1352
+ setTimeout((function() {
1353
+ $(window).on("popstate", pop);
1354
+ return replace(up.browser.url(), {
1355
+ force: true
1356
+ });
1357
+ }), 200);
1358
+ }
1221
1359
  return {
1222
1360
  push: push,
1223
1361
  replace: replace
@@ -1380,25 +1518,29 @@ We need to work on this page:
1380
1518
  */
1381
1519
  morph = function(source, target, transitionOrName, options) {
1382
1520
  var $new, $old, animation, parts, transition;
1383
- options = u.options(config);
1384
- $old = $(source);
1385
- $new = $(target);
1386
- transition = u.presence(transitionOrName, u.isFunction) || transitions[transitionOrName];
1387
- if (transition) {
1388
- return withGhosts($old, $new, function($oldGhost, $newGhost) {
1389
- return assertIsPromise(transition($oldGhost, $newGhost, options), ["Transition did not return a promise", transitionOrName]);
1390
- });
1391
- } else if (animation = animations[transitionOrName]) {
1392
- $old.hide();
1393
- return animate($new, animation, options);
1394
- } else if (u.isString(transitionOrName) && transitionOrName.indexOf('/') >= 0) {
1395
- parts = transitionOrName.split('/');
1396
- transition = function($old, $new, options) {
1397
- return $.when(animate($old, parts[0], options), animate($new, parts[1], options));
1398
- };
1399
- return morph($old, $new, transition, options);
1521
+ if (up.browser.canCssAnimation()) {
1522
+ options = u.options(config);
1523
+ $old = $(source);
1524
+ $new = $(target);
1525
+ transition = u.presence(transitionOrName, u.isFunction) || transitions[transitionOrName];
1526
+ if (transition) {
1527
+ return withGhosts($old, $new, function($oldGhost, $newGhost) {
1528
+ return assertIsPromise(transition($oldGhost, $newGhost, options), ["Transition did not return a promise", transitionOrName]);
1529
+ });
1530
+ } else if (animation = animations[transitionOrName]) {
1531
+ $old.hide();
1532
+ return animate($new, animation, options);
1533
+ } else if (u.isString(transitionOrName) && transitionOrName.indexOf('/') >= 0) {
1534
+ parts = transitionOrName.split('/');
1535
+ transition = function($old, $new, options) {
1536
+ return $.when(animate($old, parts[0], options), animate($new, parts[1], options));
1537
+ };
1538
+ return morph($old, $new, transition, options);
1539
+ } else {
1540
+ return u.error("Unknown transition: " + transitionOrName);
1541
+ }
1400
1542
  } else {
1401
- return u.error("Unknown transition: " + transitionOrName);
1543
+ return u.resolvedPromise();
1402
1544
  }
1403
1545
  };
1404
1546
 
@@ -1440,12 +1582,7 @@ We need to work on this page:
1440
1582
  @return {Promise}
1441
1583
  A resolved promise
1442
1584
  */
1443
- none = function() {
1444
- var deferred;
1445
- deferred = $.Deferred();
1446
- deferred.resolve();
1447
- return deferred.promise();
1448
- };
1585
+ none = u.resolvedPromise;
1449
1586
  animation('none', none);
1450
1587
  animation('fade-in', function($ghost, options) {
1451
1588
  $ghost.css({
@@ -1875,6 +2012,10 @@ We need to work on this page:
1875
2012
  httpMethod = u.option(options.method, $form.attr('up-method'), $form.attr('data-method'), $form.attr('method'), 'post').toUpperCase();
1876
2013
  url = u.option(options.url, $form.attr('action'), up.browser.url());
1877
2014
  $form.addClass('up-active');
2015
+ if (!up.browser.canPushState() && !u.castsToFalse(historyOption)) {
2016
+ $form.get(0).submit();
2017
+ return;
2018
+ }
1878
2019
  request = {
1879
2020
  url: url,
1880
2021
  type: httpMethod,
@@ -2180,7 +2321,7 @@ We need to work on this page:
2180
2321
  origin = u.option(options.origin, $link.attr('up-origin'), config.origin);
2181
2322
  animation = u.option(options.animation, $link.attr('up-animation'), config.openAnimation);
2182
2323
  sticky = u.option(options.sticky, $link.is('[up-sticky]'));
2183
- history = u.option(options.history, $link.attr('up-history'), false);
2324
+ history = up.browser.canPushState() ? u.option(options.history, $link.attr('up-history'), false) : false;
2184
2325
  close();
2185
2326
  $popup = createHiddenPopup($link, selector, sticky);
2186
2327
  return up.replace(selector, url, {
@@ -2404,7 +2545,7 @@ We need to work on this page:
2404
2545
  height = u.option(options.height, $link.attr('up-height'), config.height);
2405
2546
  animation = u.option(options.animation, $link.attr('up-animation'), config.openAnimation);
2406
2547
  sticky = u.option(options.sticky, $link.is('[up-sticky]'));
2407
- history = u.option(options.history, $link.attr('up-history'), true);
2548
+ history = up.browser.canPushState() ? u.option(options.history, $link.attr('up-history'), true) : false;
2408
2549
  close();
2409
2550
  $modal = createHiddenModal(selector, width, height, sticky);
2410
2551
  return up.replace(selector, url, {
@@ -2740,12 +2881,13 @@ TODO: Write some documentation
2740
2881
 
2741
2882
  (function() {
2742
2883
  up.marker = (function() {
2743
- var check, hasContent;
2884
+ var check, hasContent, u;
2885
+ u = up.util;
2744
2886
  hasContent = function($marker) {
2745
- return $marker.html().trim() !== '';
2887
+ return u.trim($marker.html()) !== '';
2746
2888
  };
2747
2889
  check = function($element) {
2748
- return up.util.findWithSelf($element, '[up-marker]').each(function() {
2890
+ return u.findWithSelf($element, '[up-marker]').each(function() {
2749
2891
  var $marker;
2750
2892
  $marker = $(this);
2751
2893
  if (!hasContent($marker)) {
@@ -2773,10 +2915,12 @@ TODO: Write some documentation
2773
2915
 
2774
2916
  }).call(this);
2775
2917
  (function() {
2776
- up.bus.emit('framework:ready');
2777
-
2778
- $(document).on('ready', function() {
2779
- return up.bus.emit('app:ready');
2780
- });
2918
+ if (up.browser.isSupported()) {
2919
+ up.browser.ensureConsoleExists();
2920
+ up.bus.emit('framework:ready');
2921
+ $(document).on('ready', function() {
2922
+ return up.bus.emit('app:ready');
2923
+ });
2924
+ }
2781
2925
 
2782
2926
  }).call(this);