1var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; 2 3var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); 4 5function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 6 7/** 8 * -------------------------------------------------------------------------- 9 * Bootstrap (v4.0.0-beta): collapse.js 10 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 11 * -------------------------------------------------------------------------- 12 */ 13 14var Collapse = function ($) { 15 16 /** 17 * ------------------------------------------------------------------------ 18 * Constants 19 * ------------------------------------------------------------------------ 20 */ 21 22 var NAME = 'collapse'; 23 var VERSION = '4.0.0-beta'; 24 var DATA_KEY = 'bs.collapse'; 25 var EVENT_KEY = '.' + DATA_KEY; 26 var DATA_API_KEY = '.data-api'; 27 var JQUERY_NO_CONFLICT = $.fn[NAME]; 28 var TRANSITION_DURATION = 600; 29 30 var Default = { 31 toggle: true, 32 parent: '' 33 }; 34 35 var DefaultType = { 36 toggle: 'boolean', 37 parent: 'string' 38 }; 39 40 var Event = { 41 SHOW: 'show' + EVENT_KEY, 42 SHOWN: 'shown' + EVENT_KEY, 43 HIDE: 'hide' + EVENT_KEY, 44 HIDDEN: 'hidden' + EVENT_KEY, 45 CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY 46 }; 47 48 var ClassName = { 49 SHOW: 'show', 50 COLLAPSE: 'collapse', 51 COLLAPSING: 'collapsing', 52 COLLAPSED: 'collapsed' 53 }; 54 55 var Dimension = { 56 WIDTH: 'width', 57 HEIGHT: 'height' 58 }; 59 60 var Selector = { 61 ACTIVES: '.show, .collapsing', 62 DATA_TOGGLE: '[data-toggle="collapse"]' 63 64 /** 65 * ------------------------------------------------------------------------ 66 * Class Definition 67 * ------------------------------------------------------------------------ 68 */ 69 70 }; 71 var Collapse = function () { 72 function Collapse(element, config) { 73 _classCallCheck(this, Collapse); 74 75 this._isTransitioning = false; 76 this._element = element; 77 this._config = this._getConfig(config); 78 this._triggerArray = $.makeArray($('[data-toggle="collapse"][href="#' + element.id + '"],' + ('[data-toggle="collapse"][data-target="#' + element.id + '"]'))); 79 var tabToggles = $(Selector.DATA_TOGGLE); 80 for (var i = 0; i < tabToggles.length; i++) { 81 var elem = tabToggles[i]; 82 var selector = Util.getSelectorFromElement(elem); 83 if (selector !== null && $(selector).filter(element).length > 0) { 84 this._triggerArray.push(elem); 85 } 86 } 87 88 this._parent = this._config.parent ? this._getParent() : null; 89 90 if (!this._config.parent) { 91 this._addAriaAndCollapsedClass(this._element, this._triggerArray); 92 } 93 94 if (this._config.toggle) { 95 this.toggle(); 96 } 97 } 98 99 // getters 100 101 // public 102 103 Collapse.prototype.toggle = function toggle() { 104 if ($(this._element).hasClass(ClassName.SHOW)) { 105 this.hide(); 106 } else { 107 this.show(); 108 } 109 }; 110 111 Collapse.prototype.show = function show() { 112 var _this = this; 113 114 if (this._isTransitioning || $(this._element).hasClass(ClassName.SHOW)) { 115 return; 116 } 117 118 var actives = void 0; 119 var activesData = void 0; 120 121 if (this._parent) { 122 actives = $.makeArray($(this._parent).children().children(Selector.ACTIVES)); 123 if (!actives.length) { 124 actives = null; 125 } 126 } 127 128 if (actives) { 129 activesData = $(actives).data(DATA_KEY); 130 if (activesData && activesData._isTransitioning) { 131 return; 132 } 133 } 134 135 var startEvent = $.Event(Event.SHOW); 136 $(this._element).trigger(startEvent); 137 if (startEvent.isDefaultPrevented()) { 138 return; 139 } 140 141 if (actives) { 142 Collapse._jQueryInterface.call($(actives), 'hide'); 143 if (!activesData) { 144 $(actives).data(DATA_KEY, null); 145 } 146 } 147 148 var dimension = this._getDimension(); 149 150 $(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING); 151 152 this._element.style[dimension] = 0; 153 154 if (this._triggerArray.length) { 155 $(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true); 156 } 157 158 this.setTransitioning(true); 159 160 var complete = function complete() { 161 $(_this._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).addClass(ClassName.SHOW); 162 163 _this._element.style[dimension] = ''; 164 165 _this.setTransitioning(false); 166 167 $(_this._element).trigger(Event.SHOWN); 168 }; 169 170 if (!Util.supportsTransitionEnd()) { 171 complete(); 172 return; 173 } 174 175 var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); 176 var scrollSize = 'scroll' + capitalizedDimension; 177 178 $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); 179 180 this._element.style[dimension] = this._element[scrollSize] + 'px'; 181 }; 182 183 Collapse.prototype.hide = function hide() { 184 var _this2 = this; 185 186 if (this._isTransitioning || !$(this._element).hasClass(ClassName.SHOW)) { 187 return; 188 } 189 190 var startEvent = $.Event(Event.HIDE); 191 $(this._element).trigger(startEvent); 192 if (startEvent.isDefaultPrevented()) { 193 return; 194 } 195 196 var dimension = this._getDimension(); 197 198 this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + 'px'; 199 200 Util.reflow(this._element); 201 202 $(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.SHOW); 203 204 if (this._triggerArray.length) { 205 for (var i = 0; i < this._triggerArray.length; i++) { 206 var trigger = this._triggerArray[i]; 207 var selector = Util.getSelectorFromElement(trigger); 208 if (selector !== null) { 209 var $elem = $(selector); 210 if (!$elem.hasClass(ClassName.SHOW)) { 211 $(trigger).addClass(ClassName.COLLAPSED).attr('aria-expanded', false); 212 } 213 } 214 } 215 } 216 217 this.setTransitioning(true); 218 219 var complete = function complete() { 220 _this2.setTransitioning(false); 221 $(_this2._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).trigger(Event.HIDDEN); 222 }; 223 224 this._element.style[dimension] = ''; 225 226 if (!Util.supportsTransitionEnd()) { 227 complete(); 228 return; 229 } 230 231 $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); 232 }; 233 234 Collapse.prototype.setTransitioning = function setTransitioning(isTransitioning) { 235 this._isTransitioning = isTransitioning; 236 }; 237 238 Collapse.prototype.dispose = function dispose() { 239 $.removeData(this._element, DATA_KEY); 240 241 this._config = null; 242 this._parent = null; 243 this._element = null; 244 this._triggerArray = null; 245 this._isTransitioning = null; 246 }; 247 248 // private 249 250 Collapse.prototype._getConfig = function _getConfig(config) { 251 config = $.extend({}, Default, config); 252 config.toggle = Boolean(config.toggle); // coerce string values 253 Util.typeCheckConfig(NAME, config, DefaultType); 254 return config; 255 }; 256 257 Collapse.prototype._getDimension = function _getDimension() { 258 var hasWidth = $(this._element).hasClass(Dimension.WIDTH); 259 return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT; 260 }; 261 262 Collapse.prototype._getParent = function _getParent() { 263 var _this3 = this; 264 265 var parent = $(this._config.parent)[0]; 266 var selector = '[data-toggle="collapse"][data-parent="' + this._config.parent + '"]'; 267 268 $(parent).find(selector).each(function (i, element) { 269 _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]); 270 }); 271 272 return parent; 273 }; 274 275 Collapse.prototype._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) { 276 if (element) { 277 var isOpen = $(element).hasClass(ClassName.SHOW); 278 279 if (triggerArray.length) { 280 $(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen); 281 } 282 } 283 }; 284 285 // static 286 287 Collapse._getTargetFromElement = function _getTargetFromElement(element) { 288 var selector = Util.getSelectorFromElement(element); 289 return selector ? $(selector)[0] : null; 290 }; 291 292 Collapse._jQueryInterface = function _jQueryInterface(config) { 293 return this.each(function () { 294 var $this = $(this); 295 var data = $this.data(DATA_KEY); 296 var _config = $.extend({}, Default, $this.data(), (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' && config); 297 298 if (!data && _config.toggle && /show|hide/.test(config)) { 299 _config.toggle = false;
300 } 301 302 if (!data) { 303 data = new Collapse(this, _config); 304 $this.data(DATA_KEY, data); 305 } 306 307 if (typeof config === 'string') { 308 if (data[config] === undefined) { 309 throw new Error('No method named "' + config + '"'); 310 } 311 data[config](); 312 } 313 }); 314 }; 315 316 _createClass(Collapse, null, [{ 317 key: 'VERSION', 318 get: function get() { 319 return VERSION; 320 } 321 }, { 322 key: 'Default', 323 get: function get() { 324 return Default; 325 } 326 }]); 327 328 return Collapse; 329 }(); 330 331 /** 332 * ------------------------------------------------------------------------ 333 * Data Api implementation 334 * ------------------------------------------------------------------------ 335 */ 336 337 $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { 338 if (!/input|textarea/i.test(event.target.tagName)) { 339 event.preventDefault(); 340 } 341 342 var $trigger = $(this); 343 var selector = Util.getSelectorFromElement(this); 344 $(selector).each(function () { 345 var $target = $(this); 346 var data = $target.data(DATA_KEY); 347 var config = data ? 'toggle' : $trigger.data(); 348 Collapse._jQueryInterface.call($target, config); 349 }); 350 }); 351 352 /** 353 * ------------------------------------------------------------------------ 354 * jQuery 355 * ------------------------------------------------------------------------ 356 */ 357 358 $.fn[NAME] = Collapse._jQueryInterface; 359 $.fn[NAME].Constructor = Collapse; 360 $.fn[NAME].noConflict = function () { 361 $.fn[NAME] = JQUERY_NO_CONFLICT; 362 return Collapse._jQueryInterface; 363 }; 364 365 return Collapse; 366}(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.