ndr_error 1.1.3 → 1.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (98) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/ndr_error/ndr_error.js +1 -3
  3. data/app/assets/stylesheets/ndr_error/ndr_error.scss +1 -37
  4. data/app/models/ndr_error/fingerprint.rb +5 -10
  5. data/lib/ndr_error/version.rb +1 -1
  6. metadata +5 -111
  7. data/app/assets/fonts/ndr_error/bootstrap/glyphicons-halflings-regular.eot +0 -0
  8. data/app/assets/fonts/ndr_error/bootstrap/glyphicons-halflings-regular.svg +0 -229
  9. data/app/assets/fonts/ndr_error/bootstrap/glyphicons-halflings-regular.ttf +0 -0
  10. data/app/assets/fonts/ndr_error/bootstrap/glyphicons-halflings-regular.woff +0 -0
  11. data/app/assets/images/ndr_error/bootstrap/glyphicons-halflings-white.png +0 -0
  12. data/app/assets/images/ndr_error/bootstrap/glyphicons-halflings.png +0 -0
  13. data/app/assets/javascripts/ndr_error/bootstrap/bootstrap-affix.js +0 -142
  14. data/app/assets/javascripts/ndr_error/bootstrap/bootstrap-alert.js +0 -92
  15. data/app/assets/javascripts/ndr_error/bootstrap/bootstrap-button.js +0 -110
  16. data/app/assets/javascripts/ndr_error/bootstrap/bootstrap-carousel.js +0 -223
  17. data/app/assets/javascripts/ndr_error/bootstrap/bootstrap-collapse.js +0 -170
  18. data/app/assets/javascripts/ndr_error/bootstrap/bootstrap-dropdown.js +0 -151
  19. data/app/assets/javascripts/ndr_error/bootstrap/bootstrap-modal.js +0 -280
  20. data/app/assets/javascripts/ndr_error/bootstrap/bootstrap-popover.js +0 -113
  21. data/app/assets/javascripts/ndr_error/bootstrap/bootstrap-scrollspy.js +0 -170
  22. data/app/assets/javascripts/ndr_error/bootstrap/bootstrap-tab.js +0 -128
  23. data/app/assets/javascripts/ndr_error/bootstrap/bootstrap-tooltip.js +0 -457
  24. data/app/assets/javascripts/ndr_error/bootstrap/bootstrap-transition.js +0 -59
  25. data/app/assets/javascripts/ndr_error/bootstrap/bootstrap-typeahead.js +0 -1782
  26. data/app/assets/javascripts/ndr_error/bootstrap/bootstrap.js +0 -13
  27. data/app/assets/javascripts/ndr_error/jquery-1.11.3.min.js +0 -5
  28. data/app/assets/stylesheets/ndr_error/bootstrap/_alerts.scss +0 -68
  29. data/app/assets/stylesheets/ndr_error/bootstrap/_badges.scss +0 -57
  30. data/app/assets/stylesheets/ndr_error/bootstrap/_bootstrap-sprockets.scss +0 -13
  31. data/app/assets/stylesheets/ndr_error/bootstrap/_breadcrumbs.scss +0 -26
  32. data/app/assets/stylesheets/ndr_error/bootstrap/_button-groups.scss +0 -240
  33. data/app/assets/stylesheets/ndr_error/bootstrap/_buttons.scss +0 -157
  34. data/app/assets/stylesheets/ndr_error/bootstrap/_carousel.scss +0 -243
  35. data/app/assets/stylesheets/ndr_error/bootstrap/_close.scss +0 -35
  36. data/app/assets/stylesheets/ndr_error/bootstrap/_code.scss +0 -68
  37. data/app/assets/stylesheets/ndr_error/bootstrap/_component-animations.scss +0 -35
  38. data/app/assets/stylesheets/ndr_error/bootstrap/_dropdowns.scss +0 -215
  39. data/app/assets/stylesheets/ndr_error/bootstrap/_forms.scss +0 -538
  40. data/app/assets/stylesheets/ndr_error/bootstrap/_glyphicons.scss +0 -233
  41. data/app/assets/stylesheets/ndr_error/bootstrap/_grid.scss +0 -84
  42. data/app/assets/stylesheets/ndr_error/bootstrap/_input-groups.scss +0 -166
  43. data/app/assets/stylesheets/ndr_error/bootstrap/_jumbotron.scss +0 -48
  44. data/app/assets/stylesheets/ndr_error/bootstrap/_labels.scss +0 -66
  45. data/app/assets/stylesheets/ndr_error/bootstrap/_list-group.scss +0 -131
  46. data/app/assets/stylesheets/ndr_error/bootstrap/_media.scss +0 -56
  47. data/app/assets/stylesheets/ndr_error/bootstrap/_mixins.scss +0 -39
  48. data/app/assets/stylesheets/ndr_error/bootstrap/_modals.scss +0 -150
  49. data/app/assets/stylesheets/ndr_error/bootstrap/_navbar.scss +0 -659
  50. data/app/assets/stylesheets/ndr_error/bootstrap/_navs.scss +0 -242
  51. data/app/assets/stylesheets/ndr_error/bootstrap/_normalize.scss +0 -425
  52. data/app/assets/stylesheets/ndr_error/bootstrap/_pager.scss +0 -55
  53. data/app/assets/stylesheets/ndr_error/bootstrap/_pagination.scss +0 -88
  54. data/app/assets/stylesheets/ndr_error/bootstrap/_panels.scss +0 -243
  55. data/app/assets/stylesheets/ndr_error/bootstrap/_popovers.scss +0 -133
  56. data/app/assets/stylesheets/ndr_error/bootstrap/_print.scss +0 -101
  57. data/app/assets/stylesheets/ndr_error/bootstrap/_progress-bars.scss +0 -105
  58. data/app/assets/stylesheets/ndr_error/bootstrap/_responsive-embed.scss +0 -34
  59. data/app/assets/stylesheets/ndr_error/bootstrap/_responsive-utilities.scss +0 -174
  60. data/app/assets/stylesheets/ndr_error/bootstrap/_scaffolding.scss +0 -150
  61. data/app/assets/stylesheets/ndr_error/bootstrap/_tables.scss +0 -233
  62. data/app/assets/stylesheets/ndr_error/bootstrap/_theme.scss +0 -258
  63. data/app/assets/stylesheets/ndr_error/bootstrap/_thumbnails.scss +0 -38
  64. data/app/assets/stylesheets/ndr_error/bootstrap/_tooltip.scss +0 -95
  65. data/app/assets/stylesheets/ndr_error/bootstrap/_type.scss +0 -304
  66. data/app/assets/stylesheets/ndr_error/bootstrap/_utilities.scss +0 -57
  67. data/app/assets/stylesheets/ndr_error/bootstrap/_variables.scss +0 -846
  68. data/app/assets/stylesheets/ndr_error/bootstrap/_wells.scss +0 -29
  69. data/app/assets/stylesheets/ndr_error/bootstrap/bootstrap.scss +0 -53
  70. data/app/assets/stylesheets/ndr_error/bootstrap/mixins/_alerts.scss +0 -14
  71. data/app/assets/stylesheets/ndr_error/bootstrap/mixins/_background-variant.scss +0 -11
  72. data/app/assets/stylesheets/ndr_error/bootstrap/mixins/_border-radius.scss +0 -18
  73. data/app/assets/stylesheets/ndr_error/bootstrap/mixins/_buttons.scss +0 -50
  74. data/app/assets/stylesheets/ndr_error/bootstrap/mixins/_center-block.scss +0 -7
  75. data/app/assets/stylesheets/ndr_error/bootstrap/mixins/_clearfix.scss +0 -22
  76. data/app/assets/stylesheets/ndr_error/bootstrap/mixins/_forms.scss +0 -84
  77. data/app/assets/stylesheets/ndr_error/bootstrap/mixins/_gradients.scss +0 -58
  78. data/app/assets/stylesheets/ndr_error/bootstrap/mixins/_grid-framework.scss +0 -81
  79. data/app/assets/stylesheets/ndr_error/bootstrap/mixins/_grid.scss +0 -122
  80. data/app/assets/stylesheets/ndr_error/bootstrap/mixins/_hide-text.scss +0 -21
  81. data/app/assets/stylesheets/ndr_error/bootstrap/mixins/_image.scss +0 -34
  82. data/app/assets/stylesheets/ndr_error/bootstrap/mixins/_labels.scss +0 -12
  83. data/app/assets/stylesheets/ndr_error/bootstrap/mixins/_list-group.scss +0 -31
  84. data/app/assets/stylesheets/ndr_error/bootstrap/mixins/_nav-divider.scss +0 -10
  85. data/app/assets/stylesheets/ndr_error/bootstrap/mixins/_nav-vertical-align.scss +0 -9
  86. data/app/assets/stylesheets/ndr_error/bootstrap/mixins/_opacity.scss +0 -8
  87. data/app/assets/stylesheets/ndr_error/bootstrap/mixins/_pagination.scss +0 -23
  88. data/app/assets/stylesheets/ndr_error/bootstrap/mixins/_panels.scss +0 -24
  89. data/app/assets/stylesheets/ndr_error/bootstrap/mixins/_progress-bar.scss +0 -10
  90. data/app/assets/stylesheets/ndr_error/bootstrap/mixins/_reset-filter.scss +0 -8
  91. data/app/assets/stylesheets/ndr_error/bootstrap/mixins/_resize.scss +0 -6
  92. data/app/assets/stylesheets/ndr_error/bootstrap/mixins/_responsive-visibility.scss +0 -21
  93. data/app/assets/stylesheets/ndr_error/bootstrap/mixins/_size.scss +0 -10
  94. data/app/assets/stylesheets/ndr_error/bootstrap/mixins/_tab-focus.scss +0 -9
  95. data/app/assets/stylesheets/ndr_error/bootstrap/mixins/_table-row.scss +0 -28
  96. data/app/assets/stylesheets/ndr_error/bootstrap/mixins/_text-emphasis.scss +0 -11
  97. data/app/assets/stylesheets/ndr_error/bootstrap/mixins/_text-overflow.scss +0 -8
  98. data/app/assets/stylesheets/ndr_error/bootstrap/mixins/_vendor-prefixes.scss +0 -219
@@ -1,142 +0,0 @@
1
- /* ========================================================================
2
- * Bootstrap: affix.js v3.2.0
3
- * http://getbootstrap.com/javascript/#affix
4
- * ========================================================================
5
- * Copyright 2011-2014 Twitter, Inc.
6
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
7
- * ======================================================================== */
8
-
9
-
10
- +function ($) {
11
- 'use strict';
12
-
13
- // AFFIX CLASS DEFINITION
14
- // ======================
15
-
16
- var Affix = function (element, options) {
17
- this.options = $.extend({}, Affix.DEFAULTS, options)
18
-
19
- this.$target = $(this.options.target)
20
- .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
21
- .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))
22
-
23
- this.$element = $(element)
24
- this.affixed =
25
- this.unpin =
26
- this.pinnedOffset = null
27
-
28
- this.checkPosition()
29
- }
30
-
31
- Affix.VERSION = '3.2.0'
32
-
33
- Affix.RESET = 'affix affix-top affix-bottom'
34
-
35
- Affix.DEFAULTS = {
36
- offset: 0,
37
- target: window
38
- }
39
-
40
- Affix.prototype.getPinnedOffset = function () {
41
- if (this.pinnedOffset) return this.pinnedOffset
42
- this.$element.removeClass(Affix.RESET).addClass('affix')
43
- var scrollTop = this.$target.scrollTop()
44
- var position = this.$element.offset()
45
- return (this.pinnedOffset = position.top - scrollTop)
46
- }
47
-
48
- Affix.prototype.checkPositionWithEventLoop = function () {
49
- setTimeout($.proxy(this.checkPosition, this), 1)
50
- }
51
-
52
- Affix.prototype.checkPosition = function () {
53
- if (!this.$element.is(':visible')) return
54
-
55
- var scrollHeight = $(document).height()
56
- var scrollTop = this.$target.scrollTop()
57
- var position = this.$element.offset()
58
- var offset = this.options.offset
59
- var offsetTop = offset.top
60
- var offsetBottom = offset.bottom
61
-
62
- if (typeof offset != 'object') offsetBottom = offsetTop = offset
63
- if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)
64
- if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)
65
-
66
- var affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ? false :
67
- offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? 'bottom' :
68
- offsetTop != null && (scrollTop <= offsetTop) ? 'top' : false
69
-
70
- if (this.affixed === affix) return
71
- if (this.unpin != null) this.$element.css('top', '')
72
-
73
- var affixType = 'affix' + (affix ? '-' + affix : '')
74
- var e = $.Event(affixType + '.bs.affix')
75
-
76
- this.$element.trigger(e)
77
-
78
- if (e.isDefaultPrevented()) return
79
-
80
- this.affixed = affix
81
- this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null
82
-
83
- this.$element
84
- .removeClass(Affix.RESET)
85
- .addClass(affixType)
86
- .trigger($.Event(affixType.replace('affix', 'affixed')))
87
-
88
- if (affix == 'bottom') {
89
- this.$element.offset({
90
- top: scrollHeight - this.$element.height() - offsetBottom
91
- })
92
- }
93
- }
94
-
95
-
96
- // AFFIX PLUGIN DEFINITION
97
- // =======================
98
-
99
- function Plugin(option) {
100
- return this.each(function () {
101
- var $this = $(this)
102
- var data = $this.data('bs.affix')
103
- var options = typeof option == 'object' && option
104
-
105
- if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
106
- if (typeof option == 'string') data[option]()
107
- })
108
- }
109
-
110
- var old = $.fn.affix
111
-
112
- $.fn.affix = Plugin
113
- $.fn.affix.Constructor = Affix
114
-
115
-
116
- // AFFIX NO CONFLICT
117
- // =================
118
-
119
- $.fn.affix.noConflict = function () {
120
- $.fn.affix = old
121
- return this
122
- }
123
-
124
-
125
- // AFFIX DATA-API
126
- // ==============
127
-
128
- $(window).on('load', function () {
129
- $('[data-spy="affix"]').each(function () {
130
- var $spy = $(this)
131
- var data = $spy.data()
132
-
133
- data.offset = data.offset || {}
134
-
135
- if (data.offsetBottom) data.offset.bottom = data.offsetBottom
136
- if (data.offsetTop) data.offset.top = data.offsetTop
137
-
138
- Plugin.call($spy, data)
139
- })
140
- })
141
-
142
- }(jQuery);
@@ -1,92 +0,0 @@
1
- /* ========================================================================
2
- * Bootstrap: alert.js v3.2.0
3
- * http://getbootstrap.com/javascript/#alerts
4
- * ========================================================================
5
- * Copyright 2011-2014 Twitter, Inc.
6
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
7
- * ======================================================================== */
8
-
9
-
10
- +function ($) {
11
- 'use strict';
12
-
13
- // ALERT CLASS DEFINITION
14
- // ======================
15
-
16
- var dismiss = '[data-dismiss="alert"]'
17
- var Alert = function (el) {
18
- $(el).on('click', dismiss, this.close)
19
- }
20
-
21
- Alert.VERSION = '3.2.0'
22
-
23
- Alert.prototype.close = function (e) {
24
- var $this = $(this)
25
- var selector = $this.attr('data-target')
26
-
27
- if (!selector) {
28
- selector = $this.attr('href')
29
- selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
30
- }
31
-
32
- var $parent = $(selector)
33
-
34
- if (e) e.preventDefault()
35
-
36
- if (!$parent.length) {
37
- $parent = $this.hasClass('alert') ? $this : $this.parent()
38
- }
39
-
40
- $parent.trigger(e = $.Event('close.bs.alert'))
41
-
42
- if (e.isDefaultPrevented()) return
43
-
44
- $parent.removeClass('in')
45
-
46
- function removeElement() {
47
- // detach from parent, fire event then clean up data
48
- $parent.detach().trigger('closed.bs.alert').remove()
49
- }
50
-
51
- $.support.transition && $parent.hasClass('fade') ?
52
- $parent
53
- .one('bsTransitionEnd', removeElement)
54
- .emulateTransitionEnd(150) :
55
- removeElement()
56
- }
57
-
58
-
59
- // ALERT PLUGIN DEFINITION
60
- // =======================
61
-
62
- function Plugin(option) {
63
- return this.each(function () {
64
- var $this = $(this)
65
- var data = $this.data('bs.alert')
66
-
67
- if (!data) $this.data('bs.alert', (data = new Alert(this)))
68
- if (typeof option == 'string') data[option].call($this)
69
- })
70
- }
71
-
72
- var old = $.fn.alert
73
-
74
- $.fn.alert = Plugin
75
- $.fn.alert.Constructor = Alert
76
-
77
-
78
- // ALERT NO CONFLICT
79
- // =================
80
-
81
- $.fn.alert.noConflict = function () {
82
- $.fn.alert = old
83
- return this
84
- }
85
-
86
-
87
- // ALERT DATA-API
88
- // ==============
89
-
90
- $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
91
-
92
- }(jQuery);
@@ -1,110 +0,0 @@
1
- /* ========================================================================
2
- * Bootstrap: button.js v3.2.0
3
- * http://getbootstrap.com/javascript/#buttons
4
- * ========================================================================
5
- * Copyright 2011-2014 Twitter, Inc.
6
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
7
- * ======================================================================== */
8
-
9
-
10
- +function ($) {
11
- 'use strict';
12
-
13
- // BUTTON PUBLIC CLASS DEFINITION
14
- // ==============================
15
-
16
- var Button = function (element, options) {
17
- this.$element = $(element)
18
- this.options = $.extend({}, Button.DEFAULTS, options)
19
- this.isLoading = false
20
- }
21
-
22
- Button.VERSION = '3.2.0'
23
-
24
- Button.DEFAULTS = {
25
- loadingText: 'loading...'
26
- }
27
-
28
- Button.prototype.setState = function (state) {
29
- var d = 'disabled'
30
- var $el = this.$element
31
- var val = $el.is('input') ? 'val' : 'html'
32
- var data = $el.data()
33
-
34
- state = state + 'Text'
35
-
36
- if (data.resetText == null) $el.data('resetText', $el[val]())
37
-
38
- $el[val](data[state] == null ? this.options[state] : data[state])
39
-
40
- // push to event loop to allow forms to submit
41
- setTimeout($.proxy(function () {
42
- if (state == 'loadingText') {
43
- this.isLoading = true
44
- $el.addClass(d).attr(d, d)
45
- } else if (this.isLoading) {
46
- this.isLoading = false
47
- $el.removeClass(d).removeAttr(d)
48
- }
49
- }, this), 0)
50
- }
51
-
52
- Button.prototype.toggle = function () {
53
- var changed = true
54
- var $parent = this.$element.closest('[data-toggle="buttons"]')
55
-
56
- if ($parent.length) {
57
- var $input = this.$element.find('input')
58
- if ($input.prop('type') == 'radio') {
59
- if ($input.prop('checked') && this.$element.hasClass('active')) changed = false
60
- else $parent.find('.active').removeClass('active')
61
- }
62
- if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')
63
- }
64
-
65
- if (changed) this.$element.toggleClass('active')
66
- }
67
-
68
-
69
- // BUTTON PLUGIN DEFINITION
70
- // ========================
71
-
72
- function Plugin(option) {
73
- return this.each(function () {
74
- var $this = $(this)
75
- var data = $this.data('bs.button')
76
- var options = typeof option == 'object' && option
77
-
78
- if (!data) $this.data('bs.button', (data = new Button(this, options)))
79
-
80
- if (option == 'toggle') data.toggle()
81
- else if (option) data.setState(option)
82
- })
83
- }
84
-
85
- var old = $.fn.button
86
-
87
- $.fn.button = Plugin
88
- $.fn.button.Constructor = Button
89
-
90
-
91
- // BUTTON NO CONFLICT
92
- // ==================
93
-
94
- $.fn.button.noConflict = function () {
95
- $.fn.button = old
96
- return this
97
- }
98
-
99
-
100
- // BUTTON DATA-API
101
- // ===============
102
-
103
- $(document).on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
104
- var $btn = $(e.target)
105
- if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
106
- Plugin.call($btn, 'toggle')
107
- e.preventDefault()
108
- })
109
-
110
- }(jQuery);
@@ -1,223 +0,0 @@
1
- /* ========================================================================
2
- * Bootstrap: carousel.js v3.2.0
3
- * http://getbootstrap.com/javascript/#carousel
4
- * ========================================================================
5
- * Copyright 2011-2014 Twitter, Inc.
6
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
7
- * ======================================================================== */
8
-
9
-
10
- +function ($) {
11
- 'use strict';
12
-
13
- // CAROUSEL CLASS DEFINITION
14
- // =========================
15
-
16
- var Carousel = function (element, options) {
17
- this.$element = $(element).on('keydown.bs.carousel', $.proxy(this.keydown, this))
18
- this.$indicators = this.$element.find('.carousel-indicators')
19
- this.options = options
20
- this.paused =
21
- this.sliding =
22
- this.interval =
23
- this.$active =
24
- this.$items = null
25
-
26
- this.options.pause == 'hover' && this.$element
27
- .on('mouseenter.bs.carousel', $.proxy(this.pause, this))
28
- .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
29
- }
30
-
31
- Carousel.VERSION = '3.2.0'
32
-
33
- Carousel.DEFAULTS = {
34
- interval: 5000,
35
- pause: 'hover',
36
- wrap: true
37
- }
38
-
39
- Carousel.prototype.keydown = function (e) {
40
- switch (e.which) {
41
- case 37: this.prev(); break
42
- case 39: this.next(); break
43
- default: return
44
- }
45
-
46
- e.preventDefault()
47
- }
48
-
49
- Carousel.prototype.cycle = function (e) {
50
- e || (this.paused = false)
51
-
52
- this.interval && clearInterval(this.interval)
53
-
54
- this.options.interval
55
- && !this.paused
56
- && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
57
-
58
- return this
59
- }
60
-
61
- Carousel.prototype.getItemIndex = function (item) {
62
- this.$items = item.parent().children('.item')
63
- return this.$items.index(item || this.$active)
64
- }
65
-
66
- Carousel.prototype.to = function (pos) {
67
- var that = this
68
- var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))
69
-
70
- if (pos > (this.$items.length - 1) || pos < 0) return
71
-
72
- if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid"
73
- if (activeIndex == pos) return this.pause().cycle()
74
-
75
- return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))
76
- }
77
-
78
- Carousel.prototype.pause = function (e) {
79
- e || (this.paused = true)
80
-
81
- if (this.$element.find('.next, .prev').length && $.support.transition) {
82
- this.$element.trigger($.support.transition.end)
83
- this.cycle(true)
84
- }
85
-
86
- this.interval = clearInterval(this.interval)
87
-
88
- return this
89
- }
90
-
91
- Carousel.prototype.next = function () {
92
- if (this.sliding) return
93
- return this.slide('next')
94
- }
95
-
96
- Carousel.prototype.prev = function () {
97
- if (this.sliding) return
98
- return this.slide('prev')
99
- }
100
-
101
- Carousel.prototype.slide = function (type, next) {
102
- var $active = this.$element.find('.item.active')
103
- var $next = next || $active[type]()
104
- var isCycling = this.interval
105
- var direction = type == 'next' ? 'left' : 'right'
106
- var fallback = type == 'next' ? 'first' : 'last'
107
- var that = this
108
-
109
- if (!$next.length) {
110
- if (!this.options.wrap) return
111
- $next = this.$element.find('.item')[fallback]()
112
- }
113
-
114
- if ($next.hasClass('active')) return (this.sliding = false)
115
-
116
- var relatedTarget = $next[0]
117
- var slideEvent = $.Event('slide.bs.carousel', {
118
- relatedTarget: relatedTarget,
119
- direction: direction
120
- })
121
- this.$element.trigger(slideEvent)
122
- if (slideEvent.isDefaultPrevented()) return
123
-
124
- this.sliding = true
125
-
126
- isCycling && this.pause()
127
-
128
- if (this.$indicators.length) {
129
- this.$indicators.find('.active').removeClass('active')
130
- var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])
131
- $nextIndicator && $nextIndicator.addClass('active')
132
- }
133
-
134
- var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid"
135
- if ($.support.transition && this.$element.hasClass('slide')) {
136
- $next.addClass(type)
137
- $next[0].offsetWidth // force reflow
138
- $active.addClass(direction)
139
- $next.addClass(direction)
140
- $active
141
- .one('bsTransitionEnd', function () {
142
- $next.removeClass([type, direction].join(' ')).addClass('active')
143
- $active.removeClass(['active', direction].join(' '))
144
- that.sliding = false
145
- setTimeout(function () {
146
- that.$element.trigger(slidEvent)
147
- }, 0)
148
- })
149
- .emulateTransitionEnd($active.css('transition-duration').slice(0, -1) * 1000)
150
- } else {
151
- $active.removeClass('active')
152
- $next.addClass('active')
153
- this.sliding = false
154
- this.$element.trigger(slidEvent)
155
- }
156
-
157
- isCycling && this.cycle()
158
-
159
- return this
160
- }
161
-
162
-
163
- // CAROUSEL PLUGIN DEFINITION
164
- // ==========================
165
-
166
- function Plugin(option) {
167
- return this.each(function () {
168
- var $this = $(this)
169
- var data = $this.data('bs.carousel')
170
- var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
171
- var action = typeof option == 'string' ? option : options.slide
172
-
173
- if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
174
- if (typeof option == 'number') data.to(option)
175
- else if (action) data[action]()
176
- else if (options.interval) data.pause().cycle()
177
- })
178
- }
179
-
180
- var old = $.fn.carousel
181
-
182
- $.fn.carousel = Plugin
183
- $.fn.carousel.Constructor = Carousel
184
-
185
-
186
- // CAROUSEL NO CONFLICT
187
- // ====================
188
-
189
- $.fn.carousel.noConflict = function () {
190
- $.fn.carousel = old
191
- return this
192
- }
193
-
194
-
195
- // CAROUSEL DATA-API
196
- // =================
197
-
198
- $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) {
199
- var href
200
- var $this = $(this)
201
- var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
202
- if (!$target.hasClass('carousel')) return
203
- var options = $.extend({}, $target.data(), $this.data())
204
- var slideIndex = $this.attr('data-slide-to')
205
- if (slideIndex) options.interval = false
206
-
207
- Plugin.call($target, options)
208
-
209
- if (slideIndex) {
210
- $target.data('bs.carousel').to(slideIndex)
211
- }
212
-
213
- e.preventDefault()
214
- })
215
-
216
- $(window).on('load', function () {
217
- $('[data-ride="carousel"]').each(function () {
218
- var $carousel = $(this)
219
- Plugin.call($carousel, $carousel.data())
220
- })
221
- })
222
-
223
- }(jQuery);