fullcalendar.io-rails 2.8.0 → 2.9.0

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: 97c1c9f136922333dd29691a912b6177fee23405
4
- data.tar.gz: 92a2a4efc4388a10ceeaca3df3be51fa28346931
3
+ metadata.gz: 8d30dd3218499cddafae61a0749e8fb9ca748b74
4
+ data.tar.gz: 5c3f5fedc1f56da63e9dc095df5e46924c02e23a
5
5
  SHA512:
6
- metadata.gz: e508564ee09050aea7351c7bd31d2122d41e8adae7a99ee05f6678692f988afd1793160e5a8fc16c8cc1f7e2e4e0119962dad3a89e94d509e47a926c34233e02
7
- data.tar.gz: 2dc54784ae31c0b61b8c2099acd570ea283ff0b79804f41c597cd01030347700074c780fb3b1bf5cc03ad4ff7f1e8ae13ae9b245e1c2b2a61a3064fcd6057be9
6
+ metadata.gz: 07ed7e3d07243e40f9e8e0c1ddd80eaaaf4f8c25d8e040d701d4236d12bc600f4a40c8d10698a024744d677de5611590a199c54ee76cd62effa9667a71e6463b
7
+ data.tar.gz: b93ccf3cf603cfb261b881fd29faa4b1a7309cbad46395afd1a2d594945f6c0170749d3bf5c19bc94630d37dcac010fcdb6a8b1301e0e8ee7fdae66f42c3556c
@@ -1,5 +1,5 @@
1
1
  module Fullcalendario
2
2
  module Rails
3
- VERSION = "2.8.0"
3
+ VERSION = "2.9.0"
4
4
  end
5
5
  end
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * FullCalendar v2.8.0
2
+ * FullCalendar v2.9.0
3
3
  * Docs & License: http://fullcalendar.io/
4
4
  * (c) 2016 Adam Shaw
5
5
  */
@@ -19,7 +19,7 @@
19
19
  ;;
20
20
 
21
21
  var FC = $.fullCalendar = {
22
- version: "2.8.0",
22
+ version: "2.9.0",
23
23
  internalApiVersion: 4
24
24
  };
25
25
  var fcViews = FC.views = {};
@@ -5663,6 +5663,11 @@ var DayGrid = FC.DayGrid = Grid.extend(DayTableMixin, {
5663
5663
  },
5664
5664
 
5665
5665
 
5666
+ unrenderBusinessHours: function() {
5667
+ this.unrenderFill('businessHours');
5668
+ },
5669
+
5670
+
5666
5671
  // Generates the HTML for a single row, which is a div that wraps a table.
5667
5672
  // `row` is the row number.
5668
5673
  renderDayRowHtml: function(row, isRigid) {
@@ -8110,12 +8115,12 @@ var View = FC.View = Class.extend(EmitterMixin, ListenerMixin, {
8110
8115
  // Does everything necessary to display the view centered around the given unzoned date.
8111
8116
  // Does every type of rendering EXCEPT rendering events.
8112
8117
  // Is asychronous and returns a promise.
8113
- display: function(date) {
8118
+ display: function(date, explicitScrollState) {
8114
8119
  var _this = this;
8115
- var scrollState = null;
8120
+ var prevScrollState = null;
8116
8121
 
8117
- if (this.displaying) {
8118
- scrollState = this.queryScroll();
8122
+ if (explicitScrollState != null && this.displaying) { // don't need prevScrollState if explicitScrollState
8123
+ prevScrollState = this.queryScroll();
8119
8124
  }
8120
8125
 
8121
8126
  this.calendar.freezeContentHeight();
@@ -8124,7 +8129,17 @@ var View = FC.View = Class.extend(EmitterMixin, ListenerMixin, {
8124
8129
  return (
8125
8130
  _this.displaying =
8126
8131
  syncThen(_this.displayView(date), function() { // displayView might return a promise
8127
- _this.forceScroll(_this.computeInitialScroll(scrollState));
8132
+
8133
+ // caller of display() wants a specific scroll state?
8134
+ if (explicitScrollState != null) {
8135
+ // we make an assumption that this is NOT the initial render,
8136
+ // and thus don't need forceScroll (is inconveniently asynchronous)
8137
+ _this.setScroll(explicitScrollState);
8138
+ }
8139
+ else {
8140
+ _this.forceScroll(_this.computeInitialScroll(prevScrollState));
8141
+ }
8142
+
8128
8143
  _this.calendar.unfreezeContentHeight();
8129
8144
  _this.triggerRender();
8130
8145
  })
@@ -9068,6 +9083,7 @@ var Calendar = FC.Calendar = Class.extend({
9068
9083
  dirDefaults: null, // option defaults related to LTR or RTL
9069
9084
  langDefaults: null, // option defaults related to current locale
9070
9085
  overrides: null, // option overrides given to the fullCalendar constructor
9086
+ dynamicOverrides: null, // options set with dynamic setter method. higher precedence than view overrides.
9071
9087
  options: null, // all defaults combined with overrides
9072
9088
  viewSpecCache: null, // cache of view definitions
9073
9089
  view: null, // current View object
@@ -9085,24 +9101,25 @@ var Calendar = FC.Calendar = Class.extend({
9085
9101
  },
9086
9102
 
9087
9103
 
9088
- // Initializes `this.options` and other important options-related objects
9089
- initOptions: function(overrides) {
9104
+ // Computes the flattened options hash for the calendar and assigns to `this.options`.
9105
+ // Assumes this.overrides and this.dynamicOverrides have already been initialized.
9106
+ populateOptionsHash: function() {
9090
9107
  var lang, langDefaults;
9091
9108
  var isRTL, dirDefaults;
9092
9109
 
9093
- // converts legacy options into non-legacy ones.
9094
- // in the future, when this is removed, don't use `overrides` reference. make a copy.
9095
- overrides = massageOverrides(overrides);
9096
-
9097
- lang = overrides.lang;
9110
+ lang = firstDefined( // explicit lang option given?
9111
+ this.dynamicOverrides.lang,
9112
+ this.overrides.lang
9113
+ );
9098
9114
  langDefaults = langOptionHash[lang];
9099
- if (!langDefaults) {
9115
+ if (!langDefaults) { // explicit lang option not given or invalid?
9100
9116
  lang = Calendar.defaults.lang;
9101
9117
  langDefaults = langOptionHash[lang] || {};
9102
9118
  }
9103
9119
 
9104
- isRTL = firstDefined(
9105
- overrides.isRTL,
9120
+ isRTL = firstDefined( // based on options computed so far, is direction RTL?
9121
+ this.dynamicOverrides.isRTL,
9122
+ this.overrides.isRTL,
9106
9123
  langDefaults.isRTL,
9107
9124
  Calendar.defaults.isRTL
9108
9125
  );
@@ -9110,16 +9127,14 @@ var Calendar = FC.Calendar = Class.extend({
9110
9127
 
9111
9128
  this.dirDefaults = dirDefaults;
9112
9129
  this.langDefaults = langDefaults;
9113
- this.overrides = overrides;
9114
9130
  this.options = mergeOptions([ // merge defaults and overrides. lowest to highest precedence
9115
9131
  Calendar.defaults, // global defaults
9116
9132
  dirDefaults,
9117
9133
  langDefaults,
9118
- overrides
9134
+ this.overrides,
9135
+ this.dynamicOverrides
9119
9136
  ]);
9120
- populateInstanceComputableOptions(this.options);
9121
-
9122
- this.viewSpecCache = {}; // somewhat unrelated
9137
+ populateInstanceComputableOptions(this.options); // fill in gaps with computed options
9123
9138
  },
9124
9139
 
9125
9140
 
@@ -9233,7 +9248,8 @@ var Calendar = FC.Calendar = Class.extend({
9233
9248
  this.dirDefaults,
9234
9249
  this.langDefaults, // locale and dir take precedence over view's defaults!
9235
9250
  this.overrides, // calendar's overrides (options given to constructor)
9236
- spec.overrides // view's overrides (view-specific options)
9251
+ spec.overrides, // view's overrides (view-specific options)
9252
+ this.dynamicOverrides // dynamically set via setter. highest precedence
9237
9253
  ]);
9238
9254
  populateInstanceComputableOptions(spec.options);
9239
9255
  },
@@ -9252,6 +9268,7 @@ var Calendar = FC.Calendar = Class.extend({
9252
9268
 
9253
9269
  // highest to lowest priority
9254
9270
  spec.buttonTextOverride =
9271
+ queryButtonText(this.dynamicOverrides) ||
9255
9272
  queryButtonText(this.overrides) || // constructor-specified buttonText lookup hash takes precedence
9256
9273
  spec.overrides.buttonText; // `buttonText` for view-specific options is a string
9257
9274
 
@@ -9324,10 +9341,6 @@ function Calendar_constructor(element, overrides) {
9324
9341
  var t = this;
9325
9342
 
9326
9343
 
9327
- t.initOptions(overrides || {});
9328
- var options = this.options;
9329
-
9330
-
9331
9344
  // Exports
9332
9345
  // -----------------------------------------------------------------------------------
9333
9346
 
@@ -9352,50 +9365,76 @@ function Calendar_constructor(element, overrides) {
9352
9365
  t.getDate = getDate;
9353
9366
  t.getCalendar = getCalendar;
9354
9367
  t.getView = getView;
9355
- t.option = option;
9368
+ t.option = option; // getter/setter method
9356
9369
  t.trigger = trigger;
9357
9370
 
9358
9371
 
9372
+ // Options
9373
+ // -----------------------------------------------------------------------------------
9374
+
9375
+ t.dynamicOverrides = {};
9376
+ t.viewSpecCache = {};
9377
+ t.optionHandlers = {}; // for Calendar.options.js
9378
+
9379
+ // convert legacy options into non-legacy ones.
9380
+ // in the future, when this is removed, don't use `overrides` reference. make a copy.
9381
+ t.overrides = massageOverrides(overrides || {});
9382
+
9383
+ t.populateOptionsHash(); // sets this.options
9384
+
9385
+
9359
9386
 
9360
9387
  // Language-data Internals
9361
9388
  // -----------------------------------------------------------------------------------
9362
9389
  // Apply overrides to the current language's data
9363
9390
 
9391
+ var localeData;
9364
9392
 
9365
- var localeData = createObject( // make a cheap copy
9366
- getMomentLocaleData(options.lang) // will fall back to en
9367
- );
9393
+ // Called immediately, and when any of the options change.
9394
+ // Happens before any internal objects rebuild or rerender, because this is very core.
9395
+ t.bindOptions([
9396
+ 'lang', 'monthNames', 'monthNamesShort', 'dayNames', 'dayNamesShort', 'firstDay', 'weekNumberCalculation'
9397
+ ], function(lang, monthNames, monthNamesShort, dayNames, dayNamesShort, firstDay, weekNumberCalculation) {
9368
9398
 
9369
- if (options.monthNames) {
9370
- localeData._months = options.monthNames;
9371
- }
9372
- if (options.monthNamesShort) {
9373
- localeData._monthsShort = options.monthNamesShort;
9374
- }
9375
- if (options.dayNames) {
9376
- localeData._weekdays = options.dayNames;
9377
- }
9378
- if (options.dayNamesShort) {
9379
- localeData._weekdaysShort = options.dayNamesShort;
9380
- }
9381
- if (options.firstDay != null) {
9382
- var _week = createObject(localeData._week); // _week: { dow: # }
9383
- _week.dow = options.firstDay;
9384
- localeData._week = _week;
9385
- }
9399
+ localeData = createObject( // make a cheap copy
9400
+ getMomentLocaleData(lang) // will fall back to en
9401
+ );
9402
+
9403
+ if (monthNames) {
9404
+ localeData._months = monthNames;
9405
+ }
9406
+ if (monthNamesShort) {
9407
+ localeData._monthsShort = monthNamesShort;
9408
+ }
9409
+ if (dayNames) {
9410
+ localeData._weekdays = dayNames;
9411
+ }
9412
+ if (dayNamesShort) {
9413
+ localeData._weekdaysShort = dayNamesShort;
9414
+ }
9415
+ if (firstDay != null) {
9416
+ var _week = createObject(localeData._week); // _week: { dow: # }
9417
+ _week.dow = firstDay;
9418
+ localeData._week = _week;
9419
+ }
9386
9420
 
9387
- // assign a normalized value, to be used by our .week() moment extension
9388
- localeData._fullCalendar_weekCalc = (function(weekCalc) {
9389
- if (typeof weekCalc === 'function') {
9390
- return weekCalc;
9421
+ if (weekNumberCalculation === 'iso') {
9422
+ weekNumberCalculation = 'ISO'; // normalize
9391
9423
  }
9392
- else if (weekCalc === 'local') {
9393
- return weekCalc;
9424
+ if ( // whitelist certain kinds of input
9425
+ weekNumberCalculation === 'ISO' ||
9426
+ weekNumberCalculation === 'local' ||
9427
+ typeof weekNumberCalculation === 'function'
9428
+ ) {
9429
+ localeData._fullCalendar_weekCalc = weekNumberCalculation; // moment-ext will know what to do with it
9394
9430
  }
9395
- else if (weekCalc === 'iso' || weekCalc === 'ISO') {
9396
- return 'ISO';
9431
+
9432
+ // If the internal current date object already exists, move to new locale.
9433
+ // We do NOT need to do this technique for event dates, because this happens when converting to "segments".
9434
+ if (date) {
9435
+ localizeMoment(date); // sets to localeData
9397
9436
  }
9398
- })(options.weekNumberCalculation);
9437
+ });
9399
9438
 
9400
9439
 
9401
9440
 
@@ -9403,8 +9442,8 @@ function Calendar_constructor(element, overrides) {
9403
9442
  // -----------------------------------------------------------------------------------
9404
9443
 
9405
9444
 
9406
- t.defaultAllDayEventDuration = moment.duration(options.defaultAllDayEventDuration);
9407
- t.defaultTimedEventDuration = moment.duration(options.defaultTimedEventDuration);
9445
+ t.defaultAllDayEventDuration = moment.duration(t.options.defaultAllDayEventDuration);
9446
+ t.defaultTimedEventDuration = moment.duration(t.options.defaultTimedEventDuration);
9408
9447
 
9409
9448
 
9410
9449
  // Builds a moment using the settings of the current calendar: timezone and language.
@@ -9412,7 +9451,7 @@ function Calendar_constructor(element, overrides) {
9412
9451
  t.moment = function() {
9413
9452
  var mom;
9414
9453
 
9415
- if (options.timezone === 'local') {
9454
+ if (t.options.timezone === 'local') {
9416
9455
  mom = FC.moment.apply(null, arguments);
9417
9456
 
9418
9457
  // Force the moment to be local, because FC.moment doesn't guarantee it.
@@ -9420,28 +9459,34 @@ function Calendar_constructor(element, overrides) {
9420
9459
  mom.local();
9421
9460
  }
9422
9461
  }
9423
- else if (options.timezone === 'UTC') {
9462
+ else if (t.options.timezone === 'UTC') {
9424
9463
  mom = FC.moment.utc.apply(null, arguments); // process as UTC
9425
9464
  }
9426
9465
  else {
9427
9466
  mom = FC.moment.parseZone.apply(null, arguments); // let the input decide the zone
9428
9467
  }
9429
9468
 
9469
+ localizeMoment(mom);
9470
+
9471
+ return mom;
9472
+ };
9473
+
9474
+
9475
+ // Updates the given moment's locale settings to the current calendar locale settings.
9476
+ function localizeMoment(mom) {
9430
9477
  if ('_locale' in mom) { // moment 2.8 and above
9431
9478
  mom._locale = localeData;
9432
9479
  }
9433
9480
  else { // pre-moment-2.8
9434
9481
  mom._lang = localeData;
9435
9482
  }
9436
-
9437
- return mom;
9438
- };
9483
+ }
9439
9484
 
9440
9485
 
9441
9486
  // Returns a boolean about whether or not the calendar knows how to calculate
9442
9487
  // the timezone offset of arbitrary dates in the current timezone.
9443
9488
  t.getIsAmbigTimezone = function() {
9444
- return options.timezone !== 'local' && options.timezone !== 'UTC';
9489
+ return t.options.timezone !== 'local' && t.options.timezone !== 'UTC';
9445
9490
  };
9446
9491
 
9447
9492
 
@@ -9470,7 +9515,7 @@ function Calendar_constructor(element, overrides) {
9470
9515
  // Returns a moment for the current date, as defined by the client's computer or from the `now` option.
9471
9516
  // Will return an moment with an ambiguous timezone.
9472
9517
  t.getNow = function() {
9473
- var now = options.now;
9518
+ var now = t.options.now;
9474
9519
  if (typeof now === 'function') {
9475
9520
  now = now();
9476
9521
  }
@@ -9512,7 +9557,7 @@ function Calendar_constructor(element, overrides) {
9512
9557
  // Produces a human-readable string for the given duration.
9513
9558
  // Side-effect: changes the locale of the given duration.
9514
9559
  t.humanizeDuration = function(duration) {
9515
- return (duration.locale || duration.lang).call(duration, options.lang) // works moment-pre-2.8
9560
+ return (duration.locale || duration.lang).call(duration, t.options.lang) // works moment-pre-2.8
9516
9561
  .humanize();
9517
9562
  };
9518
9563
 
@@ -9522,7 +9567,7 @@ function Calendar_constructor(element, overrides) {
9522
9567
  // -----------------------------------------------------------------------------------
9523
9568
 
9524
9569
 
9525
- EventManager.call(t, options);
9570
+ EventManager.call(t);
9526
9571
  var isFetchNeeded = t.isFetchNeeded;
9527
9572
  var fetchEvents = t.fetchEvents;
9528
9573
  var fetchEventSources = t.fetchEventSources;
@@ -9535,7 +9580,6 @@ function Calendar_constructor(element, overrides) {
9535
9580
 
9536
9581
  var _element = element[0];
9537
9582
  var header;
9538
- var headerElement;
9539
9583
  var content;
9540
9584
  var tm; // for making theme classes
9541
9585
  var currentView; // NOTE: keep this in sync with this.view
@@ -9553,8 +9597,8 @@ function Calendar_constructor(element, overrides) {
9553
9597
 
9554
9598
 
9555
9599
  // compute the initial ambig-timezone date
9556
- if (options.defaultDate != null) {
9557
- date = t.moment(options.defaultDate).stripZone();
9600
+ if (t.options.defaultDate != null) {
9601
+ date = t.moment(t.options.defaultDate).stripZone();
9558
9602
  }
9559
9603
  else {
9560
9604
  date = t.getNow(); // getNow already returns unzoned
@@ -9574,38 +9618,43 @@ function Calendar_constructor(element, overrides) {
9574
9618
 
9575
9619
 
9576
9620
  function initialRender() {
9577
- tm = options.theme ? 'ui' : 'fc';
9578
9621
  element.addClass('fc');
9579
9622
 
9580
- if (options.isRTL) {
9581
- element.addClass('fc-rtl');
9582
- }
9583
- else {
9584
- element.addClass('fc-ltr');
9585
- }
9623
+ // called immediately, and upon option change
9624
+ t.bindOption('theme', function(theme) {
9625
+ tm = theme ? 'ui' : 'fc'; // affects a larger scope
9626
+ element.toggleClass('ui-widget', theme);
9627
+ element.toggleClass('fc-unthemed', !theme);
9628
+ });
9586
9629
 
9587
- if (options.theme) {
9588
- element.addClass('ui-widget');
9589
- }
9590
- else {
9591
- element.addClass('fc-unthemed');
9592
- }
9630
+ // called immediately, and upon option change.
9631
+ // HACK: lang often affects isRTL, so we explicitly listen to that too.
9632
+ t.bindOptions([ 'isRTL', 'lang' ], function(isRTL) {
9633
+ element.toggleClass('fc-ltr', !isRTL);
9634
+ element.toggleClass('fc-rtl', isRTL);
9635
+ });
9593
9636
 
9594
9637
  content = $("<div class='fc-view-container'/>").prependTo(element);
9595
9638
 
9596
- header = t.header = new Header(t, options);
9597
- headerElement = header.render();
9598
- if (headerElement) {
9599
- element.prepend(headerElement);
9600
- }
9639
+ header = t.header = new Header(t);
9640
+ renderHeader();
9601
9641
 
9602
- renderView(options.defaultView);
9642
+ renderView(t.options.defaultView);
9603
9643
 
9604
- if (options.handleWindowResize) {
9605
- windowResizeProxy = debounce(windowResize, options.windowResizeDelay); // prevents rapid calls
9644
+ if (t.options.handleWindowResize) {
9645
+ windowResizeProxy = debounce(windowResize, t.options.windowResizeDelay); // prevents rapid calls
9606
9646
  $(window).resize(windowResizeProxy);
9607
9647
  }
9608
9648
  }
9649
+
9650
+
9651
+ // can be called repeatedly and Header will rerender
9652
+ function renderHeader() {
9653
+ header.render();
9654
+ if (header.el) {
9655
+ element.prepend(header.el);
9656
+ }
9657
+ }
9609
9658
 
9610
9659
 
9611
9660
  function destroy() {
@@ -9639,15 +9688,14 @@ function Calendar_constructor(element, overrides) {
9639
9688
 
9640
9689
  // Renders a view because of a date change, view-type change, or for the first time.
9641
9690
  // If not given a viewType, keep the current view but render different dates.
9642
- function renderView(viewType) {
9691
+ // Accepts an optional scroll state to restore to.
9692
+ function renderView(viewType, explicitScrollState) {
9643
9693
  ignoreWindowResize++;
9644
9694
 
9645
9695
  // if viewType is changing, remove the old view's rendering
9646
9696
  if (currentView && viewType && currentView.type !== viewType) {
9647
- header.deactivateButton(currentView.type);
9648
9697
  freezeContentHeight(); // prevent a scroll jump when view element is removed
9649
- currentView.removeElement();
9650
- currentView = t.view = null;
9698
+ clearView();
9651
9699
  }
9652
9700
 
9653
9701
  // if viewType changed, or the view was never created, create a fresh view
@@ -9674,7 +9722,7 @@ function Calendar_constructor(element, overrides) {
9674
9722
  ) {
9675
9723
  if (elementVisible()) {
9676
9724
 
9677
- currentView.display(date); // will call freezeContentHeight
9725
+ currentView.display(date, explicitScrollState); // will call freezeContentHeight
9678
9726
  unfreezeContentHeight(); // immediately unfreeze regardless of whether display is async
9679
9727
 
9680
9728
  // need to do this after View::render, so dates are calculated
@@ -9690,6 +9738,32 @@ function Calendar_constructor(element, overrides) {
9690
9738
  ignoreWindowResize--;
9691
9739
  }
9692
9740
 
9741
+
9742
+ // Unrenders the current view and reflects this change in the Header.
9743
+ // Unregsiters the `currentView`, but does not remove from viewByType hash.
9744
+ function clearView() {
9745
+ header.deactivateButton(currentView.type);
9746
+ currentView.removeElement();
9747
+ currentView = t.view = null;
9748
+ }
9749
+
9750
+
9751
+ // Destroys the view, including the view object. Then, re-instantiates it and renders it.
9752
+ // Maintains the same scroll state.
9753
+ // TODO: maintain any other user-manipulated state.
9754
+ function reinitView() {
9755
+ ignoreWindowResize++;
9756
+ freezeContentHeight();
9757
+
9758
+ var viewType = currentView.type;
9759
+ var scrollState = currentView.queryScroll();
9760
+ clearView();
9761
+ renderView(viewType, scrollState);
9762
+
9763
+ unfreezeContentHeight();
9764
+ ignoreWindowResize--;
9765
+ }
9766
+
9693
9767
 
9694
9768
 
9695
9769
  // Resizing
@@ -9705,7 +9779,7 @@ function Calendar_constructor(element, overrides) {
9705
9779
 
9706
9780
 
9707
9781
  t.isHeightAuto = function() {
9708
- return options.contentHeight === 'auto' || options.height === 'auto';
9782
+ return t.options.contentHeight === 'auto' || t.options.height === 'auto';
9709
9783
  };
9710
9784
 
9711
9785
 
@@ -9733,14 +9807,14 @@ function Calendar_constructor(element, overrides) {
9733
9807
 
9734
9808
 
9735
9809
  function _calcSize() { // assumes elementVisible
9736
- if (typeof options.contentHeight === 'number') { // exists and not 'auto'
9737
- suggestedViewHeight = options.contentHeight;
9810
+ if (typeof t.options.contentHeight === 'number') { // exists and not 'auto'
9811
+ suggestedViewHeight = t.options.contentHeight;
9738
9812
  }
9739
- else if (typeof options.height === 'number') { // exists and not 'auto'
9740
- suggestedViewHeight = options.height - (headerElement ? headerElement.outerHeight(true) : 0);
9813
+ else if (typeof t.options.height === 'number') { // exists and not 'auto'
9814
+ suggestedViewHeight = t.options.height - (header.el ? header.el.outerHeight(true) : 0);
9741
9815
  }
9742
9816
  else {
9743
- suggestedViewHeight = Math.round(content.width() / Math.max(options.aspectRatio, .5));
9817
+ suggestedViewHeight = Math.round(content.width() / Math.max(t.options.aspectRatio, .5));
9744
9818
  }
9745
9819
  }
9746
9820
 
@@ -9785,7 +9859,7 @@ function Calendar_constructor(element, overrides) {
9785
9859
 
9786
9860
 
9787
9861
  function getAndRenderEvents() {
9788
- if (!options.lazyFetching || isFetchNeeded(currentView.start, currentView.end)) {
9862
+ if (!t.options.lazyFetching || isFetchNeeded(currentView.start, currentView.end)) {
9789
9863
  fetchAndRenderEvents();
9790
9864
  }
9791
9865
  else {
@@ -9964,13 +10038,69 @@ function Calendar_constructor(element, overrides) {
9964
10038
 
9965
10039
 
9966
10040
  function option(name, value) {
9967
- if (value === undefined) {
9968
- return options[name];
10041
+ var newOptionHash;
10042
+
10043
+ if (typeof name === 'string') {
10044
+ if (value === undefined) { // getter
10045
+ return t.options[name];
10046
+ }
10047
+ else { // setter for individual option
10048
+ newOptionHash = {};
10049
+ newOptionHash[name] = value;
10050
+ setOptions(newOptionHash);
10051
+ }
10052
+ }
10053
+ else if (typeof name === 'object') { // compound setter with object input
10054
+ setOptions(name);
10055
+ }
10056
+ }
10057
+
10058
+
10059
+ function setOptions(newOptionHash) {
10060
+ var optionCnt = 0;
10061
+ var optionName;
10062
+
10063
+ for (optionName in newOptionHash) {
10064
+ t.dynamicOverrides[optionName] = newOptionHash[optionName];
9969
10065
  }
9970
- if (name == 'height' || name == 'contentHeight' || name == 'aspectRatio') {
9971
- options[name] = value;
9972
- updateSize(true); // true = allow recalculation of height
10066
+
10067
+ t.viewSpecCache = {}; // the dynamic override invalidates the options in this cache, so just clear it
10068
+ t.populateOptionsHash(); // this.options needs to be recomputed after the dynamic override
10069
+
10070
+ // trigger handlers after this.options has been updated
10071
+ for (optionName in newOptionHash) {
10072
+ t.triggerOptionHandlers(optionName); // recall bindOption/bindOptions
10073
+ optionCnt++;
9973
10074
  }
10075
+
10076
+ // special-case handling of single option change.
10077
+ // if only one option change, `optionName` will be its name.
10078
+ if (optionCnt === 1) {
10079
+ if (optionName === 'height' || optionName === 'contentHeight' || optionName === 'aspectRatio') {
10080
+ updateSize(true); // true = allow recalculation of height
10081
+ return;
10082
+ }
10083
+ else if (optionName === 'defaultDate') {
10084
+ return; // can't change date this way. use gotoDate instead
10085
+ }
10086
+ else if (optionName === 'businessHours') {
10087
+ if (currentView) {
10088
+ currentView.unrenderBusinessHours();
10089
+ currentView.renderBusinessHours();
10090
+ }
10091
+ return;
10092
+ }
10093
+ else if (optionName === 'timezone') {
10094
+ t.rezoneArrayEventSources();
10095
+ refetchEvents();
10096
+ return;
10097
+ }
10098
+ }
10099
+
10100
+ // catch-all. rerender the header and rebuild/rerender the current view
10101
+ renderHeader();
10102
+ viewsByType = {}; // even non-current views will be affected by this option change. do before rerender
10103
+ reinitView();
9974
10104
  }
9975
10105
 
9976
10106
 
@@ -9980,14 +10110,78 @@ function Calendar_constructor(element, overrides) {
9980
10110
  thisObj = thisObj || _element;
9981
10111
  this.triggerWith(name, thisObj, args); // Emitter's method
9982
10112
 
9983
- if (options[name]) {
9984
- return options[name].apply(thisObj, args);
10113
+ if (t.options[name]) {
10114
+ return t.options[name].apply(thisObj, args);
9985
10115
  }
9986
10116
  }
9987
10117
 
9988
10118
  t.initialize();
9989
10119
  }
9990
10120
 
10121
+ ;;
10122
+ /*
10123
+ Options binding/triggering system.
10124
+ */
10125
+ Calendar.mixin({
10126
+
10127
+ // A map of option names to arrays of handler objects. Initialized to {} in Calendar.
10128
+ // Format for a handler object:
10129
+ // {
10130
+ // func // callback function to be called upon change
10131
+ // names // option names whose values should be given to func
10132
+ // }
10133
+ optionHandlers: null,
10134
+
10135
+ // Calls handlerFunc immediately, and when the given option has changed.
10136
+ // handlerFunc will be given the option value.
10137
+ bindOption: function(optionName, handlerFunc) {
10138
+ this.bindOptions([ optionName ], handlerFunc);
10139
+ },
10140
+
10141
+ // Calls handlerFunc immediately, and when any of the given options change.
10142
+ // handlerFunc will be given each option value as ordered function arguments.
10143
+ bindOptions: function(optionNames, handlerFunc) {
10144
+ var handlerObj = { func: handlerFunc, names: optionNames };
10145
+ var i;
10146
+
10147
+ for (i = 0; i < optionNames.length; i++) {
10148
+ this.registerOptionHandlerObj(optionNames[i], handlerObj);
10149
+ }
10150
+
10151
+ this.triggerOptionHandlerObj(handlerObj);
10152
+ },
10153
+
10154
+ // Puts the given handler object into the internal hash
10155
+ registerOptionHandlerObj: function(optionName, handlerObj) {
10156
+ (this.optionHandlers[optionName] || (this.optionHandlers[optionName] = []))
10157
+ .push(handlerObj);
10158
+ },
10159
+
10160
+ // Reports that the given option has changed, and calls all appropriate handlers.
10161
+ triggerOptionHandlers: function(optionName) {
10162
+ var handlerObjs = this.optionHandlers[optionName] || [];
10163
+ var i;
10164
+
10165
+ for (i = 0; i < handlerObjs.length; i++) {
10166
+ this.triggerOptionHandlerObj(handlerObjs[i]);
10167
+ }
10168
+ },
10169
+
10170
+ // Calls the callback for a specific handler object, passing in the appropriate arguments.
10171
+ triggerOptionHandlerObj: function(handlerObj) {
10172
+ var optionNames = handlerObj.names;
10173
+ var optionValues = [];
10174
+ var i;
10175
+
10176
+ for (i = 0; i < optionNames.length; i++) {
10177
+ optionValues.push(this.options[optionNames[i]]);
10178
+ }
10179
+
10180
+ handlerObj.func.apply(this, optionValues); // maintain the Calendar's `this` context
10181
+ }
10182
+
10183
+ });
10184
+
9991
10185
  ;;
9992
10186
 
9993
10187
  Calendar.defaults = {
@@ -10318,7 +10512,7 @@ FC.lang('en', Calendar.englishDefaults);
10318
10512
  ----------------------------------------------------------------------------------------------------------------------*/
10319
10513
  // TODO: rename all header-related things to "toolbar"
10320
10514
 
10321
- function Header(calendar, options) {
10515
+ function Header(calendar) {
10322
10516
  var t = this;
10323
10517
 
10324
10518
  // exports
@@ -10330,38 +10524,50 @@ function Header(calendar, options) {
10330
10524
  t.disableButton = disableButton;
10331
10525
  t.enableButton = enableButton;
10332
10526
  t.getViewsWithButtons = getViewsWithButtons;
10527
+ t.el = null; // mirrors local `el`
10333
10528
 
10334
10529
  // locals
10335
- var el = $();
10530
+ var el;
10336
10531
  var viewsWithButtons = [];
10337
10532
  var tm;
10338
10533
 
10339
10534
 
10535
+ // can be called repeatedly and will rerender
10340
10536
  function render() {
10537
+ var options = calendar.options;
10341
10538
  var sections = options.header;
10342
10539
 
10343
10540
  tm = options.theme ? 'ui' : 'fc';
10344
10541
 
10345
10542
  if (sections) {
10346
- el = $("<div class='fc-toolbar'/>")
10347
- .append(renderSection('left'))
10543
+ if (!el) {
10544
+ el = this.el = $("<div class='fc-toolbar'/>");
10545
+ }
10546
+ else {
10547
+ el.empty();
10548
+ }
10549
+ el.append(renderSection('left'))
10348
10550
  .append(renderSection('right'))
10349
10551
  .append(renderSection('center'))
10350
10552
  .append('<div class="fc-clear"/>');
10351
-
10352
- return el;
10553
+ }
10554
+ else {
10555
+ removeElement();
10353
10556
  }
10354
10557
  }
10355
10558
 
10356
10559
 
10357
10560
  function removeElement() {
10358
- el.remove();
10359
- el = $();
10561
+ if (el) {
10562
+ el.remove();
10563
+ el = t.el = null;
10564
+ }
10360
10565
  }
10361
10566
 
10362
10567
 
10363
10568
  function renderSection(position) {
10364
10569
  var sectionEl = $('<div class="fc-' + position + '"/>');
10570
+ var options = calendar.options;
10365
10571
  var buttonStr = options.header[position];
10366
10572
 
10367
10573
  if (buttonStr) {
@@ -10387,7 +10593,7 @@ function Header(calendar, options) {
10387
10593
  isOnlyButtons = false;
10388
10594
  }
10389
10595
  else {
10390
- if ((customButtonProps = (calendar.options.customButtons || {})[buttonName])) {
10596
+ if ((customButtonProps = (options.customButtons || {})[buttonName])) {
10391
10597
  buttonClick = function(ev) {
10392
10598
  if (customButtonProps.click) {
10393
10599
  customButtonProps.click.call(button[0], ev);
@@ -10523,33 +10729,43 @@ function Header(calendar, options) {
10523
10729
 
10524
10730
 
10525
10731
  function updateTitle(text) {
10526
- el.find('h2').text(text);
10732
+ if (el) {
10733
+ el.find('h2').text(text);
10734
+ }
10527
10735
  }
10528
10736
 
10529
10737
 
10530
10738
  function activateButton(buttonName) {
10531
- el.find('.fc-' + buttonName + '-button')
10532
- .addClass(tm + '-state-active');
10739
+ if (el) {
10740
+ el.find('.fc-' + buttonName + '-button')
10741
+ .addClass(tm + '-state-active');
10742
+ }
10533
10743
  }
10534
10744
 
10535
10745
 
10536
10746
  function deactivateButton(buttonName) {
10537
- el.find('.fc-' + buttonName + '-button')
10538
- .removeClass(tm + '-state-active');
10747
+ if (el) {
10748
+ el.find('.fc-' + buttonName + '-button')
10749
+ .removeClass(tm + '-state-active');
10750
+ }
10539
10751
  }
10540
10752
 
10541
10753
 
10542
10754
  function disableButton(buttonName) {
10543
- el.find('.fc-' + buttonName + '-button')
10544
- .prop('disabled', true)
10545
- .addClass(tm + '-state-disabled');
10755
+ if (el) {
10756
+ el.find('.fc-' + buttonName + '-button')
10757
+ .prop('disabled', true)
10758
+ .addClass(tm + '-state-disabled');
10759
+ }
10546
10760
  }
10547
10761
 
10548
10762
 
10549
10763
  function enableButton(buttonName) {
10550
- el.find('.fc-' + buttonName + '-button')
10551
- .prop('disabled', false)
10552
- .removeClass(tm + '-state-disabled');
10764
+ if (el) {
10765
+ el.find('.fc-' + buttonName + '-button')
10766
+ .prop('disabled', false)
10767
+ .removeClass(tm + '-state-disabled');
10768
+ }
10553
10769
  }
10554
10770
 
10555
10771
 
@@ -10572,7 +10788,7 @@ var ajaxDefaults = {
10572
10788
  var eventGUID = 1;
10573
10789
 
10574
10790
 
10575
- function EventManager(options) { // assumed to be a calendar
10791
+ function EventManager() { // assumed to be a calendar
10576
10792
  var t = this;
10577
10793
 
10578
10794
 
@@ -10609,7 +10825,7 @@ function EventManager(options) { // assumed to be a calendar
10609
10825
 
10610
10826
 
10611
10827
  $.each(
10612
- (options.events ? [ options.events ] : []).concat(options.eventSources || []),
10828
+ (t.options.events ? [ t.options.events ] : []).concat(t.options.eventSources || []),
10613
10829
  function(i, sourceInput) {
10614
10830
  var source = buildEventSource(sourceInput);
10615
10831
  if (source) {
@@ -10743,7 +10959,7 @@ function EventManager(options) { // assumed to be a calendar
10743
10959
  source,
10744
10960
  rangeStart.clone(),
10745
10961
  rangeEnd.clone(),
10746
- options.timezone,
10962
+ t.options.timezone,
10747
10963
  callback
10748
10964
  );
10749
10965
 
@@ -10766,7 +10982,7 @@ function EventManager(options) { // assumed to be a calendar
10766
10982
  t, // this, the Calendar object
10767
10983
  rangeStart.clone(),
10768
10984
  rangeEnd.clone(),
10769
- options.timezone,
10985
+ t.options.timezone,
10770
10986
  function(events) {
10771
10987
  callback(events);
10772
10988
  t.popLoading();
@@ -10801,9 +11017,9 @@ function EventManager(options) { // assumed to be a calendar
10801
11017
  // and not affect the passed-in object.
10802
11018
  var data = $.extend({}, customData || {});
10803
11019
 
10804
- var startParam = firstDefined(source.startParam, options.startParam);
10805
- var endParam = firstDefined(source.endParam, options.endParam);
10806
- var timezoneParam = firstDefined(source.timezoneParam, options.timezoneParam);
11020
+ var startParam = firstDefined(source.startParam, t.options.startParam);
11021
+ var endParam = firstDefined(source.endParam, t.options.endParam);
11022
+ var timezoneParam = firstDefined(source.timezoneParam, t.options.timezoneParam);
10807
11023
 
10808
11024
  if (startParam) {
10809
11025
  data[startParam] = rangeStart.format();
@@ -10811,8 +11027,8 @@ function EventManager(options) { // assumed to be a calendar
10811
11027
  if (endParam) {
10812
11028
  data[endParam] = rangeEnd.format();
10813
11029
  }
10814
- if (options.timezone && options.timezone != 'local') {
10815
- data[timezoneParam] = options.timezone;
11030
+ if (t.options.timezone && t.options.timezone != 'local') {
11031
+ data[timezoneParam] = t.options.timezone;
10816
11032
  }
10817
11033
 
10818
11034
  t.pushLoading();
@@ -11144,7 +11360,7 @@ function EventManager(options) { // assumed to be a calendar
11144
11360
 
11145
11361
  reportEvents(cache);
11146
11362
  }
11147
-
11363
+
11148
11364
 
11149
11365
  function clientEvents(filter) {
11150
11366
  if ($.isFunction(filter)) {
@@ -11158,7 +11374,33 @@ function EventManager(options) { // assumed to be a calendar
11158
11374
  }
11159
11375
  return cache; // else, return all
11160
11376
  }
11161
-
11377
+
11378
+
11379
+ // Makes sure all array event sources have their internal event objects
11380
+ // converted over to the Calendar's current timezone.
11381
+ t.rezoneArrayEventSources = function() {
11382
+ var i;
11383
+ var events;
11384
+ var j;
11385
+
11386
+ for (i = 0; i < sources.length; i++) {
11387
+ events = sources[i].events;
11388
+ if ($.isArray(events)) {
11389
+
11390
+ for (j = 0; j < events.length; j++) {
11391
+ rezoneEventDates(events[j]);
11392
+ }
11393
+ }
11394
+ }
11395
+ };
11396
+
11397
+ function rezoneEventDates(event) {
11398
+ event.start = t.moment(event.start);
11399
+ if (event.end) {
11400
+ event.end = t.moment(event.end);
11401
+ }
11402
+ backupEventDates(event);
11403
+ }
11162
11404
 
11163
11405
 
11164
11406
  /* Event Normalization
@@ -11174,8 +11416,8 @@ function EventManager(options) { // assumed to be a calendar
11174
11416
  var start, end;
11175
11417
  var allDay;
11176
11418
 
11177
- if (options.eventDataTransform) {
11178
- input = options.eventDataTransform(input);
11419
+ if (t.options.eventDataTransform) {
11420
+ input = t.options.eventDataTransform(input);
11179
11421
  }
11180
11422
  if (source && source.eventDataTransform) {
11181
11423
  input = source.eventDataTransform(input);
@@ -11241,7 +11483,7 @@ function EventManager(options) { // assumed to be a calendar
11241
11483
  if (allDay === undefined) { // still undefined? fallback to default
11242
11484
  allDay = firstDefined(
11243
11485
  source ? source.allDayDefault : undefined,
11244
- options.allDayDefault
11486
+ t.options.allDayDefault
11245
11487
  );
11246
11488
  // still undefined? normalizeEventDates will calculate it
11247
11489
  }
@@ -11277,7 +11519,7 @@ function EventManager(options) { // assumed to be a calendar
11277
11519
  }
11278
11520
 
11279
11521
  if (!eventProps.end) {
11280
- if (options.forceEventDuration) {
11522
+ if (t.options.forceEventDuration) {
11281
11523
  eventProps.end = t.getDefaultEventEnd(eventProps.allDay, eventProps.start);
11282
11524
  }
11283
11525
  else {
@@ -11578,7 +11820,7 @@ function EventManager(options) { // assumed to be a calendar
11578
11820
  // Returns an array of events as to when the business hours occur in the given view.
11579
11821
  // Abuse of our event system :(
11580
11822
  function getBusinessHoursEvents(wholeDay) {
11581
- var optionVal = options.businessHours;
11823
+ var optionVal = t.options.businessHours;
11582
11824
  var defaultVal = {
11583
11825
  className: 'fc-nonbusiness',
11584
11826
  start: '09:00',
@@ -11630,12 +11872,12 @@ function EventManager(options) { // assumed to be a calendar
11630
11872
  var constraint = firstDefined(
11631
11873
  event.constraint,
11632
11874
  source.constraint,
11633
- options.eventConstraint
11875
+ t.options.eventConstraint
11634
11876
  );
11635
11877
  var overlap = firstDefined(
11636
11878
  event.overlap,
11637
11879
  source.overlap,
11638
- options.eventOverlap
11880
+ t.options.eventOverlap
11639
11881
  );
11640
11882
  return isSpanAllowed(span, constraint, overlap, event);
11641
11883
  }
@@ -11664,7 +11906,7 @@ function EventManager(options) { // assumed to be a calendar
11664
11906
 
11665
11907
  // Determines the given span (unzoned start/end with other misc data) can be selected.
11666
11908
  function isSelectionSpanAllowed(span) {
11667
- return isSpanAllowed(span, options.selectConstraint, options.selectOverlap);
11909
+ return isSpanAllowed(span, t.options.selectConstraint, t.options.selectOverlap);
11668
11910
  }
11669
11911
 
11670
11912
 
@@ -11932,6 +12174,11 @@ var BasicView = FC.BasicView = View.extend({
11932
12174
  },
11933
12175
 
11934
12176
 
12177
+ unrenderBusinessHours: function() {
12178
+ this.dayGrid.unrenderBusinessHours();
12179
+ },
12180
+
12181
+
11935
12182
  // Builds the HTML skeleton for the view.
11936
12183
  // The day-grid component will render inside of a container defined by this HTML.
11937
12184
  renderSkeletonHtml: function() {
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * FullCalendar v2.8.0 Google Calendar Plugin
2
+ * FullCalendar v2.9.0 Google Calendar Plugin
3
3
  * Docs & License: http://fullcalendar.io/
4
4
  * (c) 2016 Adam Shaw
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * FullCalendar v2.8.0 Stylesheet
2
+ * FullCalendar v2.9.0 Stylesheet
3
3
  * Docs & License: http://fullcalendar.io/
4
4
  * (c) 2016 Adam Shaw
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * FullCalendar v2.8.0 Print Stylesheet
2
+ * FullCalendar v2.9.0 Print Stylesheet
3
3
  * Docs & License: http://fullcalendar.io/
4
4
  * (c) 2016 Adam Shaw
5
5
  */
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fullcalendar.io-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.8.0
4
+ version: 2.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - dbackowski
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-20 00:00:00.000000000 Z
11
+ date: 2016-07-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jquery-rails
@@ -194,8 +194,11 @@ files:
194
194
  - spec/dummy/public/500.html
195
195
  - spec/dummy/public/favicon.ico
196
196
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/-T/-TF4g7ysiPxZNjb74I1D6AzI5XvgNMbr95XXvfHMHIo.cache
197
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/-f/-flwuy20EVU9ESo_tKL16xZVvvI7SwQmwVbpMLChyCQ.cache
198
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/0W/0Wz8D0EznVnMnz3ehYaTQfMKdaJteMO3m5mXRu4ArMg.cache
197
199
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/0d/0dWZcBegoEBzhzEOVOg1-czy-2COMnxE1Y35OISW6L4.cache
198
200
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/0r/0rn-tU1eBUPgW0KozwYPjcPwoscBdQbePooRBwPnl5U.cache
201
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/1h/1hjmejkroeKsAP3yAN3vQCALGPW6pNoIjMdrXF8LdIs.cache
199
202
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/1j/1jBm32Lhwj7n0HxpBGOR2Z9eCn883XjM94yW_nhGo7s.cache
200
203
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/1z/1zrToN9dimlnr4_kkdSJaL1-bVHicMTTNrygrZbiKmE.cache
201
204
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/2v/2v_enXedOXrk8P_wrCDrUgQBIv8vNep_8WXDcPpOAPk.cache
@@ -218,19 +221,27 @@ files:
218
221
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Bb/BbaJr2dSDQ-CoLaPJjh5WAi0189AJulGNC4lzLzVqkU.cache
219
222
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Bf/Bf_n1jfIt5qNRlpPc3UZYQjwBLNdHzQr1HjUwN_CPUg.cache
220
223
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/CZ/CZq3-YHsX4JRsWjEqR6qrEYF7RFwmX9NrXx1CJZUK1Y.cache
224
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/Cm/CmoyYJ08AFtRSvy8ZHYQSehv2bkLOS0Xf0bI3I6fkZc.cache
221
225
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Ct/CtooulHOPWAF3hCtvujVdQqeQE2SbD7XiGowGPxEPS4.cache
226
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/D3/D3IHgyAar4g0H18XxoobTqDZtky89z5TOeSBKW8wLEw.cache
227
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/Df/Df6WoQgsLTI7ykMN0UF20G0ntZpRgUiG3NY-_TYegpI.cache
228
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/FV/FVdbk4mFx244QCLaBrYQH8aLlAFnS7oum8x0LVtktLc.cache
222
229
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Fz/FzdbPGtKVpZ6nDkCriaiHgtArNZYx1ve40vYH158oRA.cache
223
230
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/G-/G-8Lslwz1mDDFAtXjhKYd_lwxyvWRJvGScPYLnWXza4.cache
224
231
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/G_/G_eBie5yKayIsXqQ2t82QYclCtPlk8e0C-Ypy3XrWNE.cache
225
232
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Gi/Gixq_YmHosFFDXNI2jeU6PnDa_N3wq6Ln1nYw3SmJMo.cache
226
233
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/H5/H5qdR_G864tFoVyd7cVaE540FPIboV4NrYdS9XVOBQ0.cache
227
234
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/HG/HGGxWu67qhwPzf057coeqynsitAYqFmxubc0qu_8Z70.cache
235
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/HH/HHn3wp7W6eXU3aH8S_96s55mIIjGvwfwa05z-WOlIkQ.cache
228
236
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/HZ/HZlT4NkCNicSxzlB1VNJ2xcAjBb5EdKfX5p5UeFlrGQ.cache
229
237
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/H_/H_AMg2V0XStjP--4CexdXop4Rl3AiH8h4F3l-5i9CT4.cache
230
238
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/IN/INEiSFSAFtsUHgd4Lp3oC18Q19q_DoEWfCLqk858T0M.cache
239
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/IQ/IQTwOY6NGWx2P3Ut3no3dFF8wuPB41lYhCgZcMVJ4Mw.cache
231
240
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Il/Il1-ZHURKrBas9WU2p1_KKDGRvtj8sQNdB7mn1rog0c.cache
232
241
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Ip/IpbN3-B8GDUhWNahkeuBlIwntRm5Fh8Qi0lR6NKGHsQ.cache
242
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/Jd/JdOtBWcAWsDJwDXbnR69OI3_AfSjPfzV2oeWvkzJCyE.cache
233
243
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/LG/LGLCJcDHu0oVE5-mPjAFByMRf17dScWmYXaA1YpjXlk.cache
244
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/LL/LLNU-hKAfS_hAJAYEJbJ5pHHPmErgeAH_8W19cybpBk.cache
234
245
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/LX/LX4btAhr-I8jRXhkKHzUc8Faqgbn3ys0o-D0oH6RNF4.cache
235
246
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/MN/MNBCSdGyIyMratNDaFz7KWwfyjpW_FNpMjpSZf6K818.cache
236
247
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Mn/MnSdFKH9CP9eCumnvcwL9GWVXpSGfgQ7YGfZm5OJXEg.cache
@@ -251,10 +262,13 @@ files:
251
262
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/RR/RRmYgXTQIf1QHewBaH8pACfSf3MJWSvj53F68VKeV1Q.cache
252
263
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/RT/RT1_5OfeAqSEryp5KSK3d6TPazplXoDsvB9v8XziExw.cache
253
264
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Ro/RoiPZLDHochxcheNmbSflLdiYxeeeB0udVfH90fZMoY.cache
265
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/SZ/SZe341ZkUNShB-Ocws-WjvDBCoWKnNGimJxAOo1yuz8.cache
254
266
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Sy/Sy0zDepYO5qFhcrwEA4dpnv383lLc0aj2FZJAMbpUHI.cache
255
267
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Sz/Sz63PYjJ5GHyNpOgNmSivcjRrZvTOmKgqQUsVPZaoxw.cache
256
268
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/UT/UTEAD_z-iBqDiXqGiP5QtVfmbl-zhJegmf69V2w1vo8.cache
269
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/Uj/UjaVj8xAGm110YZ_jW3xTaynZuuRo8KGlZj_aI_wnKU.cache
257
270
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/VO/VOwlPpsIlEdmiC7yzKRMfZpuG8kmaIKhqvONJvinJL0.cache
271
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/V_/V_ZC96lHPmREo8Aziw9ZKbrfRF0_UyO3HTMUHI10xCk.cache
258
272
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/W6/W66CRiH8240LjHOrl-iP_PDAWagFYeHve-h7zmvogFY.cache
259
273
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/XG/XGTA5rMaxWtazw4qqIz73ZTmM5xyfKoJE6ioHzgUeP8.cache
260
274
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/XI/XIB5kXcDIOqve-1dCw9NIeC2sTraclA8MZNWH-Eg-Gc.cache
@@ -273,8 +287,13 @@ files:
273
287
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/dK/dKdJe2pcCVe5ErXkxS4Fb9AjhsXvuZV7W5vODb6jYDM.cache
274
288
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/dL/dLsumIPJ1BortrKmtkZhkTLRQzKjIt7rvdT7wVKQEw8.cache
275
289
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/dQ/dQJtf4Z9ZZdgIXnmMmtdwb042qXZw0Jy94_oUJLjQ0M.cache
290
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/dU/dUmRcXwSY4MjYgk1Cqb7OxoqGK9NscTDTjKTqWl9s60.cache
276
291
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/dY/dYXBxXudeAWyE96PzziKRH1EojVkAcdud7xSTHCzV18.cache
292
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/dq/dq-KdDkS0rh4pHBa26h9r9Ul9rffrU0uRUIclBNH594.cache
277
293
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/eD/eDTtekOUPXw2hKvqwRNuu3muujadtjnxTCxdn1JXJxQ.cache
294
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/eh/ehLlkv5_n4dHM4bHAcdVCQ2SfaFl09uOak7ZOUa2SOI.cache
295
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/f2/f2A9TRHyx-Bmd5XNkRFlADD3gI_vW8hAw8pOQTizp_k.cache
296
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/fD/fD91WD0cHiPy9ZEmvizOuGnR8gAA5lVwskXB-vK4oos.cache
278
297
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/fQ/fQF4Nb2ST_kdJsW1xEb26JjDtN0M2L6MpgaJcwzKKjM.cache
279
298
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/fo/fode1W4tMDtFpZe5FeINHtwaGES8oc1bVkUyVE5hsE0.cache
280
299
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/gL/gL3vp0OIRNPI_2oSsei0xl-u1_DLCZr5aY-rGXJK_bI.cache
@@ -283,17 +302,24 @@ files:
283
302
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/gZ/gZSBHrt-mcVTM9d04uNDtPaoYzDMdcDekcn8gs4s1gs.cache
284
303
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/h8/h8vODE9RP0gop3pyz7IptAaJ6IV8k3HJtsEBCavNdzs.cache
285
304
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/hE/hEgsr1a9ZTofCiuLY5Xfpe9NbkDMxgsZGzyONS7Q6mk.cache
305
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/i-/i-9mOkA2nA5NC-OYwrbFuvfXFLcFL5s-DB5vRuWM8Hk.cache
286
306
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/iD/iDcTlKrrMYW3VupDw4ZcdL3NoDaCS2JiuR7vyOgtiqI.cache
287
307
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/jb/jbxaZ7HlUD_M4HRCDDVn6AY88wVNfK8qQC6WGZeugcQ.cache
308
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/jr/jr9bVNc85QvdVGVHFt2bIiSNXtQQkn-fSmr7Q2gFbvs.cache
288
309
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/kD/kDijzygjFK1LQ1m_gcdnDX1p5MUEu4POB3f25TCjIA8.cache
289
310
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/lE/lEcIbUanrpnsXYY0JbuW2Py7GzFX32ZEINj8uT9TTXk.cache
290
311
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/lR/lR5vlgxKHWKnxT-F_nmvBQgz4Sjphq8sMQPauO3VkCQ.cache
291
312
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/lV/lVbEWtshH9PhN9KdbJQ6s6V0VGcjSRD5NrMk45brK0Y.cache
292
313
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/m1/m12Jp1qK-c8QP1fAcCAH3gKPYqKakGwAHQlzrykt4O0.cache
293
314
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/m6/m6JlAtdEZ7WJ5YUPFDkb2aDjQmuN90hVNI5QRSbQOgU.cache
315
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/m6/m6sRqll-Vk_H9pK8cq28hh3-AsS9CqYZJyrN1llCu-U.cache
294
316
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/nO/nOBqk0fujhBp9RAnozuXFuWlBtlMsi_UwWsyqfuGpgc.cache
317
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/nv/nvNB4s_MucKdL-zH70ueUtL5IrtdrX-90W_HwloQ744.cache
318
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/nw/nwEj_d_NOvzjAGBfdOXw3r1xZLMdoEj-0o2PFri4pnE.cache
295
319
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/oU/oU13u_SXM0UNadLB9ya0oa9xs2-d6cCoMtbapd9Z_r8.cache
296
320
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/od/od1V62SeO78vztS37dh-CVvdiGW-MQxCsc117YltWwU.cache
321
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/pp/ppJ0FRLFipXGAqgFjUjPNB9hPxyjjBWkOA6WSjU4Knc.cache
322
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/qQ/qQRGf10j8-V9wxCyq1IS1UsxyonONSvYlE9U0_ySHiI.cache
297
323
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/qm/qmU2FOfiMLieppKQS8ZB12--RXgFUJMlLPy1YvZFX54.cache
298
324
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/qu/qu8n-TPZgqg5iw3fenMKHfLG_-hrq2BYhSVawDXOYGM.cache
299
325
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/r1/r1owugK9kIfLP5ZpsUBZ56ihX0DuIgmyeX4I41lApoY.cache
@@ -306,9 +332,12 @@ files:
306
332
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/tn/tn0mV9ZacLCzOMYrVEPDhwNMWJsKdReAQuw2VrrRqxg.cache
307
333
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/tn/tnmq0e1BKBoOTFiELZw2hOFQ_tcDhhwNuE1349KIct8.cache
308
334
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/u6/u6pileax9Y82QOXq8weMppwJaCjFAn_YMVdShR1JadY.cache
335
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/ub/ubrZpkeMSGGMThmVNbnBxKqf6uZlbvbX-74TeM2qjkY.cache
309
336
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/vK/vKmDWNjBPqpBw4W3ypKlJIbZi6I4pYXwRR5bMPrazXI.cache
310
337
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/vP/vPCWcZYSAY-60_mny0My8Y_k-WAtemmU3NU5m6nsccc.cache
338
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/w-/w-6okbah0gkpSm4AbK5PIwqY6zcv07Poo9JoK7cg4ZA.cache
311
339
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/wk/wkQHj4SqvRDNITiQxLPbntXY-TCW1crkQhN5BRMoGLk.cache
340
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/xI/xItqwS5KpDlOJnqQzQI-CXJYA0A6gfsBZ29AsBmypwE.cache
312
341
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/yF/yFmF8pySkf4pcqRNBs3J7MRa_iuiTV8g-GZOxbMcajE.cache
313
342
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/yw/ywal2DJbH1zBIkcrB5D5A2A0SzxUxZa_0qQ_fitfuCY.cache
314
343
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/z1/z160gWiw23VnMocixasBhG_-tz62-Fz2F_jrEr06atk.cache
@@ -444,6 +473,8 @@ test_files:
444
473
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Qs/Qs_rijpiJFWJE4uEHuPBC1xfRqhkIrV0hMo8zDMGqTI.cache
445
474
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/s1/s1lxIZZIIS4LwNCJQce7xFcoGVElRR0T4KtRBgHsJjo.cache
446
475
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/RT/RT1_5OfeAqSEryp5KSK3d6TPazplXoDsvB9v8XziExw.cache
476
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/D3/D3IHgyAar4g0H18XxoobTqDZtky89z5TOeSBKW8wLEw.cache
477
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/jr/jr9bVNc85QvdVGVHFt2bIiSNXtQQkn-fSmr7Q2gFbvs.cache
447
478
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/5P/5PYCfeahBKl0iSuwOCidlYsY453rmAPP0ZNNcF67tqQ.cache
448
479
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/dL/dLsumIPJ1BortrKmtkZhkTLRQzKjIt7rvdT7wVKQEw8.cache
449
480
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/-T/-TF4g7ysiPxZNjb74I1D6AzI5XvgNMbr95XXvfHMHIo.cache
@@ -452,12 +483,14 @@ test_files:
452
483
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/sA/sAwLZYrHoysBb4qQ2gi8BThpDTvtKcxVlcvKz1CgGAw.cache
453
484
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/vK/vKmDWNjBPqpBw4W3ypKlJIbZi6I4pYXwRR5bMPrazXI.cache
454
485
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/gL/gL3vp0OIRNPI_2oSsei0xl-u1_DLCZr5aY-rGXJK_bI.cache
486
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/fD/fD91WD0cHiPy9ZEmvizOuGnR8gAA5lVwskXB-vK4oos.cache
455
487
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/ab/abLztZ6RIpy8ik3QuEnFS7pEaWu_8_d2Q_dUNAvZrlY.cache
456
488
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/LX/LX4btAhr-I8jRXhkKHzUc8Faqgbn3ys0o-D0oH6RNF4.cache
457
489
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/7h/7hrD5-Wk9P1k6q3aBjBTI3R7qF7RGHypmsWGE1RfUeI.cache
458
490
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Zy/Zy-fKbxo3HN5HVfV-NBmL6_YaD7p2XsAjHVOl80NSQA.cache
459
491
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/kD/kDijzygjFK1LQ1m_gcdnDX1p5MUEu4POB3f25TCjIA8.cache
460
492
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Ip/IpbN3-B8GDUhWNahkeuBlIwntRm5Fh8Qi0lR6NKGHsQ.cache
493
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/nw/nwEj_d_NOvzjAGBfdOXw3r1xZLMdoEj-0o2PFri4pnE.cache
461
494
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/lR/lR5vlgxKHWKnxT-F_nmvBQgz4Sjphq8sMQPauO3VkCQ.cache
462
495
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/LG/LGLCJcDHu0oVE5-mPjAFByMRf17dScWmYXaA1YpjXlk.cache
463
496
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Pj/PjcfBhdHinscaB3d3l7RLfN3Y4H_bS04MlUVrhgSBX0.cache
@@ -473,36 +506,54 @@ test_files:
473
506
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/fQ/fQF4Nb2ST_kdJsW1xEb26JjDtN0M2L6MpgaJcwzKKjM.cache
474
507
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/5n/5nJ_AmkIC2TFecZP7L8R5Y7dQToE3_8yrUTDDXTnT5g.cache
475
508
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/an/an1XWH0BZHBC6wy3AVX--VKIHIKQreCDOcoFMMokLCE.cache
509
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/i-/i-9mOkA2nA5NC-OYwrbFuvfXFLcFL5s-DB5vRuWM8Hk.cache
476
510
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/8M/8M1wIdL8evq90VzC-9RI5WSBnPSBA7qcqm-w3Wc5zQk.cache
477
511
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/3r/3rUGi1AnbqRyUSqvq_rKBgbV9FHvkouIbN9fEovz0LA.cache
478
512
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Gi/Gixq_YmHosFFDXNI2jeU6PnDa_N3wq6Ln1nYw3SmJMo.cache
479
513
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/z9/z9MaMihYLUcWOw4349_kVcKdO99VFxOxk3SBk0VdSpk.cache
480
514
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/G-/G-8Lslwz1mDDFAtXjhKYd_lwxyvWRJvGScPYLnWXza4.cache
515
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/qQ/qQRGf10j8-V9wxCyq1IS1UsxyonONSvYlE9U0_ySHiI.cache
516
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/Uj/UjaVj8xAGm110YZ_jW3xTaynZuuRo8KGlZj_aI_wnKU.cache
517
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/eh/ehLlkv5_n4dHM4bHAcdVCQ2SfaFl09uOak7ZOUa2SOI.cache
481
518
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/gT/gTvrFJh7Q5YvlX82v262_fyF5eenvG41sbxZ7MwqzMo.cache
519
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/Cm/CmoyYJ08AFtRSvy8ZHYQSehv2bkLOS0Xf0bI3I6fkZc.cache
482
520
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/NP/NPjpVLA29t8KKcRIeX6c0zPNNt9AB0IxQJKdzQVs1DQ.cache
483
521
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/H_/H_AMg2V0XStjP--4CexdXop4Rl3AiH8h4F3l-5i9CT4.cache
484
522
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/O1/O1TPegoZK0bcAJLK1XkYSX-Dcehqm33eqwa864eho6o.cache
485
523
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/HZ/HZlT4NkCNicSxzlB1VNJ2xcAjBb5EdKfX5p5UeFlrGQ.cache
486
524
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/XI/XIB5kXcDIOqve-1dCw9NIeC2sTraclA8MZNWH-Eg-Gc.cache
487
525
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/wk/wkQHj4SqvRDNITiQxLPbntXY-TCW1crkQhN5BRMoGLk.cache
526
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/Jd/JdOtBWcAWsDJwDXbnR69OI3_AfSjPfzV2oeWvkzJCyE.cache
527
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/V_/V_ZC96lHPmREo8Aziw9ZKbrfRF0_UyO3HTMUHI10xCk.cache
528
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/ub/ubrZpkeMSGGMThmVNbnBxKqf6uZlbvbX-74TeM2qjkY.cache
529
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/xI/xItqwS5KpDlOJnqQzQI-CXJYA0A6gfsBZ29AsBmypwE.cache
488
530
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/dK/dKdJe2pcCVe5ErXkxS4Fb9AjhsXvuZV7W5vODb6jYDM.cache
531
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/w-/w-6okbah0gkpSm4AbK5PIwqY6zcv07Poo9JoK7cg4ZA.cache
489
532
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/eD/eDTtekOUPXw2hKvqwRNuu3muujadtjnxTCxdn1JXJxQ.cache
490
533
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Bf/Bf_n1jfIt5qNRlpPc3UZYQjwBLNdHzQr1HjUwN_CPUg.cache
491
534
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/MN/MNBCSdGyIyMratNDaFz7KWwfyjpW_FNpMjpSZf6K818.cache
535
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/IQ/IQTwOY6NGWx2P3Ut3no3dFF8wuPB41lYhCgZcMVJ4Mw.cache
492
536
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/G_/G_eBie5yKayIsXqQ2t82QYclCtPlk8e0C-Ypy3XrWNE.cache
493
537
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/c6/c6-OeCLASq51m3hakyLc_K0gBEz9shanluuN3Q0o0Pc.cache
538
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/Df/Df6WoQgsLTI7ykMN0UF20G0ntZpRgUiG3NY-_TYegpI.cache
494
539
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/2v/2v_enXedOXrk8P_wrCDrUgQBIv8vNep_8WXDcPpOAPk.cache
495
540
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/nO/nOBqk0fujhBp9RAnozuXFuWlBtlMsi_UwWsyqfuGpgc.cache
496
541
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/99/99YOZP_hr5T0vw6WS412byFFyBNV3c3XJH4z9aMwbvw.cache
542
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/dq/dq-KdDkS0rh4pHBa26h9r9Ul9rffrU0uRUIclBNH594.cache
543
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/1h/1hjmejkroeKsAP3yAN3vQCALGPW6pNoIjMdrXF8LdIs.cache
544
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/HH/HHn3wp7W6eXU3aH8S_96s55mIIjGvwfwa05z-WOlIkQ.cache
497
545
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/RR/RRmYgXTQIf1QHewBaH8pACfSf3MJWSvj53F68VKeV1Q.cache
498
546
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/rP/rPV-6Lrf4GGkK48HiRlW9KH7JDu8OSOvbr5NoId5G_Q.cache
499
547
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/5_/5_6aeP7ewY8bCsSqLZXz4K1YqSET8eddKqIJChoaDo0.cache
548
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/m6/m6sRqll-Vk_H9pK8cq28hh3-AsS9CqYZJyrN1llCu-U.cache
500
549
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/m6/m6JlAtdEZ7WJ5YUPFDkb2aDjQmuN90hVNI5QRSbQOgU.cache
550
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/pp/ppJ0FRLFipXGAqgFjUjPNB9hPxyjjBWkOA6WSjU4Knc.cache
501
551
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Mo/MouVQPQhx90B7DGl-_xgHJifHwIKkM1LeSml6LgtgZ8.cache
502
552
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/iD/iDcTlKrrMYW3VupDw4ZcdL3NoDaCS2JiuR7vyOgtiqI.cache
503
553
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/rN/rNXqW6x1bR11OVcs3nPGn0QWihc8p0XmzqRrp4oobTY.cache
504
554
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/h8/h8vODE9RP0gop3pyz7IptAaJ6IV8k3HJtsEBCavNdzs.cache
505
555
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/IN/INEiSFSAFtsUHgd4Lp3oC18Q19q_DoEWfCLqk858T0M.cache
556
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/f2/f2A9TRHyx-Bmd5XNkRFlADD3gI_vW8hAw8pOQTizp_k.cache
506
557
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/O9/O9kviXg4hfnmcC54J0MRPgrAxRWKhnArPSXStaFeI30.cache
507
558
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/4v/4v74yXsoUNW6CAlmFbD2cqJk2BF_Iik0VWsa0h7Asg4.cache
508
559
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/t1/t1LLf5xvHQaFFYEYGv4e0lW5m_B4wfMX8zjc6qJ2kx0.cache
@@ -517,10 +568,13 @@ test_files:
517
568
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/XG/XGTA5rMaxWtazw4qqIz73ZTmM5xyfKoJE6ioHzgUeP8.cache
518
569
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Sy/Sy0zDepYO5qFhcrwEA4dpnv383lLc0aj2FZJAMbpUHI.cache
519
570
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Pb/PbAKo6a2uKJlGVrfzUz0IlxW9_OK0UAbTFZ4c-ebTfM.cache
571
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/0W/0Wz8D0EznVnMnz3ehYaTQfMKdaJteMO3m5mXRu4ArMg.cache
520
572
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/u6/u6pileax9Y82QOXq8weMppwJaCjFAn_YMVdShR1JadY.cache
521
573
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Yw/YwRQST2FfmjmkqBLEM28FNWkAL6PoXPsHrPFgiEdu2Q.cache
522
574
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/W6/W66CRiH8240LjHOrl-iP_PDAWagFYeHve-h7zmvogFY.cache
523
575
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Ro/RoiPZLDHochxcheNmbSflLdiYxeeeB0udVfH90fZMoY.cache
576
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/LL/LLNU-hKAfS_hAJAYEJbJ5pHHPmErgeAH_8W19cybpBk.cache
577
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/-f/-flwuy20EVU9ESo_tKL16xZVvvI7SwQmwVbpMLChyCQ.cache
524
578
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/RC/RCHlDXb7Z_rpK7zeiX-JHO1ytKZsIY-sFwNFhg3Anm8.cache
525
579
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/gP/gPqmECuss-A-RLqP9madF_pKFWHZMwZwmiHDV5Ewr-E.cache
526
580
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/z1/z1ychbk3GbeFb0PifITr8-CRFFt0Hry2CNDPUk-O08g.cache
@@ -544,10 +598,12 @@ test_files:
544
598
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/jb/jbxaZ7HlUD_M4HRCDDVn6AY88wVNfK8qQC6WGZeugcQ.cache
545
599
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/75/75mPJA72MJqvREExf-2D9n1ZKTecwrF79a7UEstdmPg.cache
546
600
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/qm/qmU2FOfiMLieppKQS8ZB12--RXgFUJMlLPy1YvZFX54.cache
601
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/nv/nvNB4s_MucKdL-zH70ueUtL5IrtdrX-90W_HwloQ744.cache
547
602
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/vP/vPCWcZYSAY-60_mny0My8Y_k-WAtemmU3NU5m6nsccc.cache
548
603
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/aU/aUE6fJNaavxKXzcGwcIlC-bv5LhTDELDOn5KTCk3ehk.cache
549
604
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Py/PyLoN42JfBw2PAJQZv3EM_p0_zrlHUSZndlW8_9Sg-s.cache
550
605
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/hE/hEgsr1a9ZTofCiuLY5Xfpe9NbkDMxgsZGzyONS7Q6mk.cache
606
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/dU/dUmRcXwSY4MjYgk1Cqb7OxoqGK9NscTDTjKTqWl9s60.cache
551
607
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/3F/3FwWB3dso0BiDgmo2rJzOmvMIR9ZsrWRwUOMCoWiczg.cache
552
608
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Bb/BbaJr2dSDQ-CoLaPJjh5WAi0189AJulGNC4lzLzVqkU.cache
553
609
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Fz/FzdbPGtKVpZ6nDkCriaiHgtArNZYx1ve40vYH158oRA.cache
@@ -556,8 +612,10 @@ test_files:
556
612
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/H5/H5qdR_G864tFoVyd7cVaE540FPIboV4NrYdS9XVOBQ0.cache
557
613
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/HG/HGGxWu67qhwPzf057coeqynsitAYqFmxubc0qu_8Z70.cache
558
614
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/Yc/YcdiUoRCOarKX8lIPBk4-m5IvXS_7KY9x-Bgu0TOPqc.cache
615
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/SZ/SZe341ZkUNShB-Ocws-WjvDBCoWKnNGimJxAOo1yuz8.cache
559
616
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/3I/3Iv6wudtl40HRz9yxD1L3HZPlhCb-qF1GqubP515ljU.cache
560
617
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/tO/tOxC1i0yU7Pv0qeh6_DIEtXGQGqCu8PcR3ncjUnKAU0.cache
618
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/FV/FVdbk4mFx244QCLaBrYQH8aLlAFnS7oum8x0LVtktLc.cache
561
619
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/CZ/CZq3-YHsX4JRsWjEqR6qrEYF7RFwmX9NrXx1CJZUK1Y.cache
562
620
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/dY/dYXBxXudeAWyE96PzziKRH1EojVkAcdud7xSTHCzV18.cache
563
621
  - spec/dummy/tmp/cache/assets/sprockets/v3.0/yw/ywal2DJbH1zBIkcrB5D5A2A0SzxUxZa_0qQ_fitfuCY.cache