vendor: 2,700 bytes, lines 1-62
1"use strict"; 2(() => { 3 var __create = Object.create; 4 var __defProp = Object.defineProperty; 5 var __getOwnPropDesc = Object.getOwnPropertyDescriptor; 6 var __getOwnPropNames = Object.getOwnPropertyNames; 7 var __getOwnPropSymbols = Object.getOwnPropertySymbols; 8 var __getProtoOf = Object.getPrototypeOf; 9 var __hasOwnProp = Object.prototype.hasOwnProperty; 10 var __propIsEnum = Object.prototype.propertyIsEnumerable; 11 var __pow = Math.pow; 12 var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; 13 var __spreadValues = (a, b) => { 14 for (var prop in b || (b = {})) 15 if (__hasOwnProp.call(b, prop)) 16 __defNormalProp(a, prop, b[prop]); 17 if (__getOwnPropSymbols) 18 for (var prop of __getOwnPropSymbols(b)) { 19 if (__propIsEnum.call(b, prop)) 20 __defNormalProp(a, prop, b[prop]); 21 } 22 return a; 23 }; 24 var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { 25 get: (a, b) => (typeof require !== "undefined" ? require : a)[b] 26 }) : x)(function(x) { 27 if (typeof require !== "undefined") return require.apply(this, arguments); 28 throw Error('Dynamic require of "' + x + '" is not supported'); 29 }); 30 var __esm = (fn, res, err) => function __init() { 31 if (err) throw err[0]; 32 try { 33 return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; 34 } catch (e) { 35 throw err = [e], e; 36 } 37 }; 38 var __commonJS = (cb, mod) => function __require2() { 39 try { 40 return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; 41 } catch (e) { 42 throw mod = 0, e; 43 } 44 }; 45 var __copyProps = (to, from, except, desc) => { 46 if (from && typeof from === "object" || typeof from === "function") { 47 for (let key of __getOwnPropNames(from)) 48 if (!__hasOwnProp.call(to, key) && key !== except) 49 __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); 50 } 51 return to; 52 }; 53 var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( 54 // If the importer is in node compatibility mode or this is not an ESM 55 // file that has been converted to a CommonJS file using a Babel- 56 // compatible transform (i.e. "__esModule" has not been set), then set 57 // "default" to the CommonJS "module.exports" for node compatibility. 58 isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, 59 mod 60 )); 61 62
vendor: 3,956 bytes, lines 62-164
62// node_modules/base64-js/index.js 63 var require_base64_js = __commonJS({ 64 "node_modules/base64-js/index.js"(exports) { 65 "use strict"; 66 init_esbuild_shims(); 67 exports.byteLength = byteLength; 68 exports.toByteArray = toByteArray; 69 exports.fromByteArray = fromByteArray; 70 var lookup = []; 71 var revLookup = []; 72 var Arr = typeof Uint8Array !== "undefined" ? Uint8Array : Array; 73 var code = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; 74 for (i = 0, len = code.length; i < len; ++i) { 75 lookup[i] = code[i]; 76 revLookup[code.charCodeAt(i)] = i; 77 } 78 var i; 79 var len; 80 revLookup["-".charCodeAt(0)] = 62; 81 revLookup["_".charCodeAt(0)] = 63; 82 function getLens(b64) { 83 var len2 = b64.length; 84 if (len2 % 4 > 0) { 85 throw new Error("Invalid string. Length must be a multiple of 4"); 86 } 87 var validLen = b64.indexOf("="); 88 if (validLen === -1) validLen = len2; 89 var placeHoldersLen = validLen === len2 ? 0 : 4 - validLen % 4; 90 return [validLen, placeHoldersLen]; 91 } 92 function byteLength(b64) { 93 var lens = getLens(b64); 94 var validLen = lens[0]; 95 var placeHoldersLen = lens[1]; 96 return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen; 97 } 98 function _byteLength(b64, validLen, placeHoldersLen) { 99 return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen; 100 } 101 function toByteArray(b64) { 102 var tmp; 103 var lens = getLens(b64); 104 var validLen = lens[0]; 105 var placeHoldersLen = lens[1]; 106 var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)); 107 var curByte = 0; 108 var len2 = placeHoldersLen > 0 ? validLen - 4 : validLen; 109 var i2; 110 for (i2 = 0; i2 < len2; i2 += 4) { 111 tmp = revLookup[b64.charCodeAt(i2)] << 18 | revLookup[b64.charCodeAt(i2 + 1)] << 12 | revLookup[b64.charCodeAt(i2 + 2)] << 6 | revLookup[b64.charCodeAt(i2 + 3)]; 112 arr[curByte++] = tmp >> 16 & 255; 113 arr[curByte++] = tmp >> 8 & 255; 114 arr[curByte++] = tmp & 255; 115 } 116 if (placeHoldersLen === 2) { 117 tmp = revLookup[b64.charCodeAt(i2)] << 2 | revLookup[b64.charCodeAt(i2 + 1)] >> 4; 118 arr[curByte++] = tmp & 255; 119 } 120 if (placeHoldersLen === 1) { 121 tmp = revLookup[b64.charCodeAt(i2)] << 10 | revLookup[b64.charCodeAt(i2 + 1)] << 4 | revLookup[b64.charCodeAt(i2 + 2)] >> 2; 122 arr[curByte++] = tmp >> 8 & 255; 123 arr[curByte++] = tmp & 255; 124 } 125 return arr; 126 } 127 function tripletToBase64(num) { 128 return lookup[num >> 18 & 63] + lookup[num >> 12 & 63] + lookup[num >> 6 & 63] + lookup[num & 63]; 129 } 130 function encodeChunk(uint8, start, end) { 131 var tmp; 132 var output = []; 133 for (var i2 = start; i2 < end; i2 += 3) { 134 tmp = (uint8[i2] << 16 & 16711680) + (uint8[i2 + 1] << 8 & 65280) + (uint8[i2 + 2] & 255); 135 output.push(tripletToBase64(tmp)); 136 } 137 return output.join(""); 138 } 139 function fromByteArray(uint8) { 140 var tmp; 141 var len2 = uint8.length; 142 var extraBytes = len2 % 3; 143 var parts = []; 144 var maxChunkLength = 16383; 145 for (var i2 = 0, len22 = len2 - extraBytes; i2 < len22; i2 += maxChunkLength) { 146 parts.push(encodeChunk(uint8, i2, i2 + maxChunkLength > len22 ? len22 : i2 + maxChunkLength)); 147 } 148 if (extraBytes === 1) { 149 tmp = uint8[len2 - 1]; 150 parts.push( 151 lookup[tmp >> 2] + lookup[tmp << 4 & 63] + "==" 152 ); 153 } else if (extraBytes === 2) { 154 tmp = (uint8[len2 - 2] << 8) + uint8[len2 - 1]; 155 parts.push( 156 lookup[tmp >> 10] + lookup[tmp >> 4 & 63] + lookup[tmp << 2 & 63] + "=" 157 ); 158 } 159 return parts.join(""); 160 } 161 } 162 }); 163 164
vendor: 2,698 bytes, lines 164-248
164// node_modules/ieee754/index.js 165 var require_ieee754 = __commonJS({ 166 "node_modules/ieee754/index.js"(exports) { 167 init_esbuild_shims(); 168 exports.read = function(buffer, offset, isLE, mLen, nBytes) { 169 var e, m; 170 var eLen = nBytes * 8 - mLen - 1; 171 var eMax = (1 << eLen) - 1; 172 var eBias = eMax >> 1; 173 var nBits = -7; 174 var i = isLE ? nBytes - 1 : 0; 175 var d = isLE ? -1 : 1; 176 var s = buffer[offset + i]; 177 i += d; 178 e = s & (1 << -nBits) - 1; 179 s >>= -nBits; 180 nBits += eLen; 181 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) { 182 } 183 m = e & (1 << -nBits) - 1; 184 e >>= -nBits; 185 nBits += mLen; 186 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) { 187 } 188 if (e === 0) { 189 e = 1 - eBias; 190 } else if (e === eMax) { 191 return m ? NaN : (s ? -1 : 1) * Infinity; 192 } else { 193 m = m + Math.pow(2, mLen); 194 e = e - eBias; 195 } 196 return (s ? -1 : 1) * m * Math.pow(2, e - mLen); 197 }; 198 exports.write = function(buffer, value, offset, isLE, mLen, nBytes) { 199 var e, m, c; 200 var eLen = nBytes * 8 - mLen - 1; 201 var eMax = (1 << eLen) - 1; 202 var eBias = eMax >> 1; 203 var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0; 204 var i = isLE ? 0 : nBytes - 1; 205 var d = isLE ? 1 : -1; 206 var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0; 207 value = Math.abs(value); 208 if (isNaN(value) || value === Infinity) { 209 m = isNaN(value) ? 1 : 0; 210 e = eMax; 211 } else { 212 e = Math.floor(Math.log(value) / Math.LN2); 213 if (value * (c = Math.pow(2, -e)) < 1) { 214 e--; 215 c *= 2; 216 } 217 if (e + eBias >= 1) { 218 value += rt / c; 219 } else { 220 value += rt * Math.pow(2, 1 - eBias); 221 } 222 if (value * c >= 2) { 223 e++; 224 c /= 2; 225 } 226 if (e + eBias >= eMax) { 227 m = 0; 228 e = eMax; 229 } else if (e + eBias >= 1) { 230 m = (value * c - 1) * Math.pow(2, mLen); 231 e = e + eBias; 232 } else { 233 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); 234 e = 0; 235 } 236 } 237 for (; mLen >= 8; buffer[offset + i] = m & 255, i += d, m /= 256, mLen -= 8) { 238 } 239 e = e << mLen | m; 240 eLen += mLen; 241 for (; eLen > 0; buffer[offset + i] = e & 255, i += d, e /= 256, eLen -= 8) { 242 } 243 buffer[offset + i - d] |= s * 128; 244 }; 245 } 246 }); 247 248
vendor: 60,607 bytes, lines 248-1851
248// node_modules/buffer/index.js 249 var require_buffer = __commonJS({ 250 "node_modules/buffer/index.js"(exports) { 251 "use strict"; 252 init_esbuild_shims(); 253 var base64 = require_base64_js(); 254 var ieee754 = require_ieee754(); 255 var customInspectSymbol = typeof Symbol === "function" && typeof Symbol["for"] === "function" ? Symbol["for"]("nodejs.util.inspect.custom") : null; 256 exports.Buffer = Buffer3; 257 exports.SlowBuffer = SlowBuffer; 258 exports.INSPECT_MAX_BYTES = 50; 259 var K_MAX_LENGTH = 2147483647; 260 exports.kMaxLength = K_MAX_LENGTH; 261 Buffer3.TYPED_ARRAY_SUPPORT = typedArraySupport(); 262 if (!Buffer3.TYPED_ARRAY_SUPPORT && typeof console !== "undefined" && typeof console.error === "function") { 263 console.error( 264 "This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support." 265 ); 266 } 267 function typedArraySupport() { 268 try { 269 const arr = new Uint8Array(1); 270 const proto = { foo: function() { 271 return 42; 272 } }; 273 Object.setPrototypeOf(proto, Uint8Array.prototype); 274 Object.setPrototypeOf(arr, proto); 275 return arr.foo() === 42; 276 } catch (e) { 277 return false; 278 } 279 } 280 Object.defineProperty(Buffer3.prototype, "parent", { 281 enumerable: true, 282 get: function() { 283 if (!Buffer3.isBuffer(this)) return void 0; 284 return this.buffer; 285 } 286 }); 287 Object.defineProperty(Buffer3.prototype, "offset", { 288 enumerable: true, 289 get: function() { 290 if (!Buffer3.isBuffer(this)) return void 0; 291 return this.byteOffset; 292 } 293 }); 294 function createBuffer(length) { 295 if (length > K_MAX_LENGTH) { 296 throw new RangeError('The value "' + length + '" is invalid for option "size"'); 297 } 298 const buf = new Uint8Array(length); 299 Object.setPrototypeOf(buf, Buffer3.prototype); 300 return buf; 301 } 302 function Buffer3(arg, encodingOrOffset, length) { 303 if (typeof arg === "number") { 304 if (typeof encodingOrOffset === "string") { 305 throw new TypeError( 306 'The "string" argument must be of type string. Received type number' 307 ); 308 } 309 return allocUnsafe(arg); 310 } 311 return from(arg, encodingOrOffset, length); 312 } 313 Buffer3.poolSize = 8192; 314 function from(value, encodingOrOffset, length) { 315 if (typeof value === "string") { 316 return fromString(value, encodingOrOffset); 317 } 318 if (ArrayBuffer.isView(value)) { 319 return fromArrayView(value); 320 } 321 if (value == null) { 322 throw new TypeError( 323 "The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof value 324 ); 325 } 326 if (isInstance(value, ArrayBuffer) || value && isInstance(value.buffer, ArrayBuffer)) { 327 return fromArrayBuffer(value, encodingOrOffset, length); 328 } 329 if (typeof SharedArrayBuffer !== "undefined" && (isInstance(value, SharedArrayBuffer) || value && isInstance(value.buffer, SharedArrayBuffer))) { 330 return fromArrayBuffer(value, encodingOrOffset, length); 331 } 332 if (typeof value === "number") { 333 throw new TypeError( 334 'The "value" argument must not be of type number. Received type number' 335 ); 336 } 337 const valueOf = value.valueOf && value.valueOf(); 338 if (valueOf != null && valueOf !== value) { 339 return Buffer3.from(valueOf, encodingOrOffset, length); 340 } 341 const b = fromObject(value); 342 if (b) return b; 343 if (typeof Symbol !== "undefined" && Symbol.toPrimitive != null && typeof value[Symbol.toPrimitive] === "function") { 344 return Buffer3.from(value[Symbol.toPrimitive]("string"), encodingOrOffset, length); 345 } 346 throw new TypeError( 347 "The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof value 348 ); 349 } 350 Buffer3.from = function(value, encodingOrOffset, length) { 351 return from(value, encodingOrOffset, length); 352 }; 353 Object.setPrototypeOf(Buffer3.prototype, Uint8Array.prototype); 354 Object.setPrototypeOf(Buffer3, Uint8Array); 355 function assertSize(size) { 356 if (typeof size !== "number") { 357 throw new TypeError('"size" argument must be of type number'); 358 } else if (size < 0) { 359 throw new RangeError('The value "' + size + '" is invalid for option "size"'); 360 } 361 } 362 function alloc(size, fill, encoding) { 363 assertSize(size); 364 if (size <= 0) { 365 return createBuffer(size); 366 } 367 if (fill !== void 0) { 368 return typeof encoding === "string" ? createBuffer(size).fill(fill, encoding) : createBuffer(size).fill(fill); 369 } 370 return createBuffer(size); 371 } 372 Buffer3.alloc = function(size, fill, encoding) { 373 return alloc(size, fill, encoding); 374 }; 375 function allocUnsafe(size) { 376 assertSize(size); 377 return createBuffer(size < 0 ? 0 : checked(size) | 0); 378 } 379 Buffer3.allocUnsafe = function(size) { 380 return allocUnsafe(size); 381 }; 382 Buffer3.allocUnsafeSlow = function(size) { 383 return allocUnsafe(size); 384 }; 385 function fromString(string, encoding) { 386 if (typeof encoding !== "string" || encoding === "") { 387 encoding = "utf8"; 388 } 389 if (!Buffer3.isEncoding(encoding)) { 390 throw new TypeError("Unknown encoding: " + encoding); 391 } 392 const length = byteLength(string, encoding) | 0; 393 let buf = createBuffer(length); 394 const actual = buf.write(string, encoding); 395 if (actual !== length) { 396 buf = buf.slice(0, actual); 397 } 398 return buf; 399 } 400 function fromArrayLike(array) { 401 const length = array.length < 0 ? 0 : checked(array.length) | 0; 402 const buf = createBuffer(length); 403 for (let i = 0; i < length; i += 1) { 404 buf[i] = array[i] & 255; 405 } 406 return buf; 407 } 408 function fromArrayView(arrayView) { 409 if (isInstance(arrayView, Uint8Array)) { 410 const copy = new Uint8Array(arrayView); 411 return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength); 412 } 413 return fromArrayLike(arrayView); 414 } 415 function fromArrayBuffer(array, byteOffset, length) { 416 if (byteOffset < 0 || array.byteLength < byteOffset) { 417 throw new RangeError('"offset" is outside of buffer bounds'); 418 } 419 if (array.byteLength < byteOffset + (length || 0)) { 420 throw new RangeError('"length" is outside of buffer bounds'); 421 } 422 let buf; 423 if (byteOffset === void 0 && length === void 0) { 424 buf = new Uint8Array(array); 425 } else if (length === void 0) { 426 buf = new Uint8Array(array, byteOffset); 427 } else { 428 buf = new Uint8Array(array, byteOffset, length); 429 } 430 Object.setPrototypeOf(buf, Buffer3.prototype); 431 return buf; 432 } 433 function fromObject(obj) { 434 if (Buffer3.isBuffer(obj)) { 435 const len = checked(obj.length) | 0; 436 const buf = createBuffer(len); 437 if (buf.length === 0) { 438 return buf; 439 } 440 obj.copy(buf, 0, 0, len); 441 return buf; 442 } 443 if (obj.length !== void 0) { 444 if (typeof obj.length !== "number" || numberIsNaN(obj.length)) { 445 return createBuffer(0); 446 } 447 return fromArrayLike(obj); 448 } 449 if (obj.type === "Buffer" && Array.isArray(obj.data)) { 450 return fromArrayLike(obj.data); 451 } 452 } 453 function checked(length) { 454 if (length >= K_MAX_LENGTH) { 455 throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x" + K_MAX_LENGTH.toString(16) + " bytes"); 456 } 457 return length | 0; 458 } 459 function SlowBuffer(length) { 460 if (+length != length) { 461 length = 0; 462 } 463 return Buffer3.alloc(+length); 464 } 465 Buffer3.isBuffer = function isBuffer(b) { 466 return b != null && b._isBuffer === true && b !== Buffer3.prototype; 467 }; 468 Buffer3.compare = function compare(a, b) { 469 if (isInstance(a, Uint8Array)) a = Buffer3.from(a, a.offset, a.byteLength); 470 if (isInstance(b, Uint8Array)) b = Buffer3.from(b, b.offset, b.byteLength); 471 if (!Buffer3.isBuffer(a) || !Buffer3.isBuffer(b)) { 472 throw new TypeError( 473 'The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array' 474 ); 475 } 476 if (a === b) return 0; 477 let x = a.length; 478 let y = b.length; 479 for (let i = 0, len = Math.min(x, y); i < len; ++i) { 480 if (a[i] !== b[i]) { 481 x = a[i]; 482 y = b[i]; 483 break; 484 } 485 } 486 if (x < y) return -1; 487 if (y < x) return 1; 488 return 0; 489 }; 490 Buffer3.isEncoding = function isEncoding(encoding) { 491 switch (String(encoding).toLowerCase()) { 492 case "hex": 493 case "utf8": 494 case "utf-8": 495 case "ascii": 496 case "latin1": 497 case "binary": 498 case "base64": 499 case "ucs2": 500 case "ucs-2": 501 case "utf16le": 502 case "utf-16le": 503 return true; 504 default: 505 return false; 506 } 507 }; 508 Buffer3.concat = function concat(list, length) { 509 if (!Array.isArray(list)) { 510 throw new TypeError('"list" argument must be an Array of Buffers'); 511 } 512 if (list.length === 0) { 513 return Buffer3.alloc(0); 514 } 515 let i; 516 if (length === void 0) { 517 length = 0; 518 for (i = 0; i < list.length; ++i) { 519 length += list[i].length; 520 } 521 } 522 const buffer = Buffer3.allocUnsafe(length); 523 let pos = 0; 524 for (i = 0; i < list.length; ++i) { 525 let buf = list[i]; 526 if (isInstance(buf, Uint8Array)) { 527 if (pos + buf.length > buffer.length) { 528 if (!Buffer3.isBuffer(buf)) buf = Buffer3.from(buf); 529 buf.copy(buffer, pos); 530 } else { 531 Uint8Array.prototype.set.call( 532 buffer, 533 buf, 534 pos 535 ); 536 } 537 } else if (!Buffer3.isBuffer(buf)) { 538 throw new TypeError('"list" argument must be an Array of Buffers'); 539 } else { 540 buf.copy(buffer, pos); 541 } 542 pos += buf.length; 543 } 544 return buffer; 545 }; 546 function byteLength(string, encoding) { 547 if (Buffer3.isBuffer(string)) { 548 return string.length; 549 } 550 if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) { 551 return string.byteLength; 552 } 553 if (typeof string !== "string") { 554 throw new TypeError( 555 'The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type ' + typeof string 556 ); 557 } 558 const len = string.length; 559 const mustMatch = arguments.length > 2 && arguments[2] === true; 560 if (!mustMatch && len === 0) return 0; 561 let loweredCase = false; 562 for (; ; ) { 563 switch (encoding) { 564 case "ascii": 565 case "latin1": 566 case "binary": 567 return len; 568 case "utf8": 569 case "utf-8": 570 return utf8ToBytes(string).length; 571 case "ucs2": 572 case "ucs-2": 573 case "utf16le": 574 case "utf-16le": 575 return len * 2; 576 case "hex": 577 return len >>> 1; 578 case "base64": 579 return base64ToBytes(string).length; 580 default: 581 if (loweredCase) { 582 return mustMatch ? -1 : utf8ToBytes(string).length; 583 } 584 encoding = ("" + encoding).toLowerCase(); 585 loweredCase = true; 586 } 587 } 588 } 589 Buffer3.byteLength = byteLength; 590 function slowToString(encoding, start, end) { 591 let loweredCase = false; 592 if (start === void 0 || start < 0) { 593 start = 0; 594 } 595 if (start > this.length) { 596 return ""; 597 } 598 if (end === void 0 || end > this.length) { 599 end = this.length; 600 } 601 if (end <= 0) { 602 return ""; 603 } 604 end >>>= 0; 605 start >>>= 0; 606 if (end <= start) { 607 return ""; 608 } 609 if (!encoding) encoding = "utf8"; 610 while (true) { 611 switch (encoding) { 612 case "hex": 613 return hexSlice(this, start, end); 614 case "utf8": 615 case "utf-8": 616 return utf8Slice(this, start, end); 617 case "ascii": 618 return asciiSlice(this, start, end); 619 case "latin1": 620 case "binary": 621 return latin1Slice(this, start, end); 622 case "base64": 623 return base64Slice(this, start, end); 624 case "ucs2": 625 case "ucs-2": 626 case "utf16le": 627 case "utf-16le": 628 return utf16leSlice(this, start, end); 629 default: 630 if (loweredCase) throw new TypeError("Unknown encoding: " + encoding); 631 encoding = (encoding + "").toLowerCase(); 632 loweredCase = true; 633 } 634 } 635 } 636 Buffer3.prototype._isBuffer = true; 637 function swap(b, n, m) { 638 const i = b[n]; 639 b[n] = b[m]; 640 b[m] = i; 641 } 642 Buffer3.prototype.swap16 = function swap16() { 643 const len = this.length; 644 if (len % 2 !== 0) { 645 throw new RangeError("Buffer size must be a multiple of 16-bits"); 646 } 647 for (let i = 0; i < len; i += 2) { 648 swap(this, i, i + 1); 649 } 650 return this; 651 }; 652 Buffer3.prototype.swap32 = function swap32() { 653 const len = this.length; 654 if (len % 4 !== 0) { 655 throw new RangeError("Buffer size must be a multiple of 32-bits"); 656 } 657 for (let i = 0; i < len; i += 4) { 658 swap(this, i, i + 3); 659 swap(this, i + 1, i + 2); 660 } 661 return this; 662 }; 663 Buffer3.prototype.swap64 = function swap64() { 664 const len = this.length; 665 if (len % 8 !== 0) { 666 throw new RangeError("Buffer size must be a multiple of 64-bits"); 667 } 668 for (let i = 0; i < len; i += 8) { 669 swap(this, i, i + 7); 670 swap(this, i + 1, i + 6); 671 swap(this, i + 2, i + 5); 672 swap(this, i + 3, i + 4); 673 } 674 return this; 675 }; 676 Buffer3.prototype.toString = function toString() { 677 const length = this.length; 678 if (length === 0) return ""; 679 if (arguments.length === 0) return utf8Slice(this, 0, length); 680 return slowToString.apply(this, arguments); 681 }; 682 Buffer3.prototype.toLocaleString = Buffer3.prototype.toString; 683 Buffer3.prototype.equals = function equals(b) { 684 if (!Buffer3.isBuffer(b)) throw new TypeError("Argument must be a Buffer"); 685 if (this === b) return true; 686 return Buffer3.compare(this, b) === 0; 687 }; 688 Buffer3.prototype.inspect = function inspect() { 689 let str = ""; 690 const max = exports.INSPECT_MAX_BYTES; 691 str = this.toString("hex", 0, max).replace(/(.{2})/g, "$1 ").trim(); 692 if (this.length > max) str += " ... "; 693 return "<Buffer " + str + ">"; 694 }; 695 if (customInspectSymbol) { 696 Buffer3.prototype[customInspectSymbol] = Buffer3.prototype.inspect; 697 } 698 Buffer3.prototype.compare = function compare(target, start, end, thisStart, thisEnd) { 699 if (isInstance(target, Uint8Array)) { 700 target = Buffer3.from(target, target.offset, target.byteLength); 701 } 702 if (!Buffer3.isBuffer(target)) { 703 throw new TypeError( 704 'The "target" argument must be one of type Buffer or Uint8Array. Received type ' + typeof target 705 ); 706 } 707 if (start === void 0) { 708 start = 0; 709 } 710 if (end === void 0) { 711 end = target ? target.length : 0; 712 } 713 if (thisStart === void 0) { 714 thisStart = 0; 715 } 716 if (thisEnd === void 0) { 717 thisEnd = this.length; 718 } 719 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { 720 throw new RangeError("out of range index"); 721 } 722 if (thisStart >= thisEnd && start >= end) { 723 return 0; 724 } 725 if (thisStart >= thisEnd) { 726 return -1; 727 } 728 if (start >= end) { 729 return 1; 730 } 731 start >>>= 0; 732 end >>>= 0; 733 thisStart >>>= 0; 734 thisEnd >>>= 0; 735 if (this === target) return 0; 736 let x = thisEnd - thisStart; 737 let y = end - start; 738 const len = Math.min(x, y); 739 const thisCopy = this.slice(thisStart, thisEnd); 740 const targetCopy = target.slice(start, end); 741 for (let i = 0; i < len; ++i) { 742 if (thisCopy[i] !== targetCopy[i]) { 743 x = thisCopy[i]; 744 y = targetCopy[i]; 745 break; 746 } 747 } 748 if (x < y) return -1; 749 if (y < x) return 1; 750 return 0; 751 }; 752 function bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) { 753 if (buffer.length === 0) return -1; 754 if (typeof byteOffset === "string") { 755 encoding = byteOffset; 756 byteOffset = 0; 757 } else if (byteOffset > 2147483647) { 758 byteOffset = 2147483647; 759 } else if (byteOffset < -2147483648) { 760 byteOffset = -2147483648; 761 } 762 byteOffset = +byteOffset; 763 if (numberIsNaN(byteOffset)) { 764 byteOffset = dir ? 0 : buffer.length - 1; 765 } 766 if (byteOffset < 0) byteOffset = buffer.length + byteOffset; 767 if (byteOffset >= buffer.length) { 768 if (dir) return -1; 769 else byteOffset = buffer.length - 1; 770 } else if (byteOffset < 0) { 771 if (dir) byteOffset = 0; 772 else return -1; 773 } 774 if (typeof val === "string") { 775 val = Buffer3.from(val, encoding); 776 } 777 if (Buffer3.isBuffer(val)) { 778 if (val.length === 0) { 779 return -1; 780 } 781 return arrayIndexOf(buffer, val, byteOffset, encoding, dir); 782 } else if (typeof val === "number") { 783 val = val & 255; 784 if (typeof Uint8Array.prototype.indexOf === "function") { 785 if (dir) { 786 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset); 787 } else { 788 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset); 789 } 790 } 791 return arrayIndexOf(buffer, [val], byteOffset, encoding, dir); 792 } 793 throw new TypeError("val must be string, number or Buffer"); 794 } 795 function arrayIndexOf(arr, val, byteOffset, encoding, dir) { 796 let indexSize = 1; 797 let arrLength = arr.length; 798 let valLength = val.length; 799 if (encoding !== void 0) { 800 encoding = String(encoding).toLowerCase(); 801 if (encoding === "ucs2" || encoding === "ucs-2" || encoding === "utf16le" || encoding === "utf-16le") { 802 if (arr.length < 2 || val.length < 2) { 803 return -1; 804 } 805 indexSize = 2; 806 arrLength /= 2; 807 valLength /= 2; 808 byteOffset /= 2; 809 } 810 } 811 function read(buf, i2) { 812 if (indexSize === 1) { 813 return buf[i2]; 814 } else { 815 return buf.readUInt16BE(i2 * indexSize); 816 } 817 } 818 let i; 819 if (dir) { 820 let foundIndex = -1; 821 for (i = byteOffset; i < arrLength; i++) { 822 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { 823 if (foundIndex === -1) foundIndex = i; 824 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize; 825 } else { 826 if (foundIndex !== -1) i -= i - foundIndex; 827 foundIndex = -1; 828 } 829 } 830 } else { 831 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength; 832 for (i = byteOffset; i >= 0; i--) { 833 let found = true; 834 for (let j = 0; j < valLength; j++) { 835 if (read(arr, i + j) !== read(val, j)) { 836 found = false; 837 break; 838 } 839 } 840 if (found) return i; 841 } 842 } 843 return -1; 844 } 845 Buffer3.prototype.includes = function includes(val, byteOffset, encoding) { 846 return this.indexOf(val, byteOffset, encoding) !== -1; 847 }; 848 Buffer3.prototype.indexOf = function indexOf2(val, byteOffset, encoding) { 849 return bidirectionalIndexOf(this, val, byteOffset, encoding, true); 850 }; 851 Buffer3.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) { 852 return bidirectionalIndexOf(this, val, byteOffset, encoding, false); 853 }; 854 function hexWrite(buf, string, offset, length) { 855 offset = Number(offset) || 0; 856 const remaining = buf.length - offset; 857 if (!length) { 858 length = remaining; 859 } else { 860 length = Number(length); 861 if (length > remaining) { 862 length = remaining; 863 } 864 } 865 const strLen = string.length; 866 if (length > strLen / 2) { 867 length = strLen / 2; 868 } 869 let i; 870 for (i = 0; i < length; ++i) { 871 const parsed = parseInt(string.substr(i * 2, 2), 16); 872 if (numberIsNaN(parsed)) return i; 873 buf[offset + i] = parsed; 874 } 875 return i; 876 } 877 function utf8Write(buf, string, offset, length) { 878 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length); 879 } 880 function asciiWrite(buf, string, offset, length) { 881 return blitBuffer(asciiToBytes(string), buf, offset, length); 882 } 883 function base64Write(buf, string, offset, length) { 884 return blitBuffer(base64ToBytes(string), buf, offset, length); 885 } 886 function ucs2Write(buf, string, offset, length) { 887 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length); 888 } 889 Buffer3.prototype.write = function write(string, offset, length, encoding) { 890 if (offset === void 0) { 891 encoding = "utf8"; 892 length = this.length; 893 offset = 0; 894 } else if (length === void 0 && typeof offset === "string") { 895 encoding = offset; 896 length = this.length; 897 offset = 0; 898 } else if (isFinite(offset)) { 899 offset = offset >>> 0; 900 if (isFinite(length)) { 901 length = length >>> 0; 902 if (encoding === void 0) encoding = "utf8"; 903 } else { 904 encoding = length; 905 length = void 0; 906 } 907 } else { 908 throw new Error( 909 "Buffer.write(string, encoding, offset[, length]) is no longer supported" 910 ); 911 } 912 const remaining = this.length - offset; 913 if (length === void 0 || length > remaining) length = remaining; 914 if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) { 915 throw new RangeError("Attempt to write outside buffer bounds"); 916 } 917 if (!encoding) encoding = "utf8"; 918 let loweredCase = false; 919 for (; ; ) { 920 switch (encoding) { 921 case "hex": 922 return hexWrite(this, string, offset, length); 923 case "utf8": 924 case "utf-8": 925 return utf8Write(this, string, offset, length); 926 case "ascii": 927 case "latin1": 928 case "binary": 929 return asciiWrite(this, string, offset, length); 930 case "base64": 931 return base64Write(this, string, offset, length); 932 case "ucs2": 933 case "ucs-2": 934 case "utf16le": 935 case "utf-16le": 936 return ucs2Write(this, string, offset, length); 937 default: 938 if (loweredCase) throw new TypeError("Unknown encoding: " + encoding); 939 encoding = ("" + encoding).toLowerCase(); 940 loweredCase = true; 941 } 942 } 943 }; 944 Buffer3.prototype.toJSON = function toJSON() { 945 return { 946 type: "Buffer", 947 data: Array.prototype.slice.call(this._arr || this, 0) 948 }; 949 }; 950 function base64Slice(buf, start, end) { 951 if (start === 0 && end === buf.length) { 952 return base64.fromByteArray(buf); 953 } else { 954 return base64.fromByteArray(buf.slice(start, end)); 955 } 956 } 957 function utf8Slice(buf, start, end) { 958 end = Math.min(buf.length, end); 959 const res = []; 960 let i = start; 961 while (i < end) { 962 const firstByte = buf[i]; 963 let codePoint = null; 964 let bytesPerSequence = firstByte > 239 ? 4 : firstByte > 223 ? 3 : firstByte > 191 ? 2 : 1; 965 if (i + bytesPerSequence <= end) { 966 let secondByte, thirdByte, fourthByte, tempCodePoint; 967 switch (bytesPerSequence) { 968 case 1: 969 if (firstByte < 128) { 970 codePoint = firstByte; 971 } 972 break; 973 case 2: 974 secondByte = buf[i + 1]; 975 if ((secondByte & 192) === 128) { 976 tempCodePoint = (firstByte & 31) << 6 | secondByte & 63; 977 if (tempCodePoint > 127) { 978 codePoint = tempCodePoint; 979 } 980 } 981 break; 982 case 3: 983 secondByte = buf[i + 1]; 984 thirdByte = buf[i + 2]; 985 if ((secondByte & 192) === 128 && (thirdByte & 192) === 128) { 986 tempCodePoint = (firstByte & 15) << 12 | (secondByte & 63) << 6 | thirdByte & 63; 987 if (tempCodePoint > 2047 && (tempCodePoint < 55296 || tempCodePoint > 57343)) { 988 codePoint = tempCodePoint; 989 } 990 } 991 break; 992 case 4: 993 secondByte = buf[i + 1]; 994 thirdByte = buf[i + 2]; 995 fourthByte = buf[i + 3]; 996 if ((secondByte & 192) === 128 && (thirdByte & 192) === 128 && (fourthByte & 192) === 128) { 997 tempCodePoint = (firstByte & 15) << 18 | (secondByte & 63) << 12 | (thirdByte & 63) << 6 | fourthByte & 63; 998 if (tempCodePoint > 65535 && tempCodePoint < 1114112) { 999 codePoint = tempCodePoint; 1000 } 1001 } 1002 } 1003 } 1004 if (codePoint === null) { 1005 codePoint = 65533; 1006 bytesPerSequence = 1; 1007 } else if (codePoint > 65535) { 1008 codePoint -= 65536; 1009 res.push(codePoint >>> 10 & 1023 | 55296); 1010 codePoint = 56320 | codePoint & 1023; 1011 } 1012 res.push(codePoint); 1013 i += bytesPerSequence; 1014 } 1015 return decodeCodePointsArray(res); 1016 } 1017 var MAX_ARGUMENTS_LENGTH = 4096; 1018 function decodeCodePointsArray(codePoints) { 1019 const len = codePoints.length; 1020 if (len <= MAX_ARGUMENTS_LENGTH) { 1021 return String.fromCharCode.apply(String, codePoints); 1022 } 1023 let res = ""; 1024 let i = 0; 1025 while (i < len) { 1026 res += String.fromCharCode.apply( 1027 String, 1028 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) 1029 ); 1030 } 1031 return res; 1032 } 1033 function asciiSlice(buf, start, end) { 1034 let ret = ""; 1035 end = Math.min(buf.length, end); 1036 for (let i = start; i < end; ++i) { 1037 ret += String.fromCharCode(buf[i] & 127); 1038 } 1039 return ret; 1040 } 1041 function latin1Slice(buf, start, end) { 1042 let ret = ""; 1043 end = Math.min(buf.length, end); 1044 for (let i = start; i < end; ++i) { 1045 ret += String.fromCharCode(buf[i]); 1046 } 1047 return ret; 1048 } 1049 function hexSlice(buf, start, end) { 1050 const len = buf.length; 1051 if (!start || start < 0) start = 0; 1052 if (!end || end < 0 || end > len) end = len; 1053 let out = ""; 1054 for (let i = start; i < end; ++i) { 1055 out += hexSliceLookupTable[buf[i]]; 1056 } 1057 return out; 1058 } 1059 function utf16leSlice(buf, start, end) { 1060 const bytes = buf.slice(start, end); 1061 let res = ""; 1062 for (let i = 0; i < bytes.length - 1; i += 2) { 1063 res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256); 1064 } 1065 return res; 1066 } 1067 Buffer3.prototype.slice = function slice(start, end) { 1068 const len = this.length; 1069 start = ~~start; 1070 end = end === void 0 ? len : ~~end; 1071 if (start < 0) { 1072 start += len; 1073 if (start < 0) start = 0; 1074 } else if (start > len) { 1075 start = len; 1076 } 1077 if (end < 0) { 1078 end += len; 1079 if (end < 0) end = 0; 1080 } else if (end > len) { 1081 end = len; 1082 } 1083 if (end < start) end = start; 1084 const newBuf = this.subarray(start, end); 1085 Object.setPrototypeOf(newBuf, Buffer3.prototype); 1086 return newBuf; 1087 }; 1088 function checkOffset(offset, ext, length) { 1089 if (offset % 1 !== 0 || offset < 0) throw new RangeError("offset is not uint"); 1090 if (offset + ext > length) throw new RangeError("Trying to access beyond buffer length"); 1091 } 1092 Buffer3.prototype.readUintLE = Buffer3.prototype.readUIntLE = function readUIntLE(offset, byteLength2, noAssert) { 1093 offset = offset >>> 0; 1094 byteLength2 = byteLength2 >>> 0; 1095 if (!noAssert) checkOffset(offset, byteLength2, this.length); 1096 let val = this[offset]; 1097 let mul = 1; 1098 let i = 0; 1099 while (++i < byteLength2 && (mul *= 256)) { 1100 val += this[offset + i] * mul; 1101 } 1102 return val; 1103 }; 1104 Buffer3.prototype.readUintBE = Buffer3.prototype.readUIntBE = function readUIntBE(offset, byteLength2, noAssert) { 1105 offset = offset >>> 0; 1106 byteLength2 = byteLength2 >>> 0; 1107 if (!noAssert) { 1108 checkOffset(offset, byteLength2, this.length); 1109 } 1110 let val = this[offset + --byteLength2]; 1111 let mul = 1; 1112 while (byteLength2 > 0 && (mul *= 256)) { 1113 val += this[offset + --byteLength2] * mul; 1114 } 1115 return val; 1116 }; 1117 Buffer3.prototype.readUint8 = Buffer3.prototype.readUInt8 = function readUInt8(offset, noAssert) { 1118 offset = offset >>> 0; 1119 if (!noAssert) checkOffset(offset, 1, this.length); 1120 return this[offset]; 1121 }; 1122 Buffer3.prototype.readUint16LE = Buffer3.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) { 1123 offset = offset >>> 0; 1124 if (!noAssert) checkOffset(offset, 2, this.length); 1125 return this[offset] | this[offset + 1] << 8; 1126 }; 1127 Buffer3.prototype.readUint16BE = Buffer3.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) { 1128 offset = offset >>> 0; 1129 if (!noAssert) checkOffset(offset, 2, this.length); 1130 return this[offset] << 8 | this[offset + 1]; 1131 }; 1132 Buffer3.prototype.readUint32LE = Buffer3.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) { 1133 offset = offset >>> 0; 1134 if (!noAssert) checkOffset(offset, 4, this.length); 1135 return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 16777216; 1136 }; 1137 Buffer3.prototype.readUint32BE = Buffer3.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) { 1138 offset = offset >>> 0; 1139 if (!noAssert) checkOffset(offset, 4, this.length); 1140 return this[offset] * 16777216 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]); 1141 }; 1142 Buffer3.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE(offset) { 1143 offset = offset >>> 0; 1144 validateNumber(offset, "offset"); 1145 const first = this[offset]; 1146 const last = this[offset + 7]; 1147 if (first === void 0 || last === void 0) { 1148 boundsError(offset, this.length - 8); 1149 } 1150 const lo = first + this[++offset] * __pow(2, 8) + this[++offset] * __pow(2, 16) + this[++offset] * __pow(2, 24); 1151 const hi = this[++offset] + this[++offset] * __pow(2, 8) + this[++offset] * __pow(2, 16) + last * __pow(2, 24); 1152 return BigInt(lo) + (BigInt(hi) << BigInt(32)); 1153 }); 1154 Buffer3.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE(offset) { 1155 offset = offset >>> 0; 1156 validateNumber(offset, "offset"); 1157 const first = this[offset]; 1158 const last = this[offset + 7]; 1159 if (first === void 0 || last === void 0) { 1160 boundsError(offset, this.length - 8); 1161 } 1162 const hi = first * __pow(2, 24) + this[++offset] * __pow(2, 16) + this[++offset] * __pow(2, 8) + this[++offset]; 1163 const lo = this[++offset] * __pow(2, 24) + this[++offset] * __pow(2, 16) + this[++offset] * __pow(2, 8) + last; 1164 return (BigInt(hi) << BigInt(32)) + BigInt(lo); 1165 }); 1166 Buffer3.prototype.readIntLE = function readIntLE(offset, byteLength2, noAssert) { 1167 offset = offset >>> 0; 1168 byteLength2 = byteLength2 >>> 0; 1169 if (!noAssert) checkOffset(offset, byteLength2, this.length); 1170 let val = this[offset]; 1171 let mul = 1; 1172 let i = 0; 1173 while (++i < byteLength2 && (mul *= 256)) { 1174 val += this[offset + i] * mul; 1175 } 1176 mul *= 128; 1177 if (val >= mul) val -= Math.pow(2, 8 * byteLength2); 1178 return val; 1179 }; 1180 Buffer3.prototype.readIntBE = function readIntBE(offset, byteLength2, noAssert) { 1181 offset = offset >>> 0; 1182 byteLength2 = byteLength2 >>> 0; 1183 if (!noAssert) checkOffset(offset, byteLength2, this.length); 1184 let i = byteLength2; 1185 let mul = 1; 1186 let val = this[offset + --i]; 1187 while (i > 0 && (mul *= 256)) { 1188 val += this[offset + --i] * mul; 1189 } 1190 mul *= 128; 1191 if (val >= mul) val -= Math.pow(2, 8 * byteLength2); 1192 return val; 1193 }; 1194 Buffer3.prototype.readInt8 = function readInt8(offset, noAssert) { 1195 offset = offset >>> 0; 1196 if (!noAssert) checkOffset(offset, 1, this.length); 1197 if (!(this[offset] & 128)) return this[offset]; 1198 return (255 - this[offset] + 1) * -1; 1199 }; 1200 Buffer3.prototype.readInt16LE = function readInt16LE(offset, noAssert) { 1201 offset = offset >>> 0; 1202 if (!noAssert) checkOffset(offset, 2, this.length); 1203 const val = this[offset] | this[offset + 1] << 8; 1204 return val & 32768 ? val | 4294901760 : val; 1205 }; 1206 Buffer3.prototype.readInt16BE = function readInt16BE(offset, noAssert) { 1207 offset = offset >>> 0; 1208 if (!noAssert) checkOffset(offset, 2, this.length); 1209 const val = this[offset + 1] | this[offset] << 8; 1210 return val & 32768 ? val | 4294901760 : val; 1211 }; 1212 Buffer3.prototype.readInt32LE = function readInt32LE(offset, noAssert) { 1213 offset = offset >>> 0; 1214 if (!noAssert) checkOffset(offset, 4, this.length); 1215 return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24; 1216 }; 1217 Buffer3.prototype.readInt32BE = function readInt32BE(offset, noAssert) { 1218 offset = offset >>> 0; 1219 if (!noAssert) checkOffset(offset, 4, this.length); 1220 return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]; 1221 }; 1222 Buffer3.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE(offset) { 1223 offset = offset >>> 0; 1224 validateNumber(offset, "offset"); 1225 const first = this[offset]; 1226 const last = this[offset + 7]; 1227 if (first === void 0 || last === void 0) { 1228 boundsError(offset, this.length - 8); 1229 } 1230 const val = this[offset + 4] + this[offset + 5] * __pow(2, 8) + this[offset + 6] * __pow(2, 16) + (last << 24); 1231 return (BigInt(val) << BigInt(32)) + BigInt(first + this[++offset] * __pow(2, 8) + this[++offset] * __pow(2, 16) + this[++offset] * __pow(2, 24)); 1232 }); 1233 Buffer3.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE(offset) { 1234 offset = offset >>> 0; 1235 validateNumber(offset, "offset"); 1236 const first = this[offset]; 1237 const last = this[offset + 7]; 1238 if (first === void 0 || last === void 0) { 1239 boundsError(offset, this.length - 8); 1240 } 1241 const val = (first << 24) + // Overflow 1242 this[++offset] * __pow(2, 16) + this[++offset] * __pow(2, 8) + this[++offset]; 1243 return (BigInt(val) << BigInt(32)) + BigInt(this[++offset] * __pow(2, 24) + this[++offset] * __pow(2, 16) + this[++offset] * __pow(2, 8) + last); 1244 }); 1245 Buffer3.prototype.readFloatLE = function readFloatLE(offset, noAssert) { 1246 offset = offset >>> 0; 1247 if (!noAssert) checkOffset(offset, 4, this.length); 1248 return ieee754.read(this, offset, true, 23, 4); 1249 }; 1250 Buffer3.prototype.readFloatBE = function readFloatBE(offset, noAssert) { 1251 offset = offset >>> 0; 1252 if (!noAssert) checkOffset(offset, 4, this.length); 1253 return ieee754.read(this, offset, false, 23, 4); 1254 }; 1255 Buffer3.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) { 1256 offset = offset >>> 0; 1257 if (!noAssert) checkOffset(offset, 8, this.length); 1258 return ieee754.read(this, offset, true, 52, 8); 1259 }; 1260 Buffer3.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) { 1261 offset = offset >>> 0; 1262 if (!noAssert) checkOffset(offset, 8, this.length); 1263 return ieee754.read(this, offset, false, 52, 8); 1264 }; 1265 function checkInt(buf, value, offset, ext, max, min) { 1266 if (!Buffer3.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance'); 1267 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds'); 1268 if (offset + ext > buf.length) throw new RangeError("Index out of range"); 1269 } 1270 Buffer3.prototype.writeUintLE = Buffer3.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength2, noAssert) { 1271 value = +value; 1272 offset = offset >>> 0; 1273 byteLength2 = byteLength2 >>> 0; 1274 if (!noAssert) { 1275 const maxBytes = Math.pow(2, 8 * byteLength2) - 1; 1276 checkInt(this, value, offset, byteLength2, maxBytes, 0); 1277 } 1278 let mul = 1; 1279 let i = 0; 1280 this[offset] = value & 255; 1281 while (++i < byteLength2 && (mul *= 256)) { 1282 this[offset + i] = value / mul & 255; 1283 } 1284 return offset + byteLength2; 1285 }; 1286 Buffer3.prototype.writeUintBE = Buffer3.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength2, noAssert) { 1287 value = +value; 1288 offset = offset >>> 0; 1289 byteLength2 = byteLength2 >>> 0; 1290 if (!noAssert) { 1291 const maxBytes = Math.pow(2, 8 * byteLength2) - 1; 1292 checkInt(this, value, offset, byteLength2, maxBytes, 0); 1293 } 1294 let i = byteLength2 - 1; 1295 let mul = 1; 1296 this[offset + i] = value & 255; 1297 while (--i >= 0 && (mul *= 256)) { 1298 this[offset + i] = value / mul & 255; 1299 } 1300 return offset + byteLength2; 1301 }; 1302 Buffer3.prototype.writeUint8 = Buffer3.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) { 1303 value = +value; 1304 offset = offset >>> 0; 1305 if (!noAssert) checkInt(this, value, offset, 1, 255, 0); 1306 this[offset] = value & 255; 1307 return offset + 1; 1308 }; 1309 Buffer3.prototype.writeUint16LE = Buffer3.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) { 1310 value = +value; 1311 offset = offset >>> 0; 1312 if (!noAssert) checkInt(this, value, offset, 2, 65535, 0); 1313 this[offset] = value & 255; 1314 this[offset + 1] = value >>> 8; 1315 return offset + 2; 1316 }; 1317 Buffer3.prototype.writeUint16BE = Buffer3.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) { 1318 value = +value; 1319 offset = offset >>> 0; 1320 if (!noAssert) checkInt(this, value, offset, 2, 65535, 0); 1321 this[offset] = value >>> 8; 1322 this[offset + 1] = value & 255; 1323 return offset + 2; 1324 }; 1325 Buffer3.prototype.writeUint32LE = Buffer3.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) { 1326 value = +value; 1327 offset = offset >>> 0; 1328 if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0); 1329 this[offset + 3] = value >>> 24; 1330 this[offset + 2] = value >>> 16; 1331 this[offset + 1] = value >>> 8; 1332 this[offset] = value & 255; 1333 return offset + 4; 1334 }; 1335 Buffer3.prototype.writeUint32BE = Buffer3.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) { 1336 value = +value; 1337 offset = offset >>> 0; 1338 if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0); 1339 this[offset] = value >>> 24; 1340 this[offset + 1] = value >>> 16; 1341 this[offset + 2] = value >>> 8; 1342 this[offset + 3] = value & 255; 1343 return offset + 4; 1344 }; 1345 function wrtBigUInt64LE(buf, value, offset, min, max) { 1346 checkIntBI(value, min, max, buf, offset, 7); 1347 let lo = Number(value & BigInt(4294967295)); 1348 buf[offset++] = lo; 1349 lo = lo >> 8; 1350 buf[offset++] = lo; 1351 lo = lo >> 8; 1352 buf[offset++] = lo; 1353 lo = lo >> 8; 1354 buf[offset++] = lo; 1355 let hi = Number(value >> BigInt(32) & BigInt(4294967295)); 1356 buf[offset++] = hi; 1357 hi = hi >> 8; 1358 buf[offset++] = hi; 1359 hi = hi >> 8; 1360 buf[offset++] = hi; 1361 hi = hi >> 8; 1362 buf[offset++] = hi; 1363 return offset; 1364 } 1365 function wrtBigUInt64BE(buf, value, offset, min, max) { 1366 checkIntBI(value, min, max, buf, offset, 7); 1367 let lo = Number(value & BigInt(4294967295)); 1368 buf[offset + 7] = lo; 1369 lo = lo >> 8; 1370 buf[offset + 6] = lo; 1371 lo = lo >> 8; 1372 buf[offset + 5] = lo; 1373 lo = lo >> 8; 1374 buf[offset + 4] = lo; 1375 let hi = Number(value >> BigInt(32) & BigInt(4294967295)); 1376 buf[offset + 3] = hi; 1377 hi = hi >> 8; 1378 buf[offset + 2] = hi; 1379 hi = hi >> 8; 1380 buf[offset + 1] = hi; 1381 hi = hi >> 8; 1382 buf[offset] = hi; 1383 return offset + 8; 1384 } 1385 Buffer3.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE(value, offset = 0) { 1386 return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt("0xffffffffffffffff")); 1387 }); 1388 Buffer3.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE(value, offset = 0) { 1389 return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt("0xffffffffffffffff")); 1390 }); 1391 Buffer3.prototype.writeIntLE = function writeIntLE(value, offset, byteLength2, noAssert) { 1392 value = +value; 1393 offset = offset >>> 0; 1394 if (!noAssert) { 1395 const limit = Math.pow(2, 8 * byteLength2 - 1); 1396 checkInt(this, value, offset, byteLength2, limit - 1, -limit); 1397 } 1398 let i = 0; 1399 let mul = 1; 1400 let sub = 0; 1401 this[offset] = value & 255; 1402 while (++i < byteLength2 && (mul *= 256)) { 1403 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { 1404 sub = 1; 1405 } 1406 this[offset + i] = (value / mul >> 0) - sub & 255; 1407 } 1408 return offset + byteLength2; 1409 }; 1410 Buffer3.prototype.writeIntBE = function writeIntBE(value, offset, byteLength2, noAssert) { 1411 value = +value; 1412 offset = offset >>> 0; 1413 if (!noAssert) { 1414 const limit = Math.pow(2, 8 * byteLength2 - 1); 1415 checkInt(this, value, offset, byteLength2, limit - 1, -limit); 1416 } 1417 let i = byteLength2 - 1; 1418 let mul = 1; 1419 let sub = 0; 1420 this[offset + i] = value & 255; 1421 while (--i >= 0 && (mul *= 256)) { 1422 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { 1423 sub = 1; 1424 } 1425 this[offset + i] = (value / mul >> 0) - sub & 255; 1426 } 1427 return offset + byteLength2; 1428 }; 1429 Buffer3.prototype.writeInt8 = function writeInt8(value, offset, noAssert) { 1430 value = +value; 1431 offset = offset >>> 0; 1432 if (!noAssert) checkInt(this, value, offset, 1, 127, -128); 1433 if (value < 0) value = 255 + value + 1; 1434 this[offset] = value & 255; 1435 return offset + 1; 1436 }; 1437 Buffer3.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) { 1438 value = +value; 1439 offset = offset >>> 0; 1440 if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768); 1441 this[offset] = value & 255; 1442 this[offset + 1] = value >>> 8; 1443 return offset + 2; 1444 }; 1445 Buffer3.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) { 1446 value = +value; 1447 offset = offset >>> 0; 1448 if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768); 1449 this[offset] = value >>> 8; 1450 this[offset + 1] = value & 255; 1451 return offset + 2; 1452 }; 1453 Buffer3.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) { 1454 value = +value; 1455 offset = offset >>> 0; 1456 if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648); 1457 this[offset] = value & 255; 1458 this[offset + 1] = value >>> 8; 1459 this[offset + 2] = value >>> 16; 1460 this[offset + 3] = value >>> 24; 1461 return offset + 4; 1462 }; 1463 Buffer3.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) { 1464 value = +value; 1465 offset = offset >>> 0; 1466 if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648); 1467 if (value < 0) value = 4294967295 + value + 1; 1468 this[offset] = value >>> 24; 1469 this[offset + 1] = value >>> 16; 1470 this[offset + 2] = value >>> 8; 1471 this[offset + 3] = value & 255; 1472 return offset + 4; 1473 }; 1474 Buffer3.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE(value, offset = 0) { 1475 return wrtBigUInt64LE(this, value, offset, -BigInt("0x8000000000000000"), BigInt("0x7fffffffffffffff")); 1476 }); 1477 Buffer3.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE(value, offset = 0) { 1478 return wrtBigUInt64BE(this, value, offset, -BigInt("0x8000000000000000"), BigInt("0x7fffffffffffffff")); 1479 }); 1480 function checkIEEE754(buf, value, offset, ext, max, min) { 1481 if (offset + ext > buf.length) throw new RangeError("Index out of range"); 1482 if (offset < 0) throw new RangeError("Index out of range"); 1483 } 1484 function writeFloat(buf, value, offset, littleEndian, noAssert) { 1485 value = +value; 1486 offset = offset >>> 0; 1487 if (!noAssert) { 1488 checkIEEE754(buf, value, offset, 4, 34028234663852886e22, -34028234663852886e22); 1489 } 1490 ieee754.write(buf, value, offset, littleEndian, 23, 4); 1491 return offset + 4; 1492 } 1493 Buffer3.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) { 1494 return writeFloat(this, value, offset, true, noAssert); 1495 }; 1496 Buffer3.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) { 1497 return writeFloat(this, value, offset, false, noAssert); 1498 }; 1499 function writeDouble(buf, value, offset, littleEndian, noAssert) { 1500 value = +value; 1501 offset = offset >>> 0; 1502 if (!noAssert) { 1503 checkIEEE754(buf, value, offset, 8, 17976931348623157e292, -17976931348623157e292); 1504 } 1505 ieee754.write(buf, value, offset, littleEndian, 52, 8); 1506 return offset + 8; 1507 } 1508 Buffer3.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) { 1509 return writeDouble(this, value, offset, true, noAssert); 1510 }; 1511 Buffer3.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) { 1512 return writeDouble(this, value, offset, false, noAssert); 1513 }; 1514 Buffer3.prototype.copy = function copy(target, targetStart, start, end) { 1515 if (!Buffer3.isBuffer(target)) throw new TypeError("argument should be a Buffer"); 1516 if (!start) start = 0; 1517 if (!end && end !== 0) end = this.length; 1518 if (targetStart >= target.length) targetStart = target.length; 1519 if (!targetStart) targetStart = 0; 1520 if (end > 0 && end < start) end = start; 1521 if (end === start) return 0; 1522 if (target.length === 0 || this.length === 0) return 0; 1523 if (targetStart < 0) { 1524 throw new RangeError("targetStart out of bounds"); 1525 } 1526 if (start < 0 || start >= this.length) throw new RangeError("Index out of range"); 1527 if (end < 0) throw new RangeError("sourceEnd out of bounds"); 1528 if (end > this.length) end = this.length; 1529 if (target.length - targetStart < end - start) { 1530 end = target.length - targetStart + start; 1531 } 1532 const len = end - start; 1533 if (this === target && typeof Uint8Array.prototype.copyWithin === "function") { 1534 this.copyWithin(targetStart, start, end); 1535 } else { 1536 Uint8Array.prototype.set.call( 1537 target, 1538 this.subarray(start, end), 1539 targetStart 1540 ); 1541 } 1542 return len; 1543 }; 1544 Buffer3.prototype.fill = function fill(val, start, end, encoding) { 1545 if (typeof val === "string") { 1546 if (typeof start === "string") { 1547 encoding = start; 1548 start = 0; 1549 end = this.length; 1550 } else if (typeof end === "string") { 1551 encoding = end; 1552 end = this.length; 1553 } 1554 if (encoding !== void 0 && typeof encoding !== "string") { 1555 throw new TypeError("encoding must be a string"); 1556 } 1557 if (typeof encoding === "string" && !Buffer3.isEncoding(encoding)) { 1558 throw new TypeError("Unknown encoding: " + encoding); 1559 } 1560 if (val.length === 1) { 1561 const code = val.charCodeAt(0); 1562 if (encoding === "utf8" && code < 128 || encoding === "latin1") { 1563 val = code; 1564 } 1565 } 1566 } else if (typeof val === "number") { 1567 val = val & 255; 1568 } else if (typeof val === "boolean") { 1569 val = Number(val); 1570 } 1571 if (start < 0 || this.length < start || this.length < end) { 1572 throw new RangeError("Out of range index"); 1573 } 1574 if (end <= start) { 1575 return this; 1576 } 1577 start = start >>> 0; 1578 end = end === void 0 ? this.length : end >>> 0; 1579 if (!val) val = 0; 1580 let i; 1581 if (typeof val === "number") { 1582 for (i = start; i < end; ++i) { 1583 this[i] = val; 1584 } 1585 } else { 1586 const bytes = Buffer3.isBuffer(val) ? val : Buffer3.from(val, encoding); 1587 const len = bytes.length; 1588 if (len === 0) { 1589 throw new TypeError('The value "' + val + '" is invalid for argument "value"'); 1590 } 1591 for (i = 0; i < end - start; ++i) { 1592 this[i + start] = bytes[i % len]; 1593 } 1594 } 1595 return this; 1596 }; 1597 var errors = {}; 1598 function E(sym, getMessage, Base) { 1599 errors[sym] = class NodeError extends Base { 1600 constructor() { 1601 super(); 1602 Object.defineProperty(this, "message", { 1603 value: getMessage.apply(this, arguments), 1604 writable: true, 1605 configurable: true 1606 }); 1607 this.name = `${this.name} [${sym}]`; 1608 this.stack; 1609 delete this.name; 1610 } 1611 get code() { 1612 return sym; 1613 } 1614 set code(value) { 1615 Object.defineProperty(this, "code", { 1616 configurable: true, 1617 enumerable: true, 1618 value, 1619 writable: true 1620 }); 1621 } 1622 toString() { 1623 return `${this.name} [${sym}]: ${this.message}`; 1624 } 1625 }; 1626 } 1627 E( 1628 "ERR_BUFFER_OUT_OF_BOUNDS", 1629 function(name) { 1630 if (name) { 1631 return `${name} is outside of buffer bounds`; 1632 } 1633 return "Attempt to access memory outside buffer bounds"; 1634 }, 1635 RangeError 1636 ); 1637 E( 1638 "ERR_INVALID_ARG_TYPE", 1639 function(name, actual) { 1640 return `The "${name}" argument must be of type number. Received type ${typeof actual}`; 1641 }, 1642 TypeError 1643 ); 1644 E( 1645 "ERR_OUT_OF_RANGE", 1646 function(str, range, input) { 1647 let msg = `The value of "${str}" is out of range.`; 1648 let received = input; 1649 if (Number.isInteger(input) && Math.abs(input) > __pow(2, 32)) { 1650 received = addNumericalSeparator(String(input)); 1651 } else if (typeof input === "bigint") { 1652 received = String(input); 1653 if (input > __pow(BigInt(2), BigInt(32)) || input < -__pow(BigInt(2), BigInt(32))) { 1654 received = addNumericalSeparator(received); 1655 } 1656 received += "n"; 1657 } 1658 msg += ` It must be ${range}. Received ${received}`; 1659 return msg; 1660 }, 1661 RangeError 1662 ); 1663 function addNumericalSeparator(val) { 1664 let res = ""; 1665 let i = val.length; 1666 const start = val[0] === "-" ? 1 : 0; 1667 for (; i >= start + 4; i -= 3) { 1668 res = `_${val.slice(i - 3, i)}${res}`; 1669 } 1670 return `${val.slice(0, i)}${res}`; 1671 } 1672 function checkBounds(buf, offset, byteLength2) { 1673 validateNumber(offset, "offset"); 1674 if (buf[offset] === void 0 || buf[offset + byteLength2] === void 0) { 1675 boundsError(offset, buf.length - (byteLength2 + 1)); 1676 } 1677 } 1678 function checkIntBI(value, min, max, buf, offset, byteLength2) { 1679 if (value > max || value < min) { 1680 const n = typeof min === "bigint" ? "n" : ""; 1681 let range; 1682 if (byteLength2 > 3) { 1683 if (min === 0 || min === BigInt(0)) { 1684 range = `>= 0${n} and < 2${n} ** ${(byteLength2 + 1) * 8}${n}`; 1685 } else { 1686 range = `>= -(2${n} ** ${(byteLength2 + 1) * 8 - 1}${n}) and < 2 ** ${(byteLength2 + 1) * 8 - 1}${n}`; 1687 } 1688 } else { 1689 range = `>= ${min}${n} and <= ${max}${n}`; 1690 } 1691 throw new errors.ERR_OUT_OF_RANGE("value", range, value); 1692 } 1693 checkBounds(buf, offset, byteLength2); 1694 } 1695 function validateNumber(value, name) { 1696 if (typeof value !== "number") { 1697 throw new errors.ERR_INVALID_ARG_TYPE(name, "number", value); 1698 } 1699 } 1700 function boundsError(value, length, type) { 1701 if (Math.floor(value) !== value) { 1702 validateNumber(value, type); 1703 throw new errors.ERR_OUT_OF_RANGE(type || "offset", "an integer", value); 1704 } 1705 if (length < 0) { 1706 throw new errors.ERR_BUFFER_OUT_OF_BOUNDS(); 1707 } 1708 throw new errors.ERR_OUT_OF_RANGE( 1709 type || "offset", 1710 `>= ${type ? 1 : 0} and <= ${length}`, 1711 value 1712 ); 1713 } 1714 var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g; 1715 function base64clean(str) { 1716 str = str.split("=")[0]; 1717 str = str.trim().replace(INVALID_BASE64_RE, ""); 1718 if (str.length < 2) return ""; 1719 while (str.length % 4 !== 0) { 1720 str = str + "="; 1721 } 1722 return str; 1723 } 1724 function utf8ToBytes(string, units) { 1725 units = units || Infinity; 1726 let codePoint; 1727 const length = string.length; 1728 let leadSurrogate = null; 1729 const bytes = []; 1730 for (let i = 0; i < length; ++i) { 1731 codePoint = string.charCodeAt(i); 1732 if (codePoint > 55295 && codePoint < 57344) { 1733 if (!leadSurrogate) { 1734 if (codePoint > 56319) { 1735 if ((units -= 3) > -1) bytes.push(239, 191, 189); 1736 continue; 1737 } else if (i + 1 === length) { 1738 if ((units -= 3) > -1) bytes.push(239, 191, 189); 1739 continue; 1740 } 1741 leadSurrogate = codePoint; 1742 continue; 1743 } 1744 if (codePoint < 56320) { 1745 if ((units -= 3) > -1) bytes.push(239, 191, 189); 1746 leadSurrogate = codePoint; 1747 continue; 1748 } 1749 codePoint = (leadSurrogate - 55296 << 10 | codePoint - 56320) + 65536; 1750 } else if (leadSurrogate) { 1751 if ((units -= 3) > -1) bytes.push(239, 191, 189); 1752 } 1753 leadSurrogate = null; 1754 if (codePoint < 128) { 1755 if ((units -= 1) < 0) break; 1756 bytes.push(codePoint); 1757 } else if (codePoint < 2048) { 1758 if ((units -= 2) < 0) break; 1759 bytes.push( 1760 codePoint >> 6 | 192, 1761 codePoint & 63 | 128 1762 ); 1763 } else if (codePoint < 65536) { 1764 if ((units -= 3) < 0) break; 1765 bytes.push( 1766 codePoint >> 12 | 224, 1767 codePoint >> 6 & 63 | 128, 1768 codePoint & 63 | 128 1769 ); 1770 } else if (codePoint < 1114112) { 1771 if ((units -= 4) < 0) break; 1772 bytes.push( 1773 codePoint >> 18 | 240, 1774 codePoint >> 12 & 63 | 128, 1775 codePoint >> 6 & 63 | 128, 1776 codePoint & 63 | 128 1777 ); 1778 } else { 1779 throw new Error("Invalid code point"); 1780 } 1781 } 1782 return bytes; 1783 } 1784 function asciiToBytes(str) { 1785 const byteArray = []; 1786 for (let i = 0; i < str.length; ++i) { 1787 byteArray.push(str.charCodeAt(i) & 255); 1788 } 1789 return byteArray; 1790 } 1791 function utf16leToBytes(str, units) { 1792 let c, hi, lo; 1793 const byteArray = []; 1794 for (let i = 0; i < str.length; ++i) { 1795 if ((units -= 2) < 0) break; 1796 c = str.charCodeAt(i); 1797 hi = c >> 8; 1798 lo = c % 256; 1799 byteArray.push(lo); 1800 byteArray.push(hi); 1801 } 1802 return byteArray; 1803 } 1804 function base64ToBytes(str) { 1805 return base64.toByteArray(base64clean(str)); 1806 } 1807 function blitBuffer(src, dst, offset, length) { 1808 let i; 1809 for (i = 0; i < length; ++i) { 1810 if (i + offset >= dst.length || i >= src.length) break; 1811 dst[i + offset] = src[i]; 1812 } 1813 return i; 1814 } 1815 function isInstance(obj, type) { 1816 return obj instanceof type || obj != null && obj.constructor != null && obj.constructor.name != null && obj.constructor.name === type.name; 1817 } 1818 function numberIsNaN(obj) { 1819 return obj !== obj; 1820 } 1821 var hexSliceLookupTable = (function() { 1822 const alphabet = "0123456789abcdef"; 1823 const table = new Array(256); 1824 for (let i = 0; i < 16; ++i) { 1825 const i16 = i * 16; 1826 for (let j = 0; j < 16; ++j) { 1827 table[i16 + j] = alphabet[i] + alphabet[j]; 1828 } 1829 } 1830 return table; 1831 })(); 1832 function defineBigIntMethod(fn) { 1833 return typeof BigInt === "undefined" ? BufferBigIntNotDefined : fn; 1834 } 1835 function BufferBigIntNotDefined() { 1836 throw new Error("BigInt not supported"); 1837 } 1838 } 1839 }); 1840 1841 // esbuild.shims.js 1842 var import_buffer; 1843 var init_esbuild_shims = __esm({ 1844 "esbuild.shims.js"() { 1845 "use strict"; 1846 import_buffer = __toESM(require_buffer()); 1847 window.Buffer = import_buffer.Buffer; 1848 } 1849 }); 1850 1851
vendor: 257,874 bytes, lines 1851-8202
1851// node_modules/jquery/dist/jquery.js 1852 var require_jquery = __commonJS({ 1853 "node_modules/jquery/dist/jquery.js"(exports, module) { 1854 init_esbuild_shims(); 1855 (function(global2, factory) { 1856 "use strict"; 1857 if (typeof module === "object" && typeof module.exports === "object") { 1858 module.exports = global2.document ? factory(global2, true) : function(w) { 1859 if (!w.document) { 1860 throw new Error("jQuery requires a window with a document"); 1861 } 1862 return factory(w); 1863 }; 1864 } else { 1865 factory(global2); 1866 } 1867 })(typeof window !== "undefined" ? window : exports, function(window2, noGlobal) { 1868 "use strict"; 1869 var arr = []; 1870 var getProto = Object.getPrototypeOf; 1871 var slice = arr.slice; 1872 var flat = arr.flat ? function(array) { 1873 return arr.flat.call(array); 1874 } : function(array) { 1875 return arr.concat.apply([], array); 1876 }; 1877 var push = arr.push; 1878 var indexOf2 = arr.indexOf; 1879 var class2type = {}; 1880 var toString = class2type.toString; 1881 var hasOwn = class2type.hasOwnProperty; 1882 var fnToString = hasOwn.toString; 1883 var ObjectFunctionString = fnToString.call(Object); 1884 var support = {}; 1885 var isFunction = function isFunction2(obj) { 1886 return typeof obj === "function" && typeof obj.nodeType !== "number" && typeof obj.item !== "function"; 1887 }; 1888 var isWindow = function isWindow2(obj) { 1889 return obj != null && obj === obj.window; 1890 }; 1891 var document2 = window2.document; 1892 var preservedScriptAttributes = { 1893 type: true, 1894 src: true, 1895 nonce: true, 1896 noModule: true 1897 }; 1898 function DOMEval(code, node, doc) { 1899 doc = doc || document2; 1900 var i, val, script = doc.createElement("script"); 1901 script.text = code; 1902 if (node) { 1903 for (i in preservedScriptAttributes) { 1904 val = node[i] || node.getAttribute && node.getAttribute(i); 1905 if (val) { 1906 script.setAttribute(i, val); 1907 } 1908 } 1909 } 1910 doc.head.appendChild(script).parentNode.removeChild(script); 1911 } 1912 function toType(obj) { 1913 if (obj == null) { 1914 return obj + ""; 1915 } 1916 return typeof obj === "object" || typeof obj === "function" ? class2type[toString.call(obj)] || "object" : typeof obj; 1917 } 1918 var version = "3.7.1", rhtmlSuffix = /HTML$/i, jQuery2 = function(selector, context) { 1919 return new jQuery2.fn.init(selector, context); 1920 }; 1921 jQuery2.fn = jQuery2.prototype = { 1922 // The current version of jQuery being used 1923 jquery: version, 1924 constructor: jQuery2, 1925 // The default length of a jQuery object is 0 1926 length: 0, 1927 toArray: function() { 1928 return slice.call(this); 1929 }, 1930 // Get the Nth element in the matched element set OR 1931 // Get the whole matched element set as a clean array 1932 get: function(num) { 1933 if (num == null) { 1934 return slice.call(this); 1935 } 1936 return num < 0 ? this[num + this.length] : this[num]; 1937 }, 1938 // Take an array of elements and push it onto the stack 1939 // (returning the new matched element set) 1940 pushStack: function(elems) { 1941 var ret = jQuery2.merge(this.constructor(), elems); 1942 ret.prevObject = this; 1943 return ret; 1944 }, 1945 // Execute a callback for every element in the matched set. 1946 each: function(callback) { 1947 return jQuery2.each(this, callback); 1948 }, 1949 map: function(callback) { 1950 return this.pushStack(jQuery2.map(this, function(elem, i) { 1951 return callback.call(elem, i, elem); 1952 })); 1953 }, 1954 slice: function() { 1955 return this.pushStack(slice.apply(this, arguments)); 1956 }, 1957 first: function() { 1958 return this.eq(0); 1959 }, 1960 last: function() { 1961 return this.eq(-1); 1962 }, 1963 even: function() { 1964 return this.pushStack(jQuery2.grep(this, function(_elem, i) { 1965 return (i + 1) % 2; 1966 })); 1967 }, 1968 odd: function() { 1969 return this.pushStack(jQuery2.grep(this, function(_elem, i) { 1970 return i % 2; 1971 })); 1972 }, 1973 eq: function(i) { 1974 var len = this.length, j = +i + (i < 0 ? len : 0); 1975 return this.pushStack(j >= 0 && j < len ? [this[j]] : []); 1976 }, 1977 end: function() { 1978 return this.prevObject || this.constructor(); 1979 }, 1980 // For internal use only. 1981 // Behaves like an Array's method, not like a jQuery method. 1982 push, 1983 sort: arr.sort, 1984 splice: arr.splice 1985 }; 1986 jQuery2.extend = jQuery2.fn.extend = function() { 1987 var options, name, src, copy, copyIsArray, clone, target = arguments[0] || {}, i = 1, length = arguments.length, deep = false; 1988 if (typeof target === "boolean") { 1989 deep = target; 1990 target = arguments[i] || {}; 1991 i++; 1992 } 1993 if (typeof target !== "object" && !isFunction(target)) { 1994 target = {}; 1995 } 1996 if (i === length) { 1997 target = this; 1998 i--; 1999 } 2000 for (; i < length; i++) { 2001 if ((options = arguments[i]) != null) { 2002 for (name in options) { 2003 copy = options[name]; 2004 if (name === "__proto__" || target === copy) { 2005 continue; 2006 } 2007 if (deep && copy && (jQuery2.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) { 2008 src = target[name]; 2009 if (copyIsArray && !Array.isArray(src)) { 2010 clone = []; 2011 } else if (!copyIsArray && !jQuery2.isPlainObject(src)) { 2012 clone = {}; 2013 } else { 2014 clone = src; 2015 } 2016 copyIsArray = false; 2017 target[name] = jQuery2.extend(deep, clone, copy); 2018 } else if (copy !== void 0) { 2019 target[name] = copy; 2020 } 2021 } 2022 } 2023 } 2024 return target; 2025 }; 2026 jQuery2.extend({ 2027 // Unique for each copy of jQuery on the page 2028 expando: "jQuery" + (version + Math.random()).replace(/\D/g, ""), 2029 // Assume jQuery is ready without the ready module 2030 isReady: true, 2031 error: function(msg) { 2032 throw new Error(msg); 2033 }, 2034 noop: function() { 2035 }, 2036 isPlainObject: function(obj) { 2037 var proto, Ctor; 2038 if (!obj || toString.call(obj) !== "[object Object]") { 2039 return false; 2040 } 2041 proto = getProto(obj); 2042 if (!proto) { 2043 return true; 2044 } 2045 Ctor = hasOwn.call(proto, "constructor") && proto.constructor; 2046 return typeof Ctor === "function" && fnToString.call(Ctor) === ObjectFunctionString; 2047 }, 2048 isEmptyObject: function(obj) { 2049 var name; 2050 for (name in obj) { 2051 return false; 2052 } 2053 return true; 2054 }, 2055 // Evaluates a script in a provided context; falls back to the global one 2056 // if not specified. 2057 globalEval: function(code, options, doc) { 2058 DOMEval(code, { nonce: options && options.nonce }, doc); 2059 }, 2060 each: function(obj, callback) { 2061 var length, i = 0; 2062 if (isArrayLike(obj)) { 2063 length = obj.length; 2064 for (; i < length; i++) { 2065 if (callback.call(obj[i], i, obj[i]) === false) { 2066 break; 2067 } 2068 } 2069 } else { 2070 for (i in obj) { 2071 if (callback.call(obj[i], i, obj[i]) === false) { 2072 break; 2073 } 2074 } 2075 } 2076 return obj; 2077 }, 2078 // Retrieve the text value of an array of DOM nodes 2079 text: function(elem) { 2080 var node, ret = "", i = 0, nodeType = elem.nodeType; 2081 if (!nodeType) { 2082 while (node = elem[i++]) { 2083 ret += jQuery2.text(node); 2084 } 2085 } 2086 if (nodeType === 1 || nodeType === 11) { 2087 return elem.textContent; 2088 } 2089 if (nodeType === 9) { 2090 return elem.documentElement.textContent; 2091 } 2092 if (nodeType === 3 || nodeType === 4) { 2093 return elem.nodeValue; 2094 } 2095 return ret; 2096 }, 2097 // results is for internal usage only 2098 makeArray: function(arr2, results) { 2099 var ret = results || []; 2100 if (arr2 != null) { 2101 if (isArrayLike(Object(arr2))) { 2102 jQuery2.merge( 2103 ret, 2104 typeof arr2 === "string" ? [arr2] : arr2 2105 ); 2106 } else { 2107 push.call(ret, arr2); 2108 } 2109 } 2110 return ret; 2111 }, 2112 inArray: function(elem, arr2, i) { 2113 return arr2 == null ? -1 : indexOf2.call(arr2, elem, i); 2114 }, 2115 isXMLDoc: function(elem) { 2116 var namespace = elem && elem.namespaceURI, docElem = elem && (elem.ownerDocument || elem).documentElement; 2117 return !rhtmlSuffix.test(namespace || docElem && docElem.nodeName || "HTML"); 2118 }, 2119 // Support: Android <=4.0 only, PhantomJS 1 only 2120 // push.apply(_, arraylike) throws on ancient WebKit 2121 merge: function(first, second) { 2122 var len = +second.length, j = 0, i = first.length; 2123 for (; j < len; j++) { 2124 first[i++] = second[j]; 2125 } 2126 first.length = i; 2127 return first; 2128 }, 2129 grep: function(elems, callback, invert) { 2130 var callbackInverse, matches = [], i = 0, length = elems.length, callbackExpect = !invert; 2131 for (; i < length; i++) { 2132 callbackInverse = !callback(elems[i], i); 2133 if (callbackInverse !== callbackExpect) { 2134 matches.push(elems[i]); 2135 } 2136 } 2137 return matches; 2138 }, 2139 // arg is for internal usage only 2140 map: function(elems, callback, arg) { 2141 var length, value, i = 0, ret = []; 2142 if (isArrayLike(elems)) { 2143 length = elems.length; 2144 for (; i < length; i++) { 2145 value = callback(elems[i], i, arg); 2146 if (value != null) { 2147 ret.push(value); 2148 } 2149 } 2150 } else { 2151 for (i in elems) { 2152 value = callback(elems[i], i, arg); 2153 if (value != null) { 2154 ret.push(value); 2155 } 2156 } 2157 } 2158 return flat(ret); 2159 }, 2160 // A global GUID counter for objects 2161 guid: 1, 2162 // jQuery.support is not used in Core but other projects attach their 2163 // properties to it so it needs to exist. 2164 support 2165 }); 2166 if (typeof Symbol === "function") { 2167 jQuery2.fn[Symbol.iterator] = arr[Symbol.iterator]; 2168 } 2169 jQuery2.each( 2170 "Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "), 2171 function(_i, name) { 2172 class2type["[object " + name + "]"] = name.toLowerCase(); 2173 } 2174 ); 2175 function isArrayLike(obj) { 2176 var length = !!obj && "length" in obj && obj.length, type = toType(obj); 2177 if (isFunction(obj) || isWindow(obj)) { 2178 return false; 2179 } 2180 return type === "array" || length === 0 || typeof length === "number" && length > 0 && length - 1 in obj; 2181 } 2182 function nodeName(elem, name) { 2183 return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); 2184 } 2185 var pop = arr.pop; 2186 var sort = arr.sort; 2187 var splice = arr.splice; 2188 var whitespace = "[\\x20\\t\\r\\n\\f]"; 2189 var rtrimCSS = new RegExp( 2190 "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", 2191 "g" 2192 ); 2193 jQuery2.contains = function(a, b) { 2194 var bup = b && b.parentNode; 2195 return a === bup || !!(bup && bup.nodeType === 1 && // Support: IE 9 - 11+ 2196 // IE doesn't have `contains` on SVG. 2197 (a.contains ? a.contains(bup) : a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16)); 2198 }; 2199 var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g; 2200 function fcssescape(ch, asCodePoint) { 2201 if (asCodePoint) { 2202 if (ch === "\0") { 2203 return "\uFFFD"; 2204 } 2205 return ch.slice(0, -1) + "\\" + ch.charCodeAt(ch.length - 1).toString(16) + " "; 2206 } 2207 return "\\" + ch; 2208 } 2209 jQuery2.escapeSelector = function(sel) { 2210 return (sel + "").replace(rcssescape, fcssescape); 2211 }; 2212 var preferredDoc = document2, pushNative = push; 2213 (function() { 2214 var i, Expr, outermostContext, sortInput, hasDuplicate, push2 = pushNative, document3, documentElement2, documentIsHTML, rbuggyQSA, matches, expando = jQuery2.expando, dirruns = 0, done = 0, classCache = createCache(), tokenCache = createCache(), compilerCache = createCache(), nonnativeSelectorCache = createCache(), sortOrder = function(a, b) { 2215 if (a === b) { 2216 hasDuplicate = true; 2217 } 2218 return 0; 2219 }, booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + // Operator (capture 2) 2220 "*([*^$|!~]?=)" + whitespace + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" 2221 `*(?:'((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)"|(` + identifier + "))|)" + whitespace + "*\\]", pseudos = ":(" + identifier + `)(?:\\((('((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)")|((?:\\\\.|[^\\\\()[\\]]|` + attributes + ")*)|.*)\\)|)", rwhitespace = new RegExp(whitespace + "+", "g"), rcomma = new RegExp("^" + whitespace + "*," + whitespace + "*"), rleadingCombinator = new RegExp("^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*"), rdescend = new RegExp(whitespace + "|>"), rpseudo = new RegExp(pseudos), ridentifier = new RegExp("^" + identifier + "$"), matchExpr = { 2222 ID: new RegExp("^#(" + identifier + ")"), 2223 CLASS: new RegExp("^\\.(" + identifier + ")"), 2224 TAG: new RegExp("^(" + identifier + "|[*])"), 2225 ATTR: new RegExp("^" + attributes), 2226 PSEUDO: new RegExp("^" + pseudos), 2227 CHILD: new RegExp( 2228 "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", 2229 "i" 2230 ), 2231 bool: new RegExp("^(?:" + booleans + ")$", "i"), 2232 // For use in libraries implementing .is() 2233 // We use this for POS matching in `select` 2234 needsContext: new RegExp("^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i") 2235 }, rinputs = /^(?:input|select|textarea|button)$/i, rheader = /^h\d$/i, rquickExpr2 = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, rsibling = /[+~]/, runescape = new RegExp("\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g"), funescape = function(escape2, nonHex) { 2236 var high = "0x" + escape2.slice(1) - 65536; 2237 if (nonHex) { 2238 return nonHex; 2239 } 2240 return high < 0 ? String.fromCharCode(high + 65536) : String.fromCharCode(high >> 10 | 55296, high & 1023 | 56320); 2241 }, unloadHandler = function() { 2242 setDocument(); 2243 }, inDisabledFieldset = addCombinator( 2244 function(elem) { 2245 return elem.disabled === true && nodeName(elem, "fieldset"); 2246 }, 2247 { dir: "parentNode", next: "legend" } 2248 ); 2249 function safeActiveElement() { 2250 try { 2251 return document3.activeElement; 2252 } catch (err) { 2253 } 2254 } 2255 try { 2256 push2.apply( 2257 arr = slice.call(preferredDoc.childNodes), 2258 preferredDoc.childNodes 2259 ); 2260 arr[preferredDoc.childNodes.length].nodeType; 2261 } catch (e) { 2262 push2 = { 2263 apply: function(target, els) { 2264 pushNative.apply(target, slice.call(els)); 2265 }, 2266 call: function(target) { 2267 pushNative.apply(target, slice.call(arguments, 1)); 2268 } 2269 }; 2270 } 2271 function find(selector, context, results, seed) { 2272 var m, i2, elem, nid, match, groups, newSelector, newContext = context && context.ownerDocument, nodeType = context ? context.nodeType : 9; 2273 results = results || []; 2274 if (typeof selector !== "string" || !selector || nodeType !== 1 && nodeType !== 9 && nodeType !== 11) { 2275 return results; 2276 } 2277 if (!seed) { 2278 setDocument(context); 2279 context = context || document3; 2280 if (documentIsHTML) { 2281 if (nodeType !== 11 && (match = rquickExpr2.exec(selector))) { 2282 if (m = match[1]) { 2283 if (nodeType === 9) { 2284 if (elem = context.getElementById(m)) { 2285 if (elem.id === m) { 2286 push2.call(results, elem); 2287 return results; 2288 } 2289 } else { 2290 return results; 2291 } 2292 } else { 2293 if (newContext && (elem = newContext.getElementById(m)) && find.contains(context, elem) && elem.id === m) { 2294 push2.call(results, elem); 2295 return results; 2296 } 2297 } 2298 } else if (match[2]) { 2299 push2.apply(results, context.getElementsByTagName(selector)); 2300 return results; 2301 } else if ((m = match[3]) && context.getElementsByClassName) { 2302 push2.apply(results, context.getElementsByClassName(m)); 2303 return results; 2304 } 2305 } 2306 if (!nonnativeSelectorCache[selector + " "] && (!rbuggyQSA || !rbuggyQSA.test(selector))) { 2307 newSelector = selector; 2308 newContext = context; 2309 if (nodeType === 1 && (rdescend.test(selector) || rleadingCombinator.test(selector))) { 2310 newContext = rsibling.test(selector) && testContext(context.parentNode) || context; 2311 if (newContext != context || !support.scope) { 2312 if (nid = context.getAttribute("id")) { 2313 nid = jQuery2.escapeSelector(nid); 2314 } else { 2315 context.setAttribute("id", nid = expando); 2316 } 2317 } 2318 groups = tokenize(selector); 2319 i2 = groups.length; 2320 while (i2--) { 2321 groups[i2] = (nid ? "#" + nid : ":scope") + " " + toSelector(groups[i2]); 2322 } 2323 newSelector = groups.join(","); 2324 } 2325 try { 2326 push2.apply( 2327 results, 2328 newContext.querySelectorAll(newSelector) 2329 ); 2330 return results; 2331 } catch (qsaError) { 2332 nonnativeSelectorCache(selector, true); 2333 } finally { 2334 if (nid === expando) { 2335 context.removeAttribute("id"); 2336 } 2337 } 2338 } 2339 } 2340 } 2341 return select(selector.replace(rtrimCSS, "$1"), context, results, seed); 2342 } 2343 function createCache() { 2344 var keys = []; 2345 function cache(key, value) { 2346 if (keys.push(key + " ") > Expr.cacheLength) { 2347 delete cache[keys.shift()]; 2348 } 2349 return cache[key + " "] = value; 2350 } 2351 return cache; 2352 } 2353 function markFunction(fn) { 2354 fn[expando] = true; 2355 return fn; 2356 } 2357 function assert(fn) { 2358 var el = document3.createElement("fieldset"); 2359 try { 2360 return !!fn(el); 2361 } catch (e) { 2362 return false; 2363 } finally { 2364 if (el.parentNode) { 2365 el.parentNode.removeChild(el); 2366 } 2367 el = null; 2368 } 2369 } 2370 function createInputPseudo(type) { 2371 return function(elem) { 2372 return nodeName(elem, "input") && elem.type === type; 2373 }; 2374 } 2375 function createButtonPseudo(type) { 2376 return function(elem) { 2377 return (nodeName(elem, "input") || nodeName(elem, "button")) && elem.type === type; 2378 }; 2379 } 2380 function createDisabledPseudo(disabled) { 2381 return function(elem) { 2382 if ("form" in elem) { 2383 if (elem.parentNode && elem.disabled === false) { 2384 if ("label" in elem) { 2385 if ("label" in elem.parentNode) { 2386 return elem.parentNode.disabled === disabled; 2387 } else { 2388 return elem.disabled === disabled; 2389 } 2390 } 2391 return elem.isDisabled === disabled || // Where there is no isDisabled, check manually 2392 elem.isDisabled !== !disabled && inDisabledFieldset(elem) === disabled; 2393 } 2394 return elem.disabled === disabled; 2395 } else if ("label" in elem) { 2396 return elem.disabled === disabled; 2397 } 2398 return false; 2399 }; 2400 } 2401 function createPositionalPseudo(fn) { 2402 return markFunction(function(argument) { 2403 argument = +argument; 2404 return markFunction(function(seed, matches2) { 2405 var j, matchIndexes = fn([], seed.length, argument), i2 = matchIndexes.length; 2406 while (i2--) { 2407 if (seed[j = matchIndexes[i2]]) { 2408 seed[j] = !(matches2[j] = seed[j]); 2409 } 2410 } 2411 }); 2412 }); 2413 } 2414 function testContext(context) { 2415 return context && typeof context.getElementsByTagName !== "undefined" && context; 2416 } 2417 function setDocument(node) { 2418 var subWindow, doc = node ? node.ownerDocument || node : preferredDoc; 2419 if (doc == document3 || doc.nodeType !== 9 || !doc.documentElement) { 2420 return document3; 2421 } 2422 document3 = doc; 2423 documentElement2 = document3.documentElement; 2424 documentIsHTML = !jQuery2.isXMLDoc(document3); 2425 matches = documentElement2.matches || documentElement2.webkitMatchesSelector || documentElement2.msMatchesSelector; 2426 if (documentElement2.msMatchesSelector && // Support: IE 11+, Edge 17 - 18+ 2427 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 2428 // two documents; shallow comparisons work. 2429 // eslint-disable-next-line eqeqeq 2430 preferredDoc != document3 && (subWindow = document3.defaultView) && subWindow.top !== subWindow) { 2431 subWindow.addEventListener("unload", unloadHandler); 2432 } 2433 support.getById = assert(function(el) { 2434 documentElement2.appendChild(el).id = jQuery2.expando; 2435 return !document3.getElementsByName || !document3.getElementsByName(jQuery2.expando).length; 2436 }); 2437 support.disconnectedMatch = assert(function(el) { 2438 return matches.call(el, "*"); 2439 }); 2440 support.scope = assert(function() { 2441 return document3.querySelectorAll(":scope"); 2442 }); 2443 support.cssHas = assert(function() { 2444 try { 2445 document3.querySelector(":has(*,:jqfake)"); 2446 return false; 2447 } catch (e) { 2448 return true; 2449 } 2450 }); 2451 if (support.getById) { 2452 Expr.filter.ID = function(id) { 2453 var attrId = id.replace(runescape, funescape); 2454 return function(elem) { 2455 return elem.getAttribute("id") === attrId; 2456 }; 2457 }; 2458 Expr.find.ID = function(id, context) { 2459 if (typeof context.getElementById !== "undefined" && documentIsHTML) { 2460 var elem = context.getElementById(id); 2461 return elem ? [elem] : []; 2462 } 2463 }; 2464 } else { 2465 Expr.filter.ID = function(id) { 2466 var attrId = id.replace(runescape, funescape); 2467 return function(elem) { 2468 var node2 = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); 2469 return node2 && node2.value === attrId; 2470 }; 2471 }; 2472 Expr.find.ID = function(id, context) { 2473 if (typeof context.getElementById !== "undefined" && documentIsHTML) { 2474 var node2, i2, elems, elem = context.getElementById(id); 2475 if (elem) { 2476 node2 = elem.getAttributeNode("id"); 2477 if (node2 && node2.value === id) { 2478 return [elem]; 2479 } 2480 elems = context.getElementsByName(id); 2481 i2 = 0; 2482 while (elem = elems[i2++]) { 2483 node2 = elem.getAttributeNode("id"); 2484 if (node2 && node2.value === id) { 2485 return [elem]; 2486 } 2487 } 2488 } 2489 return []; 2490 } 2491 }; 2492 } 2493 Expr.find.TAG = function(tag, context) { 2494 if (typeof context.getElementsByTagName !== "undefined") { 2495 return context.getElementsByTagName(tag); 2496 } else { 2497 return context.querySelectorAll(tag); 2498 } 2499 }; 2500 Expr.find.CLASS = function(className, context) { 2501 if (typeof context.getElementsByClassName !== "undefined" && documentIsHTML) { 2502 return context.getElementsByClassName(className); 2503 } 2504 }; 2505 rbuggyQSA = []; 2506 assert(function(el) { 2507 var input; 2508 documentElement2.appendChild(el).innerHTML = "<a id='" + expando + "' href='' disabled='disabled'></a><select id='" + expando + "-\r\\' disabled='disabled'><option selected=''></option></select>"; 2509 if (!el.querySelectorAll("[selected]").length) { 2510 rbuggyQSA.push("\\[" + whitespace + "*(?:value|" + booleans + ")"); 2511 } 2512 if (!el.querySelectorAll("[id~=" + expando + "-]").length) { 2513 rbuggyQSA.push("~="); 2514 } 2515 if (!el.querySelectorAll("a#" + expando + "+*").length) { 2516 rbuggyQSA.push(".#.+[+~]"); 2517 } 2518 if (!el.querySelectorAll(":checked").length) { 2519 rbuggyQSA.push(":checked"); 2520 } 2521 input = document3.createElement("input"); 2522 input.setAttribute("type", "hidden"); 2523 el.appendChild(input).setAttribute("name", "D"); 2524 documentElement2.appendChild(el).disabled = true; 2525 if (el.querySelectorAll(":disabled").length !== 2) { 2526 rbuggyQSA.push(":enabled", ":disabled"); 2527 } 2528 input = document3.createElement("input"); 2529 input.setAttribute("name", ""); 2530 el.appendChild(input); 2531 if (!el.querySelectorAll("[name='']").length) { 2532 rbuggyQSA.push("\\[" + whitespace + "*name" + whitespace + "*=" + whitespace + `*(?:''|"")`); 2533 } 2534 }); 2535 if (!support.cssHas) { 2536 rbuggyQSA.push(":has"); 2537 } 2538 rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join("|")); 2539 sortOrder = function(a, b) { 2540 if (a === b) { 2541 hasDuplicate = true; 2542 return 0; 2543 } 2544 var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; 2545 if (compare) { 2546 return compare; 2547 } 2548 compare = (a.ownerDocument || a) == (b.ownerDocument || b) ? a.compareDocumentPosition(b) : ( 2549 // Otherwise we know they are disconnected 2550 1 2551 ); 2552 if (compare & 1 || !support.sortDetached && b.compareDocumentPosition(a) === compare) { 2553 if (a === document3 || a.ownerDocument == preferredDoc && find.contains(preferredDoc, a)) { 2554 return -1; 2555 } 2556 if (b === document3 || b.ownerDocument == preferredDoc && find.contains(preferredDoc, b)) { 2557 return 1; 2558 } 2559 return sortInput ? indexOf2.call(sortInput, a) - indexOf2.call(sortInput, b) : 0; 2560 } 2561 return compare & 4 ? -1 : 1; 2562 }; 2563 return document3; 2564 } 2565 find.matches = function(expr, elements) { 2566 return find(expr, null, null, elements); 2567 }; 2568 find.matchesSelector = function(elem, expr) { 2569 setDocument(elem); 2570 if (documentIsHTML && !nonnativeSelectorCache[expr + " "] && (!rbuggyQSA || !rbuggyQSA.test(expr))) { 2571 try { 2572 var ret = matches.call(elem, expr); 2573 if (ret || support.disconnectedMatch || // As well, disconnected nodes are said to be in a document 2574 // fragment in IE 9 2575 elem.document && elem.document.nodeType !== 11) { 2576 return ret; 2577 } 2578 } catch (e) { 2579 nonnativeSelectorCache(expr, true); 2580 } 2581 } 2582 return find(expr, document3, null, [elem]).length > 0; 2583 }; 2584 find.contains = function(context, elem) { 2585 if ((context.ownerDocument || context) != document3) { 2586 setDocument(context); 2587 } 2588 return jQuery2.contains(context, elem); 2589 }; 2590 find.attr = function(elem, name) { 2591 if ((elem.ownerDocument || elem) != document3) { 2592 setDocument(elem); 2593 } 2594 var fn = Expr.attrHandle[name.toLowerCase()], val = fn && hasOwn.call(Expr.attrHandle, name.toLowerCase()) ? fn(elem, name, !documentIsHTML) : void 0; 2595 if (val !== void 0) { 2596 return val; 2597 } 2598 return elem.getAttribute(name); 2599 }; 2600 find.error = function(msg) { 2601 throw new Error("Syntax error, unrecognized expression: " + msg); 2602 }; 2603 jQuery2.uniqueSort = function(results) { 2604 var elem, duplicates = [], j = 0, i2 = 0; 2605 hasDuplicate = !support.sortStable; 2606 sortInput = !support.sortStable && slice.call(results, 0); 2607 sort.call(results, sortOrder); 2608 if (hasDuplicate) { 2609 while (elem = results[i2++]) { 2610 if (elem === results[i2]) { 2611 j = duplicates.push(i2); 2612 } 2613 } 2614 while (j--) { 2615 splice.call(results, duplicates[j], 1); 2616 } 2617 } 2618 sortInput = null; 2619 return results; 2620 }; 2621 jQuery2.fn.uniqueSort = function() { 2622 return this.pushStack(jQuery2.uniqueSort(slice.apply(this))); 2623 }; 2624 Expr = jQuery2.expr = { 2625 // Can be adjusted by the user 2626 cacheLength: 50, 2627 createPseudo: markFunction, 2628 match: matchExpr, 2629 attrHandle: {}, 2630 find: {}, 2631 relative: { 2632 ">": { dir: "parentNode", first: true }, 2633 " ": { dir: "parentNode" }, 2634 "+": { dir: "previousSibling", first: true }, 2635 "~": { dir: "previousSibling" } 2636 }, 2637 preFilter: { 2638 ATTR: function(match) { 2639 match[1] = match[1].replace(runescape, funescape); 2640 match[3] = (match[3] || match[4] || match[5] || "").replace(runescape, funescape); 2641 if (match[2] === "~=") { 2642 match[3] = " " + match[3] + " "; 2643 } 2644 return match.slice(0, 4); 2645 }, 2646 CHILD: function(match) { 2647 match[1] = match[1].toLowerCase(); 2648 if (match[1].slice(0, 3) === "nth") { 2649 if (!match[3]) { 2650 find.error(match[0]); 2651 } 2652 match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * (match[3] === "even" || match[3] === "odd")); 2653 match[5] = +(match[7] + match[8] || match[3] === "odd"); 2654 } else if (match[3]) { 2655 find.error(match[0]); 2656 } 2657 return match; 2658 }, 2659 PSEUDO: function(match) { 2660 var excess, unquoted = !match[6] && match[2]; 2661 if (matchExpr.CHILD.test(match[0])) { 2662 return null; 2663 } 2664 if (match[3]) { 2665 match[2] = match[4] || match[5] || ""; 2666 } else if (unquoted && rpseudo.test(unquoted) && // Get excess from tokenize (recursively) 2667 (excess = tokenize(unquoted, true)) && // advance to the next closing parenthesis 2668 (excess = unquoted.indexOf(")", unquoted.length - excess) - unquoted.length)) { 2669 match[0] = match[0].slice(0, excess); 2670 match[2] = unquoted.slice(0, excess); 2671 } 2672 return match.slice(0, 3); 2673 } 2674 }, 2675 filter: { 2676 TAG: function(nodeNameSelector) { 2677 var expectedNodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase(); 2678 return nodeNameSelector === "*" ? function() { 2679 return true; 2680 } : function(elem) { 2681 return nodeName(elem, expectedNodeName); 2682 }; 2683 }, 2684 CLASS: function(className) { 2685 var pattern = classCache[className + " "]; 2686 return pattern || (pattern = new RegExp("(^|" + whitespace + ")" + className + "(" + whitespace + "|$)")) && classCache(className, function(elem) { 2687 return pattern.test( 2688 typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" 2689 ); 2690 }); 2691 }, 2692 ATTR: function(name, operator, check) { 2693 return function(elem) { 2694 var result = find.attr(elem, name); 2695 if (result == null) { 2696 return operator === "!="; 2697 } 2698 if (!operator) { 2699 return true; 2700 } 2701 result += ""; 2702 if (operator === "=") { 2703 return result === check; 2704 } 2705 if (operator === "!=") { 2706 return result !== check; 2707 } 2708 if (operator === "^=") { 2709 return check && result.indexOf(check) === 0; 2710 } 2711 if (operator === "*=") { 2712 return check && result.indexOf(check) > -1; 2713 } 2714 if (operator === "$=") { 2715 return check && result.slice(-check.length) === check; 2716 } 2717 if (operator === "~=") { 2718 return (" " + result.replace(rwhitespace, " ") + " ").indexOf(check) > -1; 2719 } 2720 if (operator === "|=") { 2721 return result === check || result.slice(0, check.length + 1) === check + "-"; 2722 } 2723 return false; 2724 }; 2725 }, 2726 CHILD: function(type, what, _argument, first, last) { 2727 var simple = type.slice(0, 3) !== "nth", forward = type.slice(-4) !== "last", ofType = what === "of-type"; 2728 return first === 1 && last === 0 ? ( 2729 // Shortcut for :nth-*(n) 2730 function(elem) { 2731 return !!elem.parentNode; 2732 } 2733 ) : function(elem, _context, xml) { 2734 var cache, outerCache, node, nodeIndex, start, dir2 = simple !== forward ? "nextSibling" : "previousSibling", parent = elem.parentNode, name = ofType && elem.nodeName.toLowerCase(), useCache = !xml && !ofType, diff = false; 2735 if (parent) { 2736 if (simple) { 2737 while (dir2) { 2738 node = elem; 2739 while (node = node[dir2]) { 2740 if (ofType ? nodeName(node, name) : node.nodeType === 1) { 2741 return false; 2742 } 2743 } 2744 start = dir2 = type === "only" && !start && "nextSibling"; 2745 } 2746 return true; 2747 } 2748 start = [forward ? parent.firstChild : parent.lastChild]; 2749 if (forward && useCache) { 2750 outerCache = parent[expando] || (parent[expando] = {}); 2751 cache = outerCache[type] || []; 2752 nodeIndex = cache[0] === dirruns && cache[1]; 2753 diff = nodeIndex && cache[2]; 2754 node = nodeIndex && parent.childNodes[nodeIndex]; 2755 while (node = ++nodeIndex && node && node[dir2] || // Fallback to seeking `elem` from the start 2756 (diff = nodeIndex = 0) || start.pop()) { 2757 if (node.nodeType === 1 && ++diff && node === elem) { 2758 outerCache[type] = [dirruns, nodeIndex, diff]; 2759 break; 2760 } 2761 } 2762 } else { 2763 if (useCache) { 2764 outerCache = elem[expando] || (elem[expando] = {}); 2765 cache = outerCache[type] || []; 2766 nodeIndex = cache[0] === dirruns && cache[1]; 2767 diff = nodeIndex; 2768 } 2769 if (diff === false) { 2770 while (node = ++nodeIndex && node && node[dir2] || (diff = nodeIndex = 0) || start.pop()) { 2771 if ((ofType ? nodeName(node, name) : node.nodeType === 1) && ++diff) { 2772 if (useCache) { 2773 outerCache = node[expando] || (node[expando] = {}); 2774 outerCache[type] = [dirruns, diff]; 2775 } 2776 if (node === elem) { 2777 break; 2778 } 2779 } 2780 } 2781 } 2782 } 2783 diff -= last; 2784 return diff === first || diff % first === 0 && diff / first >= 0; 2785 } 2786 }; 2787 }, 2788 PSEUDO: function(pseudo, argument) { 2789 var args, fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || find.error("unsupported pseudo: " + pseudo); 2790 if (fn[expando]) { 2791 return fn(argument); 2792 } 2793 if (fn.length > 1) { 2794 args = [pseudo, pseudo, "", argument]; 2795 return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function(seed, matches2) { 2796 var idx, matched = fn(seed, argument), i2 = matched.length; 2797 while (i2--) { 2798 idx = indexOf2.call(seed, matched[i2]); 2799 seed[idx] = !(matches2[idx] = matched[i2]); 2800 } 2801 }) : function(elem) { 2802 return fn(elem, 0, args); 2803 }; 2804 } 2805 return fn; 2806 } 2807 }, 2808 pseudos: { 2809 // Potentially complex pseudos 2810 not: markFunction(function(selector) { 2811 var input = [], results = [], matcher = compile(selector.replace(rtrimCSS, "$1")); 2812 return matcher[expando] ? markFunction(function(seed, matches2, _context, xml) { 2813 var elem, unmatched = matcher(seed, null, xml, []), i2 = seed.length; 2814 while (i2--) { 2815 if (elem = unmatched[i2]) { 2816 seed[i2] = !(matches2[i2] = elem); 2817 } 2818 } 2819 }) : function(elem, _context, xml) { 2820 input[0] = elem; 2821 matcher(input, null, xml, results); 2822 input[0] = null; 2823 return !results.pop(); 2824 }; 2825 }), 2826 has: markFunction(function(selector) { 2827 return function(elem) { 2828 return find(selector, elem).length > 0; 2829 }; 2830 }), 2831 contains: markFunction(function(text) { 2832 text = text.replace(runescape, funescape); 2833 return function(elem) { 2834 return (elem.textContent || jQuery2.text(elem)).indexOf(text) > -1; 2835 }; 2836 }), 2837 // "Whether an element is represented by a :lang() selector 2838 // is based solely on the element's language value 2839 // being equal to the identifier C, 2840 // or beginning with the identifier C immediately followed by "-". 2841 // The matching of C against the element's language value is performed case-insensitively. 2842 // The identifier C does not have to be a valid language name." 2843 // https://www.w3.org/TR/selectors/#lang-pseudo 2844 lang: markFunction(function(lang) { 2845 if (!ridentifier.test(lang || "")) { 2846 find.error("unsupported lang: " + lang); 2847 } 2848 lang = lang.replace(runescape, funescape).toLowerCase(); 2849 return function(elem) { 2850 var elemLang; 2851 do { 2852 if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute("xml:lang") || elem.getAttribute("lang")) { 2853 elemLang = elemLang.toLowerCase(); 2854 return elemLang === lang || elemLang.indexOf(lang + "-") === 0; 2855 } 2856 } while ((elem = elem.parentNode) && elem.nodeType === 1); 2857 return false; 2858 }; 2859 }), 2860 // Miscellaneous 2861 target: function(elem) { 2862 var hash = window2.location && window2.location.hash; 2863 return hash && hash.slice(1) === elem.id; 2864 }, 2865 root: function(elem) { 2866 return elem === documentElement2; 2867 }, 2868 focus: function(elem) { 2869 return elem === safeActiveElement() && document3.hasFocus() && !!(elem.type || elem.href || ~elem.tabIndex); 2870 }, 2871 // Boolean properties 2872 enabled: createDisabledPseudo(false), 2873 disabled: createDisabledPseudo(true), 2874 checked: function(elem) { 2875 return nodeName(elem, "input") && !!elem.checked || nodeName(elem, "option") && !!elem.selected; 2876 }, 2877 selected: function(elem) { 2878 if (elem.parentNode) { 2879 elem.parentNode.selectedIndex; 2880 } 2881 return elem.selected === true; 2882 }, 2883 // Contents 2884 empty: function(elem) { 2885 for (elem = elem.firstChild; elem; elem = elem.nextSibling) { 2886 if (elem.nodeType < 6) { 2887 return false; 2888 } 2889 } 2890 return true; 2891 }, 2892 parent: function(elem) { 2893 return !Expr.pseudos.empty(elem); 2894 }, 2895 // Element/input types 2896 header: function(elem) { 2897 return rheader.test(elem.nodeName); 2898 }, 2899 input: function(elem) { 2900 return rinputs.test(elem.nodeName); 2901 }, 2902 button: function(elem) { 2903 return nodeName(elem, "input") && elem.type === "button" || nodeName(elem, "button"); 2904 }, 2905 text: function(elem) { 2906 var attr; 2907 return nodeName(elem, "input") && elem.type === "text" && // Support: IE <10 only 2908 // New HTML5 attribute values (e.g., "search") appear 2909 // with elem.type === "text" 2910 ((attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text"); 2911 }, 2912 // Position-in-collection 2913 first: createPositionalPseudo(function() { 2914 return [0]; 2915 }), 2916 last: createPositionalPseudo(function(_matchIndexes, length) { 2917 return [length - 1]; 2918 }), 2919 eq: createPositionalPseudo(function(_matchIndexes, length, argument) { 2920 return [argument < 0 ? argument + length : argument]; 2921 }), 2922 even: createPositionalPseudo(function(matchIndexes, length) { 2923 var i2 = 0; 2924 for (; i2 < length; i2 += 2) { 2925 matchIndexes.push(i2); 2926 } 2927 return matchIndexes; 2928 }), 2929 odd: createPositionalPseudo(function(matchIndexes, length) { 2930 var i2 = 1; 2931 for (; i2 < length; i2 += 2) { 2932 matchIndexes.push(i2); 2933 } 2934 return matchIndexes; 2935 }), 2936 lt: createPositionalPseudo(function(matchIndexes, length, argument) { 2937 var i2; 2938 if (argument < 0) { 2939 i2 = argument + length; 2940 } else if (argument > length) { 2941 i2 = length; 2942 } else { 2943 i2 = argument; 2944 } 2945 for (; --i2 >= 0; ) { 2946 matchIndexes.push(i2); 2947 } 2948 return matchIndexes; 2949 }), 2950 gt: createPositionalPseudo(function(matchIndexes, length, argument) { 2951 var i2 = argument < 0 ? argument + length : argument; 2952 for (; ++i2 < length; ) { 2953 matchIndexes.push(i2); 2954 } 2955 return matchIndexes; 2956 }) 2957 } 2958 }; 2959 Expr.pseudos.nth = Expr.pseudos.eq; 2960 for (i in { radio: true, checkbox: true, file: true, password: true, image: true }) { 2961 Expr.pseudos[i] = createInputPseudo(i); 2962 } 2963 for (i in { submit: true, reset: true }) { 2964 Expr.pseudos[i] = createButtonPseudo(i); 2965 } 2966 function setFilters() { 2967 } 2968 setFilters.prototype = Expr.filters = Expr.pseudos; 2969 Expr.setFilters = new setFilters(); 2970 function tokenize(selector, parseOnly) { 2971 var matched, match, tokens, type, soFar, groups, preFilters, cached = tokenCache[selector + " "]; 2972 if (cached) { 2973 return parseOnly ? 0 : cached.slice(0); 2974 } 2975 soFar = selector; 2976 groups = []; 2977 preFilters = Expr.preFilter; 2978 while (soFar) { 2979 if (!matched || (match = rcomma.exec(soFar))) { 2980 if (match) { 2981 soFar = soFar.slice(match[0].length) || soFar; 2982 } 2983 groups.push(tokens = []); 2984 } 2985 matched = false; 2986 if (match = rleadingCombinator.exec(soFar)) { 2987 matched = match.shift(); 2988 tokens.push({ 2989 value: matched, 2990 // Cast descendant combinators to space 2991 type: match[0].replace(rtrimCSS, " ") 2992 }); 2993 soFar = soFar.slice(matched.length); 2994 } 2995 for (type in Expr.filter) { 2996 if ((match = matchExpr[type].exec(soFar)) && (!preFilters[type] || (match = preFilters[type](match)))) { 2997 matched = match.shift(); 2998 tokens.push({ 2999 value: matched, 3000 type, 3001 matches: match 3002 }); 3003 soFar = soFar.slice(matched.length); 3004 } 3005 } 3006 if (!matched) { 3007 break; 3008 } 3009 } 3010 if (parseOnly) { 3011 return soFar.length; 3012 } 3013 return soFar ? find.error(selector) : ( 3014 // Cache the tokens 3015 tokenCache(selector, groups).slice(0) 3016 ); 3017 } 3018 function toSelector(tokens) { 3019 var i2 = 0, len = tokens.length, selector = ""; 3020 for (; i2 < len; i2++) { 3021 selector += tokens[i2].value; 3022 } 3023 return selector; 3024 } 3025 function addCombinator(matcher, combinator, base) { 3026 var dir2 = combinator.dir, skip = combinator.next, key = skip || dir2, checkNonElements = base && key === "parentNode", doneName = done++; 3027 return combinator.first ? ( 3028 // Check against closest ancestor/preceding element 3029 function(elem, context, xml) { 3030 while (elem = elem[dir2]) { 3031 if (elem.nodeType === 1 || checkNonElements) { 3032 return matcher(elem, context, xml); 3033 } 3034 } 3035 return false; 3036 } 3037 ) : ( 3038 // Check against all ancestor/preceding elements 3039 function(elem, context, xml) { 3040 var oldCache, outerCache, newCache = [dirruns, doneName]; 3041 if (xml) { 3042 while (elem = elem[dir2]) { 3043 if (elem.nodeType === 1 || checkNonElements) { 3044 if (matcher(elem, context, xml)) { 3045 return true; 3046 } 3047 } 3048 } 3049 } else { 3050 while (elem = elem[dir2]) { 3051 if (elem.nodeType === 1 || checkNonElements) { 3052 outerCache = elem[expando] || (elem[expando] = {}); 3053 if (skip && nodeName(elem, skip)) { 3054 elem = elem[dir2] || elem; 3055 } else if ((oldCache = outerCache[key]) && oldCache[0] === dirruns && oldCache[1] === doneName) { 3056 return newCache[2] = oldCache[2]; 3057 } else { 3058 outerCache[key] = newCache; 3059 if (newCache[2] = matcher(elem, context, xml)) { 3060 return true; 3061 } 3062 } 3063 } 3064 } 3065 } 3066 return false; 3067 } 3068 ); 3069 } 3070 function elementMatcher(matchers) { 3071 return matchers.length > 1 ? function(elem, context, xml) { 3072 var i2 = matchers.length; 3073 while (i2--) { 3074 if (!matchers[i2](elem, context, xml)) { 3075 return false; 3076 } 3077 } 3078 return true; 3079 } : matchers[0]; 3080 } 3081 function multipleContexts(selector, contexts, results) { 3082 var i2 = 0, len = contexts.length; 3083 for (; i2 < len; i2++) { 3084 find(selector, contexts[i2], results); 3085 } 3086 return results; 3087 } 3088 function condense(unmatched, map, filter, context, xml) { 3089 var elem, newUnmatched = [], i2 = 0, len = unmatched.length, mapped = map != null; 3090 for (; i2 < len; i2++) { 3091 if (elem = unmatched[i2]) { 3092 if (!filter || filter(elem, context, xml)) { 3093 newUnmatched.push(elem); 3094 if (mapped) { 3095 map.push(i2); 3096 } 3097 } 3098 } 3099 } 3100 return newUnmatched; 3101 } 3102 function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) { 3103 if (postFilter && !postFilter[expando]) { 3104 postFilter = setMatcher(postFilter); 3105 } 3106 if (postFinder && !postFinder[expando]) { 3107 postFinder = setMatcher(postFinder, postSelector); 3108 } 3109 return markFunction(function(seed, results, context, xml) { 3110 var temp, i2, elem, matcherOut, preMap = [], postMap = [], preexisting = results.length, elems = seed || multipleContexts( 3111 selector || "*", 3112 context.nodeType ? [context] : context, 3113 [] 3114 ), matcherIn = preFilter && (seed || !selector) ? condense(elems, preMap, preFilter, context, xml) : elems; 3115 if (matcher) { 3116 matcherOut = postFinder || (seed ? preFilter : preexisting || postFilter) ? ( 3117 // ...intermediate processing is necessary 3118 [] 3119 ) : ( 3120 // ...otherwise use results directly 3121 results 3122 ); 3123 matcher(matcherIn, matcherOut, context, xml); 3124 } else { 3125 matcherOut = matcherIn; 3126 } 3127 if (postFilter) { 3128 temp = condense(matcherOut, postMap); 3129 postFilter(temp, [], context, xml); 3130 i2 = temp.length; 3131 while (i2--) { 3132 if (elem = temp[i2]) { 3133 matcherOut[postMap[i2]] = !(matcherIn[postMap[i2]] = elem); 3134 } 3135 } 3136 } 3137 if (seed) { 3138 if (postFinder || preFilter) { 3139 if (postFinder) { 3140 temp = []; 3141 i2 = matcherOut.length; 3142 while (i2--) { 3143 if (elem = matcherOut[i2]) { 3144 temp.push(matcherIn[i2] = elem); 3145 } 3146 } 3147 postFinder(null, matcherOut = [], temp, xml); 3148 } 3149 i2 = matcherOut.length; 3150 while (i2--) { 3151 if ((elem = matcherOut[i2]) && (temp = postFinder ? indexOf2.call(seed, elem) : preMap[i2]) > -1) { 3152 seed[temp] = !(results[temp] = elem); 3153 } 3154 } 3155 } 3156 } else { 3157 matcherOut = condense( 3158 matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut 3159 ); 3160 if (postFinder) { 3161 postFinder(null, results, matcherOut, xml); 3162 } else { 3163 push2.apply(results, matcherOut); 3164 } 3165 } 3166 }); 3167 } 3168 function matcherFromTokens(tokens) { 3169 var checkContext, matcher, j, len = tokens.length, leadingRelative = Expr.relative[tokens[0].type], implicitRelative = leadingRelative || Expr.relative[" "], i2 = leadingRelative ? 1 : 0, matchContext = addCombinator(function(elem) { 3170 return elem === checkContext; 3171 }, implicitRelative, true), matchAnyContext = addCombinator(function(elem) { 3172 return indexOf2.call(checkContext, elem) > -1; 3173 }, implicitRelative, true), matchers = [function(elem, context, xml) { 3174 var ret = !leadingRelative && (xml || context != outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml)); 3175 checkContext = null; 3176 return ret; 3177 }]; 3178 for (; i2 < len; i2++) { 3179 if (matcher = Expr.relative[tokens[i2].type]) { 3180 matchers = [addCombinator(elementMatcher(matchers), matcher)]; 3181 } else { 3182 matcher = Expr.filter[tokens[i2].type].apply(null, tokens[i2].matches); 3183 if (matcher[expando]) { 3184 j = ++i2; 3185 for (; j < len; j++) { 3186 if (Expr.relative[tokens[j].type]) { 3187 break; 3188 } 3189 } 3190 return setMatcher( 3191 i2 > 1 && elementMatcher(matchers), 3192 i2 > 1 && toSelector( 3193 // If the preceding token was a descendant combinator, insert an implicit any-element `*` 3194 tokens.slice(0, i2 - 1).concat({ value: tokens[i2 - 2].type === " " ? "*" : "" }) 3195 ).replace(rtrimCSS, "$1"), 3196 matcher, 3197 i2 < j && matcherFromTokens(tokens.slice(i2, j)), 3198 j < len && matcherFromTokens(tokens = tokens.slice(j)), 3199 j < len && toSelector(tokens) 3200 ); 3201 } 3202 matchers.push(matcher); 3203 } 3204 } 3205 return elementMatcher(matchers); 3206 } 3207 function matcherFromGroupMatchers(elementMatchers, setMatchers) { 3208 var bySet = setMatchers.length > 0, byElement = elementMatchers.length > 0, superMatcher = function(seed, context, xml, results, outermost) { 3209 var elem, j, matcher, matchedCount = 0, i2 = "0", unmatched = seed && [], setMatched = [], contextBackup = outermostContext, elems = seed || byElement && Expr.find.TAG("*", outermost), dirrunsUnique = dirruns += contextBackup == null ? 1 : Math.random() || 0.1, len = elems.length; 3210 if (outermost) { 3211 outermostContext = context == document3 || context || outermost; 3212 } 3213 for (; i2 !== len && (elem = elems[i2]) != null; i2++) { 3214 if (byElement && elem) { 3215 j = 0; 3216 if (!context && elem.ownerDocument != document3) { 3217 setDocument(elem); 3218 xml = !documentIsHTML; 3219 } 3220 while (matcher = elementMatchers[j++]) { 3221 if (matcher(elem, context || document3, xml)) { 3222 push2.call(results, elem); 3223 break; 3224 } 3225 } 3226 if (outermost) { 3227 dirruns = dirrunsUnique; 3228 } 3229 } 3230 if (bySet) { 3231 if (elem = !matcher && elem) { 3232 matchedCount--; 3233 } 3234 if (seed) { 3235 unmatched.push(elem); 3236 } 3237 } 3238 } 3239 matchedCount += i2; 3240 if (bySet && i2 !== matchedCount) { 3241 j = 0; 3242 while (matcher = setMatchers[j++]) { 3243 matcher(unmatched, setMatched, context, xml); 3244 } 3245 if (seed) { 3246 if (matchedCount > 0) { 3247 while (i2--) { 3248 if (!(unmatched[i2] || setMatched[i2])) { 3249 setMatched[i2] = pop.call(results); 3250 } 3251 } 3252 } 3253 setMatched = condense(setMatched); 3254 } 3255 push2.apply(results, setMatched); 3256 if (outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1) { 3257 jQuery2.uniqueSort(results); 3258 } 3259 } 3260 if (outermost) { 3261 dirruns = dirrunsUnique; 3262 outermostContext = contextBackup; 3263 } 3264 return unmatched; 3265 }; 3266 return bySet ? markFunction(superMatcher) : superMatcher; 3267 } 3268 function compile(selector, match) { 3269 var i2, setMatchers = [], elementMatchers = [], cached = compilerCache[selector + " "]; 3270 if (!cached) { 3271 if (!match) { 3272 match = tokenize(selector); 3273 } 3274 i2 = match.length; 3275 while (i2--) { 3276 cached = matcherFromTokens(match[i2]); 3277 if (cached[expando]) { 3278 setMatchers.push(cached); 3279 } else { 3280 elementMatchers.push(cached); 3281 } 3282 } 3283 cached = compilerCache( 3284 selector, 3285 matcherFromGroupMatchers(elementMatchers, setMatchers) 3286 ); 3287 cached.selector = selector; 3288 } 3289 return cached; 3290 } 3291 function select(selector, context, results, seed) { 3292 var i2, tokens, token, type, find2, compiled = typeof selector === "function" && selector, match = !seed && tokenize(selector = compiled.selector || selector); 3293 results = results || []; 3294 if (match.length === 1) { 3295 tokens = match[0] = match[0].slice(0); 3296 if (tokens.length > 2 && (token = tokens[0]).type === "ID" && context.nodeType === 9 && documentIsHTML && Expr.relative[tokens[1].type]) { 3297 context = (Expr.find.ID( 3298 token.matches[0].replace(runescape, funescape), 3299 context 3300 ) || [])[0]; 3301 if (!context) { 3302 return results; 3303 } else if (compiled) { 3304 context = context.parentNode; 3305 } 3306 selector = selector.slice(tokens.shift().value.length); 3307 } 3308 i2 = matchExpr.needsContext.test(selector) ? 0 : tokens.length; 3309 while (i2--) { 3310 token = tokens[i2]; 3311 if (Expr.relative[type = token.type]) { 3312 break; 3313 } 3314 if (find2 = Expr.find[type]) { 3315 if (seed = find2( 3316 token.matches[0].replace(runescape, funescape), 3317 rsibling.test(tokens[0].type) && testContext(context.parentNode) || context 3318 )) { 3319 tokens.splice(i2, 1); 3320 selector = seed.length && toSelector(tokens); 3321 if (!selector) { 3322 push2.apply(results, seed); 3323 return results; 3324 } 3325 break; 3326 } 3327 } 3328 } 3329 } 3330 (compiled || compile(selector, match))( 3331 seed, 3332 context, 3333 !documentIsHTML, 3334 results, 3335 !context || rsibling.test(selector) && testContext(context.parentNode) || context 3336 ); 3337 return results; 3338 } 3339 support.sortStable = expando.split("").sort(sortOrder).join("") === expando; 3340 setDocument(); 3341 support.sortDetached = assert(function(el) { 3342 return el.compareDocumentPosition(document3.createElement("fieldset")) & 1; 3343 }); 3344 jQuery2.find = find; 3345 jQuery2.expr[":"] = jQuery2.expr.pseudos; 3346 jQuery2.unique = jQuery2.uniqueSort; 3347 find.compile = compile; 3348 find.select = select; 3349 find.setDocument = setDocument; 3350 find.tokenize = tokenize; 3351 find.escape = jQuery2.escapeSelector; 3352 find.getText = jQuery2.text; 3353 find.isXML = jQuery2.isXMLDoc; 3354 find.selectors = jQuery2.expr; 3355 find.support = jQuery2.support; 3356 find.uniqueSort = jQuery2.uniqueSort; 3357 })(); 3358 var dir = function(elem, dir2, until) { 3359 var matched = [], truncate = until !== void 0; 3360 while ((elem = elem[dir2]) && elem.nodeType !== 9) { 3361 if (elem.nodeType === 1) { 3362 if (truncate && jQuery2(elem).is(until)) { 3363 break; 3364 } 3365 matched.push(elem); 3366 } 3367 } 3368 return matched; 3369 }; 3370 var siblings = function(n, elem) { 3371 var matched = []; 3372 for (; n; n = n.nextSibling) { 3373 if (n.nodeType === 1 && n !== elem) { 3374 matched.push(n); 3375 } 3376 } 3377 return matched; 3378 }; 3379 var rneedsContext = jQuery2.expr.match.needsContext; 3380 var rsingleTag = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i; 3381 function winnow(elements, qualifier, not) { 3382 if (isFunction(qualifier)) { 3383 return jQuery2.grep(elements, function(elem, i) { 3384 return !!qualifier.call(elem, i, elem) !== not; 3385 }); 3386 } 3387 if (qualifier.nodeType) { 3388 return jQuery2.grep(elements, function(elem) { 3389 return elem === qualifier !== not; 3390 }); 3391 } 3392 if (typeof qualifier !== "string") { 3393 return jQuery2.grep(elements, function(elem) { 3394 return indexOf2.call(qualifier, elem) > -1 !== not; 3395 }); 3396 } 3397 return jQuery2.filter(qualifier, elements, not); 3398 } 3399 jQuery2.filter = function(expr, elems, not) { 3400 var elem = elems[0]; 3401 if (not) { 3402 expr = ":not(" + expr + ")"; 3403 } 3404 if (elems.length === 1 && elem.nodeType === 1) { 3405 return jQuery2.find.matchesSelector(elem, expr) ? [elem] : []; 3406 } 3407 return jQuery2.find.matches(expr, jQuery2.grep(elems, function(elem2) { 3408 return elem2.nodeType === 1; 3409 })); 3410 }; 3411 jQuery2.fn.extend({ 3412 find: function(selector) { 3413 var i, ret, len = this.length, self2 = this; 3414 if (typeof selector !== "string") { 3415 return this.pushStack(jQuery2(selector).filter(function() { 3416 for (i = 0; i < len; i++) { 3417 if (jQuery2.contains(self2[i], this)) { 3418 return true; 3419 } 3420 } 3421 })); 3422 } 3423 ret = this.pushStack([]); 3424 for (i = 0; i < len; i++) { 3425 jQuery2.find(selector, self2[i], ret); 3426 } 3427 return len > 1 ? jQuery2.uniqueSort(ret) : ret; 3428 }, 3429 filter: function(selector) { 3430 return this.pushStack(winnow(this, selector || [], false)); 3431 }, 3432 not: function(selector) { 3433 return this.pushStack(winnow(this, selector || [], true)); 3434 }, 3435 is: function(selector) { 3436 return !!winnow( 3437 this, 3438 // If this is a positional/relative selector, check membership in the returned set 3439 // so $("p:first").is("p:last") won't return true for a doc with two "p". 3440 typeof selector === "string" && rneedsContext.test(selector) ? jQuery2(selector) : selector || [], 3441 false 3442 ).length; 3443 } 3444 }); 3445 var rootjQuery, rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, init = jQuery2.fn.init = function(selector, context, root) { 3446 var match, elem; 3447 if (!selector) { 3448 return this; 3449 } 3450 root = root || rootjQuery; 3451 if (typeof selector === "string") { 3452 if (selector[0] === "<" && selector[selector.length - 1] === ">" && selector.length >= 3) { 3453 match = [null, selector, null]; 3454 } else { 3455 match = rquickExpr.exec(selector); 3456 } 3457 if (match && (match[1] || !context)) { 3458 if (match[1]) { 3459 context = context instanceof jQuery2 ? context[0] : context; 3460 jQuery2.merge(this, jQuery2.parseHTML( 3461 match[1], 3462 context && context.nodeType ? context.ownerDocument || context : document2, 3463 true 3464 )); 3465 if (rsingleTag.test(match[1]) && jQuery2.isPlainObject(context)) { 3466 for (match in context) { 3467 if (isFunction(this[match])) { 3468 this[match](context[match]); 3469 } else { 3470 this.attr(match, context[match]); 3471 } 3472 } 3473 } 3474 return this; 3475 } else { 3476 elem = document2.getElementById(match[2]); 3477 if (elem) { 3478 this[0] = elem; 3479 this.length = 1; 3480 } 3481 return this; 3482 } 3483 } else if (!context || context.jquery) { 3484 return (context || root).find(selector); 3485 } else { 3486 return this.constructor(context).find(selector); 3487 } 3488 } else if (selector.nodeType) { 3489 this[0] = selector; 3490 this.length = 1; 3491 return this; 3492 } else if (isFunction(selector)) { 3493 return root.ready !== void 0 ? root.ready(selector) : ( 3494 // Execute immediately if ready is not present 3495 selector(jQuery2) 3496 ); 3497 } 3498 return jQuery2.makeArray(selector, this); 3499 }; 3500 init.prototype = jQuery2.fn; 3501 rootjQuery = jQuery2(document2); 3502 var rparentsprev = /^(?:parents|prev(?:Until|All))/, guaranteedUnique = { 3503 children: true, 3504 contents: true, 3505 next: true, 3506 prev: true 3507 }; 3508 jQuery2.fn.extend({ 3509 has: function(target) { 3510 var targets = jQuery2(target, this), l = targets.length; 3511 return this.filter(function() { 3512 var i = 0; 3513 for (; i < l; i++) { 3514 if (jQuery2.contains(this, targets[i])) { 3515 return true; 3516 } 3517 } 3518 }); 3519 }, 3520 closest: function(selectors, context) { 3521 var cur, i = 0, l = this.length, matched = [], targets = typeof selectors !== "string" && jQuery2(selectors); 3522 if (!rneedsContext.test(selectors)) { 3523 for (; i < l; i++) { 3524 for (cur = this[i]; cur && cur !== context; cur = cur.parentNode) { 3525 if (cur.nodeType < 11 && (targets ? targets.index(cur) > -1 : ( 3526 // Don't pass non-elements to jQuery#find 3527 cur.nodeType === 1 && jQuery2.find.matchesSelector(cur, selectors) 3528 ))) { 3529 matched.push(cur); 3530 break; 3531 } 3532 } 3533 } 3534 } 3535 return this.pushStack(matched.length > 1 ? jQuery2.uniqueSort(matched) : matched); 3536 }, 3537 // Determine the position of an element within the set 3538 index: function(elem) { 3539 if (!elem) { 3540 return this[0] && this[0].parentNode ? this.first().prevAll().length : -1; 3541 } 3542 if (typeof elem === "string") { 3543 return indexOf2.call(jQuery2(elem), this[0]); 3544 } 3545 return indexOf2.call( 3546 this, 3547 // If it receives a jQuery object, the first element is used 3548 elem.jquery ? elem[0] : elem 3549 ); 3550 }, 3551 add: function(selector, context) { 3552 return this.pushStack( 3553 jQuery2.uniqueSort( 3554 jQuery2.merge(this.get(), jQuery2(selector, context)) 3555 ) 3556 ); 3557 }, 3558 addBack: function(selector) { 3559 return this.add( 3560 selector == null ? this.prevObject : this.prevObject.filter(selector) 3561 ); 3562 } 3563 }); 3564 function sibling(cur, dir2) { 3565 while ((cur = cur[dir2]) && cur.nodeType !== 1) { 3566 } 3567 return cur; 3568 } 3569 jQuery2.each({ 3570 parent: function(elem) { 3571 var parent = elem.parentNode; 3572 return parent && parent.nodeType !== 11 ? parent : null; 3573 }, 3574 parents: function(elem) { 3575 return dir(elem, "parentNode"); 3576 }, 3577 parentsUntil: function(elem, _i, until) { 3578 return dir(elem, "parentNode", until); 3579 }, 3580 next: function(elem) { 3581 return sibling(elem, "nextSibling"); 3582 }, 3583 prev: function(elem) { 3584 return sibling(elem, "previousSibling"); 3585 }, 3586 nextAll: function(elem) { 3587 return dir(elem, "nextSibling"); 3588 }, 3589 prevAll: function(elem) { 3590 return dir(elem, "previousSibling"); 3591 }, 3592 nextUntil: function(elem, _i, until) { 3593 return dir(elem, "nextSibling", until); 3594 }, 3595 prevUntil: function(elem, _i, until) { 3596 return dir(elem, "previousSibling", until); 3597 }, 3598 siblings: function(elem) { 3599 return siblings((elem.parentNode || {}).firstChild, elem); 3600 }, 3601 children: function(elem) { 3602 return siblings(elem.firstChild); 3603 }, 3604 contents: function(elem) { 3605 if (elem.contentDocument != null && // Support: IE 11+ 3606 // <object> elements with no `data` attribute has an object 3607 // `contentDocument` with a `null` prototype. 3608 getProto(elem.contentDocument)) { 3609 return elem.contentDocument; 3610 } 3611 if (nodeName(elem, "template")) { 3612 elem = elem.content || elem; 3613 } 3614 return jQuery2.merge([], elem.childNodes); 3615 } 3616 }, function(name, fn) { 3617 jQuery2.fn[name] = function(until, selector) { 3618 var matched = jQuery2.map(this, fn, until); 3619 if (name.slice(-5) !== "Until") { 3620 selector = until; 3621 } 3622 if (selector && typeof selector === "string") { 3623 matched = jQuery2.filter(selector, matched); 3624 } 3625 if (this.length > 1) { 3626 if (!guaranteedUnique[name]) { 3627 jQuery2.uniqueSort(matched); 3628 } 3629 if (rparentsprev.test(name)) { 3630 matched.reverse(); 3631 } 3632 } 3633 return this.pushStack(matched); 3634 }; 3635 }); 3636 var rnothtmlwhite = /[^\x20\t\r\n\f]+/g; 3637 function createOptions(options) { 3638 var object = {}; 3639 jQuery2.each(options.match(rnothtmlwhite) || [], function(_, flag) { 3640 object[flag] = true; 3641 }); 3642 return object; 3643 } 3644 jQuery2.Callbacks = function(options) { 3645 options = typeof options === "string" ? createOptions(options) : jQuery2.extend({}, options); 3646 var firing, memory, fired, locked, list = [], queue = [], firingIndex = -1, fire = function() { 3647 locked = locked || options.once; 3648 fired = firing = true; 3649 for (; queue.length; firingIndex = -1) { 3650 memory = queue.shift(); 3651 while (++firingIndex < list.length) { 3652 if (list[firingIndex].apply(memory[0], memory[1]) === false && options.stopOnFalse) { 3653 firingIndex = list.length; 3654 memory = false; 3655 } 3656 } 3657 } 3658 if (!options.memory) { 3659 memory = false; 3660 } 3661 firing = false; 3662 if (locked) { 3663 if (memory) { 3664 list = []; 3665 } else { 3666 list = ""; 3667 } 3668 } 3669 }, self2 = { 3670 // Add a callback or a collection of callbacks to the list 3671 add: function() { 3672 if (list) { 3673 if (memory && !firing) { 3674 firingIndex = list.length - 1; 3675 queue.push(memory); 3676 } 3677 (function add(args) { 3678 jQuery2.each(args, function(_, arg) { 3679 if (isFunction(arg)) { 3680 if (!options.unique || !self2.has(arg)) { 3681 list.push(arg); 3682 } 3683 } else if (arg && arg.length && toType(arg) !== "string") { 3684 add(arg); 3685 } 3686 }); 3687 })(arguments); 3688 if (memory && !firing) { 3689 fire(); 3690 } 3691 } 3692 return this; 3693 }, 3694 // Remove a callback from the list 3695 remove: function() { 3696 jQuery2.each(arguments, function(_, arg) { 3697 var index; 3698 while ((index = jQuery2.inArray(arg, list, index)) > -1) { 3699 list.splice(index, 1); 3700 if (index <= firingIndex) { 3701 firingIndex--; 3702 } 3703 } 3704 }); 3705 return this; 3706 }, 3707 // Check if a given callback is in the list. 3708 // If no argument is given, return whether or not list has callbacks attached. 3709 has: function(fn) { 3710 return fn ? jQuery2.inArray(fn, list) > -1 : list.length > 0; 3711 }, 3712 // Remove all callbacks from the list 3713 empty: function() { 3714 if (list) { 3715 list = []; 3716 } 3717 return this; 3718 }, 3719 // Disable .fire and .add 3720 // Abort any current/pending executions 3721 // Clear all callbacks and values 3722 disable: function() { 3723 locked = queue = []; 3724 list = memory = ""; 3725 return this; 3726 }, 3727 disabled: function() { 3728 return !list; 3729 }, 3730 // Disable .fire 3731 // Also disable .add unless we have memory (since it would have no effect) 3732 // Abort any pending executions 3733 lock: function() { 3734 locked = queue = []; 3735 if (!memory && !firing) { 3736 list = memory = ""; 3737 } 3738 return this; 3739 }, 3740 locked: function() { 3741 return !!locked; 3742 }, 3743 // Call all callbacks with the given context and arguments 3744 fireWith: function(context, args) { 3745 if (!locked) { 3746 args = args || []; 3747 args = [context, args.slice ? args.slice() : args]; 3748 queue.push(args); 3749 if (!firing) { 3750 fire(); 3751 } 3752 } 3753 return this; 3754 }, 3755 // Call all the callbacks with the given arguments 3756 fire: function() { 3757 self2.fireWith(this, arguments); 3758 return this; 3759 }, 3760 // To know if the callbacks have already been called at least once 3761 fired: function() { 3762 return !!fired; 3763 } 3764 }; 3765 return self2; 3766 }; 3767 function Identity(v) { 3768 return v; 3769 } 3770 function Thrower(ex) { 3771 throw ex; 3772 } 3773 function adoptValue(value, resolve, reject, noValue) { 3774 var method; 3775 try { 3776 if (value && isFunction(method = value.promise)) { 3777 method.call(value).done(resolve).fail(reject); 3778 } else if (value && isFunction(method = value.then)) { 3779 method.call(value, resolve, reject); 3780 } else { 3781 resolve.apply(void 0, [value].slice(noValue)); 3782 } 3783 } catch (value2) { 3784 reject.apply(void 0, [value2]); 3785 } 3786 } 3787 jQuery2.extend({ 3788 Deferred: function(func) { 3789 var tuples = [ 3790 // action, add listener, callbacks, 3791 // ... .then handlers, argument index, [final state] 3792 [ 3793 "notify", 3794 "progress", 3795 jQuery2.Callbacks("memory"), 3796 jQuery2.Callbacks("memory"), 3797 2 3798 ], 3799 [ 3800 "resolve", 3801 "done", 3802 jQuery2.Callbacks("once memory"), 3803 jQuery2.Callbacks("once memory"), 3804 0, 3805 "resolved" 3806 ], 3807 [ 3808 "reject", 3809 "fail", 3810 jQuery2.Callbacks("once memory"), 3811 jQuery2.Callbacks("once memory"), 3812 1, 3813 "rejected" 3814 ] 3815 ], state = "pending", promise = { 3816 state: function() { 3817 return state; 3818 }, 3819 always: function() { 3820 deferred.done(arguments).fail(arguments); 3821 return this; 3822 }, 3823 "catch": function(fn) { 3824 return promise.then(null, fn); 3825 }, 3826 // Keep pipe for back-compat 3827 pipe: function() { 3828 var fns = arguments; 3829 return jQuery2.Deferred(function(newDefer) { 3830 jQuery2.each(tuples, function(_i, tuple) { 3831 var fn = isFunction(fns[tuple[4]]) && fns[tuple[4]]; 3832 deferred[tuple[1]](function() { 3833 var returned = fn && fn.apply(this, arguments); 3834 if (returned && isFunction(returned.promise)) { 3835 returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject); 3836 } else { 3837 newDefer[tuple[0] + "With"]( 3838 this, 3839 fn ? [returned] : arguments 3840 ); 3841 } 3842 }); 3843 }); 3844 fns = null; 3845 }).promise(); 3846 }, 3847 then: function(onFulfilled, onRejected, onProgress) { 3848 var maxDepth = 0; 3849 function resolve(depth, deferred2, handler, special) { 3850 return function() { 3851 var that = this, args = arguments, mightThrow = function() { 3852 var returned, then; 3853 if (depth < maxDepth) { 3854 return; 3855 } 3856 returned = handler.apply(that, args); 3857 if (returned === deferred2.promise()) { 3858 throw new TypeError("Thenable self-resolution"); 3859 } 3860 then = returned && // Support: Promises/A+ section 2.3.4 3861 // https://promisesaplus.com/#point-64 3862 // Only check objects and functions for thenability 3863 (typeof returned === "object" || typeof returned === "function") && returned.then; 3864 if (isFunction(then)) { 3865 if (special) { 3866 then.call( 3867 returned, 3868 resolve(maxDepth, deferred2, Identity, special), 3869 resolve(maxDepth, deferred2, Thrower, special) 3870 ); 3871 } else { 3872 maxDepth++; 3873 then.call( 3874 returned, 3875 resolve(maxDepth, deferred2, Identity, special), 3876 resolve(maxDepth, deferred2, Thrower, special), 3877 resolve( 3878 maxDepth, 3879 deferred2, 3880 Identity, 3881 deferred2.notifyWith 3882 ) 3883 ); 3884 } 3885 } else { 3886 if (handler !== Identity) { 3887 that = void 0; 3888 args = [returned]; 3889 } 3890 (special || deferred2.resolveWith)(that, args); 3891 } 3892 }, process = special ? mightThrow : function() { 3893 try { 3894 mightThrow(); 3895 } catch (e) { 3896 if (jQuery2.Deferred.exceptionHook) { 3897 jQuery2.Deferred.exceptionHook( 3898 e, 3899 process.error 3900 ); 3901 } 3902 if (depth + 1 >= maxDepth) { 3903 if (handler !== Thrower) { 3904 that = void 0; 3905 args = [e]; 3906 } 3907 deferred2.rejectWith(that, args); 3908 } 3909 } 3910 }; 3911 if (depth) { 3912 process(); 3913 } else { 3914 if (jQuery2.Deferred.getErrorHook) { 3915 process.error = jQuery2.Deferred.getErrorHook(); 3916 } else if (jQuery2.Deferred.getStackHook) { 3917 process.error = jQuery2.Deferred.getStackHook(); 3918 } 3919 window2.setTimeout(process); 3920 } 3921 }; 3922 } 3923 return jQuery2.Deferred(function(newDefer) { 3924 tuples[0][3].add( 3925 resolve( 3926 0, 3927 newDefer, 3928 isFunction(onProgress) ? onProgress : Identity, 3929 newDefer.notifyWith 3930 ) 3931 ); 3932 tuples[1][3].add( 3933 resolve( 3934 0, 3935 newDefer, 3936 isFunction(onFulfilled) ? onFulfilled : Identity 3937 ) 3938 ); 3939 tuples[2][3].add( 3940 resolve( 3941 0, 3942 newDefer, 3943 isFunction(onRejected) ? onRejected : Thrower 3944 ) 3945 ); 3946 }).promise(); 3947 }, 3948 // Get a promise for this deferred 3949 // If obj is provided, the promise aspect is added to the object 3950 promise: function(obj) { 3951 return obj != null ? jQuery2.extend(obj, promise) : promise; 3952 } 3953 }, deferred = {}; 3954 jQuery2.each(tuples, function(i, tuple) { 3955 var list = tuple[2], stateString = tuple[5]; 3956 promise[tuple[1]] = list.add; 3957 if (stateString) { 3958 list.add( 3959 function() { 3960 state = stateString; 3961 }, 3962 // rejected_callbacks.disable 3963 // fulfilled_callbacks.disable 3964 tuples[3 - i][2].disable, 3965 // rejected_handlers.disable 3966 // fulfilled_handlers.disable 3967 tuples[3 - i][3].disable, 3968 // progress_callbacks.lock 3969 tuples[0][2].lock, 3970 // progress_handlers.lock 3971 tuples[0][3].lock 3972 ); 3973 } 3974 list.add(tuple[3].fire); 3975 deferred[tuple[0]] = function() { 3976 deferred[tuple[0] + "With"](this === deferred ? void 0 : this, arguments); 3977 return this; 3978 }; 3979 deferred[tuple[0] + "With"] = list.fireWith; 3980 }); 3981 promise.promise(deferred); 3982 if (func) { 3983 func.call(deferred, deferred); 3984 } 3985 return deferred; 3986 }, 3987 // Deferred helper 3988 when: function(singleValue) { 3989 var remaining = arguments.length, i = remaining, resolveContexts = Array(i), resolveValues = slice.call(arguments), primary = jQuery2.Deferred(), updateFunc = function(i2) { 3990 return function(value) { 3991 resolveContexts[i2] = this; 3992 resolveValues[i2] = arguments.length > 1 ? slice.call(arguments) : value; 3993 if (!--remaining) { 3994 primary.resolveWith(resolveContexts, resolveValues); 3995 } 3996 }; 3997 }; 3998 if (remaining <= 1) { 3999 adoptValue( 4000 singleValue, 4001 primary.done(updateFunc(i)).resolve, 4002 primary.reject, 4003 !remaining 4004 ); 4005 if (primary.state() === "pending" || isFunction(resolveValues[i] && resolveValues[i].then)) { 4006 return primary.then(); 4007 } 4008 } 4009 while (i--) { 4010 adoptValue(resolveValues[i], updateFunc(i), primary.reject); 4011 } 4012 return primary.promise(); 4013 } 4014 }); 4015 var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; 4016 jQuery2.Deferred.exceptionHook = function(error, asyncError) { 4017 if (window2.console && window2.console.warn && error && rerrorNames.test(error.name)) { 4018 window2.console.warn( 4019 "jQuery.Deferred exception: " + error.message, 4020 error.stack, 4021 asyncError 4022 ); 4023 } 4024 }; 4025 jQuery2.readyException = function(error) { 4026 window2.setTimeout(function() { 4027 throw error; 4028 }); 4029 }; 4030 var readyList = jQuery2.Deferred(); 4031 jQuery2.fn.ready = function(fn) { 4032 readyList.then(fn).catch(function(error) { 4033 jQuery2.readyException(error); 4034 }); 4035 return this; 4036 }; 4037 jQuery2.extend({ 4038 // Is the DOM ready to be used? Set to true once it occurs. 4039 isReady: false, 4040 // A counter to track how many items to wait for before 4041 // the ready event fires. See trac-6781 4042 readyWait: 1, 4043 // Handle when the DOM is ready 4044 ready: function(wait) { 4045 if (wait === true ? --jQuery2.readyWait : jQuery2.isReady) { 4046 return; 4047 } 4048 jQuery2.isReady = true; 4049 if (wait !== true && --jQuery2.readyWait > 0) { 4050 return; 4051 } 4052 readyList.resolveWith(document2, [jQuery2]); 4053 } 4054 }); 4055 jQuery2.ready.then = readyList.then; 4056 function completed() { 4057 document2.removeEventListener("DOMContentLoaded", completed); 4058 window2.removeEventListener("load", completed); 4059 jQuery2.ready(); 4060 } 4061 if (document2.readyState === "complete" || document2.readyState !== "loading" && !document2.documentElement.doScroll) { 4062 window2.setTimeout(jQuery2.ready); 4063 } else { 4064 document2.addEventListener("DOMContentLoaded", completed); 4065 window2.addEventListener("load", completed); 4066 } 4067 var access = function(elems, fn, key, value, chainable, emptyGet, raw) { 4068 var i = 0, len = elems.length, bulk = key == null; 4069 if (toType(key) === "object") { 4070 chainable = true; 4071 for (i in key) { 4072 access(elems, fn, i, key[i], true, emptyGet, raw); 4073 } 4074 } else if (value !== void 0) { 4075 chainable = true; 4076 if (!isFunction(value)) { 4077 raw = true; 4078 } 4079 if (bulk) { 4080 if (raw) { 4081 fn.call(elems, value); 4082 fn = null; 4083 } else { 4084 bulk = fn; 4085 fn = function(elem, _key, value2) { 4086 return bulk.call(jQuery2(elem), value2); 4087 }; 4088 } 4089 } 4090 if (fn) { 4091 for (; i < len; i++) { 4092 fn( 4093 elems[i], 4094 key, 4095 raw ? value : value.call(elems[i], i, fn(elems[i], key)) 4096 ); 4097 } 4098 } 4099 } 4100 if (chainable) { 4101 return elems; 4102 } 4103 if (bulk) { 4104 return fn.call(elems); 4105 } 4106 return len ? fn(elems[0], key) : emptyGet; 4107 }; 4108 var rmsPrefix = /^-ms-/, rdashAlpha = /-([a-z])/g; 4109 function fcamelCase(_all, letter) { 4110 return letter.toUpperCase(); 4111 } 4112 function camelCase(string) { 4113 return string.replace(rmsPrefix, "ms-").replace(rdashAlpha, fcamelCase); 4114 } 4115 var acceptData = function(owner) { 4116 return owner.nodeType === 1 || owner.nodeType === 9 || !+owner.nodeType; 4117 }; 4118 function Data() { 4119 this.expando = jQuery2.expando + Data.uid++; 4120 } 4121 Data.uid = 1; 4122 Data.prototype = { 4123 cache: function(owner) { 4124 var value = owner[this.expando]; 4125 if (!value) { 4126 value = {}; 4127 if (acceptData(owner)) { 4128 if (owner.nodeType) { 4129 owner[this.expando] = value; 4130 } else { 4131 Object.defineProperty(owner, this.expando, { 4132 value, 4133 configurable: true 4134 }); 4135 } 4136 } 4137 } 4138 return value; 4139 }, 4140 set: function(owner, data, value) { 4141 var prop, cache = this.cache(owner); 4142 if (typeof data === "string") { 4143 cache[camelCase(data)] = value; 4144 } else { 4145 for (prop in data) { 4146 cache[camelCase(prop)] = data[prop]; 4147 } 4148 } 4149 return cache; 4150 }, 4151 get: function(owner, key) { 4152 return key === void 0 ? this.cache(owner) : ( 4153 // Always use camelCase key (gh-2257) 4154 owner[this.expando] && owner[this.expando][camelCase(key)] 4155 ); 4156 }, 4157 access: function(owner, key, value) { 4158 if (key === void 0 || key && typeof key === "string" && value === void 0) { 4159 return this.get(owner, key); 4160 } 4161 this.set(owner, key, value); 4162 return value !== void 0 ? value : key; 4163 }, 4164 remove: function(owner, key) { 4165 var i, cache = owner[this.expando]; 4166 if (cache === void 0) { 4167 return; 4168 } 4169 if (key !== void 0) { 4170 if (Array.isArray(key)) { 4171 key = key.map(camelCase); 4172 } else { 4173 key = camelCase(key); 4174 key = key in cache ? [key] : key.match(rnothtmlwhite) || []; 4175 } 4176 i = key.length; 4177 while (i--) { 4178 delete cache[key[i]]; 4179 } 4180 } 4181 if (key === void 0 || jQuery2.isEmptyObject(cache)) { 4182 if (owner.nodeType) { 4183 owner[this.expando] = void 0; 4184 } else { 4185 delete owner[this.expando]; 4186 } 4187 } 4188 }, 4189 hasData: function(owner) { 4190 var cache = owner[this.expando]; 4191 return cache !== void 0 && !jQuery2.isEmptyObject(cache); 4192 } 4193 }; 4194 var dataPriv = new Data(); 4195 var dataUser = new Data(); 4196 var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, rmultiDash = /[A-Z]/g; 4197 function getData(data) { 4198 if (data === "true") { 4199 return true; 4200 } 4201 if (data === "false") { 4202 return false; 4203 } 4204 if (data === "null") { 4205 return null; 4206 } 4207 if (data === +data + "") { 4208 return +data; 4209 } 4210 if (rbrace.test(data)) { 4211 return JSON.parse(data); 4212 } 4213 return data; 4214 } 4215 function dataAttr(elem, key, data) { 4216 var name; 4217 if (data === void 0 && elem.nodeType === 1) { 4218 name = "data-" + key.replace(rmultiDash, "-$&").toLowerCase(); 4219 data = elem.getAttribute(name); 4220 if (typeof data === "string") { 4221 try { 4222 data = getData(data); 4223 } catch (e) { 4224 } 4225 dataUser.set(elem, key, data); 4226 } else { 4227 data = void 0; 4228 } 4229 } 4230 return data; 4231 } 4232 jQuery2.extend({ 4233 hasData: function(elem) { 4234 return dataUser.hasData(elem) || dataPriv.hasData(elem); 4235 }, 4236 data: function(elem, name, data) { 4237 return dataUser.access(elem, name, data); 4238 }, 4239 removeData: function(elem, name) { 4240 dataUser.remove(elem, name); 4241 }, 4242 // TODO: Now that all calls to _data and _removeData have been replaced 4243 // with direct calls to dataPriv methods, these can be deprecated. 4244 _data: function(elem, name, data) { 4245 return dataPriv.access(elem, name, data); 4246 }, 4247 _removeData: function(elem, name) { 4248 dataPriv.remove(elem, name); 4249 } 4250 }); 4251 jQuery2.fn.extend({ 4252 data: function(key, value) { 4253 var i, name, data, elem = this[0], attrs = elem && elem.attributes; 4254 if (key === void 0) { 4255 if (this.length) { 4256 data = dataUser.get(elem); 4257 if (elem.nodeType === 1 && !dataPriv.get(elem, "hasDataAttrs")) { 4258 i = attrs.length; 4259 while (i--) { 4260 if (attrs[i]) { 4261 name = attrs[i].name; 4262 if (name.indexOf("data-") === 0) { 4263 name = camelCase(name.slice(5)); 4264 dataAttr(elem, name, data[name]); 4265 } 4266 } 4267 } 4268 dataPriv.set(elem, "hasDataAttrs", true); 4269 } 4270 } 4271 return data; 4272 } 4273 if (typeof key === "object") { 4274 return this.each(function() { 4275 dataUser.set(this, key); 4276 }); 4277 } 4278 return access(this, function(value2) { 4279 var data2; 4280 if (elem && value2 === void 0) { 4281 data2 = dataUser.get(elem, key); 4282 if (data2 !== void 0) { 4283 return data2; 4284 } 4285 data2 = dataAttr(elem, key); 4286 if (data2 !== void 0) { 4287 return data2; 4288 } 4289 return; 4290 } 4291 this.each(function() { 4292 dataUser.set(this, key, value2); 4293 }); 4294 }, null, value, arguments.length > 1, null, true); 4295 }, 4296 removeData: function(key) { 4297 return this.each(function() { 4298 dataUser.remove(this, key); 4299 }); 4300 } 4301 }); 4302 jQuery2.extend({ 4303 queue: function(elem, type, data) { 4304 var queue; 4305 if (elem) { 4306 type = (type || "fx") + "queue"; 4307 queue = dataPriv.get(elem, type); 4308 if (data) { 4309 if (!queue || Array.isArray(data)) { 4310 queue = dataPriv.access(elem, type, jQuery2.makeArray(data)); 4311 } else { 4312 queue.push(data); 4313 } 4314 } 4315 return queue || []; 4316 } 4317 }, 4318 dequeue: function(elem, type) { 4319 type = type || "fx"; 4320 var queue = jQuery2.queue(elem, type), startLength = queue.length, fn = queue.shift(), hooks = jQuery2._queueHooks(elem, type), next = function() { 4321 jQuery2.dequeue(elem, type); 4322 }; 4323 if (fn === "inprogress") { 4324 fn = queue.shift(); 4325 startLength--; 4326 } 4327 if (fn) { 4328 if (type === "fx") { 4329 queue.unshift("inprogress"); 4330 } 4331 delete hooks.stop; 4332 fn.call(elem, next, hooks); 4333 } 4334 if (!startLength && hooks) { 4335 hooks.empty.fire(); 4336 } 4337 }, 4338 // Not public - generate a queueHooks object, or return the current one 4339 _queueHooks: function(elem, type) { 4340 var key = type + "queueHooks"; 4341 return dataPriv.get(elem, key) || dataPriv.access(elem, key, { 4342 empty: jQuery2.Callbacks("once memory").add(function() { 4343 dataPriv.remove(elem, [type + "queue", key]); 4344 }) 4345 }); 4346 } 4347 }); 4348 jQuery2.fn.extend({ 4349 queue: function(type, data) { 4350 var setter = 2; 4351 if (typeof type !== "string") { 4352 data = type; 4353 type = "fx"; 4354 setter--; 4355 } 4356 if (arguments.length < setter) { 4357 return jQuery2.queue(this[0], type); 4358 } 4359 return data === void 0 ? this : this.each(function() { 4360 var queue = jQuery2.queue(this, type, data); 4361 jQuery2._queueHooks(this, type); 4362 if (type === "fx" && queue[0] !== "inprogress") { 4363 jQuery2.dequeue(this, type); 4364 } 4365 }); 4366 }, 4367 dequeue: function(type) { 4368 return this.each(function() { 4369 jQuery2.dequeue(this, type); 4370 }); 4371 }, 4372 clearQueue: function(type) { 4373 return this.queue(type || "fx", []); 4374 }, 4375 // Get a promise resolved when queues of a certain type 4376 // are emptied (fx is the type by default) 4377 promise: function(type, obj) { 4378 var tmp, count = 1, defer = jQuery2.Deferred(), elements = this, i = this.length, resolve = function() { 4379 if (!--count) { 4380 defer.resolveWith(elements, [elements]); 4381 } 4382 }; 4383 if (typeof type !== "string") { 4384 obj = type; 4385 type = void 0; 4386 } 4387 type = type || "fx"; 4388 while (i--) { 4389 tmp = dataPriv.get(elements[i], type + "queueHooks"); 4390 if (tmp && tmp.empty) { 4391 count++; 4392 tmp.empty.add(resolve); 4393 } 4394 } 4395 resolve(); 4396 return defer.promise(obj); 4397 } 4398 }); 4399 var pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source; 4400 var rcssNum = new RegExp("^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i"); 4401 var cssExpand = ["Top", "Right", "Bottom", "Left"]; 4402 var documentElement = document2.documentElement; 4403 var isAttached = function(elem) { 4404 return jQuery2.contains(elem.ownerDocument, elem); 4405 }, composed = { composed: true }; 4406 if (documentElement.getRootNode) { 4407 isAttached = function(elem) { 4408 return jQuery2.contains(elem.ownerDocument, elem) || elem.getRootNode(composed) === elem.ownerDocument; 4409 }; 4410 } 4411 var isHiddenWithinTree = function(elem, el) { 4412 elem = el || elem; 4413 return elem.style.display === "none" || elem.style.display === "" && // Otherwise, check computed style 4414 // Support: Firefox <=43 - 45 4415 // Disconnected elements can have computed display: none, so first confirm that elem is 4416 // in the document. 4417 isAttached(elem) && jQuery2.css(elem, "display") === "none"; 4418 }; 4419 function adjustCSS(elem, prop, valueParts, tween) { 4420 var adjusted, scale, maxIterations = 20, currentValue = tween ? function() { 4421 return tween.cur(); 4422 } : function() { 4423 return jQuery2.css(elem, prop, ""); 4424 }, initial = currentValue(), unit = valueParts && valueParts[3] || (jQuery2.cssNumber[prop] ? "" : "px"), initialInUnit = elem.nodeType && (jQuery2.cssNumber[prop] || unit !== "px" && +initial) && rcssNum.exec(jQuery2.css(elem, prop)); 4425 if (initialInUnit && initialInUnit[3] !== unit) { 4426 initial = initial / 2; 4427 unit = unit || initialInUnit[3]; 4428 initialInUnit = +initial || 1; 4429 while (maxIterations--) { 4430 jQuery2.style(elem, prop, initialInUnit + unit); 4431 if ((1 - scale) * (1 - (scale = currentValue() / initial || 0.5)) <= 0) { 4432 maxIterations = 0; 4433 } 4434 initialInUnit = initialInUnit / scale; 4435 } 4436 initialInUnit = initialInUnit * 2; 4437 jQuery2.style(elem, prop, initialInUnit + unit); 4438 valueParts = valueParts || []; 4439 } 4440 if (valueParts) { 4441 initialInUnit = +initialInUnit || +initial || 0; 4442 adjusted = valueParts[1] ? initialInUnit + (valueParts[1] + 1) * valueParts[2] : +valueParts[2]; 4443 if (tween) { 4444 tween.unit = unit; 4445 tween.start = initialInUnit; 4446 tween.end = adjusted; 4447 } 4448 } 4449 return adjusted; 4450 } 4451 var defaultDisplayMap = {}; 4452 function getDefaultDisplay(elem) { 4453 var temp, doc = elem.ownerDocument, nodeName2 = elem.nodeName, display = defaultDisplayMap[nodeName2]; 4454 if (display) { 4455 return display; 4456 } 4457 temp = doc.body.appendChild(doc.createElement(nodeName2)); 4458 display = jQuery2.css(temp, "display"); 4459 temp.parentNode.removeChild(temp); 4460 if (display === "none") { 4461 display = "block"; 4462 } 4463 defaultDisplayMap[nodeName2] = display; 4464 return display; 4465 } 4466 function showHide(elements, show) { 4467 var display, elem, values = [], index = 0, length = elements.length; 4468 for (; index < length; index++) { 4469 elem = elements[index]; 4470 if (!elem.style) { 4471 continue; 4472 } 4473 display = elem.style.display; 4474 if (show) { 4475 if (display === "none") { 4476 values[index] = dataPriv.get(elem, "display") || null; 4477 if (!values[index]) { 4478 elem.style.display = ""; 4479 } 4480 } 4481 if (elem.style.display === "" && isHiddenWithinTree(elem)) { 4482 values[index] = getDefaultDisplay(elem); 4483 } 4484 } else { 4485 if (display !== "none") { 4486 values[index] = "none"; 4487 dataPriv.set(elem, "display", display); 4488 } 4489 } 4490 } 4491 for (index = 0; index < length; index++) { 4492 if (values[index] != null) { 4493 elements[index].style.display = values[index]; 4494 } 4495 } 4496 return elements; 4497 } 4498 jQuery2.fn.extend({ 4499 show: function() { 4500 return showHide(this, true); 4501 }, 4502 hide: function() { 4503 return showHide(this); 4504 }, 4505 toggle: function(state) { 4506 if (typeof state === "boolean") { 4507 return state ? this.show() : this.hide(); 4508 } 4509 return this.each(function() { 4510 if (isHiddenWithinTree(this)) { 4511 jQuery2(this).show(); 4512 } else { 4513 jQuery2(this).hide(); 4514 } 4515 }); 4516 } 4517 }); 4518 var rcheckableType = /^(?:checkbox|radio)$/i; 4519 var rtagName = /<([a-z][^\/\0>\x20\t\r\n\f]*)/i; 4520 var rscriptType = /^$|^module$|\/(?:java|ecma)script/i; 4521 (function() { 4522 var fragment = document2.createDocumentFragment(), div = fragment.appendChild(document2.createElement("div")), input = document2.createElement("input"); 4523 input.setAttribute("type", "radio"); 4524 input.setAttribute("checked", "checked"); 4525 input.setAttribute("name", "t"); 4526 div.appendChild(input); 4527 support.checkClone = div.cloneNode(true).cloneNode(true).lastChild.checked; 4528 div.innerHTML = "<textarea>x</textarea>"; 4529 support.noCloneChecked = !!div.cloneNode(true).lastChild.defaultValue; 4530 div.innerHTML = "<option></option>"; 4531 support.option = !!div.lastChild; 4532 })(); 4533 var wrapMap = { 4534 // XHTML parsers do not magically insert elements in the 4535 // same way that tag soup parsers do. So we cannot shorten 4536 // this by omitting <tbody> or other required elements. 4537 thead: [1, "<table>", "</table>"], 4538 col: [2, "<table><colgroup>", "</colgroup></table>"], 4539 tr: [2, "<table><tbody>", "</tbody></table>"], 4540 td: [3, "<table><tbody><tr>", "</tr></tbody></table>"], 4541 _default: [0, "", ""] 4542 }; 4543 wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; 4544 wrapMap.th = wrapMap.td; 4545 if (!support.option) { 4546 wrapMap.optgroup = wrapMap.option = [1, "<select multiple='multiple'>", "</select>"]; 4547 } 4548 function getAll(context, tag) { 4549 var ret; 4550 if (typeof context.getElementsByTagName !== "undefined") { 4551 ret = context.getElementsByTagName(tag || "*"); 4552 } else if (typeof context.querySelectorAll !== "undefined") { 4553 ret = context.querySelectorAll(tag || "*"); 4554 } else { 4555 ret = []; 4556 } 4557 if (tag === void 0 || tag && nodeName(context, tag)) { 4558 return jQuery2.merge([context], ret); 4559 } 4560 return ret; 4561 } 4562 function setGlobalEval(elems, refElements) { 4563 var i = 0, l = elems.length; 4564 for (; i < l; i++) { 4565 dataPriv.set( 4566 elems[i], 4567 "globalEval", 4568 !refElements || dataPriv.get(refElements[i], "globalEval") 4569 ); 4570 } 4571 } 4572 var rhtml = /<|&#?\w+;/; 4573 function buildFragment(elems, context, scripts, selection, ignored) { 4574 var elem, tmp, tag, wrap, attached, j, fragment = context.createDocumentFragment(), nodes = [], i = 0, l = elems.length; 4575 for (; i < l; i++) { 4576 elem = elems[i]; 4577 if (elem || elem === 0) { 4578 if (toType(elem) === "object") { 4579 jQuery2.merge(nodes, elem.nodeType ? [elem] : elem); 4580 } else if (!rhtml.test(elem)) { 4581 nodes.push(context.createTextNode(elem)); 4582 } else { 4583 tmp = tmp || fragment.appendChild(context.createElement("div")); 4584 tag = (rtagName.exec(elem) || ["", ""])[1].toLowerCase(); 4585 wrap = wrapMap[tag] || wrapMap._default; 4586 tmp.innerHTML = wrap[1] + jQuery2.htmlPrefilter(elem) + wrap[2]; 4587 j = wrap[0]; 4588 while (j--) { 4589 tmp = tmp.lastChild; 4590 } 4591 jQuery2.merge(nodes, tmp.childNodes); 4592 tmp = fragment.firstChild; 4593 tmp.textContent = ""; 4594 } 4595 } 4596 } 4597 fragment.textContent = ""; 4598 i = 0; 4599 while (elem = nodes[i++]) { 4600 if (selection && jQuery2.inArray(elem, selection) > -1) { 4601 if (ignored) { 4602 ignored.push(elem); 4603 } 4604 continue; 4605 } 4606 attached = isAttached(elem); 4607 tmp = getAll(fragment.appendChild(elem), "script"); 4608 if (attached) { 4609 setGlobalEval(tmp); 4610 } 4611 if (scripts) { 4612 j = 0; 4613 while (elem = tmp[j++]) { 4614 if (rscriptType.test(elem.type || "")) { 4615 scripts.push(elem); 4616 } 4617 } 4618 } 4619 } 4620 return fragment; 4621 } 4622 var rtypenamespace = /^([^.]*)(?:\.(.+)|)/; 4623 function returnTrue() { 4624 return true; 4625 } 4626 function returnFalse() { 4627 return false; 4628 } 4629 function on(elem, types, selector, data, fn, one) { 4630 var origFn, type; 4631 if (typeof types === "object") { 4632 if (typeof selector !== "string") { 4633 data = data || selector; 4634 selector = void 0; 4635 } 4636 for (type in types) { 4637 on(elem, type, selector, data, types[type], one); 4638 } 4639 return elem; 4640 } 4641 if (data == null && fn == null) { 4642 fn = selector; 4643 data = selector = void 0; 4644 } else if (fn == null) { 4645 if (typeof selector === "string") { 4646 fn = data; 4647 data = void 0; 4648 } else { 4649 fn = data; 4650 data = selector; 4651 selector = void 0; 4652 } 4653 } 4654 if (fn === false) { 4655 fn = returnFalse; 4656 } else if (!fn) { 4657 return elem; 4658 } 4659 if (one === 1) { 4660 origFn = fn; 4661 fn = function(event2) { 4662 jQuery2().off(event2); 4663 return origFn.apply(this, arguments); 4664 }; 4665 fn.guid = origFn.guid || (origFn.guid = jQuery2.guid++); 4666 } 4667 return elem.each(function() { 4668 jQuery2.event.add(this, types, fn, data, selector); 4669 }); 4670 } 4671 jQuery2.event = { 4672 global: {}, 4673 add: function(elem, types, handler, data, selector) { 4674 var handleObjIn, eventHandle, tmp, events, t2, handleObj, special, handlers, type, namespaces, origType, elemData = dataPriv.get(elem); 4675 if (!acceptData(elem)) { 4676 return; 4677 } 4678 if (handler.handler) { 4679 handleObjIn = handler; 4680 handler = handleObjIn.handler; 4681 selector = handleObjIn.selector; 4682 } 4683 if (selector) { 4684 jQuery2.find.matchesSelector(documentElement, selector); 4685 } 4686 if (!handler.guid) { 4687 handler.guid = jQuery2.guid++; 4688 } 4689 if (!(events = elemData.events)) { 4690 events = elemData.events = /* @__PURE__ */ Object.create(null); 4691 } 4692 if (!(eventHandle = elemData.handle)) { 4693 eventHandle = elemData.handle = function(e) { 4694 return typeof jQuery2 !== "undefined" && jQuery2.event.triggered !== e.type ? jQuery2.event.dispatch.apply(elem, arguments) : void 0; 4695 }; 4696 } 4697 types = (types || "").match(rnothtmlwhite) || [""]; 4698 t2 = types.length; 4699 while (t2--) { 4700 tmp = rtypenamespace.exec(types[t2]) || []; 4701 type = origType = tmp[1]; 4702 namespaces = (tmp[2] || "").split(".").sort(); 4703 if (!type) { 4704 continue; 4705 } 4706 special = jQuery2.event.special[type] || {}; 4707 type = (selector ? special.delegateType : special.bindType) || type; 4708 special = jQuery2.event.special[type] || {}; 4709 handleObj = jQuery2.extend({ 4710 type, 4711 origType, 4712 data, 4713 handler, 4714 guid: handler.guid, 4715 selector, 4716 needsContext: selector && jQuery2.expr.match.needsContext.test(selector), 4717 namespace: namespaces.join(".") 4718 }, handleObjIn); 4719 if (!(handlers = events[type])) { 4720 handlers = events[type] = []; 4721 handlers.delegateCount = 0; 4722 if (!special.setup || special.setup.call(elem, data, namespaces, eventHandle) === false) { 4723 if (elem.addEventListener) { 4724 elem.addEventListener(type, eventHandle); 4725 } 4726 } 4727 } 4728 if (special.add) { 4729 special.add.call(elem, handleObj); 4730 if (!handleObj.handler.guid) { 4731 handleObj.handler.guid = handler.guid; 4732 } 4733 } 4734 if (selector) { 4735 handlers.splice(handlers.delegateCount++, 0, handleObj); 4736 } else { 4737 handlers.push(handleObj); 4738 } 4739 jQuery2.event.global[type] = true; 4740 } 4741 }, 4742 // Detach an event or set of events from an element 4743 remove: function(elem, types, handler, selector, mappedTypes) { 4744 var j, origCount, tmp, events, t2, handleObj, special, handlers, type, namespaces, origType, elemData = dataPriv.hasData(elem) && dataPriv.get(elem); 4745 if (!elemData || !(events = elemData.events)) { 4746 return; 4747 } 4748 types = (types || "").match(rnothtmlwhite) || [""]; 4749 t2 = types.length; 4750 while (t2--) { 4751 tmp = rtypenamespace.exec(types[t2]) || []; 4752 type = origType = tmp[1]; 4753 namespaces = (tmp[2] || "").split(".").sort(); 4754 if (!type) { 4755 for (type in events) { 4756 jQuery2.event.remove(elem, type + types[t2], handler, selector, true); 4757 } 4758 continue; 4759 } 4760 special = jQuery2.event.special[type] || {}; 4761 type = (selector ? special.delegateType : special.bindType) || type; 4762 handlers = events[type] || []; 4763 tmp = tmp[2] && new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)"); 4764 origCount = j = handlers.length; 4765 while (j--) { 4766 handleObj = handlers[j]; 4767 if ((mappedTypes || origType === handleObj.origType) && (!handler || handler.guid === handleObj.guid) && (!tmp || tmp.test(handleObj.namespace)) && (!selector || selector === handleObj.selector || selector === "**" && handleObj.selector)) { 4768 handlers.splice(j, 1); 4769 if (handleObj.selector) { 4770 handlers.delegateCount--; 4771 } 4772 if (special.remove) { 4773 special.remove.call(elem, handleObj); 4774 } 4775 } 4776 } 4777 if (origCount && !handlers.length) { 4778 if (!special.teardown || special.teardown.call(elem, namespaces, elemData.handle) === false) { 4779 jQuery2.removeEvent(elem, type, elemData.handle); 4780 } 4781 delete events[type]; 4782 } 4783 } 4784 if (jQuery2.isEmptyObject(events)) { 4785 dataPriv.remove(elem, "handle events"); 4786 } 4787 }, 4788 dispatch: function(nativeEvent) { 4789 var i, j, ret, matched, handleObj, handlerQueue, args = new Array(arguments.length), event2 = jQuery2.event.fix(nativeEvent), handlers = (dataPriv.get(this, "events") || /* @__PURE__ */ Object.create(null))[event2.type] || [], special = jQuery2.event.special[event2.type] || {}; 4790 args[0] = event2; 4791 for (i = 1; i < arguments.length; i++) { 4792 args[i] = arguments[i]; 4793 } 4794 event2.delegateTarget = this; 4795 if (special.preDispatch && special.preDispatch.call(this, event2) === false) { 4796 return; 4797 } 4798 handlerQueue = jQuery2.event.handlers.call(this, event2, handlers); 4799 i = 0; 4800 while ((matched = handlerQueue[i++]) && !event2.isPropagationStopped()) { 4801 event2.currentTarget = matched.elem; 4802 j = 0; 4803 while ((handleObj = matched.handlers[j++]) && !event2.isImmediatePropagationStopped()) { 4804 if (!event2.rnamespace || handleObj.namespace === false || event2.rnamespace.test(handleObj.namespace)) { 4805 event2.handleObj = handleObj; 4806 event2.data = handleObj.data; 4807 ret = ((jQuery2.event.special[handleObj.origType] || {}).handle || handleObj.handler).apply(matched.elem, args); 4808 if (ret !== void 0) { 4809 if ((event2.result = ret) === false) { 4810 event2.preventDefault(); 4811 event2.stopPropagation(); 4812 } 4813 } 4814 } 4815 } 4816 } 4817 if (special.postDispatch) { 4818 special.postDispatch.call(this, event2); 4819 } 4820 return event2.result; 4821 }, 4822 handlers: function(event2, handlers) { 4823 var i, handleObj, sel, matchedHandlers, matchedSelectors, handlerQueue = [], delegateCount = handlers.delegateCount, cur = event2.target; 4824 if (delegateCount && // Support: IE <=9 4825 // Black-hole SVG <use> instance trees (trac-13180) 4826 cur.nodeType && // Support: Firefox <=42 4827 // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) 4828 // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click 4829 // Support: IE 11 only 4830 // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) 4831 !(event2.type === "click" && event2.button >= 1)) { 4832 for (; cur !== this; cur = cur.parentNode || this) { 4833 if (cur.nodeType === 1 && !(event2.type === "click" && cur.disabled === true)) { 4834 matchedHandlers = []; 4835 matchedSelectors = {}; 4836 for (i = 0; i < delegateCount; i++) { 4837 handleObj = handlers[i]; 4838 sel = handleObj.selector + " "; 4839 if (matchedSelectors[sel] === void 0) { 4840 matchedSelectors[sel] = handleObj.needsContext ? jQuery2(sel, this).index(cur) > -1 : jQuery2.find(sel, this, null, [cur]).length; 4841 } 4842 if (matchedSelectors[sel]) { 4843 matchedHandlers.push(handleObj); 4844 } 4845 } 4846 if (matchedHandlers.length) { 4847 handlerQueue.push({ elem: cur, handlers: matchedHandlers }); 4848 } 4849 } 4850 } 4851 } 4852 cur = this; 4853 if (delegateCount < handlers.length) { 4854 handlerQueue.push({ elem: cur, handlers: handlers.slice(delegateCount) }); 4855 } 4856 return handlerQueue; 4857 }, 4858 addProp: function(name, hook) { 4859 Object.defineProperty(jQuery2.Event.prototype, name, { 4860 enumerable: true, 4861 configurable: true, 4862 get: isFunction(hook) ? function() { 4863 if (this.originalEvent) { 4864 return hook(this.originalEvent); 4865 } 4866 } : function() { 4867 if (this.originalEvent) { 4868 return this.originalEvent[name]; 4869 } 4870 }, 4871 set: function(value) { 4872 Object.defineProperty(this, name, { 4873 enumerable: true, 4874 configurable: true, 4875 writable: true, 4876 value 4877 }); 4878 } 4879 }); 4880 }, 4881 fix: function(originalEvent) { 4882 return originalEvent[jQuery2.expando] ? originalEvent : new jQuery2.Event(originalEvent); 4883 }, 4884 special: { 4885 load: { 4886 // Prevent triggered image.load events from bubbling to window.load 4887 noBubble: true 4888 }, 4889 click: { 4890 // Utilize native event to ensure correct state for checkable inputs 4891 setup: function(data) { 4892 var el = this || data; 4893 if (rcheckableType.test(el.type) && el.click && nodeName(el, "input")) { 4894 leverageNative(el, "click", true); 4895 } 4896 return false; 4897 }, 4898 trigger: function(data) { 4899 var el = this || data; 4900 if (rcheckableType.test(el.type) && el.click && nodeName(el, "input")) { 4901 leverageNative(el, "click"); 4902 } 4903 return true; 4904 }, 4905 // For cross-browser consistency, suppress native .click() on links 4906 // Also prevent it if we're currently inside a leveraged native-event stack 4907 _default: function(event2) { 4908 var target = event2.target; 4909 return rcheckableType.test(target.type) && target.click && nodeName(target, "input") && dataPriv.get(target, "click") || nodeName(target, "a"); 4910 } 4911 }, 4912 beforeunload: { 4913 postDispatch: function(event2) { 4914 if (event2.result !== void 0 && event2.originalEvent) { 4915 event2.originalEvent.returnValue = event2.result; 4916 } 4917 } 4918 } 4919 } 4920 }; 4921 function leverageNative(el, type, isSetup) { 4922 if (!isSetup) { 4923 if (dataPriv.get(el, type) === void 0) { 4924 jQuery2.event.add(el, type, returnTrue); 4925 } 4926 return; 4927 } 4928 dataPriv.set(el, type, false); 4929 jQuery2.event.add(el, type, { 4930 namespace: false, 4931 handler: function(event2) { 4932 var result, saved = dataPriv.get(this, type); 4933 if (event2.isTrigger & 1 && this[type]) { 4934 if (!saved) { 4935 saved = slice.call(arguments); 4936 dataPriv.set(this, type, saved); 4937 this[type](); 4938 result = dataPriv.get(this, type); 4939 dataPriv.set(this, type, false); 4940 if (saved !== result) { 4941 event2.stopImmediatePropagation(); 4942 event2.preventDefault(); 4943 return result; 4944 } 4945 } else if ((jQuery2.event.special[type] || {}).delegateType) { 4946 event2.stopPropagation(); 4947 } 4948 } else if (saved) { 4949 dataPriv.set(this, type, jQuery2.event.trigger( 4950 saved[0], 4951 saved.slice(1), 4952 this 4953 )); 4954 event2.stopPropagation(); 4955 event2.isImmediatePropagationStopped = returnTrue; 4956 } 4957 } 4958 }); 4959 } 4960 jQuery2.removeEvent = function(elem, type, handle) { 4961 if (elem.removeEventListener) { 4962 elem.removeEventListener(type, handle); 4963 } 4964 }; 4965 jQuery2.Event = function(src, props) { 4966 if (!(this instanceof jQuery2.Event)) { 4967 return new jQuery2.Event(src, props); 4968 } 4969 if (src && src.type) { 4970 this.originalEvent = src; 4971 this.type = src.type; 4972 this.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === void 0 && // Support: Android <=2.3 only 4973 src.returnValue === false ? returnTrue : returnFalse; 4974 this.target = src.target && src.target.nodeType === 3 ? src.target.parentNode : src.target; 4975 this.currentTarget = src.currentTarget; 4976 this.relatedTarget = src.relatedTarget; 4977 } else { 4978 this.type = src; 4979 } 4980 if (props) { 4981 jQuery2.extend(this, props); 4982 } 4983 this.timeStamp = src && src.timeStamp || Date.now(); 4984 this[jQuery2.expando] = true; 4985 }; 4986 jQuery2.Event.prototype = { 4987 constructor: jQuery2.Event, 4988 isDefaultPrevented: returnFalse, 4989 isPropagationStopped: returnFalse, 4990 isImmediatePropagationStopped: returnFalse, 4991 isSimulated: false, 4992 preventDefault: function() { 4993 var e = this.originalEvent; 4994 this.isDefaultPrevented = returnTrue; 4995 if (e && !this.isSimulated) { 4996 e.preventDefault(); 4997 } 4998 }, 4999 stopPropagation: function() { 5000 var e = this.originalEvent; 5001 this.isPropagationStopped = returnTrue; 5002 if (e && !this.isSimulated) { 5003 e.stopPropagation(); 5004 } 5005 }, 5006 stopImmediatePropagation: function() { 5007 var e = this.originalEvent; 5008 this.isImmediatePropagationStopped = returnTrue; 5009 if (e && !this.isSimulated) { 5010 e.stopImmediatePropagation(); 5011 } 5012 this.stopPropagation(); 5013 } 5014 }; 5015 jQuery2.each({ 5016 altKey: true, 5017 bubbles: true, 5018 cancelable: true, 5019 changedTouches: true, 5020 ctrlKey: true, 5021 detail: true, 5022 eventPhase: true, 5023 metaKey: true, 5024 pageX: true, 5025 pageY: true, 5026 shiftKey: true, 5027 view: true, 5028 "char": true, 5029 code: true, 5030 charCode: true, 5031 key: true, 5032 keyCode: true, 5033 button: true, 5034 buttons: true, 5035 clientX: true, 5036 clientY: true, 5037 offsetX: true, 5038 offsetY: true, 5039 pointerId: true, 5040 pointerType: true, 5041 screenX: true, 5042 screenY: true, 5043 targetTouches: true, 5044 toElement: true, 5045 touches: true, 5046 which: true 5047 }, jQuery2.event.addProp); 5048 jQuery2.each({ focus: "focusin", blur: "focusout" }, function(type, delegateType) { 5049 function focusMappedHandler(nativeEvent) { 5050 if (document2.documentMode) { 5051 var handle = dataPriv.get(this, "handle"), event2 = jQuery2.event.fix(nativeEvent); 5052 event2.type = nativeEvent.type === "focusin" ? "focus" : "blur"; 5053 event2.isSimulated = true; 5054 handle(nativeEvent); 5055 if (event2.target === event2.currentTarget) { 5056 handle(event2); 5057 } 5058 } else { 5059 jQuery2.event.simulate( 5060 delegateType, 5061 nativeEvent.target, 5062 jQuery2.event.fix(nativeEvent) 5063 ); 5064 } 5065 } 5066 jQuery2.event.special[type] = { 5067 // Utilize native event if possible so blur/focus sequence is correct 5068 setup: function() { 5069 var attaches; 5070 leverageNative(this, type, true); 5071 if (document2.documentMode) { 5072 attaches = dataPriv.get(this, delegateType); 5073 if (!attaches) { 5074 this.addEventListener(delegateType, focusMappedHandler); 5075 } 5076 dataPriv.set(this, delegateType, (attaches || 0) + 1); 5077 } else { 5078 return false; 5079 } 5080 }, 5081 trigger: function() { 5082 leverageNative(this, type); 5083 return true; 5084 }, 5085 teardown: function() { 5086 var attaches; 5087 if (document2.documentMode) { 5088 attaches = dataPriv.get(this, delegateType) - 1; 5089 if (!attaches) { 5090 this.removeEventListener(delegateType, focusMappedHandler); 5091 dataPriv.remove(this, delegateType); 5092 } else { 5093 dataPriv.set(this, delegateType, attaches); 5094 } 5095 } else { 5096 return false; 5097 } 5098 }, 5099 // Suppress native focus or blur if we're currently inside 5100 // a leveraged native-event stack 5101 _default: function(event2) { 5102 return dataPriv.get(event2.target, type); 5103 }, 5104 delegateType 5105 }; 5106 jQuery2.event.special[delegateType] = { 5107 setup: function() { 5108 var doc = this.ownerDocument || this.document || this, dataHolder = document2.documentMode ? this : doc, attaches = dataPriv.get(dataHolder, delegateType); 5109 if (!attaches) { 5110 if (document2.documentMode) { 5111 this.addEventListener(delegateType, focusMappedHandler); 5112 } else { 5113 doc.addEventListener(type, focusMappedHandler, true); 5114 } 5115 } 5116 dataPriv.set(dataHolder, delegateType, (attaches || 0) + 1); 5117 }, 5118 teardown: function() { 5119 var doc = this.ownerDocument || this.document || this, dataHolder = document2.documentMode ? this : doc, attaches = dataPriv.get(dataHolder, delegateType) - 1; 5120 if (!attaches) { 5121 if (document2.documentMode) { 5122 this.removeEventListener(delegateType, focusMappedHandler); 5123 } else { 5124 doc.removeEventListener(type, focusMappedHandler, true); 5125 } 5126 dataPriv.remove(dataHolder, delegateType); 5127 } else { 5128 dataPriv.set(dataHolder, delegateType, attaches); 5129 } 5130 } 5131 }; 5132 }); 5133 jQuery2.each({ 5134 mouseenter: "mouseover", 5135 mouseleave: "mouseout", 5136 pointerenter: "pointerover", 5137 pointerleave: "pointerout" 5138 }, function(orig, fix) { 5139 jQuery2.event.special[orig] = { 5140 delegateType: fix, 5141 bindType: fix, 5142 handle: function(event2) { 5143 var ret, target = this, related = event2.relatedTarget, handleObj = event2.handleObj; 5144 if (!related || related !== target && !jQuery2.contains(target, related)) { 5145 event2.type = handleObj.origType; 5146 ret = handleObj.handler.apply(this, arguments); 5147 event2.type = fix; 5148 } 5149 return ret; 5150 } 5151 }; 5152 }); 5153 jQuery2.fn.extend({ 5154 on: function(types, selector, data, fn) { 5155 return on(this, types, selector, data, fn); 5156 }, 5157 one: function(types, selector, data, fn) { 5158 return on(this, types, selector, data, fn, 1); 5159 }, 5160 off: function(types, selector, fn) { 5161 var handleObj, type; 5162 if (types && types.preventDefault && types.handleObj) { 5163 handleObj = types.handleObj; 5164 jQuery2(types.delegateTarget).off( 5165 handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, 5166 handleObj.selector, 5167 handleObj.handler 5168 ); 5169 return this; 5170 } 5171 if (typeof types === "object") { 5172 for (type in types) { 5173 this.off(type, selector, types[type]); 5174 } 5175 return this; 5176 } 5177 if (selector === false || typeof selector === "function") { 5178 fn = selector; 5179 selector = void 0; 5180 } 5181 if (fn === false) { 5182 fn = returnFalse; 5183 } 5184 return this.each(function() { 5185 jQuery2.event.remove(this, types, fn, selector); 5186 }); 5187 } 5188 }); 5189 var rnoInnerhtml = /<script|<style|<link/i, rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, rcleanScript = /^\s*<!\[CDATA\[|\]\]>\s*$/g; 5190 function manipulationTarget(elem, content) { 5191 if (nodeName(elem, "table") && nodeName(content.nodeType !== 11 ? content : content.firstChild, "tr")) { 5192 return jQuery2(elem).children("tbody")[0] || elem; 5193 } 5194 return elem; 5195 } 5196 function disableScript(elem) { 5197 elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type; 5198 return elem; 5199 } 5200 function restoreScript(elem) { 5201 if ((elem.type || "").slice(0, 5) === "true/") { 5202 elem.type = elem.type.slice(5); 5203 } else { 5204 elem.removeAttribute("type"); 5205 } 5206 return elem; 5207 } 5208 function cloneCopyEvent(src, dest) { 5209 var i, l, type, pdataOld, udataOld, udataCur, events; 5210 if (dest.nodeType !== 1) { 5211 return; 5212 } 5213 if (dataPriv.hasData(src)) { 5214 pdataOld = dataPriv.get(src); 5215 events = pdataOld.events; 5216 if (events) { 5217 dataPriv.remove(dest, "handle events"); 5218 for (type in events) { 5219 for (i = 0, l = events[type].length; i < l; i++) { 5220 jQuery2.event.add(dest, type, events[type][i]); 5221 } 5222 } 5223 } 5224 } 5225 if (dataUser.hasData(src)) { 5226 udataOld = dataUser.access(src); 5227 udataCur = jQuery2.extend({}, udataOld); 5228 dataUser.set(dest, udataCur); 5229 } 5230 } 5231 function fixInput(src, dest) { 5232 var nodeName2 = dest.nodeName.toLowerCase(); 5233 if (nodeName2 === "input" && rcheckableType.test(src.type)) { 5234 dest.checked = src.checked; 5235 } else if (nodeName2 === "input" || nodeName2 === "textarea") { 5236 dest.defaultValue = src.defaultValue; 5237 } 5238 } 5239 function domManip(collection, args, callback, ignored) { 5240 args = flat(args); 5241 var fragment, first, scripts, hasScripts, node, doc, i = 0, l = collection.length, iNoClone = l - 1, value = args[0], valueIsFunction = isFunction(value); 5242 if (valueIsFunction || l > 1 && typeof value === "string" && !support.checkClone && rchecked.test(value)) { 5243 return collection.each(function(index) { 5244 var self2 = collection.eq(index); 5245 if (valueIsFunction) { 5246 args[0] = value.call(this, index, self2.html()); 5247 } 5248 domManip(self2, args, callback, ignored); 5249 }); 5250 } 5251 if (l) { 5252 fragment = buildFragment(args, collection[0].ownerDocument, false, collection, ignored); 5253 first = fragment.firstChild; 5254 if (fragment.childNodes.length === 1) { 5255 fragment = first; 5256 } 5257 if (first || ignored) { 5258 scripts = jQuery2.map(getAll(fragment, "script"), disableScript); 5259 hasScripts = scripts.length; 5260 for (; i < l; i++) { 5261 node = fragment; 5262 if (i !== iNoClone) { 5263 node = jQuery2.clone(node, true, true); 5264 if (hasScripts) { 5265 jQuery2.merge(scripts, getAll(node, "script")); 5266 } 5267 } 5268 callback.call(collection[i], node, i); 5269 } 5270 if (hasScripts) { 5271 doc = scripts[scripts.length - 1].ownerDocument; 5272 jQuery2.map(scripts, restoreScript); 5273 for (i = 0; i < hasScripts; i++) { 5274 node = scripts[i]; 5275 if (rscriptType.test(node.type || "") && !dataPriv.access(node, "globalEval") && jQuery2.contains(doc, node)) { 5276 if (node.src && (node.type || "").toLowerCase() !== "module") { 5277 if (jQuery2._evalUrl && !node.noModule) { 5278 jQuery2._evalUrl(node.src, { 5279 nonce: node.nonce || node.getAttribute("nonce") 5280 }, doc); 5281 } 5282 } else { 5283 DOMEval(node.textContent.replace(rcleanScript, ""), node, doc); 5284 } 5285 } 5286 } 5287 } 5288 } 5289 } 5290 return collection; 5291 } 5292 function remove(elem, selector, keepData) { 5293 var node, nodes = selector ? jQuery2.filter(selector, elem) : elem, i = 0; 5294 for (; (node = nodes[i]) != null; i++) { 5295 if (!keepData && node.nodeType === 1) { 5296 jQuery2.cleanData(getAll(node)); 5297 } 5298 if (node.parentNode) { 5299 if (keepData && isAttached(node)) { 5300 setGlobalEval(getAll(node, "script")); 5301 } 5302 node.parentNode.removeChild(node); 5303 } 5304 } 5305 return elem; 5306 } 5307 jQuery2.extend({ 5308 htmlPrefilter: function(html) { 5309 return html; 5310 }, 5311 clone: function(elem, dataAndEvents, deepDataAndEvents) { 5312 var i, l, srcElements, destElements, clone = elem.cloneNode(true), inPage = isAttached(elem); 5313 if (!support.noCloneChecked && (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery2.isXMLDoc(elem)) { 5314 destElements = getAll(clone); 5315 srcElements = getAll(elem); 5316 for (i = 0, l = srcElements.length; i < l; i++) { 5317 fixInput(srcElements[i], destElements[i]); 5318 } 5319 } 5320 if (dataAndEvents) { 5321 if (deepDataAndEvents) { 5322 srcElements = srcElements || getAll(elem); 5323 destElements = destElements || getAll(clone); 5324 for (i = 0, l = srcElements.length; i < l; i++) { 5325 cloneCopyEvent(srcElements[i], destElements[i]); 5326 } 5327 } else { 5328 cloneCopyEvent(elem, clone); 5329 } 5330 } 5331 destElements = getAll(clone, "script"); 5332 if (destElements.length > 0) { 5333 setGlobalEval(destElements, !inPage && getAll(elem, "script")); 5334 } 5335 return clone; 5336 }, 5337 cleanData: function(elems) { 5338 var data, elem, type, special = jQuery2.event.special, i = 0; 5339 for (; (elem = elems[i]) !== void 0; i++) { 5340 if (acceptData(elem)) { 5341 if (data = elem[dataPriv.expando]) { 5342 if (data.events) { 5343 for (type in data.events) { 5344 if (special[type]) { 5345 jQuery2.event.remove(elem, type); 5346 } else { 5347 jQuery2.removeEvent(elem, type, data.handle); 5348 } 5349 } 5350 } 5351 elem[dataPriv.expando] = void 0; 5352 } 5353 if (elem[dataUser.expando]) { 5354 elem[dataUser.expando] = void 0; 5355 } 5356 } 5357 } 5358 } 5359 }); 5360 jQuery2.fn.extend({ 5361 detach: function(selector) { 5362 return remove(this, selector, true); 5363 }, 5364 remove: function(selector) { 5365 return remove(this, selector); 5366 }, 5367 text: function(value) { 5368 return access(this, function(value2) { 5369 return value2 === void 0 ? jQuery2.text(this) : this.empty().each(function() { 5370 if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) { 5371 this.textContent = value2; 5372 } 5373 }); 5374 }, null, value, arguments.length); 5375 }, 5376 append: function() { 5377 return domManip(this, arguments, function(elem) { 5378 if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) { 5379 var target = manipulationTarget(this, elem); 5380 target.appendChild(elem); 5381 } 5382 }); 5383 }, 5384 prepend: function() { 5385 return domManip(this, arguments, function(elem) { 5386 if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) { 5387 var target = manipulationTarget(this, elem); 5388 target.insertBefore(elem, target.firstChild); 5389 } 5390 }); 5391 }, 5392 before: function() { 5393 return domManip(this, arguments, function(elem) { 5394 if (this.parentNode) { 5395 this.parentNode.insertBefore(elem, this); 5396 } 5397 }); 5398 }, 5399 after: function() { 5400 return domManip(this, arguments, function(elem) { 5401 if (this.parentNode) { 5402 this.parentNode.insertBefore(elem, this.nextSibling); 5403 } 5404 }); 5405 }, 5406 empty: function() { 5407 var elem, i = 0; 5408 for (; (elem = this[i]) != null; i++) { 5409 if (elem.nodeType === 1) { 5410 jQuery2.cleanData(getAll(elem, false)); 5411 elem.textContent = ""; 5412 } 5413 } 5414 return this; 5415 }, 5416 clone: function(dataAndEvents, deepDataAndEvents) { 5417 dataAndEvents = dataAndEvents == null ? false : dataAndEvents; 5418 deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; 5419 return this.map(function() { 5420 return jQuery2.clone(this, dataAndEvents, deepDataAndEvents); 5421 }); 5422 }, 5423 html: function(value) { 5424 return access(this, function(value2) { 5425 var elem = this[0] || {}, i = 0, l = this.length; 5426 if (value2 === void 0 && elem.nodeType === 1) { 5427 return elem.innerHTML; 5428 } 5429 if (typeof value2 === "string" && !rnoInnerhtml.test(value2) && !wrapMap[(rtagName.exec(value2) || ["", ""])[1].toLowerCase()]) { 5430 value2 = jQuery2.htmlPrefilter(value2); 5431 try { 5432 for (; i < l; i++) { 5433 elem = this[i] || {}; 5434 if (elem.nodeType === 1) { 5435 jQuery2.cleanData(getAll(elem, false)); 5436 elem.innerHTML = value2; 5437 } 5438 } 5439 elem = 0; 5440 } catch (e) { 5441 } 5442 } 5443 if (elem) { 5444 this.empty().append(value2); 5445 } 5446 }, null, value, arguments.length); 5447 }, 5448 replaceWith: function() { 5449 var ignored = []; 5450 return domManip(this, arguments, function(elem) { 5451 var parent = this.parentNode; 5452 if (jQuery2.inArray(this, ignored) < 0) { 5453 jQuery2.cleanData(getAll(this)); 5454 if (parent) { 5455 parent.replaceChild(elem, this); 5456 } 5457 } 5458 }, ignored); 5459 } 5460 }); 5461 jQuery2.each({ 5462 appendTo: "append", 5463 prependTo: "prepend", 5464 insertBefore: "before", 5465 insertAfter: "after", 5466 replaceAll: "replaceWith" 5467 }, function(name, original) { 5468 jQuery2.fn[name] = function(selector) { 5469 var elems, ret = [], insert = jQuery2(selector), last = insert.length - 1, i = 0; 5470 for (; i <= last; i++) { 5471 elems = i === last ? this : this.clone(true); 5472 jQuery2(insert[i])[original](elems); 5473 push.apply(ret, elems.get()); 5474 } 5475 return this.pushStack(ret); 5476 }; 5477 }); 5478 var rnumnonpx = new RegExp("^(" + pnum + ")(?!px)[a-z%]+$", "i"); 5479 var rcustomProp = /^--/; 5480 var getStyles = function(elem) { 5481 var view = elem.ownerDocument.defaultView; 5482 if (!view || !view.opener) { 5483 view = window2; 5484 } 5485 return view.getComputedStyle(elem); 5486 }; 5487 var swap = function(elem, options, callback) { 5488 var ret, name, old = {}; 5489 for (name in options) { 5490 old[name] = elem.style[name]; 5491 elem.style[name] = options[name]; 5492 } 5493 ret = callback.call(elem); 5494 for (name in options) { 5495 elem.style[name] = old[name]; 5496 } 5497 return ret; 5498 }; 5499 var rboxStyle = new RegExp(cssExpand.join("|"), "i"); 5500 (function() { 5501 function computeStyleTests() { 5502 if (!div) { 5503 return; 5504 } 5505 container.style.cssText = "position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0"; 5506 div.style.cssText = "position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%"; 5507 documentElement.appendChild(container).appendChild(div); 5508 var divStyle = window2.getComputedStyle(div); 5509 pixelPositionVal = divStyle.top !== "1%"; 5510 reliableMarginLeftVal = roundPixelMeasures(divStyle.marginLeft) === 12; 5511 div.style.right = "60%"; 5512 pixelBoxStylesVal = roundPixelMeasures(divStyle.right) === 36; 5513 boxSizingReliableVal = roundPixelMeasures(divStyle.width) === 36; 5514 div.style.position = "absolute"; 5515 scrollboxSizeVal = roundPixelMeasures(div.offsetWidth / 3) === 12; 5516 documentElement.removeChild(container); 5517 div = null; 5518 } 5519 function roundPixelMeasures(measure) { 5520 return Math.round(parseFloat(measure)); 5521 } 5522 var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, reliableTrDimensionsVal, reliableMarginLeftVal, container = document2.createElement("div"), div = document2.createElement("div"); 5523 if (!div.style) { 5524 return; 5525 } 5526 div.style.backgroundClip = "content-box"; 5527 div.cloneNode(true).style.backgroundClip = ""; 5528 support.clearCloneStyle = div.style.backgroundClip === "content-box"; 5529 jQuery2.extend(support, { 5530 boxSizingReliable: function() { 5531 computeStyleTests(); 5532 return boxSizingReliableVal; 5533 }, 5534 pixelBoxStyles: function() { 5535 computeStyleTests(); 5536 return pixelBoxStylesVal; 5537 }, 5538 pixelPosition: function() { 5539 computeStyleTests(); 5540 return pixelPositionVal; 5541 }, 5542 reliableMarginLeft: function() { 5543 computeStyleTests(); 5544 return reliableMarginLeftVal; 5545 }, 5546 scrollboxSize: function() { 5547 computeStyleTests(); 5548 return scrollboxSizeVal; 5549 }, 5550 // Support: IE 9 - 11+, Edge 15 - 18+ 5551 // IE/Edge misreport `getComputedStyle` of table rows with width/height 5552 // set in CSS while `offset*` properties report correct values. 5553 // Behavior in IE 9 is more subtle than in newer versions & it passes 5554 // some versions of this test; make sure not to make it pass there! 5555 // 5556 // Support: Firefox 70+ 5557 // Only Firefox includes border widths 5558 // in computed dimensions. (gh-4529) 5559 reliableTrDimensions: function() { 5560 var table, tr, trChild, trStyle; 5561 if (reliableTrDimensionsVal == null) { 5562 table = document2.createElement("table"); 5563 tr = document2.createElement("tr"); 5564 trChild = document2.createElement("div"); 5565 table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate"; 5566 tr.style.cssText = "box-sizing:content-box;border:1px solid"; 5567 tr.style.height = "1px"; 5568 trChild.style.height = "9px"; 5569 trChild.style.display = "block"; 5570 documentElement.appendChild(table).appendChild(tr).appendChild(trChild); 5571 trStyle = window2.getComputedStyle(tr); 5572 reliableTrDimensionsVal = parseInt(trStyle.height, 10) + parseInt(trStyle.borderTopWidth, 10) + parseInt(trStyle.borderBottomWidth, 10) === tr.offsetHeight; 5573 documentElement.removeChild(table); 5574 } 5575 return reliableTrDimensionsVal; 5576 } 5577 }); 5578 })(); 5579 function curCSS(elem, name, computed) { 5580 var width, minWidth, maxWidth, ret, isCustomProp = rcustomProp.test(name), style = elem.style; 5581 computed = computed || getStyles(elem); 5582 if (computed) { 5583 ret = computed.getPropertyValue(name) || computed[name]; 5584 if (isCustomProp && ret) { 5585 ret = ret.replace(rtrimCSS, "$1") || void 0; 5586 } 5587 if (ret === "" && !isAttached(elem)) { 5588 ret = jQuery2.style(elem, name); 5589 } 5590 if (!support.pixelBoxStyles() && rnumnonpx.test(ret) && rboxStyle.test(name)) { 5591 width = style.width; 5592 minWidth = style.minWidth; 5593 maxWidth = style.maxWidth; 5594 style.minWidth = style.maxWidth = style.width = ret; 5595 ret = computed.width; 5596 style.width = width; 5597 style.minWidth = minWidth; 5598 style.maxWidth = maxWidth; 5599 } 5600 } 5601 return ret !== void 0 ? ( 5602 // Support: IE <=9 - 11 only 5603 // IE returns zIndex value as an integer. 5604 ret + "" 5605 ) : ret; 5606 } 5607 function addGetHookIf(conditionFn, hookFn) { 5608 return { 5609 get: function() { 5610 if (conditionFn()) { 5611 delete this.get; 5612 return; 5613 } 5614 return (this.get = hookFn).apply(this, arguments); 5615 } 5616 }; 5617 } 5618 var cssPrefixes = ["Webkit", "Moz", "ms"], emptyStyle = document2.createElement("div").style, vendorProps = {}; 5619 function vendorPropName(name) { 5620 var capName = name[0].toUpperCase() + name.slice(1), i = cssPrefixes.length; 5621 while (i--) { 5622 name = cssPrefixes[i] + capName; 5623 if (name in emptyStyle) { 5624 return name; 5625 } 5626 } 5627 } 5628 function finalPropName(name) { 5629 var final = jQuery2.cssProps[name] || vendorProps[name]; 5630 if (final) { 5631 return final; 5632 } 5633 if (name in emptyStyle) { 5634 return name; 5635 } 5636 return vendorProps[name] = vendorPropName(name) || name; 5637 } 5638 var rdisplayswap = /^(none|table(?!-c[ea]).+)/, cssShow = { position: "absolute", visibility: "hidden", display: "block" }, cssNormalTransform = { 5639 letterSpacing: "0", 5640 fontWeight: "400" 5641 }; 5642 function setPositiveNumber(_elem, value, subtract) { 5643 var matches = rcssNum.exec(value); 5644 return matches ? ( 5645 // Guard against undefined "subtract", e.g., when used as in cssHooks 5646 Math.max(0, matches[2] - (subtract || 0)) + (matches[3] || "px") 5647 ) : value; 5648 } 5649 function boxModelAdjustment(elem, dimension, box, isBorderBox, styles, computedVal) { 5650 var i = dimension === "width" ? 1 : 0, extra = 0, delta = 0, marginDelta = 0; 5651 if (box === (isBorderBox ? "border" : "content")) { 5652 return 0; 5653 } 5654 for (; i < 4; i += 2) { 5655 if (box === "margin") { 5656 marginDelta += jQuery2.css(elem, box + cssExpand[i], true, styles); 5657 } 5658 if (!isBorderBox) { 5659 delta += jQuery2.css(elem, "padding" + cssExpand[i], true, styles); 5660 if (box !== "padding") { 5661 delta += jQuery2.css(elem, "border" + cssExpand[i] + "Width", true, styles); 5662 } else { 5663 extra += jQuery2.css(elem, "border" + cssExpand[i] + "Width", true, styles); 5664 } 5665 } else { 5666 if (box === "content") { 5667 delta -= jQuery2.css(elem, "padding" + cssExpand[i], true, styles); 5668 } 5669 if (box !== "margin") { 5670 delta -= jQuery2.css(elem, "border" + cssExpand[i] + "Width", true, styles); 5671 } 5672 } 5673 } 5674 if (!isBorderBox && computedVal >= 0) { 5675 delta += Math.max(0, Math.ceil( 5676 elem["offset" + dimension[0].toUpperCase() + dimension.slice(1)] - computedVal - delta - extra - 0.5 5677 // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter 5678 // Use an explicit zero to avoid NaN (gh-3964) 5679 )) || 0; 5680 } 5681 return delta + marginDelta; 5682 } 5683 function getWidthOrHeight(elem, dimension, extra) { 5684 var styles = getStyles(elem), boxSizingNeeded = !support.boxSizingReliable() || extra, isBorderBox = boxSizingNeeded && jQuery2.css(elem, "boxSizing", false, styles) === "border-box", valueIsBorderBox = isBorderBox, val = curCSS(elem, dimension, styles), offsetProp = "offset" + dimension[0].toUpperCase() + dimension.slice(1); 5685 if (rnumnonpx.test(val)) { 5686 if (!extra) { 5687 return val; 5688 } 5689 val = "auto"; 5690 } 5691 if ((!support.boxSizingReliable() && isBorderBox || // Support: IE 10 - 11+, Edge 15 - 18+ 5692 // IE/Edge misreport `getComputedStyle` of table rows with width/height 5693 // set in CSS while `offset*` properties report correct values. 5694 // Interestingly, in some cases IE 9 doesn't suffer from this issue. 5695 !support.reliableTrDimensions() && nodeName(elem, "tr") || // Fall back to offsetWidth/offsetHeight when value is "auto" 5696 // This happens for inline elements with no explicit setting (gh-3571) 5697 val === "auto" || // Support: Android <=4.1 - 4.3 only 5698 // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) 5699 !parseFloat(val) && jQuery2.css(elem, "display", false, styles) === "inline") && // Make sure the element is visible & connected 5700 elem.getClientRects().length) { 5701 isBorderBox = jQuery2.css(elem, "boxSizing", false, styles) === "border-box"; 5702 valueIsBorderBox = offsetProp in elem; 5703 if (valueIsBorderBox) { 5704 val = elem[offsetProp]; 5705 } 5706 } 5707 val = parseFloat(val) || 0; 5708 return val + boxModelAdjustment( 5709 elem, 5710 dimension, 5711 extra || (isBorderBox ? "border" : "content"), 5712 valueIsBorderBox, 5713 styles, 5714 // Provide the current computed size to request scroll gutter calculation (gh-3589) 5715 val 5716 ) + "px"; 5717 } 5718 jQuery2.extend({ 5719 // Add in style property hooks for overriding the default 5720 // behavior of getting and setting a style property 5721 cssHooks: { 5722 opacity: { 5723 get: function(elem, computed) { 5724 if (computed) { 5725 var ret = curCSS(elem, "opacity"); 5726 return ret === "" ? "1" : ret; 5727 } 5728 } 5729 } 5730 }, 5731 // Don't automatically add "px" to these possibly-unitless properties 5732 cssNumber: { 5733 animationIterationCount: true, 5734 aspectRatio: true, 5735 borderImageSlice: true, 5736 columnCount: true, 5737 flexGrow: true, 5738 flexShrink: true, 5739 fontWeight: true, 5740 gridArea: true, 5741 gridColumn: true, 5742 gridColumnEnd: true, 5743 gridColumnStart: true, 5744 gridRow: true, 5745 gridRowEnd: true, 5746 gridRowStart: true, 5747 lineHeight: true, 5748 opacity: true, 5749 order: true, 5750 orphans: true, 5751 scale: true, 5752 widows: true, 5753 zIndex: true, 5754 zoom: true, 5755 // SVG-related 5756 fillOpacity: true, 5757 floodOpacity: true, 5758 stopOpacity: true, 5759 strokeMiterlimit: true, 5760 strokeOpacity: true 5761 }, 5762 // Add in properties whose names you wish to fix before 5763 // setting or getting the value 5764 cssProps: {}, 5765 // Get and set the style property on a DOM Node 5766 style: function(elem, name, value, extra) { 5767 if (!elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style) { 5768 return; 5769 } 5770 var ret, type, hooks, origName = camelCase(name), isCustomProp = rcustomProp.test(name), style = elem.style; 5771 if (!isCustomProp) { 5772 name = finalPropName(origName); 5773 } 5774 hooks = jQuery2.cssHooks[name] || jQuery2.cssHooks[origName]; 5775 if (value !== void 0) { 5776 type = typeof value; 5777 if (type === "string" && (ret = rcssNum.exec(value)) && ret[1]) { 5778 value = adjustCSS(elem, name, ret); 5779 type = "number"; 5780 } 5781 if (value == null || value !== value) { 5782 return; 5783 } 5784 if (type === "number" && !isCustomProp) { 5785 value += ret && ret[3] || (jQuery2.cssNumber[origName] ? "" : "px"); 5786 } 5787 if (!support.clearCloneStyle && value === "" && name.indexOf("background") === 0) { 5788 style[name] = "inherit"; 5789 } 5790 if (!hooks || !("set" in hooks) || (value = hooks.set(elem, value, extra)) !== void 0) { 5791 if (isCustomProp) { 5792 style.setProperty(name, value); 5793 } else { 5794 style[name] = value; 5795 } 5796 } 5797 } else { 5798 if (hooks && "get" in hooks && (ret = hooks.get(elem, false, extra)) !== void 0) { 5799 return ret; 5800 } 5801 return style[name]; 5802 } 5803 }, 5804 css: function(elem, name, extra, styles) { 5805 var val, num, hooks, origName = camelCase(name), isCustomProp = rcustomProp.test(name); 5806 if (!isCustomProp) { 5807 name = finalPropName(origName); 5808 } 5809 hooks = jQuery2.cssHooks[name] || jQuery2.cssHooks[origName]; 5810 if (hooks && "get" in hooks) { 5811 val = hooks.get(elem, true, extra); 5812 } 5813 if (val === void 0) { 5814 val = curCSS(elem, name, styles); 5815 } 5816 if (val === "normal" && name in cssNormalTransform) { 5817 val = cssNormalTransform[name]; 5818 } 5819 if (extra === "" || extra) { 5820 num = parseFloat(val); 5821 return extra === true || isFinite(num) ? num || 0 : val; 5822 } 5823 return val; 5824 } 5825 }); 5826 jQuery2.each(["height", "width"], function(_i, dimension) { 5827 jQuery2.cssHooks[dimension] = { 5828 get: function(elem, computed, extra) { 5829 if (computed) { 5830 return rdisplayswap.test(jQuery2.css(elem, "display")) && // Support: Safari 8+ 5831 // Table columns in Safari have non-zero offsetWidth & zero 5832 // getBoundingClientRect().width unless display is changed. 5833 // Support: IE <=11 only 5834 // Running getBoundingClientRect on a disconnected node 5835 // in IE throws an error. 5836 (!elem.getClientRects().length || !elem.getBoundingClientRect().width) ? swap(elem, cssShow, function() { 5837 return getWidthOrHeight(elem, dimension, extra); 5838 }) : getWidthOrHeight(elem, dimension, extra); 5839 } 5840 }, 5841 set: function(elem, value, extra) { 5842 var matches, styles = getStyles(elem), scrollboxSizeBuggy = !support.scrollboxSize() && styles.position === "absolute", boxSizingNeeded = scrollboxSizeBuggy || extra, isBorderBox = boxSizingNeeded && jQuery2.css(elem, "boxSizing", false, styles) === "border-box", subtract = extra ? boxModelAdjustment( 5843 elem, 5844 dimension, 5845 extra, 5846 isBorderBox, 5847 styles 5848 ) : 0; 5849 if (isBorderBox && scrollboxSizeBuggy) { 5850 subtract -= Math.ceil( 5851 elem["offset" + dimension[0].toUpperCase() + dimension.slice(1)] - parseFloat(styles[dimension]) - boxModelAdjustment(elem, dimension, "border", false, styles) - 0.5 5852 ); 5853 } 5854 if (subtract && (matches = rcssNum.exec(value)) && (matches[3] || "px") !== "px") { 5855 elem.style[dimension] = value; 5856 value = jQuery2.css(elem, dimension); 5857 } 5858 return setPositiveNumber(elem, value, subtract); 5859 } 5860 }; 5861 }); 5862 jQuery2.cssHooks.marginLeft = addGetHookIf( 5863 support.reliableMarginLeft, 5864 function(elem, computed) { 5865 if (computed) { 5866 return (parseFloat(curCSS(elem, "marginLeft")) || elem.getBoundingClientRect().left - swap(elem, { marginLeft: 0 }, function() { 5867 return elem.getBoundingClientRect().left; 5868 })) + "px"; 5869 } 5870 } 5871 ); 5872 jQuery2.each({ 5873 margin: "", 5874 padding: "", 5875 border: "Width" 5876 }, function(prefix, suffix) { 5877 jQuery2.cssHooks[prefix + suffix] = { 5878 expand: function(value) { 5879 var i = 0, expanded = {}, parts = typeof value === "string" ? value.split(" ") : [value]; 5880 for (; i < 4; i++) { 5881 expanded[prefix + cssExpand[i] + suffix] = parts[i] || parts[i - 2] || parts[0]; 5882 } 5883 return expanded; 5884 } 5885 }; 5886 if (prefix !== "margin") { 5887 jQuery2.cssHooks[prefix + suffix].set = setPositiveNumber; 5888 } 5889 }); 5890 jQuery2.fn.extend({ 5891 css: function(name, value) { 5892 return access(this, function(elem, name2, value2) { 5893 var styles, len, map = {}, i = 0; 5894 if (Array.isArray(name2)) { 5895 styles = getStyles(elem); 5896 len = name2.length; 5897 for (; i < len; i++) { 5898 map[name2[i]] = jQuery2.css(elem, name2[i], false, styles); 5899 } 5900 return map; 5901 } 5902 return value2 !== void 0 ? jQuery2.style(elem, name2, value2) : jQuery2.css(elem, name2); 5903 }, name, value, arguments.length > 1); 5904 } 5905 }); 5906 function Tween(elem, options, prop, end, easing) { 5907 return new Tween.prototype.init(elem, options, prop, end, easing); 5908 } 5909 jQuery2.Tween = Tween; 5910 Tween.prototype = { 5911 constructor: Tween, 5912 init: function(elem, options, prop, end, easing, unit) { 5913 this.elem = elem; 5914 this.prop = prop; 5915 this.easing = easing || jQuery2.easing._default; 5916 this.options = options; 5917 this.start = this.now = this.cur(); 5918 this.end = end; 5919 this.unit = unit || (jQuery2.cssNumber[prop] ? "" : "px"); 5920 }, 5921 cur: function() { 5922 var hooks = Tween.propHooks[this.prop]; 5923 return hooks && hooks.get ? hooks.get(this) : Tween.propHooks._default.get(this); 5924 }, 5925 run: function(percent) { 5926 var eased, hooks = Tween.propHooks[this.prop]; 5927 if (this.options.duration) { 5928 this.pos = eased = jQuery2.easing[this.easing]( 5929 percent, 5930 this.options.duration * percent, 5931 0, 5932 1, 5933 this.options.duration 5934 ); 5935 } else { 5936 this.pos = eased = percent; 5937 } 5938 this.now = (this.end - this.start) * eased + this.start; 5939 if (this.options.step) { 5940 this.options.step.call(this.elem, this.now, this); 5941 } 5942 if (hooks && hooks.set) { 5943 hooks.set(this); 5944 } else { 5945 Tween.propHooks._default.set(this); 5946 } 5947 return this; 5948 } 5949 }; 5950 Tween.prototype.init.prototype = Tween.prototype; 5951 Tween.propHooks = { 5952 _default: { 5953 get: function(tween) { 5954 var result; 5955 if (tween.elem.nodeType !== 1 || tween.elem[tween.prop] != null && tween.elem.style[tween.prop] == null) { 5956 return tween.elem[tween.prop]; 5957 } 5958 result = jQuery2.css(tween.elem, tween.prop, ""); 5959 return !result || result === "auto" ? 0 : result; 5960 }, 5961 set: function(tween) { 5962 if (jQuery2.fx.step[tween.prop]) { 5963 jQuery2.fx.step[tween.prop](tween); 5964 } else if (tween.elem.nodeType === 1 && (jQuery2.cssHooks[tween.prop] || tween.elem.style[finalPropName(tween.prop)] != null)) { 5965 jQuery2.style(tween.elem, tween.prop, tween.now + tween.unit); 5966 } else { 5967 tween.elem[tween.prop] = tween.now; 5968 } 5969 } 5970 } 5971 }; 5972 Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { 5973 set: function(tween) { 5974 if (tween.elem.nodeType && tween.elem.parentNode) { 5975 tween.elem[tween.prop] = tween.now; 5976 } 5977 } 5978 }; 5979 jQuery2.easing = { 5980 linear: function(p) { 5981 return p; 5982 }, 5983 swing: function(p) { 5984 return 0.5 - Math.cos(p * Math.PI) / 2; 5985 }, 5986 _default: "swing" 5987 }; 5988 jQuery2.fx = Tween.prototype.init; 5989 jQuery2.fx.step = {}; 5990 var fxNow, inProgress, rfxtypes = /^(?:toggle|show|hide)$/, rrun = /queueHooks$/; 5991 function schedule() { 5992 if (inProgress) { 5993 if (document2.hidden === false && window2.requestAnimationFrame) { 5994 window2.requestAnimationFrame(schedule); 5995 } else { 5996 window2.setTimeout(schedule, jQuery2.fx.interval); 5997 } 5998 jQuery2.fx.tick(); 5999 } 6000 } 6001 function createFxNow() { 6002 window2.setTimeout(function() { 6003 fxNow = void 0; 6004 }); 6005 return fxNow = Date.now(); 6006 } 6007 function genFx(type, includeWidth) { 6008 var which, i = 0, attrs = { height: type }; 6009 includeWidth = includeWidth ? 1 : 0; 6010 for (; i < 4; i += 2 - includeWidth) { 6011 which = cssExpand[i]; 6012 attrs["margin" + which] = attrs["padding" + which] = type; 6013 } 6014 if (includeWidth) { 6015 attrs.opacity = attrs.width = type; 6016 } 6017 return attrs; 6018 } 6019 function createTween(value, prop, animation) { 6020 var tween, collection = (Animation.tweeners[prop] || []).concat(Animation.tweeners["*"]), index = 0, length = collection.length; 6021 for (; index < length; index++) { 6022 if (tween = collection[index].call(animation, prop, value)) { 6023 return tween; 6024 } 6025 } 6026 } 6027 function defaultPrefilter(elem, props, opts) { 6028 var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, isBox = "width" in props || "height" in props, anim = this, orig = {}, style = elem.style, hidden = elem.nodeType && isHiddenWithinTree(elem), dataShow = dataPriv.get(elem, "fxshow"); 6029 if (!opts.queue) { 6030 hooks = jQuery2._queueHooks(elem, "fx"); 6031 if (hooks.unqueued == null) { 6032 hooks.unqueued = 0; 6033 oldfire = hooks.empty.fire; 6034 hooks.empty.fire = function() { 6035 if (!hooks.unqueued) { 6036 oldfire(); 6037 } 6038 }; 6039 } 6040 hooks.unqueued++; 6041 anim.always(function() { 6042 anim.always(function() { 6043 hooks.unqueued--; 6044 if (!jQuery2.queue(elem, "fx").length) { 6045 hooks.empty.fire(); 6046 } 6047 }); 6048 }); 6049 } 6050 for (prop in props) { 6051 value = props[prop]; 6052 if (rfxtypes.test(value)) { 6053 delete props[prop]; 6054 toggle = toggle || value === "toggle"; 6055 if (value === (hidden ? "hide" : "show")) { 6056 if (value === "show" && dataShow && dataShow[prop] !== void 0) { 6057 hidden = true; 6058 } else { 6059 continue; 6060 } 6061 } 6062 orig[prop] = dataShow && dataShow[prop] || jQuery2.style(elem, prop); 6063 } 6064 } 6065 propTween = !jQuery2.isEmptyObject(props); 6066 if (!propTween && jQuery2.isEmptyObject(orig)) { 6067 return; 6068 } 6069 if (isBox && elem.nodeType === 1) { 6070 opts.overflow = [style.overflow, style.overflowX, style.overflowY]; 6071 restoreDisplay = dataShow && dataShow.display; 6072 if (restoreDisplay == null) { 6073 restoreDisplay = dataPriv.get(elem, "display"); 6074 } 6075 display = jQuery2.css(elem, "display"); 6076 if (display === "none") { 6077 if (restoreDisplay) { 6078 display = restoreDisplay; 6079 } else { 6080 showHide([elem], true); 6081 restoreDisplay = elem.style.display || restoreDisplay; 6082 display = jQuery2.css(elem, "display"); 6083 showHide([elem]); 6084 } 6085 } 6086 if (display === "inline" || display === "inline-block" && restoreDisplay != null) { 6087 if (jQuery2.css(elem, "float") === "none") { 6088 if (!propTween) { 6089 anim.done(function() { 6090 style.display = restoreDisplay; 6091 }); 6092 if (restoreDisplay == null) { 6093 display = style.display; 6094 restoreDisplay = display === "none" ? "" : display; 6095 } 6096 } 6097 style.display = "inline-block"; 6098 } 6099 } 6100 } 6101 if (opts.overflow) { 6102 style.overflow = "hidden"; 6103 anim.always(function() { 6104 style.overflow = opts.overflow[0]; 6105 style.overflowX = opts.overflow[1]; 6106 style.overflowY = opts.overflow[2]; 6107 }); 6108 } 6109 propTween = false; 6110 for (prop in orig) { 6111 if (!propTween) { 6112 if (dataShow) { 6113 if ("hidden" in dataShow) { 6114 hidden = dataShow.hidden; 6115 } 6116 } else { 6117 dataShow = dataPriv.access(elem, "fxshow", { display: restoreDisplay }); 6118 } 6119 if (toggle) { 6120 dataShow.hidden = !hidden; 6121 } 6122 if (hidden) { 6123 showHide([elem], true); 6124 } 6125 anim.done(function() { 6126 if (!hidden) { 6127 showHide([elem]); 6128 } 6129 dataPriv.remove(elem, "fxshow"); 6130 for (prop in orig) { 6131 jQuery2.style(elem, prop, orig[prop]); 6132 } 6133 }); 6134 } 6135 propTween = createTween(hidden ? dataShow[prop] : 0, prop, anim); 6136 if (!(prop in dataShow)) { 6137 dataShow[prop] = propTween.start; 6138 if (hidden) { 6139 propTween.end = propTween.start; 6140 propTween.start = 0; 6141 } 6142 } 6143 } 6144 } 6145 function propFilter(props, specialEasing) { 6146 var index, name, easing, value, hooks; 6147 for (index in props) { 6148 name = camelCase(index); 6149 easing = specialEasing[name]; 6150 value = props[index]; 6151 if (Array.isArray(value)) { 6152 easing = value[1]; 6153 value = props[index] = value[0]; 6154 } 6155 if (index !== name) { 6156 props[name] = value; 6157 delete props[index]; 6158 } 6159 hooks = jQuery2.cssHooks[name]; 6160 if (hooks && "expand" in hooks) { 6161 value = hooks.expand(value); 6162 delete props[name]; 6163 for (index in value) { 6164 if (!(index in props)) { 6165 props[index] = value[index]; 6166 specialEasing[index] = easing; 6167 } 6168 } 6169 } else { 6170 specialEasing[name] = easing; 6171 } 6172 } 6173 } 6174 function Animation(elem, properties, options) { 6175 var result, stopped, index = 0, length = Animation.prefilters.length, deferred = jQuery2.Deferred().always(function() { 6176 delete tick.elem; 6177 }), tick = function() { 6178 if (stopped) { 6179 return false; 6180 } 6181 var currentTime = fxNow || createFxNow(), remaining = Math.max(0, animation.startTime + animation.duration - currentTime), temp = remaining / animation.duration || 0, percent = 1 - temp, index2 = 0, length2 = animation.tweens.length; 6182 for (; index2 < length2; index2++) { 6183 animation.tweens[index2].run(percent); 6184 } 6185 deferred.notifyWith(elem, [animation, percent, remaining]); 6186 if (percent < 1 && length2) { 6187 return remaining; 6188 } 6189 if (!length2) { 6190 deferred.notifyWith(elem, [animation, 1, 0]); 6191 } 6192 deferred.resolveWith(elem, [animation]); 6193 return false; 6194 }, animation = deferred.promise({ 6195 elem, 6196 props: jQuery2.extend({}, properties), 6197 opts: jQuery2.extend(true, { 6198 specialEasing: {}, 6199 easing: jQuery2.easing._default 6200 }, options), 6201 originalProperties: properties, 6202 originalOptions: options, 6203 startTime: fxNow || createFxNow(), 6204 duration: options.duration, 6205 tweens: [], 6206 createTween: function(prop, end) { 6207 var tween = jQuery2.Tween( 6208 elem, 6209 animation.opts, 6210 prop, 6211 end, 6212 animation.opts.specialEasing[prop] || animation.opts.easing 6213 ); 6214 animation.tweens.push(tween); 6215 return tween; 6216 }, 6217 stop: function(gotoEnd) { 6218 var index2 = 0, length2 = gotoEnd ? animation.tweens.length : 0; 6219 if (stopped) { 6220 return this; 6221 } 6222 stopped = true; 6223 for (; index2 < length2; index2++) { 6224 animation.tweens[index2].run(1); 6225 } 6226 if (gotoEnd) { 6227 deferred.notifyWith(elem, [animation, 1, 0]); 6228 deferred.resolveWith(elem, [animation, gotoEnd]); 6229 } else { 6230 deferred.rejectWith(elem, [animation, gotoEnd]); 6231 } 6232 return this; 6233 } 6234 }), props = animation.props; 6235 propFilter(props, animation.opts.specialEasing); 6236 for (; index < length; index++) { 6237 result = Animation.prefilters[index].call(animation, elem, props, animation.opts); 6238 if (result) { 6239 if (isFunction(result.stop)) { 6240 jQuery2._queueHooks(animation.elem, animation.opts.queue).stop = result.stop.bind(result); 6241 } 6242 return result; 6243 } 6244 } 6245 jQuery2.map(props, createTween, animation); 6246 if (isFunction(animation.opts.start)) { 6247 animation.opts.start.call(elem, animation); 6248 } 6249 animation.progress(animation.opts.progress).done(animation.opts.done, animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always); 6250 jQuery2.fx.timer( 6251 jQuery2.extend(tick, { 6252 elem, 6253 anim: animation, 6254 queue: animation.opts.queue 6255 }) 6256 ); 6257 return animation; 6258 } 6259 jQuery2.Animation = jQuery2.extend(Animation, { 6260 tweeners: { 6261 "*": [function(prop, value) { 6262 var tween = this.createTween(prop, value); 6263 adjustCSS(tween.elem, prop, rcssNum.exec(value), tween); 6264 return tween; 6265 }] 6266 }, 6267 tweener: function(props, callback) { 6268 if (isFunction(props)) { 6269 callback = props; 6270 props = ["*"]; 6271 } else { 6272 props = props.match(rnothtmlwhite); 6273 } 6274 var prop, index = 0, length = props.length; 6275 for (; index < length; index++) { 6276 prop = props[index]; 6277 Animation.tweeners[prop] = Animation.tweeners[prop] || []; 6278 Animation.tweeners[prop].unshift(callback); 6279 } 6280 }, 6281 prefilters: [defaultPrefilter], 6282 prefilter: function(callback, prepend) { 6283 if (prepend) { 6284 Animation.prefilters.unshift(callback); 6285 } else { 6286 Animation.prefilters.push(callback); 6287 } 6288 } 6289 }); 6290 jQuery2.speed = function(speed, easing, fn) { 6291 var opt = speed && typeof speed === "object" ? jQuery2.extend({}, speed) : { 6292 complete: fn || !fn && easing || isFunction(speed) && speed, 6293 duration: speed, 6294 easing: fn && easing || easing && !isFunction(easing) && easing 6295 }; 6296 if (jQuery2.fx.off) { 6297 opt.duration = 0; 6298 } else { 6299 if (typeof opt.duration !== "number") { 6300 if (opt.duration in jQuery2.fx.speeds) { 6301 opt.duration = jQuery2.fx.speeds[opt.duration]; 6302 } else { 6303 opt.duration = jQuery2.fx.speeds._default; 6304 } 6305 } 6306 } 6307 if (opt.queue == null || opt.queue === true) { 6308 opt.queue = "fx"; 6309 } 6310 opt.old = opt.complete; 6311 opt.complete = function() { 6312 if (isFunction(opt.old)) { 6313 opt.old.call(this); 6314 } 6315 if (opt.queue) { 6316 jQuery2.dequeue(this, opt.queue); 6317 } 6318 }; 6319 return opt; 6320 }; 6321 jQuery2.fn.extend({ 6322 fadeTo: function(speed, to, easing, callback) { 6323 return this.filter(isHiddenWithinTree).css("opacity", 0).show().end().animate({ opacity: to }, speed, easing, callback); 6324 }, 6325 animate: function(prop, speed, easing, callback) { 6326 var empty = jQuery2.isEmptyObject(prop), optall = jQuery2.speed(speed, easing, callback), doAnimation = function() { 6327 var anim = Animation(this, jQuery2.extend({}, prop), optall); 6328 if (empty || dataPriv.get(this, "finish")) { 6329 anim.stop(true); 6330 } 6331 }; 6332 doAnimation.finish = doAnimation; 6333 return empty || optall.queue === false ? this.each(doAnimation) : this.queue(optall.queue, doAnimation); 6334 }, 6335 stop: function(type, clearQueue, gotoEnd) { 6336 var stopQueue = function(hooks) { 6337 var stop = hooks.stop; 6338 delete hooks.stop; 6339 stop(gotoEnd); 6340 }; 6341 if (typeof type !== "string") { 6342 gotoEnd = clearQueue; 6343 clearQueue = type; 6344 type = void 0; 6345 } 6346 if (clearQueue) { 6347 this.queue(type || "fx", []); 6348 } 6349 return this.each(function() { 6350 var dequeue = true, index = type != null && type + "queueHooks", timers = jQuery2.timers, data = dataPriv.get(this); 6351 if (index) { 6352 if (data[index] && data[index].stop) { 6353 stopQueue(data[index]); 6354 } 6355 } else { 6356 for (index in data) { 6357 if (data[index] && data[index].stop && rrun.test(index)) { 6358 stopQueue(data[index]); 6359 } 6360 } 6361 } 6362 for (index = timers.length; index--; ) { 6363 if (timers[index].elem === this && (type == null || timers[index].queue === type)) { 6364 timers[index].anim.stop(gotoEnd); 6365 dequeue = false; 6366 timers.splice(index, 1); 6367 } 6368 } 6369 if (dequeue || !gotoEnd) { 6370 jQuery2.dequeue(this, type); 6371 } 6372 }); 6373 }, 6374 finish: function(type) { 6375 if (type !== false) { 6376 type = type || "fx"; 6377 } 6378 return this.each(function() { 6379 var index, data = dataPriv.get(this), queue = data[type + "queue"], hooks = data[type + "queueHooks"], timers = jQuery2.timers, length = queue ? queue.length : 0; 6380 data.finish = true; 6381 jQuery2.queue(this, type, []); 6382 if (hooks && hooks.stop) { 6383 hooks.stop.call(this, true); 6384 } 6385 for (index = timers.length; index--; ) { 6386 if (timers[index].elem === this && timers[index].queue === type) { 6387 timers[index].anim.stop(true); 6388 timers.splice(index, 1); 6389 } 6390 } 6391 for (index = 0; index < length; index++) { 6392 if (queue[index] && queue[index].finish) { 6393 queue[index].finish.call(this); 6394 } 6395 } 6396 delete data.finish; 6397 }); 6398 } 6399 }); 6400 jQuery2.each(["toggle", "show", "hide"], function(_i, name) { 6401 var cssFn = jQuery2.fn[name]; 6402 jQuery2.fn[name] = function(speed, easing, callback) { 6403 return speed == null || typeof speed === "boolean" ? cssFn.apply(this, arguments) : this.animate(genFx(name, true), speed, easing, callback); 6404 }; 6405 }); 6406 jQuery2.each({ 6407 slideDown: genFx("show"), 6408 slideUp: genFx("hide"), 6409 slideToggle: genFx("toggle"), 6410 fadeIn: { opacity: "show" }, 6411 fadeOut: { opacity: "hide" }, 6412 fadeToggle: { opacity: "toggle" } 6413 }, function(name, props) { 6414 jQuery2.fn[name] = function(speed, easing, callback) { 6415 return this.animate(props, speed, easing, callback); 6416 }; 6417 }); 6418 jQuery2.timers = []; 6419 jQuery2.fx.tick = function() { 6420 var timer, i = 0, timers = jQuery2.timers; 6421 fxNow = Date.now(); 6422 for (; i < timers.length; i++) { 6423 timer = timers[i]; 6424 if (!timer() && timers[i] === timer) { 6425 timers.splice(i--, 1); 6426 } 6427 } 6428 if (!timers.length) { 6429 jQuery2.fx.stop(); 6430 } 6431 fxNow = void 0; 6432 }; 6433 jQuery2.fx.timer = function(timer) { 6434 jQuery2.timers.push(timer); 6435 jQuery2.fx.start(); 6436 }; 6437 jQuery2.fx.interval = 13; 6438 jQuery2.fx.start = function() { 6439 if (inProgress) { 6440 return; 6441 } 6442 inProgress = true; 6443 schedule(); 6444 }; 6445 jQuery2.fx.stop = function() { 6446 inProgress = null; 6447 }; 6448 jQuery2.fx.speeds = { 6449 slow: 600, 6450 fast: 200, 6451 // Default speed 6452 _default: 400 6453 }; 6454 jQuery2.fn.delay = function(time, type) { 6455 time = jQuery2.fx ? jQuery2.fx.speeds[time] || time : time; 6456 type = type || "fx"; 6457 return this.queue(type, function(next, hooks) { 6458 var timeout = window2.setTimeout(next, time); 6459 hooks.stop = function() { 6460 window2.clearTimeout(timeout); 6461 }; 6462 }); 6463 }; 6464 (function() { 6465 var input = document2.createElement("input"), select = document2.createElement("select"), opt = select.appendChild(document2.createElement("option")); 6466 input.type = "checkbox"; 6467 support.checkOn = input.value !== ""; 6468 support.optSelected = opt.selected; 6469 input = document2.createElement("input"); 6470 input.value = "t"; 6471 input.type = "radio"; 6472 support.radioValue = input.value === "t"; 6473 })(); 6474 var boolHook, attrHandle = jQuery2.expr.attrHandle; 6475 jQuery2.fn.extend({ 6476 attr: function(name, value) { 6477 return access(this, jQuery2.attr, name, value, arguments.length > 1); 6478 }, 6479 removeAttr: function(name) { 6480 return this.each(function() { 6481 jQuery2.removeAttr(this, name); 6482 }); 6483 } 6484 }); 6485 jQuery2.extend({ 6486 attr: function(elem, name, value) { 6487 var ret, hooks, nType = elem.nodeType; 6488 if (nType === 3 || nType === 8 || nType === 2) { 6489 return; 6490 } 6491 if (typeof elem.getAttribute === "undefined") { 6492 return jQuery2.prop(elem, name, value); 6493 } 6494 if (nType !== 1 || !jQuery2.isXMLDoc(elem)) { 6495 hooks = jQuery2.attrHooks[name.toLowerCase()] || (jQuery2.expr.match.bool.test(name) ? boolHook : void 0); 6496 } 6497 if (value !== void 0) { 6498 if (value === null) { 6499 jQuery2.removeAttr(elem, name); 6500 return; 6501 } 6502 if (hooks && "set" in hooks && (ret = hooks.set(elem, value, name)) !== void 0) { 6503 return ret; 6504 } 6505 elem.setAttribute(name, value + ""); 6506 return value; 6507 } 6508 if (hooks && "get" in hooks && (ret = hooks.get(elem, name)) !== null) { 6509 return ret; 6510 } 6511 ret = jQuery2.find.attr(elem, name); 6512 return ret == null ? void 0 : ret; 6513 }, 6514 attrHooks: { 6515 type: { 6516 set: function(elem, value) { 6517 if (!support.radioValue && value === "radio" && nodeName(elem, "input")) { 6518 var val = elem.value; 6519 elem.setAttribute("type", value); 6520 if (val) { 6521 elem.value = val; 6522 } 6523 return value; 6524 } 6525 } 6526 } 6527 }, 6528 removeAttr: function(elem, value) { 6529 var name, i = 0, attrNames = value && value.match(rnothtmlwhite); 6530 if (attrNames && elem.nodeType === 1) { 6531 while (name = attrNames[i++]) { 6532 elem.removeAttribute(name); 6533 } 6534 } 6535 } 6536 }); 6537 boolHook = { 6538 set: function(elem, value, name) { 6539 if (value === false) { 6540 jQuery2.removeAttr(elem, name); 6541 } else { 6542 elem.setAttribute(name, name); 6543 } 6544 return name; 6545 } 6546 }; 6547 jQuery2.each(jQuery2.expr.match.bool.source.match(/\w+/g), function(_i, name) { 6548 var getter = attrHandle[name] || jQuery2.find.attr; 6549 attrHandle[name] = function(elem, name2, isXML) { 6550 var ret, handle, lowercaseName = name2.toLowerCase(); 6551 if (!isXML) { 6552 handle = attrHandle[lowercaseName]; 6553 attrHandle[lowercaseName] = ret; 6554 ret = getter(elem, name2, isXML) != null ? lowercaseName : null; 6555 attrHandle[lowercaseName] = handle; 6556 } 6557 return ret; 6558 }; 6559 }); 6560 var rfocusable = /^(?:input|select|textarea|button)$/i, rclickable = /^(?:a|area)$/i; 6561 jQuery2.fn.extend({ 6562 prop: function(name, value) { 6563 return access(this, jQuery2.prop, name, value, arguments.length > 1); 6564 }, 6565 removeProp: function(name) { 6566 return this.each(function() { 6567 delete this[jQuery2.propFix[name] || name]; 6568 }); 6569 } 6570 }); 6571 jQuery2.extend({ 6572 prop: function(elem, name, value) { 6573 var ret, hooks, nType = elem.nodeType; 6574 if (nType === 3 || nType === 8 || nType === 2) { 6575 return; 6576 } 6577 if (nType !== 1 || !jQuery2.isXMLDoc(elem)) { 6578 name = jQuery2.propFix[name] || name; 6579 hooks = jQuery2.propHooks[name]; 6580 } 6581 if (value !== void 0) { 6582 if (hooks && "set" in hooks && (ret = hooks.set(elem, value, name)) !== void 0) { 6583 return ret; 6584 } 6585 return elem[name] = value; 6586 } 6587 if (hooks && "get" in hooks && (ret = hooks.get(elem, name)) !== null) { 6588 return ret; 6589 } 6590 return elem[name]; 6591 }, 6592 propHooks: { 6593 tabIndex: { 6594 get: function(elem) { 6595 var tabindex = jQuery2.find.attr(elem, "tabindex"); 6596 if (tabindex) { 6597 return parseInt(tabindex, 10); 6598 } 6599 if (rfocusable.test(elem.nodeName) || rclickable.test(elem.nodeName) && elem.href) { 6600 return 0; 6601 } 6602 return -1; 6603 } 6604 } 6605 }, 6606 propFix: { 6607 "for": "htmlFor", 6608 "class": "className" 6609 } 6610 }); 6611 if (!support.optSelected) { 6612 jQuery2.propHooks.selected = { 6613 get: function(elem) { 6614 var parent = elem.parentNode; 6615 if (parent && parent.parentNode) { 6616 parent.parentNode.selectedIndex; 6617 } 6618 return null; 6619 }, 6620 set: function(elem) { 6621 var parent = elem.parentNode; 6622 if (parent) { 6623 parent.selectedIndex; 6624 if (parent.parentNode) { 6625 parent.parentNode.selectedIndex; 6626 } 6627 } 6628 } 6629 }; 6630 } 6631 jQuery2.each([ 6632 "tabIndex", 6633 "readOnly", 6634 "maxLength", 6635 "cellSpacing", 6636 "cellPadding", 6637 "rowSpan", 6638 "colSpan", 6639 "useMap", 6640 "frameBorder", 6641 "contentEditable" 6642 ], function() { 6643 jQuery2.propFix[this.toLowerCase()] = this; 6644 }); 6645 function stripAndCollapse(value) { 6646 var tokens = value.match(rnothtmlwhite) || []; 6647 return tokens.join(" "); 6648 } 6649 function getClass(elem) { 6650 return elem.getAttribute && elem.getAttribute("class") || ""; 6651 } 6652 function classesToArray(value) { 6653 if (Array.isArray(value)) { 6654 return value; 6655 } 6656 if (typeof value === "string") { 6657 return value.match(rnothtmlwhite) || []; 6658 } 6659 return []; 6660 } 6661 jQuery2.fn.extend({ 6662 addClass: function(value) { 6663 var classNames, cur, curValue, className, i, finalValue; 6664 if (isFunction(value)) { 6665 return this.each(function(j) { 6666 jQuery2(this).addClass(value.call(this, j, getClass(this))); 6667 }); 6668 } 6669 classNames = classesToArray(value); 6670 if (classNames.length) { 6671 return this.each(function() { 6672 curValue = getClass(this); 6673 cur = this.nodeType === 1 && " " + stripAndCollapse(curValue) + " "; 6674 if (cur) { 6675 for (i = 0; i < classNames.length; i++) { 6676 className = classNames[i]; 6677 if (cur.indexOf(" " + className + " ") < 0) { 6678 cur += className + " "; 6679 } 6680 } 6681 finalValue = stripAndCollapse(cur); 6682 if (curValue !== finalValue) { 6683 this.setAttribute("class", finalValue); 6684 } 6685 } 6686 }); 6687 } 6688 return this; 6689 }, 6690 removeClass: function(value) { 6691 var classNames, cur, curValue, className, i, finalValue; 6692 if (isFunction(value)) { 6693 return this.each(function(j) { 6694 jQuery2(this).removeClass(value.call(this, j, getClass(this))); 6695 }); 6696 } 6697 if (!arguments.length) { 6698 return this.attr("class", ""); 6699 } 6700 classNames = classesToArray(value); 6701 if (classNames.length) { 6702 return this.each(function() { 6703 curValue = getClass(this); 6704 cur = this.nodeType === 1 && " " + stripAndCollapse(curValue) + " "; 6705 if (cur) { 6706 for (i = 0; i < classNames.length; i++) { 6707 className = classNames[i]; 6708 while (cur.indexOf(" " + className + " ") > -1) { 6709 cur = cur.replace(" " + className + " ", " "); 6710 } 6711 } 6712 finalValue = stripAndCollapse(cur); 6713 if (curValue !== finalValue) { 6714 this.setAttribute("class", finalValue); 6715 } 6716 } 6717 }); 6718 } 6719 return this; 6720 }, 6721 toggleClass: function(value, stateVal) { 6722 var classNames, className, i, self2, type = typeof value, isValidValue = type === "string" || Array.isArray(value); 6723 if (isFunction(value)) { 6724 return this.each(function(i2) { 6725 jQuery2(this).toggleClass( 6726 value.call(this, i2, getClass(this), stateVal), 6727 stateVal 6728 ); 6729 }); 6730 } 6731 if (typeof stateVal === "boolean" && isValidValue) { 6732 return stateVal ? this.addClass(value) : this.removeClass(value); 6733 } 6734 classNames = classesToArray(value); 6735 return this.each(function() { 6736 if (isValidValue) { 6737 self2 = jQuery2(this); 6738 for (i = 0; i < classNames.length; i++) { 6739 className = classNames[i]; 6740 if (self2.hasClass(className)) { 6741 self2.removeClass(className); 6742 } else { 6743 self2.addClass(className); 6744 } 6745 } 6746 } else if (value === void 0 || type === "boolean") { 6747 className = getClass(this); 6748 if (className) { 6749 dataPriv.set(this, "__className__", className); 6750 } 6751 if (this.setAttribute) { 6752 this.setAttribute( 6753 "class", 6754 className || value === false ? "" : dataPriv.get(this, "__className__") || "" 6755 ); 6756 } 6757 } 6758 }); 6759 }, 6760 hasClass: function(selector) { 6761 var className, elem, i = 0; 6762 className = " " + selector + " "; 6763 while (elem = this[i++]) { 6764 if (elem.nodeType === 1 && (" " + stripAndCollapse(getClass(elem)) + " ").indexOf(className) > -1) { 6765 return true; 6766 } 6767 } 6768 return false; 6769 } 6770 }); 6771 var rreturn = /\r/g; 6772 jQuery2.fn.extend({ 6773 val: function(value) { 6774 var hooks, ret, valueIsFunction, elem = this[0]; 6775 if (!arguments.length) { 6776 if (elem) { 6777 hooks = jQuery2.valHooks[elem.type] || jQuery2.valHooks[elem.nodeName.toLowerCase()]; 6778 if (hooks && "get" in hooks && (ret = hooks.get(elem, "value")) !== void 0) { 6779 return ret; 6780 } 6781 ret = elem.value; 6782 if (typeof ret === "string") { 6783 return ret.replace(rreturn, ""); 6784 } 6785 return ret == null ? "" : ret; 6786 } 6787 return; 6788 } 6789 valueIsFunction = isFunction(value); 6790 return this.each(function(i) { 6791 var val; 6792 if (this.nodeType !== 1) { 6793 return; 6794 } 6795 if (valueIsFunction) { 6796 val = value.call(this, i, jQuery2(this).val()); 6797 } else { 6798 val = value; 6799 } 6800 if (val == null) { 6801 val = ""; 6802 } else if (typeof val === "number") { 6803 val += ""; 6804 } else if (Array.isArray(val)) { 6805 val = jQuery2.map(val, function(value2) { 6806 return value2 == null ? "" : value2 + ""; 6807 }); 6808 } 6809 hooks = jQuery2.valHooks[this.type] || jQuery2.valHooks[this.nodeName.toLowerCase()]; 6810 if (!hooks || !("set" in hooks) || hooks.set(this, val, "value") === void 0) { 6811 this.value = val; 6812 } 6813 }); 6814 } 6815 }); 6816 jQuery2.extend({ 6817 valHooks: { 6818 option: { 6819 get: function(elem) { 6820 var val = jQuery2.find.attr(elem, "value"); 6821 return val != null ? val : ( 6822 // Support: IE <=10 - 11 only 6823 // option.text throws exceptions (trac-14686, trac-14858) 6824 // Strip and collapse whitespace 6825 // https://html.spec.whatwg.org/#strip-and-collapse-whitespace 6826 stripAndCollapse(jQuery2.text(elem)) 6827 ); 6828 } 6829 }, 6830 select: { 6831 get: function(elem) { 6832 var value, option, i, options = elem.options, index = elem.selectedIndex, one = elem.type === "select-one", values = one ? null : [], max = one ? index + 1 : options.length; 6833 if (index < 0) { 6834 i = max; 6835 } else { 6836 i = one ? index : 0; 6837 } 6838 for (; i < max; i++) { 6839 option = options[i]; 6840 if ((option.selected || i === index) && // Don't return options that are disabled or in a disabled optgroup 6841 !option.disabled && (!option.parentNode.disabled || !nodeName(option.parentNode, "optgroup"))) { 6842 value = jQuery2(option).val(); 6843 if (one) { 6844 return value; 6845 } 6846 values.push(value); 6847 } 6848 } 6849 return values; 6850 }, 6851 set: function(elem, value) { 6852 var optionSet, option, options = elem.options, values = jQuery2.makeArray(value), i = options.length; 6853 while (i--) { 6854 option = options[i]; 6855 if (option.selected = jQuery2.inArray(jQuery2.valHooks.option.get(option), values) > -1) { 6856 optionSet = true; 6857 } 6858 } 6859 if (!optionSet) { 6860 elem.selectedIndex = -1; 6861 } 6862 return values; 6863 } 6864 } 6865 } 6866 }); 6867 jQuery2.each(["radio", "checkbox"], function() { 6868 jQuery2.valHooks[this] = { 6869 set: function(elem, value) { 6870 if (Array.isArray(value)) { 6871 return elem.checked = jQuery2.inArray(jQuery2(elem).val(), value) > -1; 6872 } 6873 } 6874 }; 6875 if (!support.checkOn) { 6876 jQuery2.valHooks[this].get = function(elem) { 6877 return elem.getAttribute("value") === null ? "on" : elem.value; 6878 }; 6879 } 6880 }); 6881 var location2 = window2.location; 6882 var nonce = { guid: Date.now() }; 6883 var rquery = /\?/; 6884 jQuery2.parseXML = function(data) { 6885 var xml, parserErrorElem; 6886 if (!data || typeof data !== "string") { 6887 return null; 6888 } 6889 try { 6890 xml = new window2.DOMParser().parseFromString(data, "text/xml"); 6891 } catch (e) { 6892 } 6893 parserErrorElem = xml && xml.getElementsByTagName("parsererror")[0]; 6894 if (!xml || parserErrorElem) { 6895 jQuery2.error("Invalid XML: " + (parserErrorElem ? jQuery2.map(parserErrorElem.childNodes, function(el) { 6896 return el.textContent; 6897 }).join("\n") : data)); 6898 } 6899 return xml; 6900 }; 6901 var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, stopPropagationCallback = function(e) { 6902 e.stopPropagation(); 6903 }; 6904 jQuery2.extend(jQuery2.event, { 6905 trigger: function(event2, data, elem, onlyHandlers) { 6906 var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, eventPath = [elem || document2], type = hasOwn.call(event2, "type") ? event2.type : event2, namespaces = hasOwn.call(event2, "namespace") ? event2.namespace.split(".") : []; 6907 cur = lastElement = tmp = elem = elem || document2; 6908 if (elem.nodeType === 3 || elem.nodeType === 8) { 6909 return; 6910 } 6911 if (rfocusMorph.test(type + jQuery2.event.triggered)) { 6912 return; 6913 } 6914 if (type.indexOf(".") > -1) { 6915 namespaces = type.split("."); 6916 type = namespaces.shift(); 6917 namespaces.sort(); 6918 } 6919 ontype = type.indexOf(":") < 0 && "on" + type; 6920 event2 = event2[jQuery2.expando] ? event2 : new jQuery2.Event(type, typeof event2 === "object" && event2); 6921 event2.isTrigger = onlyHandlers ? 2 : 3; 6922 event2.namespace = namespaces.join("."); 6923 event2.rnamespace = event2.namespace ? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)") : null; 6924 event2.result = void 0; 6925 if (!event2.target) { 6926 event2.target = elem; 6927 } 6928 data = data == null ? [event2] : jQuery2.makeArray(data, [event2]); 6929 special = jQuery2.event.special[type] || {}; 6930 if (!onlyHandlers && special.trigger && special.trigger.apply(elem, data) === false) { 6931 return; 6932 } 6933 if (!onlyHandlers && !special.noBubble && !isWindow(elem)) { 6934 bubbleType = special.delegateType || type; 6935 if (!rfocusMorph.test(bubbleType + type)) { 6936 cur = cur.parentNode; 6937 } 6938 for (; cur; cur = cur.parentNode) { 6939 eventPath.push(cur); 6940 tmp = cur; 6941 } 6942 if (tmp === (elem.ownerDocument || document2)) { 6943 eventPath.push(tmp.defaultView || tmp.parentWindow || window2); 6944 } 6945 } 6946 i = 0; 6947 while ((cur = eventPath[i++]) && !event2.isPropagationStopped()) { 6948 lastElement = cur; 6949 event2.type = i > 1 ? bubbleType : special.bindType || type; 6950 handle = (dataPriv.get(cur, "events") || /* @__PURE__ */ Object.create(null))[event2.type] && dataPriv.get(cur, "handle"); 6951 if (handle) { 6952 handle.apply(cur, data); 6953 } 6954 handle = ontype && cur[ontype]; 6955 if (handle && handle.apply && acceptData(cur)) { 6956 event2.result = handle.apply(cur, data); 6957 if (event2.result === false) { 6958 event2.preventDefault(); 6959 } 6960 } 6961 } 6962 event2.type = type; 6963 if (!onlyHandlers && !event2.isDefaultPrevented()) { 6964 if ((!special._default || special._default.apply(eventPath.pop(), data) === false) && acceptData(elem)) { 6965 if (ontype && isFunction(elem[type]) && !isWindow(elem)) { 6966 tmp = elem[ontype]; 6967 if (tmp) { 6968 elem[ontype] = null; 6969 } 6970 jQuery2.event.triggered = type; 6971 if (event2.isPropagationStopped()) { 6972 lastElement.addEventListener(type, stopPropagationCallback); 6973 } 6974 elem[type](); 6975 if (event2.isPropagationStopped()) { 6976 lastElement.removeEventListener(type, stopPropagationCallback); 6977 } 6978 jQuery2.event.triggered = void 0; 6979 if (tmp) { 6980 elem[ontype] = tmp; 6981 } 6982 } 6983 } 6984 } 6985 return event2.result; 6986 }, 6987 // Piggyback on a donor event to simulate a different one 6988 // Used only for `focus(in | out)` events 6989 simulate: function(type, elem, event2) { 6990 var e = jQuery2.extend( 6991 new jQuery2.Event(), 6992 event2, 6993 { 6994 type, 6995 isSimulated: true 6996 } 6997 ); 6998 jQuery2.event.trigger(e, null, elem); 6999 } 7000 }); 7001 jQuery2.fn.extend({ 7002 trigger: function(type, data) { 7003 return this.each(function() { 7004 jQuery2.event.trigger(type, data, this); 7005 }); 7006 }, 7007 triggerHandler: function(type, data) { 7008 var elem = this[0]; 7009 if (elem) { 7010 return jQuery2.event.trigger(type, data, elem, true); 7011 } 7012 } 7013 }); 7014 var rbracket = /\[\]$/, rCRLF = /\r?\n/g, rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, rsubmittable = /^(?:input|select|textarea|keygen)/i; 7015 function buildParams(prefix, obj, traditional, add) { 7016 var name; 7017 if (Array.isArray(obj)) { 7018 jQuery2.each(obj, function(i, v) { 7019 if (traditional || rbracket.test(prefix)) { 7020 add(prefix, v); 7021 } else { 7022 buildParams( 7023 prefix + "[" + (typeof v === "object" && v != null ? i : "") + "]", 7024 v, 7025 traditional, 7026 add 7027 ); 7028 } 7029 }); 7030 } else if (!traditional && toType(obj) === "object") { 7031 for (name in obj) { 7032 buildParams(prefix + "[" + name + "]", obj[name], traditional, add); 7033 } 7034 } else { 7035 add(prefix, obj); 7036 } 7037 } 7038 jQuery2.param = function(a, traditional) { 7039 var prefix, s = [], add = function(key, valueOrFunction) { 7040 var value = isFunction(valueOrFunction) ? valueOrFunction() : valueOrFunction; 7041 s[s.length] = encodeURIComponent(key) + "=" + encodeURIComponent(value == null ? "" : value); 7042 }; 7043 if (a == null) { 7044 return ""; 7045 } 7046 if (Array.isArray(a) || a.jquery && !jQuery2.isPlainObject(a)) { 7047 jQuery2.each(a, function() { 7048 add(this.name, this.value); 7049 }); 7050 } else { 7051 for (prefix in a) { 7052 buildParams(prefix, a[prefix], traditional, add); 7053 } 7054 } 7055 return s.join("&"); 7056 }; 7057 jQuery2.fn.extend({ 7058 serialize: function() { 7059 return jQuery2.param(this.serializeArray()); 7060 }, 7061 serializeArray: function() { 7062 return this.map(function() { 7063 var elements = jQuery2.prop(this, "elements"); 7064 return elements ? jQuery2.makeArray(elements) : this; 7065 }).filter(function() { 7066 var type = this.type; 7067 return this.name && !jQuery2(this).is(":disabled") && rsubmittable.test(this.nodeName) && !rsubmitterTypes.test(type) && (this.checked || !rcheckableType.test(type)); 7068 }).map(function(_i, elem) { 7069 var val = jQuery2(this).val(); 7070 if (val == null) { 7071 return null; 7072 } 7073 if (Array.isArray(val)) { 7074 return jQuery2.map(val, function(val2) { 7075 return { name: elem.name, value: val2.replace(rCRLF, "\r\n") }; 7076 }); 7077 } 7078 return { name: elem.name, value: val.replace(rCRLF, "\r\n") }; 7079 }).get(); 7080 } 7081 }); 7082 var r20 = /%20/g, rhash = /#.*$/, rantiCache = /([?&])_=[^&]*/, rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, rnoContent = /^(?:GET|HEAD)$/, rprotocol = /^\/\//, prefilters = {}, transports = {}, allTypes = "*/".concat("*"), originAnchor = document2.createElement("a"); 7083 originAnchor.href = location2.href; 7084 function addToPrefiltersOrTransports(structure) { 7085 return function(dataTypeExpression, func) { 7086 if (typeof dataTypeExpression !== "string") { 7087 func = dataTypeExpression; 7088 dataTypeExpression = "*"; 7089 } 7090 var dataType, i = 0, dataTypes = dataTypeExpression.toLowerCase().match(rnothtmlwhite) || []; 7091 if (isFunction(func)) { 7092 while (dataType = dataTypes[i++]) { 7093 if (dataType[0] === "+") { 7094 dataType = dataType.slice(1) || "*"; 7095 (structure[dataType] = structure[dataType] || []).unshift(func); 7096 } else { 7097 (structure[dataType] = structure[dataType] || []).push(func); 7098 } 7099 } 7100 } 7101 }; 7102 } 7103 function inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR) { 7104 var inspected = {}, seekingTransport = structure === transports; 7105 function inspect(dataType) { 7106 var selected; 7107 inspected[dataType] = true; 7108 jQuery2.each(structure[dataType] || [], function(_, prefilterOrFactory) { 7109 var dataTypeOrTransport = prefilterOrFactory(options, originalOptions, jqXHR); 7110 if (typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[dataTypeOrTransport]) { 7111 options.dataTypes.unshift(dataTypeOrTransport); 7112 inspect(dataTypeOrTransport); 7113 return false; 7114 } else if (seekingTransport) { 7115 return !(selected = dataTypeOrTransport); 7116 } 7117 }); 7118 return selected; 7119 } 7120 return inspect(options.dataTypes[0]) || !inspected["*"] && inspect("*"); 7121 } 7122 function ajaxExtend(target, src) { 7123 var key, deep, flatOptions = jQuery2.ajaxSettings.flatOptions || {}; 7124 for (key in src) { 7125 if (src[key] !== void 0) { 7126 (flatOptions[key] ? target : deep || (deep = {}))[key] = src[key]; 7127 } 7128 } 7129 if (deep) { 7130 jQuery2.extend(true, target, deep); 7131 } 7132 return target; 7133 } 7134 function ajaxHandleResponses(s, jqXHR, responses) { 7135 var ct, type, finalDataType, firstDataType, contents = s.contents, dataTypes = s.dataTypes; 7136 while (dataTypes[0] === "*") { 7137 dataTypes.shift(); 7138 if (ct === void 0) { 7139 ct = s.mimeType || jqXHR.getResponseHeader("Content-Type"); 7140 } 7141 } 7142 if (ct) { 7143 for (type in contents) { 7144 if (contents[type] && contents[type].test(ct)) { 7145 dataTypes.unshift(type); 7146 break; 7147 } 7148 } 7149 } 7150 if (dataTypes[0] in responses) { 7151 finalDataType = dataTypes[0]; 7152 } else { 7153 for (type in responses) { 7154 if (!dataTypes[0] || s.converters[type + " " + dataTypes[0]]) { 7155 finalDataType = type; 7156 break; 7157 } 7158 if (!firstDataType) { 7159 firstDataType = type; 7160 } 7161 } 7162 finalDataType = finalDataType || firstDataType; 7163 } 7164 if (finalDataType) { 7165 if (finalDataType !== dataTypes[0]) { 7166 dataTypes.unshift(finalDataType); 7167 } 7168 return responses[finalDataType]; 7169 } 7170 } 7171 function ajaxConvert(s, response, jqXHR, isSuccess) { 7172 var conv2, current, conv, tmp, prev, converters = {}, dataTypes = s.dataTypes.slice(); 7173 if (dataTypes[1]) { 7174 for (conv in s.converters) { 7175 converters[conv.toLowerCase()] = s.converters[conv]; 7176 } 7177 } 7178 current = dataTypes.shift(); 7179 while (current) { 7180 if (s.responseFields[current]) { 7181 jqXHR[s.responseFields[current]] = response; 7182 } 7183 if (!prev && isSuccess && s.dataFilter) { 7184 response = s.dataFilter(response, s.dataType); 7185 } 7186 prev = current; 7187 current = dataTypes.shift(); 7188 if (current) { 7189 if (current === "*") { 7190 current = prev; 7191 } else if (prev !== "*" && prev !== current) { 7192 conv = converters[prev + " " + current] || converters["* " + current]; 7193 if (!conv) { 7194 for (conv2 in converters) { 7195 tmp = conv2.split(" "); 7196 if (tmp[1] === current) { 7197 conv = converters[prev + " " + tmp[0]] || converters["* " + tmp[0]]; 7198 if (conv) { 7199 if (conv === true) { 7200 conv = converters[conv2]; 7201 } else if (converters[conv2] !== true) { 7202 current = tmp[0]; 7203 dataTypes.unshift(tmp[1]); 7204 } 7205 break; 7206 } 7207 } 7208 } 7209 } 7210 if (conv !== true) { 7211 if (conv && s.throws) { 7212 response = conv(response); 7213 } else { 7214 try { 7215 response = conv(response); 7216 } catch (e) { 7217 return { 7218 state: "parsererror", 7219 error: conv ? e : "No conversion from " + prev + " to " + current 7220 }; 7221 } 7222 } 7223 } 7224 } 7225 } 7226 } 7227 return { state: "success", data: response }; 7228 } 7229 jQuery2.extend({ 7230 // Counter for holding the number of active queries 7231 active: 0, 7232 // Last-Modified header cache for next request 7233 lastModified: {}, 7234 etag: {}, 7235 ajaxSettings: { 7236 url: location2.href, 7237 type: "GET", 7238 isLocal: rlocalProtocol.test(location2.protocol), 7239 global: true, 7240 processData: true, 7241 async: true, 7242 contentType: "application/x-www-form-urlencoded; charset=UTF-8", 7243 /* 7244 timeout: 0, 7245 data: null, 7246 dataType: null, 7247 username: null, 7248 password: null, 7249 cache: null, 7250 throws: false, 7251 traditional: false, 7252 headers: {}, 7253 */ 7254 accepts: { 7255 "*": allTypes, 7256 text: "text/plain", 7257 html: "text/html", 7258 xml: "application/xml, text/xml", 7259 json: "application/json, text/javascript" 7260 }, 7261 contents: { 7262 xml: /\bxml\b/, 7263 html: /\bhtml/, 7264 json: /\bjson\b/ 7265 }, 7266 responseFields: { 7267 xml: "responseXML", 7268 text: "responseText", 7269 json: "responseJSON" 7270 }, 7271 // Data converters 7272 // Keys separate source (or catchall "*") and destination types with a single space 7273 converters: { 7274 // Convert anything to text 7275 "* text": String, 7276 // Text to html (true = no transformation) 7277 "text html": true, 7278 // Evaluate text as a json expression 7279 "text json": JSON.parse, 7280 // Parse text as xml 7281 "text xml": jQuery2.parseXML 7282 }, 7283 // For options that shouldn't be deep extended: 7284 // you can add your own custom options here if 7285 // and when you create one that shouldn't be 7286 // deep extended (see ajaxExtend) 7287 flatOptions: { 7288 url: true, 7289 context: true 7290 } 7291 }, 7292 // Creates a full fledged settings object into target 7293 // with both ajaxSettings and settings fields. 7294 // If target is omitted, writes into ajaxSettings. 7295 ajaxSetup: function(target, settings) { 7296 return settings ? ( 7297 // Building a settings object 7298 ajaxExtend(ajaxExtend(target, jQuery2.ajaxSettings), settings) 7299 ) : ( 7300 // Extending ajaxSettings 7301 ajaxExtend(jQuery2.ajaxSettings, target) 7302 ); 7303 }, 7304 ajaxPrefilter: addToPrefiltersOrTransports(prefilters), 7305 ajaxTransport: addToPrefiltersOrTransports(transports), 7306 // Main method 7307 ajax: function(url, options) { 7308 if (typeof url === "object") { 7309 options = url; 7310 url = void 0; 7311 } 7312 options = options || {}; 7313 var transport, cacheURL, responseHeadersString, responseHeaders, timeoutTimer, urlAnchor, completed2, fireGlobals, i, uncached, s = jQuery2.ajaxSetup({}, options), callbackContext = s.context || s, globalEventContext = s.context && (callbackContext.nodeType || callbackContext.jquery) ? jQuery2(callbackContext) : jQuery2.event, deferred = jQuery2.Deferred(), completeDeferred = jQuery2.Callbacks("once memory"), statusCode = s.statusCode || {}, requestHeaders = {}, requestHeadersNames = {}, strAbort = "canceled", jqXHR = { 7314 readyState: 0, 7315 // Builds headers hashtable if needed 7316 getResponseHeader: function(key) { 7317 var match; 7318 if (completed2) { 7319 if (!responseHeaders) { 7320 responseHeaders = {}; 7321 while (match = rheaders.exec(responseHeadersString)) { 7322 responseHeaders[match[1].toLowerCase() + " "] = (responseHeaders[match[1].toLowerCase() + " "] || []).concat(match[2]); 7323 } 7324 } 7325 match = responseHeaders[key.toLowerCase() + " "]; 7326 } 7327 return match == null ? null : match.join(", "); 7328 }, 7329 // Raw string 7330 getAllResponseHeaders: function() { 7331 return completed2 ? responseHeadersString : null; 7332 }, 7333 // Caches the header 7334 setRequestHeader: function(name, value) { 7335 if (completed2 == null) { 7336 name = requestHeadersNames[name.toLowerCase()] = requestHeadersNames[name.toLowerCase()] || name; 7337 requestHeaders[name] = value; 7338 } 7339 return this; 7340 }, 7341 // Overrides response content-type header 7342 overrideMimeType: function(type) { 7343 if (completed2 == null) { 7344 s.mimeType = type; 7345 } 7346 return this; 7347 }, 7348 // Status-dependent callbacks 7349 statusCode: function(map) { 7350 var code; 7351 if (map) { 7352 if (completed2) { 7353 jqXHR.always(map[jqXHR.status]); 7354 } else { 7355 for (code in map) { 7356 statusCode[code] = [statusCode[code], map[code]]; 7357 } 7358 } 7359 } 7360 return this; 7361 }, 7362 // Cancel the request 7363 abort: function(statusText) { 7364 var finalText = statusText || strAbort; 7365 if (transport) { 7366 transport.abort(finalText); 7367 } 7368 done(0, finalText); 7369 return this; 7370 } 7371 }; 7372 deferred.promise(jqXHR); 7373 s.url = ((url || s.url || location2.href) + "").replace(rprotocol, location2.protocol + "//"); 7374 s.type = options.method || options.type || s.method || s.type; 7375 s.dataTypes = (s.dataType || "*").toLowerCase().match(rnothtmlwhite) || [""]; 7376 if (s.crossDomain == null) { 7377 urlAnchor = document2.createElement("a"); 7378 try { 7379 urlAnchor.href = s.url; 7380 urlAnchor.href = urlAnchor.href; 7381 s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== urlAnchor.protocol + "//" + urlAnchor.host; 7382 } catch (e) { 7383 s.crossDomain = true; 7384 } 7385 } 7386 if (s.data && s.processData && typeof s.data !== "string") { 7387 s.data = jQuery2.param(s.data, s.traditional); 7388 } 7389 inspectPrefiltersOrTransports(prefilters, s, options, jqXHR); 7390 if (completed2) { 7391 return jqXHR; 7392 } 7393 fireGlobals = jQuery2.event && s.global; 7394 if (fireGlobals && jQuery2.active++ === 0) { 7395 jQuery2.event.trigger("ajaxStart"); 7396 } 7397 s.type = s.type.toUpperCase(); 7398 s.hasContent = !rnoContent.test(s.type); 7399 cacheURL = s.url.replace(rhash, ""); 7400 if (!s.hasContent) { 7401 uncached = s.url.slice(cacheURL.length); 7402 if (s.data && (s.processData || typeof s.data === "string")) { 7403 cacheURL += (rquery.test(cacheURL) ? "&" : "?") + s.data; 7404 delete s.data; 7405 } 7406 if (s.cache === false) { 7407 cacheURL = cacheURL.replace(rantiCache, "$1"); 7408 uncached = (rquery.test(cacheURL) ? "&" : "?") + "_=" + nonce.guid++ + uncached; 7409 } 7410 s.url = cacheURL + uncached; 7411 } else if (s.data && s.processData && (s.contentType || "").indexOf("application/x-www-form-urlencoded") === 0) { 7412 s.data = s.data.replace(r20, "+"); 7413 } 7414 if (s.ifModified) { 7415 if (jQuery2.lastModified[cacheURL]) { 7416 jqXHR.setRequestHeader("If-Modified-Since", jQuery2.lastModified[cacheURL]); 7417 } 7418 if (jQuery2.etag[cacheURL]) { 7419 jqXHR.setRequestHeader("If-None-Match", jQuery2.etag[cacheURL]); 7420 } 7421 } 7422 if (s.data && s.hasContent && s.contentType !== false || options.contentType) { 7423 jqXHR.setRequestHeader("Content-Type", s.contentType); 7424 } 7425 jqXHR.setRequestHeader( 7426 "Accept", 7427 s.dataTypes[0] && s.accepts[s.dataTypes[0]] ? s.accepts[s.dataTypes[0]] + (s.dataTypes[0] !== "*" ? ", " + allTypes + "; q=0.01" : "") : s.accepts["*"] 7428 ); 7429 for (i in s.headers) { 7430 jqXHR.setRequestHeader(i, s.headers[i]); 7431 } 7432 if (s.beforeSend && (s.beforeSend.call(callbackContext, jqXHR, s) === false || completed2)) { 7433 return jqXHR.abort(); 7434 } 7435 strAbort = "abort"; 7436 completeDeferred.add(s.complete); 7437 jqXHR.done(s.success); 7438 jqXHR.fail(s.error); 7439 transport = inspectPrefiltersOrTransports(transports, s, options, jqXHR); 7440 if (!transport) { 7441 done(-1, "No Transport"); 7442 } else { 7443 jqXHR.readyState = 1; 7444 if (fireGlobals) { 7445 globalEventContext.trigger("ajaxSend", [jqXHR, s]); 7446 } 7447 if (completed2) { 7448 return jqXHR; 7449 } 7450 if (s.async && s.timeout > 0) { 7451 timeoutTimer = window2.setTimeout(function() { 7452 jqXHR.abort("timeout"); 7453 }, s.timeout); 7454 } 7455 try { 7456 completed2 = false; 7457 transport.send(requestHeaders, done); 7458 } catch (e) { 7459 if (completed2) { 7460 throw e; 7461 } 7462 done(-1, e); 7463 } 7464 } 7465 function done(status, nativeStatusText, responses, headers) { 7466 var isSuccess, success, error, response, modified, statusText = nativeStatusText; 7467 if (completed2) { 7468 return; 7469 } 7470 completed2 = true; 7471 if (timeoutTimer) { 7472 window2.clearTimeout(timeoutTimer); 7473 } 7474 transport = void 0; 7475 responseHeadersString = headers || ""; 7476 jqXHR.readyState = status > 0 ? 4 : 0; 7477 isSuccess = status >= 200 && status < 300 || status === 304; 7478 if (responses) { 7479 response = ajaxHandleResponses(s, jqXHR, responses); 7480 } 7481 if (!isSuccess && jQuery2.inArray("script", s.dataTypes) > -1 && jQuery2.inArray("json", s.dataTypes) < 0) { 7482 s.converters["text script"] = function() { 7483 }; 7484 } 7485 response = ajaxConvert(s, response, jqXHR, isSuccess); 7486 if (isSuccess) { 7487 if (s.ifModified) { 7488 modified = jqXHR.getResponseHeader("Last-Modified"); 7489 if (modified) { 7490 jQuery2.lastModified[cacheURL] = modified; 7491 } 7492 modified = jqXHR.getResponseHeader("etag"); 7493 if (modified) { 7494 jQuery2.etag[cacheURL] = modified; 7495 } 7496 } 7497 if (status === 204 || s.type === "HEAD") { 7498 statusText = "nocontent"; 7499 } else if (status === 304) { 7500 statusText = "notmodified"; 7501 } else { 7502 statusText = response.state; 7503 success = response.data; 7504 error = response.error; 7505 isSuccess = !error; 7506 } 7507 } else { 7508 error = statusText; 7509 if (status || !statusText) { 7510 statusText = "error"; 7511 if (status < 0) { 7512 status = 0; 7513 } 7514 } 7515 } 7516 jqXHR.status = status; 7517 jqXHR.statusText = (nativeStatusText || statusText) + ""; 7518 if (isSuccess) { 7519 deferred.resolveWith(callbackContext, [success, statusText, jqXHR]); 7520 } else { 7521 deferred.rejectWith(callbackContext, [jqXHR, statusText, error]); 7522 } 7523 jqXHR.statusCode(statusCode); 7524 statusCode = void 0; 7525 if (fireGlobals) { 7526 globalEventContext.trigger( 7527 isSuccess ? "ajaxSuccess" : "ajaxError", 7528 [jqXHR, s, isSuccess ? success : error] 7529 ); 7530 } 7531 completeDeferred.fireWith(callbackContext, [jqXHR, statusText]); 7532 if (fireGlobals) { 7533 globalEventContext.trigger("ajaxComplete", [jqXHR, s]); 7534 if (!--jQuery2.active) { 7535 jQuery2.event.trigger("ajaxStop"); 7536 } 7537 } 7538 } 7539 return jqXHR; 7540 }, 7541 getJSON: function(url, data, callback) { 7542 return jQuery2.get(url, data, callback, "json"); 7543 }, 7544 getScript: function(url, callback) { 7545 return jQuery2.get(url, void 0, callback, "script"); 7546 } 7547 }); 7548 jQuery2.each(["get", "post"], function(_i, method) { 7549 jQuery2[method] = function(url, data, callback, type) { 7550 if (isFunction(data)) { 7551 type = type || callback; 7552 callback = data; 7553 data = void 0; 7554 } 7555 return jQuery2.ajax(jQuery2.extend({ 7556 url, 7557 type: method, 7558 dataType: type, 7559 data, 7560 success: callback 7561 }, jQuery2.isPlainObject(url) && url)); 7562 }; 7563 }); 7564 jQuery2.ajaxPrefilter(function(s) { 7565 var i; 7566 for (i in s.headers) { 7567 if (i.toLowerCase() === "content-type") { 7568 s.contentType = s.headers[i] || ""; 7569 } 7570 } 7571 }); 7572 jQuery2._evalUrl = function(url, options, doc) { 7573 return jQuery2.ajax({ 7574 url, 7575 // Make this explicit, since user can override this through ajaxSetup (trac-11264) 7576 type: "GET", 7577 dataType: "script", 7578 cache: true, 7579 async: false, 7580 global: false, 7581 // Only evaluate the response if it is successful (gh-4126) 7582 // dataFilter is not invoked for failure responses, so using it instead 7583 // of the default converter is kludgy but it works. 7584 converters: { 7585 "text script": function() { 7586 } 7587 }, 7588 dataFilter: function(response) { 7589 jQuery2.globalEval(response, options, doc); 7590 } 7591 }); 7592 }; 7593 jQuery2.fn.extend({ 7594 wrapAll: function(html) { 7595 var wrap; 7596 if (this[0]) { 7597 if (isFunction(html)) { 7598 html = html.call(this[0]); 7599 } 7600 wrap = jQuery2(html, this[0].ownerDocument).eq(0).clone(true); 7601 if (this[0].parentNode) { 7602 wrap.insertBefore(this[0]); 7603 } 7604 wrap.map(function() { 7605 var elem = this; 7606 while (elem.firstElementChild) { 7607 elem = elem.firstElementChild; 7608 } 7609 return elem; 7610 }).append(this); 7611 } 7612 return this; 7613 }, 7614 wrapInner: function(html) { 7615 if (isFunction(html)) { 7616 return this.each(function(i) { 7617 jQuery2(this).wrapInner(html.call(this, i)); 7618 }); 7619 } 7620 return this.each(function() { 7621 var self2 = jQuery2(this), contents = self2.contents(); 7622 if (contents.length) { 7623 contents.wrapAll(html); 7624 } else { 7625 self2.append(html); 7626 } 7627 }); 7628 }, 7629 wrap: function(html) { 7630 var htmlIsFunction = isFunction(html); 7631 return this.each(function(i) { 7632 jQuery2(this).wrapAll(htmlIsFunction ? html.call(this, i) : html); 7633 }); 7634 }, 7635 unwrap: function(selector) { 7636 this.parent(selector).not("body").each(function() { 7637 jQuery2(this).replaceWith(this.childNodes); 7638 }); 7639 return this; 7640 } 7641 }); 7642 jQuery2.expr.pseudos.hidden = function(elem) { 7643 return !jQuery2.expr.pseudos.visible(elem); 7644 }; 7645 jQuery2.expr.pseudos.visible = function(elem) { 7646 return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length); 7647 }; 7648 jQuery2.ajaxSettings.xhr = function() { 7649 try { 7650 return new window2.XMLHttpRequest(); 7651 } catch (e) { 7652 } 7653 }; 7654 var xhrSuccessStatus = { 7655 // File protocol always yields status code 0, assume 200 7656 0: 200, 7657 // Support: IE <=9 only 7658 // trac-1450: sometimes IE returns 1223 when it should be 204 7659 1223: 204 7660 }, xhrSupported = jQuery2.ajaxSettings.xhr(); 7661 support.cors = !!xhrSupported && "withCredentials" in xhrSupported; 7662 support.ajax = xhrSupported = !!xhrSupported; 7663 jQuery2.ajaxTransport(function(options) { 7664 var callback, errorCallback; 7665 if (support.cors || xhrSupported && !options.crossDomain) { 7666 return { 7667 send: function(headers, complete) { 7668 var i, xhr = options.xhr(); 7669 xhr.open( 7670 options.type, 7671 options.url, 7672 options.async, 7673 options.username, 7674 options.password 7675 ); 7676 if (options.xhrFields) { 7677 for (i in options.xhrFields) { 7678 xhr[i] = options.xhrFields[i]; 7679 } 7680 } 7681 if (options.mimeType && xhr.overrideMimeType) { 7682 xhr.overrideMimeType(options.mimeType); 7683 } 7684 if (!options.crossDomain && !headers["X-Requested-With"]) { 7685 headers["X-Requested-With"] = "XMLHttpRequest"; 7686 } 7687 for (i in headers) { 7688 xhr.setRequestHeader(i, headers[i]); 7689 } 7690 callback = function(type) { 7691 return function() { 7692 if (callback) { 7693 callback = errorCallback = xhr.onload = xhr.onerror = xhr.onabort = xhr.ontimeout = xhr.onreadystatechange = null; 7694 if (type === "abort") { 7695 xhr.abort(); 7696 } else if (type === "error") { 7697 if (typeof xhr.status !== "number") { 7698 complete(0, "error"); 7699 } else { 7700 complete( 7701 // File: protocol always yields status 0; see trac-8605, trac-14207 7702 xhr.status, 7703 xhr.statusText 7704 ); 7705 } 7706 } else { 7707 complete( 7708 xhrSuccessStatus[xhr.status] || xhr.status, 7709 xhr.statusText, 7710 // Support: IE <=9 only 7711 // IE9 has no XHR2 but throws on binary (trac-11426) 7712 // For XHR2 non-text, let the caller handle it (gh-2498) 7713 (xhr.responseType || "text") !== "text" || typeof xhr.responseText !== "string" ? { binary: xhr.response } : { text: xhr.responseText }, 7714 xhr.getAllResponseHeaders() 7715 ); 7716 } 7717 } 7718 }; 7719 }; 7720 xhr.onload = callback(); 7721 errorCallback = xhr.onerror = xhr.ontimeout = callback("error"); 7722 if (xhr.onabort !== void 0) { 7723 xhr.onabort = errorCallback; 7724 } else { 7725 xhr.onreadystatechange = function() { 7726 if (xhr.readyState === 4) { 7727 window2.setTimeout(function() { 7728 if (callback) { 7729 errorCallback(); 7730 } 7731 }); 7732 } 7733 }; 7734 } 7735 callback = callback("abort"); 7736 try { 7737 xhr.send(options.hasContent && options.data || null); 7738 } catch (e) { 7739 if (callback) { 7740 throw e; 7741 } 7742 } 7743 }, 7744 abort: function() { 7745 if (callback) { 7746 callback(); 7747 } 7748 } 7749 }; 7750 } 7751 }); 7752 jQuery2.ajaxPrefilter(function(s) { 7753 if (s.crossDomain) { 7754 s.contents.script = false; 7755 } 7756 }); 7757 jQuery2.ajaxSetup({ 7758 accepts: { 7759 script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript" 7760 }, 7761 contents: { 7762 script: /\b(?:java|ecma)script\b/ 7763 }, 7764 converters: { 7765 "text script": function(text) { 7766 jQuery2.globalEval(text); 7767 return text; 7768 } 7769 } 7770 }); 7771 jQuery2.ajaxPrefilter("script", function(s) { 7772 if (s.cache === void 0) { 7773 s.cache = false; 7774 } 7775 if (s.crossDomain) { 7776 s.type = "GET"; 7777 } 7778 }); 7779 jQuery2.ajaxTransport("script", function(s) { 7780 if (s.crossDomain || s.scriptAttrs) { 7781 var script, callback; 7782 return { 7783 send: function(_, complete) { 7784 script = jQuery2("<script>").attr(s.scriptAttrs || {}).prop({ charset: s.scriptCharset, src: s.url }).on("load error", callback = function(evt) { 7785 script.remove(); 7786 callback = null; 7787 if (evt) { 7788 complete(evt.type === "error" ? 404 : 200, evt.type); 7789 } 7790 }); 7791 document2.head.appendChild(script[0]); 7792 }, 7793 abort: function() { 7794 if (callback) { 7795 callback(); 7796 } 7797 } 7798 }; 7799 } 7800 }); 7801 var oldCallbacks = [], rjsonp = /(=)\?(?=&|$)|\?\?/; 7802 jQuery2.ajaxSetup({ 7803 jsonp: "callback", 7804 jsonpCallback: function() { 7805 var callback = oldCallbacks.pop() || jQuery2.expando + "_" + nonce.guid++; 7806 this[callback] = true; 7807 return callback; 7808 } 7809 }); 7810 jQuery2.ajaxPrefilter("json jsonp", function(s, originalSettings, jqXHR) { 7811 var callbackName, overwritten, responseContainer, jsonProp = s.jsonp !== false && (rjsonp.test(s.url) ? "url" : typeof s.data === "string" && (s.contentType || "").indexOf("application/x-www-form-urlencoded") === 0 && rjsonp.test(s.data) && "data"); 7812 if (jsonProp || s.dataTypes[0] === "jsonp") { 7813 callbackName = s.jsonpCallback = isFunction(s.jsonpCallback) ? s.jsonpCallback() : s.jsonpCallback; 7814 if (jsonProp) { 7815 s[jsonProp] = s[jsonProp].replace(rjsonp, "$1" + callbackName); 7816 } else if (s.jsonp !== false) { 7817 s.url += (rquery.test(s.url) ? "&" : "?") + s.jsonp + "=" + callbackName; 7818 } 7819 s.converters["script json"] = function() { 7820 if (!responseContainer) { 7821 jQuery2.error(callbackName + " was not called"); 7822 } 7823 return responseContainer[0]; 7824 }; 7825 s.dataTypes[0] = "json"; 7826 overwritten = window2[callbackName]; 7827 window2[callbackName] = function() { 7828 responseContainer = arguments; 7829 }; 7830 jqXHR.always(function() { 7831 if (overwritten === void 0) { 7832 jQuery2(window2).removeProp(callbackName); 7833 } else { 7834 window2[callbackName] = overwritten; 7835 } 7836 if (s[callbackName]) { 7837 s.jsonpCallback = originalSettings.jsonpCallback; 7838 oldCallbacks.push(callbackName); 7839 } 7840 if (responseContainer && isFunction(overwritten)) { 7841 overwritten(responseContainer[0]); 7842 } 7843 responseContainer = overwritten = void 0; 7844 }); 7845 return "script"; 7846 } 7847 }); 7848 support.createHTMLDocument = (function() { 7849 var body = document2.implementation.createHTMLDocument("").body; 7850 body.innerHTML = "<form></form><form></form>"; 7851 return body.childNodes.length === 2; 7852 })(); 7853 jQuery2.parseHTML = function(data, context, keepScripts) { 7854 if (typeof data !== "string") { 7855 return []; 7856 } 7857 if (typeof context === "boolean") { 7858 keepScripts = context; 7859 context = false; 7860 } 7861 var base, parsed, scripts; 7862 if (!context) { 7863 if (support.createHTMLDocument) { 7864 context = document2.implementation.createHTMLDocument(""); 7865 base = context.createElement("base"); 7866 base.href = document2.location.href; 7867 context.head.appendChild(base); 7868 } else { 7869 context = document2; 7870 } 7871 } 7872 parsed = rsingleTag.exec(data); 7873 scripts = !keepScripts && []; 7874 if (parsed) { 7875 return [context.createElement(parsed[1])]; 7876 } 7877 parsed = buildFragment([data], context, scripts); 7878 if (scripts && scripts.length) { 7879 jQuery2(scripts).remove(); 7880 } 7881 return jQuery2.merge([], parsed.childNodes); 7882 }; 7883 jQuery2.fn.load = function(url, params, callback) { 7884 var selector, type, response, self2 = this, off = url.indexOf(" "); 7885 if (off > -1) { 7886 selector = stripAndCollapse(url.slice(off)); 7887 url = url.slice(0, off); 7888 } 7889 if (isFunction(params)) { 7890 callback = params; 7891 params = void 0; 7892 } else if (params && typeof params === "object") { 7893 type = "POST"; 7894 } 7895 if (self2.length > 0) { 7896 jQuery2.ajax({ 7897 url, 7898 // If "type" variable is undefined, then "GET" method will be used. 7899 // Make value of this field explicit since 7900 // user can override it through ajaxSetup method 7901 type: type || "GET", 7902 dataType: "html", 7903 data: params 7904 }).done(function(responseText) { 7905 response = arguments; 7906 self2.html(selector ? ( 7907 // If a selector was specified, locate the right elements in a dummy div 7908 // Exclude scripts to avoid IE 'Permission Denied' errors 7909 jQuery2("<div>").append(jQuery2.parseHTML(responseText)).find(selector) 7910 ) : ( 7911 // Otherwise use the full result 7912 responseText 7913 )); 7914 }).always(callback && function(jqXHR, status) { 7915 self2.each(function() { 7916 callback.apply(this, response || [jqXHR.responseText, status, jqXHR]); 7917 }); 7918 }); 7919 } 7920 return this; 7921 }; 7922 jQuery2.expr.pseudos.animated = function(elem) { 7923 return jQuery2.grep(jQuery2.timers, function(fn) { 7924 return elem === fn.elem; 7925 }).length; 7926 }; 7927 jQuery2.offset = { 7928 setOffset: function(elem, options, i) { 7929 var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition, position = jQuery2.css(elem, "position"), curElem = jQuery2(elem), props = {}; 7930 if (position === "static") { 7931 elem.style.position = "relative"; 7932 } 7933 curOffset = curElem.offset(); 7934 curCSSTop = jQuery2.css(elem, "top"); 7935 curCSSLeft = jQuery2.css(elem, "left"); 7936 calculatePosition = (position === "absolute" || position === "fixed") && (curCSSTop + curCSSLeft).indexOf("auto") > -1; 7937 if (calculatePosition) { 7938 curPosition = curElem.position(); 7939 curTop = curPosition.top; 7940 curLeft = curPosition.left; 7941 } else { 7942 curTop = parseFloat(curCSSTop) || 0; 7943 curLeft = parseFloat(curCSSLeft) || 0; 7944 } 7945 if (isFunction(options)) { 7946 options = options.call(elem, i, jQuery2.extend({}, curOffset)); 7947 } 7948 if (options.top != null) { 7949 props.top = options.top - curOffset.top + curTop; 7950 } 7951 if (options.left != null) { 7952 props.left = options.left - curOffset.left + curLeft; 7953 } 7954 if ("using" in options) { 7955 options.using.call(elem, props); 7956 } else { 7957 curElem.css(props); 7958 } 7959 } 7960 }; 7961 jQuery2.fn.extend({ 7962 // offset() relates an element's border box to the document origin 7963 offset: function(options) { 7964 if (arguments.length) { 7965 return options === void 0 ? this : this.each(function(i) { 7966 jQuery2.offset.setOffset(this, options, i); 7967 }); 7968 } 7969 var rect, win, elem = this[0]; 7970 if (!elem) { 7971 return; 7972 } 7973 if (!elem.getClientRects().length) { 7974 return { top: 0, left: 0 }; 7975 } 7976 rect = elem.getBoundingClientRect(); 7977 win = elem.ownerDocument.defaultView; 7978 return { 7979 top: rect.top + win.pageYOffset, 7980 left: rect.left + win.pageXOffset 7981 }; 7982 }, 7983 // position() relates an element's margin box to its offset parent's padding box 7984 // This corresponds to the behavior of CSS absolute positioning 7985 position: function() { 7986 if (!this[0]) { 7987 return; 7988 } 7989 var offsetParent, offset, doc, elem = this[0], parentOffset = { top: 0, left: 0 }; 7990 if (jQuery2.css(elem, "position") === "fixed") { 7991 offset = elem.getBoundingClientRect(); 7992 } else { 7993 offset = this.offset(); 7994 doc = elem.ownerDocument; 7995 offsetParent = elem.offsetParent || doc.documentElement; 7996 while (offsetParent && (offsetParent === doc.body || offsetParent === doc.documentElement) && jQuery2.css(offsetParent, "position") === "static") { 7997 offsetParent = offsetParent.parentNode; 7998 } 7999 if (offsetParent && offsetParent !== elem && offsetParent.nodeType === 1) { 8000 parentOffset = jQuery2(offsetParent).offset(); 8001 parentOffset.top += jQuery2.css(offsetParent, "borderTopWidth", true); 8002 parentOffset.left += jQuery2.css(offsetParent, "borderLeftWidth", true); 8003 } 8004 } 8005 return { 8006 top: offset.top - parentOffset.top - jQuery2.css(elem, "marginTop", true), 8007 left: offset.left - parentOffset.left - jQuery2.css(elem, "marginLeft", true) 8008 }; 8009 }, 8010 // This method will return documentElement in the following cases: 8011 // 1) For the element inside the iframe without offsetParent, this method will return 8012 // documentElement of the parent window 8013 // 2) For the hidden or detached element 8014 // 3) For body or html element, i.e. in case of the html node - it will return itself 8015 // 8016 // but those exceptions were never presented as a real life use-cases 8017 // and might be considered as more preferable results. 8018 // 8019 // This logic, however, is not guaranteed and can change at any point in the future 8020 offsetParent: function() { 8021 return this.map(function() { 8022 var offsetParent = this.offsetParent; 8023 while (offsetParent && jQuery2.css(offsetParent, "position") === "static") { 8024 offsetParent = offsetParent.offsetParent; 8025 } 8026 return offsetParent || documentElement; 8027 }); 8028 } 8029 }); 8030 jQuery2.each({ scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function(method, prop) { 8031 var top = "pageYOffset" === prop; 8032 jQuery2.fn[method] = function(val) { 8033 return access(this, function(elem, method2, val2) { 8034 var win; 8035 if (isWindow(elem)) { 8036 win = elem; 8037 } else if (elem.nodeType === 9) { 8038 win = elem.defaultView; 8039 } 8040 if (val2 === void 0) { 8041 return win ? win[prop] : elem[method2]; 8042 } 8043 if (win) { 8044 win.scrollTo( 8045 !top ? val2 : win.pageXOffset, 8046 top ? val2 : win.pageYOffset 8047 ); 8048 } else { 8049 elem[method2] = val2; 8050 } 8051 }, method, val, arguments.length); 8052 }; 8053 }); 8054 jQuery2.each(["top", "left"], function(_i, prop) { 8055 jQuery2.cssHooks[prop] = addGetHookIf( 8056 support.pixelPosition, 8057 function(elem, computed) { 8058 if (computed) { 8059 computed = curCSS(elem, prop); 8060 return rnumnonpx.test(computed) ? jQuery2(elem).position()[prop] + "px" : computed; 8061 } 8062 } 8063 ); 8064 }); 8065 jQuery2.each({ Height: "height", Width: "width" }, function(name, type) { 8066 jQuery2.each({ 8067 padding: "inner" + name, 8068 content: type, 8069 "": "outer" + name 8070 }, function(defaultExtra, funcName) { 8071 jQuery2.fn[funcName] = function(margin, value) { 8072 var chainable = arguments.length && (defaultExtra || typeof margin !== "boolean"), extra = defaultExtra || (margin === true || value === true ? "margin" : "border"); 8073 return access(this, function(elem, type2, value2) { 8074 var doc; 8075 if (isWindow(elem)) { 8076 return funcName.indexOf("outer") === 0 ? elem["inner" + name] : elem.document.documentElement["client" + name]; 8077 } 8078 if (elem.nodeType === 9) { 8079 doc = elem.documentElement; 8080 return Math.max( 8081 elem.body["scroll" + name], 8082 doc["scroll" + name], 8083 elem.body["offset" + name], 8084 doc["offset" + name], 8085 doc["client" + name] 8086 ); 8087 } 8088 return value2 === void 0 ? ( 8089 // Get width or height on the element, requesting but not forcing parseFloat 8090 jQuery2.css(elem, type2, extra) 8091 ) : ( 8092 // Set width or height on the element 8093 jQuery2.style(elem, type2, value2, extra) 8094 ); 8095 }, type, chainable ? margin : void 0, chainable); 8096 }; 8097 }); 8098 }); 8099 jQuery2.each([ 8100 "ajaxStart", 8101 "ajaxStop", 8102 "ajaxComplete", 8103 "ajaxError", 8104 "ajaxSuccess", 8105 "ajaxSend" 8106 ], function(_i, type) { 8107 jQuery2.fn[type] = function(fn) { 8108 return this.on(type, fn); 8109 }; 8110 }); 8111 jQuery2.fn.extend({ 8112 bind: function(types, data, fn) { 8113 return this.on(types, null, data, fn); 8114 }, 8115 unbind: function(types, fn) { 8116 return this.off(types, null, fn); 8117 }, 8118 delegate: function(selector, types, data, fn) { 8119 return this.on(types, selector, data, fn); 8120 }, 8121 undelegate: function(selector, types, fn) { 8122 return arguments.length === 1 ? this.off(selector, "**") : this.off(types, selector || "**", fn); 8123 }, 8124 hover: function(fnOver, fnOut) { 8125 return this.on("mouseenter", fnOver).on("mouseleave", fnOut || fnOver); 8126 } 8127 }); 8128 jQuery2.each( 8129 "blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "), 8130 function(_i, name) { 8131 jQuery2.fn[name] = function(data, fn) { 8132 return arguments.length > 0 ? this.on(name, null, data, fn) : this.trigger(name); 8133 }; 8134 } 8135 ); 8136 var rtrim = /^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g; 8137 jQuery2.proxy = function(fn, context) { 8138 var tmp, args, proxy; 8139 if (typeof context === "string") { 8140 tmp = fn[context]; 8141 context = fn; 8142 fn = tmp; 8143 } 8144 if (!isFunction(fn)) { 8145 return void 0; 8146 } 8147 args = slice.call(arguments, 2); 8148 proxy = function() { 8149 return fn.apply(context || this, args.concat(slice.call(arguments))); 8150 }; 8151 proxy.guid = fn.guid = fn.guid || jQuery2.guid++; 8152 return proxy; 8153 }; 8154 jQuery2.holdReady = function(hold) { 8155 if (hold) { 8156 jQuery2.readyWait++; 8157 } else { 8158 jQuery2.ready(true); 8159 } 8160 }; 8161 jQuery2.isArray = Array.isArray; 8162 jQuery2.parseJSON = JSON.parse; 8163 jQuery2.nodeName = nodeName; 8164 jQuery2.isFunction = isFunction; 8165 jQuery2.isWindow = isWindow; 8166 jQuery2.camelCase = camelCase; 8167 jQuery2.type = toType; 8168 jQuery2.now = Date.now; 8169 jQuery2.isNumeric = function(obj) { 8170 var type = jQuery2.type(obj); 8171 return (type === "number" || type === "string") && // parseFloat NaNs numeric-cast false positives ("") 8172 // ...but misinterprets leading-number strings, particularly hex literals ("0x...") 8173 // subtraction forces infinities to NaN 8174 !isNaN(obj - parseFloat(obj)); 8175 }; 8176 jQuery2.trim = function(text) { 8177 return text == null ? "" : (text + "").replace(rtrim, "$1"); 8178 }; 8179 if (typeof define === "function" && define.amd) { 8180 define("jquery", [], function() { 8181 return jQuery2; 8182 }); 8183 } 8184 var _jQuery = window2.jQuery, _$ = window2.$; 8185 jQuery2.noConflict = function(deep) { 8186 if (window2.$ === jQuery2) { 8187 window2.$ = _$; 8188 } 8189 if (deep && window2.jQuery === jQuery2) { 8190 window2.jQuery = _jQuery; 8191 } 8192 return jQuery2; 8193 }; 8194 if (typeof noGlobal === "undefined") { 8195 window2.jQuery = window2.$ = jQuery2; 8196 } 8197 return jQuery2; 8198 }); 8199 } 8200 }); 8201 8202
vendor: 182,377 bytes, lines 8202-12757
8202// node_modules/select2/dist/js/select2.js 8203 var require_select2 = __commonJS({ 8204 "node_modules/select2/dist/js/select2.js"(exports, module) { 8205 init_esbuild_shims(); 8206 (function(factory) { 8207 if (typeof define === "function" && define.amd) { 8208 define(["jquery"], factory); 8209 } else if (typeof module === "object" && module.exports) { 8210 module.exports = function(root, jQuery2) { 8211 if (jQuery2 === void 0) { 8212 if (typeof window !== "undefined") { 8213 jQuery2 = require_jquery(); 8214 } else { 8215 jQuery2 = require_jquery()(root); 8216 } 8217 } 8218 factory(jQuery2); 8219 return jQuery2; 8220 }; 8221 } else { 8222 factory(jQuery); 8223 } 8224 })(function(jQuery2) { 8225 var S2 = (function() { 8226 if (jQuery2 && jQuery2.fn && jQuery2.fn.select2 && jQuery2.fn.select2.amd) { 8227 var S22 = jQuery2.fn.select2.amd; 8228 } 8229 var S22; 8230 (function() { 8231 if (!S22 || !S22.requirejs) { 8232 if (!S22) { 8233 S22 = {}; 8234 } else { 8235 require2 = S22; 8236 } 8237 var requirejs, require2, define2; 8238 (function(undef) { 8239 var main, req, makeMap, handlers, defined = {}, waiting = {}, config = {}, defining = {}, hasOwn = Object.prototype.hasOwnProperty, aps = [].slice, jsSuffixRegExp = /\.js$/; 8240 function hasProp(obj, prop) { 8241 return hasOwn.call(obj, prop); 8242 } 8243 function normalize(name, baseName) { 8244 var nameParts, nameSegment, mapValue, foundMap, lastIndex, foundI, foundStarMap, starI, i, j, part, normalizedBaseParts, baseParts = baseName && baseName.split("/"), map = config.map, starMap = map && map["*"] || {}; 8245 if (name) { 8246 name = name.split("/"); 8247 lastIndex = name.length - 1; 8248 if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) { 8249 name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, ""); 8250 } 8251 if (name[0].charAt(0) === "." && baseParts) { 8252 normalizedBaseParts = baseParts.slice(0, baseParts.length - 1); 8253 name = normalizedBaseParts.concat(name); 8254 } 8255 for (i = 0; i < name.length; i++) { 8256 part = name[i]; 8257 if (part === ".") { 8258 name.splice(i, 1); 8259 i -= 1; 8260 } else if (part === "..") { 8261 if (i === 0 || i === 1 && name[2] === ".." || name[i - 1] === "..") { 8262 continue; 8263 } else if (i > 0) { 8264 name.splice(i - 1, 2); 8265 i -= 2; 8266 } 8267 } 8268 } 8269 name = name.join("/"); 8270 } 8271 if ((baseParts || starMap) && map) { 8272 nameParts = name.split("/"); 8273 for (i = nameParts.length; i > 0; i -= 1) { 8274 nameSegment = nameParts.slice(0, i).join("/"); 8275 if (baseParts) { 8276 for (j = baseParts.length; j > 0; j -= 1) { 8277 mapValue = map[baseParts.slice(0, j).join("/")]; 8278 if (mapValue) { 8279 mapValue = mapValue[nameSegment]; 8280 if (mapValue) { 8281 foundMap = mapValue; 8282 foundI = i; 8283 break; 8284 } 8285 } 8286 } 8287 } 8288 if (foundMap) { 8289 break; 8290 } 8291 if (!foundStarMap && starMap && starMap[nameSegment]) { 8292 foundStarMap = starMap[nameSegment]; 8293 starI = i; 8294 } 8295 } 8296 if (!foundMap && foundStarMap) { 8297 foundMap = foundStarMap; 8298 foundI = starI; 8299 } 8300 if (foundMap) { 8301 nameParts.splice(0, foundI, foundMap); 8302 name = nameParts.join("/"); 8303 } 8304 } 8305 return name; 8306 } 8307 function makeRequire(relName, forceSync) { 8308 return function() { 8309 var args = aps.call(arguments, 0); 8310 if (typeof args[0] !== "string" && args.length === 1) { 8311 args.push(null); 8312 } 8313 return req.apply(undef, args.concat([relName, forceSync])); 8314 }; 8315 } 8316 function makeNormalize(relName) { 8317 return function(name) { 8318 return normalize(name, relName); 8319 }; 8320 } 8321 function makeLoad(depName) { 8322 return function(value) { 8323 defined[depName] = value; 8324 }; 8325 } 8326 function callDep(name) { 8327 if (hasProp(waiting, name)) { 8328 var args = waiting[name]; 8329 delete waiting[name]; 8330 defining[name] = true; 8331 main.apply(undef, args); 8332 } 8333 if (!hasProp(defined, name) && !hasProp(defining, name)) { 8334 throw new Error("No " + name); 8335 } 8336 return defined[name]; 8337 } 8338 function splitPrefix(name) { 8339 var prefix, index = name ? name.indexOf("!") : -1; 8340 if (index > -1) { 8341 prefix = name.substring(0, index); 8342 name = name.substring(index + 1, name.length); 8343 } 8344 return [prefix, name]; 8345 } 8346 function makeRelParts(relName) { 8347 return relName ? splitPrefix(relName) : []; 8348 } 8349 makeMap = function(name, relParts) { 8350 var plugin, parts = splitPrefix(name), prefix = parts[0], relResourceName = relParts[1]; 8351 name = parts[1]; 8352 if (prefix) { 8353 prefix = normalize(prefix, relResourceName); 8354 plugin = callDep(prefix); 8355 } 8356 if (prefix) { 8357 if (plugin && plugin.normalize) { 8358 name = plugin.normalize(name, makeNormalize(relResourceName)); 8359 } else { 8360 name = normalize(name, relResourceName); 8361 } 8362 } else { 8363 name = normalize(name, relResourceName); 8364 parts = splitPrefix(name); 8365 prefix = parts[0]; 8366 name = parts[1]; 8367 if (prefix) { 8368 plugin = callDep(prefix); 8369 } 8370 } 8371 return { 8372 f: prefix ? prefix + "!" + name : name, 8373 //fullName 8374 n: name, 8375 pr: prefix, 8376 p: plugin 8377 }; 8378 }; 8379 function makeConfig(name) { 8380 return function() { 8381 return config && config.config && config.config[name] || {}; 8382 }; 8383 } 8384 handlers = { 8385 require: function(name) { 8386 return makeRequire(name); 8387 }, 8388 exports: function(name) { 8389 var e = defined[name]; 8390 if (typeof e !== "undefined") { 8391 return e; 8392 } else { 8393 return defined[name] = {}; 8394 } 8395 }, 8396 module: function(name) { 8397 return { 8398 id: name, 8399 uri: "", 8400 exports: defined[name], 8401 config: makeConfig(name) 8402 }; 8403 } 8404 }; 8405 main = function(name, deps, callback, relName) { 8406 var cjsModule, depName, ret, map, i, relParts, args = [], callbackType = typeof callback, usingExports; 8407 relName = relName || name; 8408 relParts = makeRelParts(relName); 8409 if (callbackType === "undefined" || callbackType === "function") { 8410 deps = !deps.length && callback.length ? ["require", "exports", "module"] : deps; 8411 for (i = 0; i < deps.length; i += 1) { 8412 map = makeMap(deps[i], relParts); 8413 depName = map.f; 8414 if (depName === "require") { 8415 args[i] = handlers.require(name); 8416 } else if (depName === "exports") { 8417 args[i] = handlers.exports(name); 8418 usingExports = true; 8419 } else if (depName === "module") { 8420 cjsModule = args[i] = handlers.module(name); 8421 } else if (hasProp(defined, depName) || hasProp(waiting, depName) || hasProp(defining, depName)) { 8422 args[i] = callDep(depName); 8423 } else if (map.p) { 8424 map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {}); 8425 args[i] = defined[depName]; 8426 } else { 8427 throw new Error(name + " missing " + depName); 8428 } 8429 } 8430 ret = callback ? callback.apply(defined[name], args) : void 0; 8431 if (name) { 8432 if (cjsModule && cjsModule.exports !== undef && cjsModule.exports !== defined[name]) { 8433 defined[name] = cjsModule.exports; 8434 } else if (ret !== undef || !usingExports) { 8435 defined[name] = ret; 8436 } 8437 } 8438 } else if (name) { 8439 defined[name] = callback; 8440 } 8441 }; 8442 requirejs = require2 = req = function(deps, callback, relName, forceSync, alt) { 8443 if (typeof deps === "string") { 8444 if (handlers[deps]) { 8445 return handlers[deps](callback); 8446 } 8447 return callDep(makeMap(deps, makeRelParts(callback)).f); 8448 } else if (!deps.splice) { 8449 config = deps; 8450 if (config.deps) { 8451 req(config.deps, config.callback); 8452 } 8453 if (!callback) { 8454 return; 8455 } 8456 if (callback.splice) { 8457 deps = callback; 8458 callback = relName; 8459 relName = null; 8460 } else { 8461 deps = undef; 8462 } 8463 } 8464 callback = callback || function() { 8465 }; 8466 if (typeof relName === "function") { 8467 relName = forceSync; 8468 forceSync = alt; 8469 } 8470 if (forceSync) { 8471 main(undef, deps, callback, relName); 8472 } else { 8473 setTimeout(function() { 8474 main(undef, deps, callback, relName); 8475 }, 4); 8476 } 8477 return req; 8478 }; 8479 req.config = function(cfg) { 8480 return req(cfg); 8481 }; 8482 requirejs._defined = defined; 8483 define2 = function(name, deps, callback) { 8484 if (typeof name !== "string") { 8485 throw new Error("See almond README: incorrect module build, no module name"); 8486 } 8487 if (!deps.splice) { 8488 callback = deps; 8489 deps = []; 8490 } 8491 if (!hasProp(defined, name) && !hasProp(waiting, name)) { 8492 waiting[name] = [name, deps, callback]; 8493 } 8494 }; 8495 define2.amd = { 8496 jQuery: true 8497 }; 8498 })(); 8499 S22.requirejs = requirejs; 8500 S22.require = require2; 8501 S22.define = define2; 8502 } 8503 })(); 8504 S22.define("almond", function() { 8505 }); 8506 S22.define("jquery", [], function() { 8507 var _$ = jQuery2 || $; 8508 if (_$ == null && console && console.error) { 8509 console.error( 8510 "Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page." 8511 ); 8512 } 8513 return _$; 8514 }); 8515 S22.define("select2/utils", [ 8516 "jquery" 8517 ], function($3) { 8518 var Utils = {}; 8519 Utils.Extend = function(ChildClass, SuperClass) { 8520 var __hasProp = {}.hasOwnProperty; 8521 function BaseConstructor() { 8522 this.constructor = ChildClass; 8523 } 8524 for (var key in SuperClass) { 8525 if (__hasProp.call(SuperClass, key)) { 8526 ChildClass[key] = SuperClass[key]; 8527 } 8528 } 8529 BaseConstructor.prototype = SuperClass.prototype; 8530 ChildClass.prototype = new BaseConstructor(); 8531 ChildClass.__super__ = SuperClass.prototype; 8532 return ChildClass; 8533 }; 8534 function getMethods(theClass) { 8535 var proto = theClass.prototype; 8536 var methods = []; 8537 for (var methodName in proto) { 8538 var m = proto[methodName]; 8539 if (typeof m !== "function") { 8540 continue; 8541 } 8542 if (methodName === "constructor") { 8543 continue; 8544 } 8545 methods.push(methodName); 8546 } 8547 return methods; 8548 } 8549 Utils.Decorate = function(SuperClass, DecoratorClass) { 8550 var decoratedMethods = getMethods(DecoratorClass); 8551 var superMethods = getMethods(SuperClass); 8552 function DecoratedClass() { 8553 var unshift = Array.prototype.unshift; 8554 var argCount = DecoratorClass.prototype.constructor.length; 8555 var calledConstructor = SuperClass.prototype.constructor; 8556 if (argCount > 0) { 8557 unshift.call(arguments, SuperClass.prototype.constructor); 8558 calledConstructor = DecoratorClass.prototype.constructor; 8559 } 8560 calledConstructor.apply(this, arguments); 8561 } 8562 DecoratorClass.displayName = SuperClass.displayName; 8563 function ctr() { 8564 this.constructor = DecoratedClass; 8565 } 8566 DecoratedClass.prototype = new ctr(); 8567 for (var m = 0; m < superMethods.length; m++) { 8568 var superMethod = superMethods[m]; 8569 DecoratedClass.prototype[superMethod] = SuperClass.prototype[superMethod]; 8570 } 8571 var calledMethod = function(methodName) { 8572 var originalMethod = function() { 8573 }; 8574 if (methodName in DecoratedClass.prototype) { 8575 originalMethod = DecoratedClass.prototype[methodName]; 8576 } 8577 var decoratedMethod2 = DecoratorClass.prototype[methodName]; 8578 return function() { 8579 var unshift = Array.prototype.unshift; 8580 unshift.call(arguments, originalMethod); 8581 return decoratedMethod2.apply(this, arguments); 8582 }; 8583 }; 8584 for (var d = 0; d < decoratedMethods.length; d++) { 8585 var decoratedMethod = decoratedMethods[d]; 8586 DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod); 8587 } 8588 return DecoratedClass; 8589 }; 8590 var Observable = function() { 8591 this.listeners = {}; 8592 }; 8593 Observable.prototype.on = function(event2, callback) { 8594 this.listeners = this.listeners || {}; 8595 if (event2 in this.listeners) { 8596 this.listeners[event2].push(callback); 8597 } else { 8598 this.listeners[event2] = [callback]; 8599 } 8600 }; 8601 Observable.prototype.trigger = function(event2) { 8602 var slice = Array.prototype.slice; 8603 var params = slice.call(arguments, 1); 8604 this.listeners = this.listeners || {}; 8605 if (params == null) { 8606 params = []; 8607 } 8608 if (params.length === 0) { 8609 params.push({}); 8610 } 8611 params[0]._type = event2; 8612 if (event2 in this.listeners) { 8613 this.invoke(this.listeners[event2], slice.call(arguments, 1)); 8614 } 8615 if ("*" in this.listeners) { 8616 this.invoke(this.listeners["*"], arguments); 8617 } 8618 }; 8619 Observable.prototype.invoke = function(listeners, params) { 8620 for (var i = 0, len = listeners.length; i < len; i++) { 8621 listeners[i].apply(this, params); 8622 } 8623 }; 8624 Utils.Observable = Observable; 8625 Utils.generateChars = function(length) { 8626 var chars = ""; 8627 for (var i = 0; i < length; i++) { 8628 var randomChar = Math.floor(Math.random() * 36); 8629 chars += randomChar.toString(36); 8630 } 8631 return chars; 8632 }; 8633 Utils.bind = function(func, context) { 8634 return function() { 8635 func.apply(context, arguments); 8636 }; 8637 }; 8638 Utils._convertData = function(data) { 8639 for (var originalKey in data) { 8640 var keys = originalKey.split("-"); 8641 var dataLevel = data; 8642 if (keys.length === 1) { 8643 continue; 8644 } 8645 for (var k = 0; k < keys.length; k++) { 8646 var key = keys[k]; 8647 key = key.substring(0, 1).toLowerCase() + key.substring(1); 8648 if (!(key in dataLevel)) { 8649 dataLevel[key] = {}; 8650 } 8651 if (k == keys.length - 1) { 8652 dataLevel[key] = data[originalKey]; 8653 } 8654 dataLevel = dataLevel[key]; 8655 } 8656 delete data[originalKey]; 8657 } 8658 return data; 8659 }; 8660 Utils.hasScroll = function(index, el) { 8661 var $el = $3(el); 8662 var overflowX = el.style.overflowX; 8663 var overflowY = el.style.overflowY; 8664 if (overflowX === overflowY && (overflowY === "hidden" || overflowY === "visible")) { 8665 return false; 8666 } 8667 if (overflowX === "scroll" || overflowY === "scroll") { 8668 return true; 8669 } 8670 return $el.innerHeight() < el.scrollHeight || $el.innerWidth() < el.scrollWidth; 8671 }; 8672 Utils.escapeMarkup = function(markup) { 8673 var replaceMap = { 8674 "\\": "\", 8675 "&": "&", 8676 "<": "<", 8677 ">": ">", 8678 '"': """, 8679 "'": "'", 8680 "/": "/" 8681 }; 8682 if (typeof markup !== "string") { 8683 return markup; 8684 } 8685 return String(markup).replace(/[&<>"'\/\\]/g, function(match) { 8686 return replaceMap[match]; 8687 }); 8688 }; 8689 Utils.__cache = {}; 8690 var id = 0; 8691 Utils.GetUniqueElementId = function(element) { 8692 var select2Id = element.getAttribute("data-select2-id"); 8693 if (select2Id != null) { 8694 return select2Id; 8695 } 8696 if (element.id) { 8697 select2Id = "select2-data-" + element.id; 8698 } else { 8699 select2Id = "select2-data-" + (++id).toString() + "-" + Utils.generateChars(4); 8700 } 8701 element.setAttribute("data-select2-id", select2Id); 8702 return select2Id; 8703 }; 8704 Utils.StoreData = function(element, name, value) { 8705 var id2 = Utils.GetUniqueElementId(element); 8706 if (!Utils.__cache[id2]) { 8707 Utils.__cache[id2] = {}; 8708 } 8709 Utils.__cache[id2][name] = value; 8710 }; 8711 Utils.GetData = function(element, name) { 8712 var id2 = Utils.GetUniqueElementId(element); 8713 if (name) { 8714 if (Utils.__cache[id2]) { 8715 if (Utils.__cache[id2][name] != null) { 8716 return Utils.__cache[id2][name]; 8717 } 8718 return $3(element).data(name); 8719 } 8720 return $3(element).data(name); 8721 } else { 8722 return Utils.__cache[id2]; 8723 } 8724 }; 8725 Utils.RemoveData = function(element) { 8726 var id2 = Utils.GetUniqueElementId(element); 8727 if (Utils.__cache[id2] != null) { 8728 delete Utils.__cache[id2]; 8729 } 8730 element.removeAttribute("data-select2-id"); 8731 }; 8732 Utils.copyNonInternalCssClasses = function(dest, src) { 8733 var classes; 8734 var destinationClasses = dest.getAttribute("class").trim().split(/\s+/); 8735 destinationClasses = destinationClasses.filter(function(clazz) { 8736 return clazz.indexOf("select2-") === 0; 8737 }); 8738 var sourceClasses = src.getAttribute("class").trim().split(/\s+/); 8739 sourceClasses = sourceClasses.filter(function(clazz) { 8740 return clazz.indexOf("select2-") !== 0; 8741 }); 8742 var replacements = destinationClasses.concat(sourceClasses); 8743 dest.setAttribute("class", replacements.join(" ")); 8744 }; 8745 return Utils; 8746 }); 8747 S22.define("select2/results", [ 8748 "jquery", 8749 "./utils" 8750 ], function($3, Utils) { 8751 function Results($element, options, dataAdapter) { 8752 this.$element = $element; 8753 this.data = dataAdapter; 8754 this.options = options; 8755 Results.__super__.constructor.call(this); 8756 } 8757 Utils.Extend(Results, Utils.Observable); 8758 Results.prototype.render = function() { 8759 var $results = $3( 8760 '<ul class="select2-results__options" role="listbox"></ul>' 8761 ); 8762 if (this.options.get("multiple")) { 8763 $results.attr("aria-multiselectable", "true"); 8764 } 8765 this.$results = $results; 8766 return $results; 8767 }; 8768 Results.prototype.clear = function() { 8769 this.$results.empty(); 8770 }; 8771 Results.prototype.displayMessage = function(params) { 8772 var escapeMarkup = this.options.get("escapeMarkup"); 8773 this.clear(); 8774 this.hideLoading(); 8775 var $message = $3( 8776 '<li role="alert" aria-live="assertive" class="select2-results__option"></li>' 8777 ); 8778 var message = this.options.get("translations").get(params.message); 8779 $message.append( 8780 escapeMarkup( 8781 message(params.args) 8782 ) 8783 ); 8784 $message[0].className += " select2-results__message"; 8785 this.$results.append($message); 8786 }; 8787 Results.prototype.hideMessages = function() { 8788 this.$results.find(".select2-results__message").remove(); 8789 }; 8790 Results.prototype.append = function(data) { 8791 this.hideLoading(); 8792 var $options = []; 8793 if (data.results == null || data.results.length === 0) { 8794 if (this.$results.children().length === 0) { 8795 this.trigger("results:message", { 8796 message: "noResults" 8797 }); 8798 } 8799 return; 8800 } 8801 data.results = this.sort(data.results); 8802 for (var d = 0; d < data.results.length; d++) { 8803 var item = data.results[d]; 8804 var $option = this.option(item); 8805 $options.push($option); 8806 } 8807 this.$results.append($options); 8808 }; 8809 Results.prototype.position = function($results, $dropdown) { 8810 var $resultsContainer = $dropdown.find(".select2-results"); 8811 $resultsContainer.append($results); 8812 }; 8813 Results.prototype.sort = function(data) { 8814 var sorter = this.options.get("sorter"); 8815 return sorter(data); 8816 }; 8817 Results.prototype.highlightFirstItem = function() { 8818 var $options = this.$results.find(".select2-results__option--selectable"); 8819 var $selected = $options.filter(".select2-results__option--selected"); 8820 if ($selected.length > 0) { 8821 $selected.first().trigger("mouseenter"); 8822 } else { 8823 $options.first().trigger("mouseenter"); 8824 } 8825 this.ensureHighlightVisible(); 8826 }; 8827 Results.prototype.setClasses = function() { 8828 var self2 = this; 8829 this.data.current(function(selected) { 8830 var selectedIds = selected.map(function(s) { 8831 return s.id.toString(); 8832 }); 8833 var $options = self2.$results.find(".select2-results__option--selectable"); 8834 $options.each(function() { 8835 var $option = $3(this); 8836 var item = Utils.GetData(this, "data"); 8837 var id = "" + item.id; 8838 if (item.element != null && item.element.selected || item.element == null && selectedIds.indexOf(id) > -1) { 8839 this.classList.add("select2-results__option--selected"); 8840 $option.attr("aria-selected", "true"); 8841 } else { 8842 this.classList.remove("select2-results__option--selected"); 8843 $option.attr("aria-selected", "false"); 8844 } 8845 }); 8846 }); 8847 }; 8848 Results.prototype.showLoading = function(params) { 8849 this.hideLoading(); 8850 var loadingMore = this.options.get("translations").get("searching"); 8851 var loading = { 8852 disabled: true, 8853 loading: true, 8854 text: loadingMore(params) 8855 }; 8856 var $loading = this.option(loading); 8857 $loading.className += " loading-results"; 8858 this.$results.prepend($loading); 8859 }; 8860 Results.prototype.hideLoading = function() { 8861 this.$results.find(".loading-results").remove(); 8862 }; 8863 Results.prototype.option = function(data) { 8864 var option = document.createElement("li"); 8865 option.classList.add("select2-results__option"); 8866 option.classList.add("select2-results__option--selectable"); 8867 var attrs = { 8868 "role": "option" 8869 }; 8870 var matches = window.Element.prototype.matches || window.Element.prototype.msMatchesSelector || window.Element.prototype.webkitMatchesSelector; 8871 if (data.element != null && matches.call(data.element, ":disabled") || data.element == null && data.disabled) { 8872 attrs["aria-disabled"] = "true"; 8873 option.classList.remove("select2-results__option--selectable"); 8874 option.classList.add("select2-results__option--disabled"); 8875 } 8876 if (data.id == null) { 8877 option.classList.remove("select2-results__option--selectable"); 8878 } 8879 if (data._resultId != null) { 8880 option.id = data._resultId; 8881 } 8882 if (data.title) { 8883 option.title = data.title; 8884 } 8885 if (data.children) { 8886 attrs.role = "group"; 8887 attrs["aria-label"] = data.text; 8888 option.classList.remove("select2-results__option--selectable"); 8889 option.classList.add("select2-results__option--group"); 8890 } 8891 for (var attr in attrs) { 8892 var val = attrs[attr]; 8893 option.setAttribute(attr, val); 8894 } 8895 if (data.children) { 8896 var $option = $3(option); 8897 var label = document.createElement("strong"); 8898 label.className = "select2-results__group"; 8899 this.template(data, label); 8900 var $children = []; 8901 for (var c = 0; c < data.children.length; c++) { 8902 var child = data.children[c]; 8903 var $child = this.option(child); 8904 $children.push($child); 8905 } 8906 var $childrenContainer = $3("<ul></ul>", { 8907 "class": "select2-results__options select2-results__options--nested", 8908 "role": "none" 8909 }); 8910 $childrenContainer.append($children); 8911 $option.append(label); 8912 $option.append($childrenContainer); 8913 } else { 8914 this.template(data, option); 8915 } 8916 Utils.StoreData(option, "data", data); 8917 return option; 8918 }; 8919 Results.prototype.bind = function(container, $container) { 8920 var self2 = this; 8921 var id = container.id + "-results"; 8922 this.$results.attr("id", id); 8923 container.on("results:all", function(params) { 8924 self2.clear(); 8925 self2.append(params.data); 8926 if (container.isOpen()) { 8927 self2.setClasses(); 8928 self2.highlightFirstItem(); 8929 } 8930 }); 8931 container.on("results:append", function(params) { 8932 self2.append(params.data); 8933 if (container.isOpen()) { 8934 self2.setClasses(); 8935 } 8936 }); 8937 container.on("query", function(params) { 8938 self2.hideMessages(); 8939 self2.showLoading(params); 8940 }); 8941 container.on("select", function() { 8942 if (!container.isOpen()) { 8943 return; 8944 } 8945 self2.setClasses(); 8946 if (self2.options.get("scrollAfterSelect")) { 8947 self2.highlightFirstItem(); 8948 } 8949 }); 8950 container.on("unselect", function() { 8951 if (!container.isOpen()) { 8952 return; 8953 } 8954 self2.setClasses(); 8955 if (self2.options.get("scrollAfterSelect")) { 8956 self2.highlightFirstItem(); 8957 } 8958 }); 8959 container.on("open", function() { 8960 self2.$results.attr("aria-expanded", "true"); 8961 self2.$results.attr("aria-hidden", "false"); 8962 self2.setClasses(); 8963 self2.ensureHighlightVisible(); 8964 }); 8965 container.on("close", function() { 8966 self2.$results.attr("aria-expanded", "false"); 8967 self2.$results.attr("aria-hidden", "true"); 8968 self2.$results.removeAttr("aria-activedescendant"); 8969 }); 8970 container.on("results:toggle", function() { 8971 var $highlighted = self2.getHighlightedResults(); 8972 if ($highlighted.length === 0) { 8973 return; 8974 } 8975 $highlighted.trigger("mouseup"); 8976 }); 8977 container.on("results:select", function() { 8978 var $highlighted = self2.getHighlightedResults(); 8979 if ($highlighted.length === 0) { 8980 return; 8981 } 8982 var data = Utils.GetData($highlighted[0], "data"); 8983 if ($highlighted.hasClass("select2-results__option--selected")) { 8984 self2.trigger("close", {}); 8985 } else { 8986 self2.trigger("select", { 8987 data 8988 }); 8989 } 8990 }); 8991 container.on("results:previous", function() { 8992 var $highlighted = self2.getHighlightedResults(); 8993 var $options = self2.$results.find(".select2-results__option--selectable"); 8994 var currentIndex = $options.index($highlighted); 8995 if (currentIndex <= 0) { 8996 return; 8997 } 8998 var nextIndex = currentIndex - 1; 8999 if ($highlighted.length === 0) { 9000 nextIndex = 0; 9001 } 9002 var $next = $options.eq(nextIndex); 9003 $next.trigger("mouseenter"); 9004 var currentOffset = self2.$results.offset().top; 9005 var nextTop = $next.offset().top; 9006 var nextOffset = self2.$results.scrollTop() + (nextTop - currentOffset); 9007 if (nextIndex === 0) { 9008 self2.$results.scrollTop(0); 9009 } else if (nextTop - currentOffset < 0) { 9010 self2.$results.scrollTop(nextOffset); 9011 } 9012 }); 9013 container.on("results:next", function() { 9014 var $highlighted = self2.getHighlightedResults(); 9015 var $options = self2.$results.find(".select2-results__option--selectable"); 9016 var currentIndex = $options.index($highlighted); 9017 var nextIndex = currentIndex + 1; 9018 if (nextIndex >= $options.length) { 9019 return; 9020 } 9021 var $next = $options.eq(nextIndex); 9022 $next.trigger("mouseenter"); 9023 var currentOffset = self2.$results.offset().top + self2.$results.outerHeight(false); 9024 var nextBottom = $next.offset().top + $next.outerHeight(false); 9025 var nextOffset = self2.$results.scrollTop() + nextBottom - currentOffset; 9026 if (nextIndex === 0) { 9027 self2.$results.scrollTop(0); 9028 } else if (nextBottom > currentOffset) { 9029 self2.$results.scrollTop(nextOffset); 9030 } 9031 }); 9032 container.on("results:focus", function(params) { 9033 params.element[0].classList.add("select2-results__option--highlighted"); 9034 params.element[0].setAttribute("aria-selected", "true"); 9035 }); 9036 container.on("results:message", function(params) { 9037 self2.displayMessage(params); 9038 }); 9039 if ($3.fn.mousewheel) { 9040 this.$results.on("mousewheel", function(e) { 9041 var top = self2.$results.scrollTop(); 9042 var bottom = self2.$results.get(0).scrollHeight - top + e.deltaY; 9043 var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0; 9044 var isAtBottom = e.deltaY < 0 && bottom <= self2.$results.height(); 9045 if (isAtTop) { 9046 self2.$results.scrollTop(0); 9047 e.preventDefault(); 9048 e.stopPropagation(); 9049 } else if (isAtBottom) { 9050 self2.$results.scrollTop( 9051 self2.$results.get(0).scrollHeight - self2.$results.height() 9052 ); 9053 e.preventDefault(); 9054 e.stopPropagation(); 9055 } 9056 }); 9057 } 9058 this.$results.on( 9059 "mouseup", 9060 ".select2-results__option--selectable", 9061 function(evt) { 9062 var $this = $3(this); 9063 var data = Utils.GetData(this, "data"); 9064 if ($this.hasClass("select2-results__option--selected")) { 9065 if (self2.options.get("multiple")) { 9066 self2.trigger("unselect", { 9067 originalEvent: evt, 9068 data 9069 }); 9070 } else { 9071 self2.trigger("close", {}); 9072 } 9073 return; 9074 } 9075 self2.trigger("select", { 9076 originalEvent: evt, 9077 data 9078 }); 9079 } 9080 ); 9081 this.$results.on( 9082 "mouseenter", 9083 ".select2-results__option--selectable", 9084 function(evt) { 9085 var data = Utils.GetData(this, "data"); 9086 self2.getHighlightedResults().removeClass("select2-results__option--highlighted").attr("aria-selected", "false"); 9087 self2.trigger("results:focus", { 9088 data, 9089 element: $3(this) 9090 }); 9091 } 9092 ); 9093 }; 9094 Results.prototype.getHighlightedResults = function() { 9095 var $highlighted = this.$results.find(".select2-results__option--highlighted"); 9096 return $highlighted; 9097 }; 9098 Results.prototype.destroy = function() { 9099 this.$results.remove(); 9100 }; 9101 Results.prototype.ensureHighlightVisible = function() { 9102 var $highlighted = this.getHighlightedResults(); 9103 if ($highlighted.length === 0) { 9104 return; 9105 } 9106 var $options = this.$results.find(".select2-results__option--selectable"); 9107 var currentIndex = $options.index($highlighted); 9108 var currentOffset = this.$results.offset().top; 9109 var nextTop = $highlighted.offset().top; 9110 var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset); 9111 var offsetDelta = nextTop - currentOffset; 9112 nextOffset -= $highlighted.outerHeight(false) * 2; 9113 if (currentIndex <= 2) { 9114 this.$results.scrollTop(0); 9115 } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) { 9116 this.$results.scrollTop(nextOffset); 9117 } 9118 }; 9119 Results.prototype.template = function(result, container) { 9120 var template = this.options.get("templateResult"); 9121 var escapeMarkup = this.options.get("escapeMarkup"); 9122 var content = template(result, container); 9123 if (content == null) { 9124 container.style.display = "none"; 9125 } else if (typeof content === "string") { 9126 container.innerHTML = escapeMarkup(content); 9127 } else { 9128 $3(container).append(content); 9129 } 9130 }; 9131 return Results; 9132 }); 9133 S22.define("select2/keys", [], function() { 9134 var KEYS = { 9135 BACKSPACE: 8, 9136 TAB: 9, 9137 ENTER: 13, 9138 SHIFT: 16, 9139 CTRL: 17, 9140 ALT: 18, 9141 ESC: 27, 9142 SPACE: 32, 9143 PAGE_UP: 33, 9144 PAGE_DOWN: 34, 9145 END: 35, 9146 HOME: 36, 9147 LEFT: 37, 9148 UP: 38, 9149 RIGHT: 39, 9150 DOWN: 40, 9151 DELETE: 46 9152 }; 9153 return KEYS; 9154 }); 9155 S22.define("select2/selection/base", [ 9156 "jquery", 9157 "../utils", 9158 "../keys" 9159 ], function($3, Utils, KEYS) { 9160 function BaseSelection($element, options) { 9161 this.$element = $element; 9162 this.options = options; 9163 BaseSelection.__super__.constructor.call(this); 9164 } 9165 Utils.Extend(BaseSelection, Utils.Observable); 9166 BaseSelection.prototype.render = function() { 9167 var $selection = $3( 9168 '<span class="select2-selection" role="combobox" aria-haspopup="true" aria-expanded="false"></span>' 9169 ); 9170 this._tabindex = 0; 9171 if (Utils.GetData(this.$element[0], "old-tabindex") != null) { 9172 this._tabindex = Utils.GetData(this.$element[0], "old-tabindex"); 9173 } else if (this.$element.attr("tabindex") != null) { 9174 this._tabindex = this.$element.attr("tabindex"); 9175 } 9176 $selection.attr("title", this.$element.attr("title")); 9177 $selection.attr("tabindex", this._tabindex); 9178 $selection.attr("aria-disabled", "false"); 9179 this.$selection = $selection; 9180 return $selection; 9181 }; 9182 BaseSelection.prototype.bind = function(container, $container) { 9183 var self2 = this; 9184 var resultsId = container.id + "-results"; 9185 this.container = container; 9186 this.$selection.on("focus", function(evt) { 9187 self2.trigger("focus", evt); 9188 }); 9189 this.$selection.on("blur", function(evt) { 9190 self2._handleBlur(evt); 9191 }); 9192 this.$selection.on("keydown", function(evt) { 9193 self2.trigger("keypress", evt); 9194 if (evt.which === KEYS.SPACE) { 9195 evt.preventDefault(); 9196 } 9197 }); 9198 container.on("results:focus", function(params) { 9199 self2.$selection.attr("aria-activedescendant", params.data._resultId); 9200 }); 9201 container.on("selection:update", function(params) { 9202 self2.update(params.data); 9203 }); 9204 container.on("open", function() { 9205 self2.$selection.attr("aria-expanded", "true"); 9206 self2.$selection.attr("aria-owns", resultsId); 9207 self2._attachCloseHandler(container); 9208 }); 9209 container.on("close", function() { 9210 self2.$selection.attr("aria-expanded", "false"); 9211 self2.$selection.removeAttr("aria-activedescendant"); 9212 self2.$selection.removeAttr("aria-owns"); 9213 self2.$selection.trigger("focus"); 9214 self2._detachCloseHandler(container); 9215 }); 9216 container.on("enable", function() { 9217 self2.$selection.attr("tabindex", self2._tabindex); 9218 self2.$selection.attr("aria-disabled", "false"); 9219 }); 9220 container.on("disable", function() { 9221 self2.$selection.attr("tabindex", "-1"); 9222 self2.$selection.attr("aria-disabled", "true"); 9223 }); 9224 }; 9225 BaseSelection.prototype._handleBlur = function(evt) { 9226 var self2 = this; 9227 window.setTimeout(function() { 9228 if (document.activeElement == self2.$selection[0] || $3.contains(self2.$selection[0], document.activeElement)) { 9229 return; 9230 } 9231 self2.trigger("blur", evt); 9232 }, 1); 9233 }; 9234 BaseSelection.prototype._attachCloseHandler = function(container) { 9235 $3(document.body).on("mousedown.select2." + container.id, function(e) { 9236 var $target = $3(e.target); 9237 var $select = $target.closest(".select2"); 9238 var $all = $3(".select2.select2-container--open"); 9239 $all.each(function() { 9240 if (this == $select[0]) { 9241 return; 9242 } 9243 var $element = Utils.GetData(this, "element"); 9244 $element.select2("close"); 9245 }); 9246 }); 9247 }; 9248 BaseSelection.prototype._detachCloseHandler = function(container) { 9249 $3(document.body).off("mousedown.select2." + container.id); 9250 }; 9251 BaseSelection.prototype.position = function($selection, $container) { 9252 var $selectionContainer = $container.find(".selection"); 9253 $selectionContainer.append($selection); 9254 }; 9255 BaseSelection.prototype.destroy = function() { 9256 this._detachCloseHandler(this.container); 9257 }; 9258 BaseSelection.prototype.update = function(data) { 9259 throw new Error("The `update` method must be defined in child classes."); 9260 }; 9261 BaseSelection.prototype.isEnabled = function() { 9262 return !this.isDisabled(); 9263 }; 9264 BaseSelection.prototype.isDisabled = function() { 9265 return this.options.get("disabled"); 9266 }; 9267 return BaseSelection; 9268 }); 9269 S22.define("select2/selection/single", [ 9270 "jquery", 9271 "./base", 9272 "../utils", 9273 "../keys" 9274 ], function($3, BaseSelection, Utils, KEYS) { 9275 function SingleSelection() { 9276 SingleSelection.__super__.constructor.apply(this, arguments); 9277 } 9278 Utils.Extend(SingleSelection, BaseSelection); 9279 SingleSelection.prototype.render = function() { 9280 var $selection = SingleSelection.__super__.render.call(this); 9281 $selection[0].classList.add("select2-selection--single"); 9282 $selection.html( 9283 '<span class="select2-selection__rendered"></span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span>' 9284 ); 9285 return $selection; 9286 }; 9287 SingleSelection.prototype.bind = function(container, $container) { 9288 var self2 = this; 9289 SingleSelection.__super__.bind.apply(this, arguments); 9290 var id = container.id + "-container"; 9291 this.$selection.find(".select2-selection__rendered").attr("id", id).attr("role", "textbox").attr("aria-readonly", "true"); 9292 this.$selection.attr("aria-labelledby", id); 9293 this.$selection.attr("aria-controls", id); 9294 this.$selection.on("mousedown", function(evt) { 9295 if (evt.which !== 1) { 9296 return; 9297 } 9298 self2.trigger("toggle", { 9299 originalEvent: evt 9300 }); 9301 }); 9302 this.$selection.on("focus", function(evt) { 9303 }); 9304 this.$selection.on("blur", function(evt) { 9305 }); 9306 container.on("focus", function(evt) { 9307 if (!container.isOpen()) { 9308 self2.$selection.trigger("focus"); 9309 } 9310 }); 9311 }; 9312 SingleSelection.prototype.clear = function() { 9313 var $rendered = this.$selection.find(".select2-selection__rendered"); 9314 $rendered.empty(); 9315 $rendered.removeAttr("title"); 9316 }; 9317 SingleSelection.prototype.display = function(data, container) { 9318 var template = this.options.get("templateSelection"); 9319 var escapeMarkup = this.options.get("escapeMarkup"); 9320 return escapeMarkup(template(data, container)); 9321 }; 9322 SingleSelection.prototype.selectionContainer = function() { 9323 return $3("<span></span>"); 9324 }; 9325 SingleSelection.prototype.update = function(data) { 9326 if (data.length === 0) { 9327 this.clear(); 9328 return; 9329 } 9330 var selection = data[0]; 9331 var $rendered = this.$selection.find(".select2-selection__rendered"); 9332 var formatted = this.display(selection, $rendered); 9333 $rendered.empty().append(formatted); 9334 var title = selection.title || selection.text; 9335 if (title) { 9336 $rendered.attr("title", title); 9337 } else { 9338 $rendered.removeAttr("title"); 9339 } 9340 }; 9341 return SingleSelection; 9342 }); 9343 S22.define("select2/selection/multiple", [ 9344 "jquery", 9345 "./base", 9346 "../utils" 9347 ], function($3, BaseSelection, Utils) { 9348 function MultipleSelection($element, options) { 9349 MultipleSelection.__super__.constructor.apply(this, arguments); 9350 } 9351 Utils.Extend(MultipleSelection, BaseSelection); 9352 MultipleSelection.prototype.render = function() { 9353 var $selection = MultipleSelection.__super__.render.call(this); 9354 $selection[0].classList.add("select2-selection--multiple"); 9355 $selection.html( 9356 '<ul class="select2-selection__rendered"></ul>' 9357 ); 9358 return $selection; 9359 }; 9360 MultipleSelection.prototype.bind = function(container, $container) { 9361 var self2 = this; 9362 MultipleSelection.__super__.bind.apply(this, arguments); 9363 var id = container.id + "-container"; 9364 this.$selection.find(".select2-selection__rendered").attr("id", id); 9365 this.$selection.on("click", function(evt) { 9366 self2.trigger("toggle", { 9367 originalEvent: evt 9368 }); 9369 }); 9370 this.$selection.on( 9371 "click", 9372 ".select2-selection__choice__remove", 9373 function(evt) { 9374 if (self2.isDisabled()) { 9375 return; 9376 } 9377 var $remove = $3(this); 9378 var $selection = $remove.parent(); 9379 var data = Utils.GetData($selection[0], "data"); 9380 self2.trigger("unselect", { 9381 originalEvent: evt, 9382 data 9383 }); 9384 } 9385 ); 9386 this.$selection.on( 9387 "keydown", 9388 ".select2-selection__choice__remove", 9389 function(evt) { 9390 if (self2.isDisabled()) { 9391 return; 9392 } 9393 evt.stopPropagation(); 9394 } 9395 ); 9396 }; 9397 MultipleSelection.prototype.clear = function() { 9398 var $rendered = this.$selection.find(".select2-selection__rendered"); 9399 $rendered.empty(); 9400 $rendered.removeAttr("title"); 9401 }; 9402 MultipleSelection.prototype.display = function(data, container) { 9403 var template = this.options.get("templateSelection"); 9404 var escapeMarkup = this.options.get("escapeMarkup"); 9405 return escapeMarkup(template(data, container)); 9406 }; 9407 MultipleSelection.prototype.selectionContainer = function() { 9408 var $container = $3( 9409 '<li class="select2-selection__choice"><button type="button" class="select2-selection__choice__remove" tabindex="-1"><span aria-hidden="true">×</span></button><span class="select2-selection__choice__display"></span></li>' 9410 ); 9411 return $container; 9412 }; 9413 MultipleSelection.prototype.update = function(data) { 9414 this.clear(); 9415 if (data.length === 0) { 9416 return; 9417 } 9418 var $selections = []; 9419 var selectionIdPrefix = this.$selection.find(".select2-selection__rendered").attr("id") + "-choice-"; 9420 for (var d = 0; d < data.length; d++) { 9421 var selection = data[d]; 9422 var $selection = this.selectionContainer(); 9423 var formatted = this.display(selection, $selection); 9424 var selectionId = selectionIdPrefix + Utils.generateChars(4) + "-"; 9425 if (selection.id) { 9426 selectionId += selection.id; 9427 } else { 9428 selectionId += Utils.generateChars(4); 9429 } 9430 $selection.find(".select2-selection__choice__display").append(formatted).attr("id", selectionId); 9431 var title = selection.title || selection.text; 9432 if (title) { 9433 $selection.attr("title", title); 9434 } 9435 var removeItem = this.options.get("translations").get("removeItem"); 9436 var $remove = $selection.find(".select2-selection__choice__remove"); 9437 $remove.attr("title", removeItem()); 9438 $remove.attr("aria-label", removeItem()); 9439 $remove.attr("aria-describedby", selectionId); 9440 Utils.StoreData($selection[0], "data", selection); 9441 $selections.push($selection); 9442 } 9443 var $rendered = this.$selection.find(".select2-selection__rendered"); 9444 $rendered.append($selections); 9445 }; 9446 return MultipleSelection; 9447 }); 9448 S22.define("select2/selection/placeholder", [], function() { 9449 function Placeholder(decorated, $element, options) { 9450 this.placeholder = this.normalizePlaceholder(options.get("placeholder")); 9451 decorated.call(this, $element, options); 9452 } 9453 Placeholder.prototype.normalizePlaceholder = function(_, placeholder) { 9454 if (typeof placeholder === "string") { 9455 placeholder = { 9456 id: "", 9457 text: placeholder 9458 }; 9459 } 9460 return placeholder; 9461 }; 9462 Placeholder.prototype.createPlaceholder = function(decorated, placeholder) { 9463 var $placeholder = this.selectionContainer(); 9464 $placeholder.html(this.display(placeholder)); 9465 $placeholder[0].classList.add("select2-selection__placeholder"); 9466 $placeholder[0].classList.remove("select2-selection__choice"); 9467 var placeholderTitle = placeholder.title || placeholder.text || $placeholder.text(); 9468 this.$selection.find(".select2-selection__rendered").attr( 9469 "title", 9470 placeholderTitle 9471 ); 9472 return $placeholder; 9473 }; 9474 Placeholder.prototype.update = function(decorated, data) { 9475 var singlePlaceholder = data.length == 1 && data[0].id != this.placeholder.id; 9476 var multipleSelections = data.length > 1; 9477 if (multipleSelections || singlePlaceholder) { 9478 return decorated.call(this, data); 9479 } 9480 this.clear(); 9481 var $placeholder = this.createPlaceholder(this.placeholder); 9482 this.$selection.find(".select2-selection__rendered").append($placeholder); 9483 }; 9484 return Placeholder; 9485 }); 9486 S22.define("select2/selection/allowClear", [ 9487 "jquery", 9488 "../keys", 9489 "../utils" 9490 ], function($3, KEYS, Utils) { 9491 function AllowClear() { 9492 } 9493 AllowClear.prototype.bind = function(decorated, container, $container) { 9494 var self2 = this; 9495 decorated.call(this, container, $container); 9496 if (this.placeholder == null) { 9497 if (this.options.get("debug") && window.console && console.error) { 9498 console.error( 9499 "Select2: The `allowClear` option should be used in combination with the `placeholder` option." 9500 ); 9501 } 9502 } 9503 this.$selection.on( 9504 "mousedown", 9505 ".select2-selection__clear", 9506 function(evt) { 9507 self2._handleClear(evt); 9508 } 9509 ); 9510 container.on("keypress", function(evt) { 9511 self2._handleKeyboardClear(evt, container); 9512 }); 9513 }; 9514 AllowClear.prototype._handleClear = function(_, evt) { 9515 if (this.isDisabled()) { 9516 return; 9517 } 9518 var $clear = this.$selection.find(".select2-selection__clear"); 9519 if ($clear.length === 0) { 9520 return; 9521 } 9522 evt.stopPropagation(); 9523 var data = Utils.GetData($clear[0], "data"); 9524 var previousVal = this.$element.val(); 9525 this.$element.val(this.placeholder.id); 9526 var unselectData = { 9527 data 9528 }; 9529 this.trigger("clear", unselectData); 9530 if (unselectData.prevented) { 9531 this.$element.val(previousVal); 9532 return; 9533 } 9534 for (var d = 0; d < data.length; d++) { 9535 unselectData = { 9536 data: data[d] 9537 }; 9538 this.trigger("unselect", unselectData); 9539 if (unselectData.prevented) { 9540 this.$element.val(previousVal); 9541 return; 9542 } 9543 } 9544 this.$element.trigger("input").trigger("change"); 9545 this.trigger("toggle", {}); 9546 }; 9547 AllowClear.prototype._handleKeyboardClear = function(_, evt, container) { 9548 if (container.isOpen()) { 9549 return; 9550 } 9551 if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) { 9552 this._handleClear(evt); 9553 } 9554 }; 9555 AllowClear.prototype.update = function(decorated, data) { 9556 decorated.call(this, data); 9557 this.$selection.find(".select2-selection__clear").remove(); 9558 this.$selection[0].classList.remove("select2-selection--clearable"); 9559 if (this.$selection.find(".select2-selection__placeholder").length > 0 || data.length === 0) { 9560 return; 9561 } 9562 var selectionId = this.$selection.find(".select2-selection__rendered").attr("id"); 9563 var removeAll = this.options.get("translations").get("removeAllItems"); 9564 var $remove = $3( 9565 '<button type="button" class="select2-selection__clear" tabindex="-1"><span aria-hidden="true">×</span></button>' 9566 ); 9567 $remove.attr("title", removeAll()); 9568 $remove.attr("aria-label", removeAll()); 9569 $remove.attr("aria-describedby", selectionId); 9570 Utils.StoreData($remove[0], "data", data); 9571 this.$selection.prepend($remove); 9572 this.$selection[0].classList.add("select2-selection--clearable"); 9573 }; 9574 return AllowClear; 9575 }); 9576 S22.define("select2/selection/search", [ 9577 "jquery", 9578 "../utils", 9579 "../keys" 9580 ], function($3, Utils, KEYS) { 9581 function Search(decorated, $element, options) { 9582 decorated.call(this, $element, options); 9583 } 9584 Search.prototype.render = function(decorated) { 9585 var searchLabel = this.options.get("translations").get("search"); 9586 var $search = $3( 9587 '<span class="select2-search select2-search--inline"><textarea class="select2-search__field" type="search" tabindex="-1" autocorrect="off" autocapitalize="none" spellcheck="false" role="searchbox" aria-autocomplete="list" ></textarea></span>' 9588 ); 9589 this.$searchContainer = $search; 9590 this.$search = $search.find("textarea"); 9591 this.$search.prop("autocomplete", this.options.get("autocomplete")); 9592 this.$search.attr("aria-label", searchLabel()); 9593 var $rendered = decorated.call(this); 9594 this._transferTabIndex(); 9595 $rendered.append(this.$searchContainer); 9596 return $rendered; 9597 }; 9598 Search.prototype.bind = function(decorated, container, $container) { 9599 var self2 = this; 9600 var resultsId = container.id + "-results"; 9601 var selectionId = container.id + "-container"; 9602 decorated.call(this, container, $container); 9603 self2.$search.attr("aria-describedby", selectionId); 9604 container.on("open", function() { 9605 self2.$search.attr("aria-controls", resultsId); 9606 self2.$search.trigger("focus"); 9607 }); 9608 container.on("close", function() { 9609 self2.$search.val(""); 9610 self2.resizeSearch(); 9611 self2.$search.removeAttr("aria-controls"); 9612 self2.$search.removeAttr("aria-activedescendant"); 9613 self2.$search.trigger("focus"); 9614 }); 9615 container.on("enable", function() { 9616 self2.$search.prop("disabled", false); 9617 self2._transferTabIndex(); 9618 }); 9619 container.on("disable", function() { 9620 self2.$search.prop("disabled", true); 9621 }); 9622 container.on("focus", function(evt) { 9623 self2.$search.trigger("focus"); 9624 }); 9625 container.on("results:focus", function(params) { 9626 if (params.data._resultId) { 9627 self2.$search.attr("aria-activedescendant", params.data._resultId); 9628 } else { 9629 self2.$search.removeAttr("aria-activedescendant"); 9630 } 9631 }); 9632 this.$selection.on("focusin", ".select2-search--inline", function(evt) { 9633 self2.trigger("focus", evt); 9634 }); 9635 this.$selection.on("focusout", ".select2-search--inline", function(evt) { 9636 self2._handleBlur(evt); 9637 }); 9638 this.$selection.on("keydown", ".select2-search--inline", function(evt) { 9639 evt.stopPropagation(); 9640 self2.trigger("keypress", evt); 9641 self2._keyUpPrevented = evt.isDefaultPrevented(); 9642 var key = evt.which; 9643 if (key === KEYS.BACKSPACE && self2.$search.val() === "") { 9644 var $previousChoice = self2.$selection.find(".select2-selection__choice").last(); 9645 if ($previousChoice.length > 0) { 9646 var item = Utils.GetData($previousChoice[0], "data"); 9647 self2.searchRemoveChoice(item); 9648 evt.preventDefault(); 9649 } 9650 } 9651 }); 9652 this.$selection.on("click", ".select2-search--inline", function(evt) { 9653 if (self2.$search.val()) { 9654 evt.stopPropagation(); 9655 } 9656 }); 9657 var msie = document.documentMode; 9658 var disableInputEvents = msie && msie <= 11; 9659 this.$selection.on( 9660 "input.searchcheck", 9661 ".select2-search--inline", 9662 function(evt) { 9663 if (disableInputEvents) { 9664 self2.$selection.off("input.search input.searchcheck"); 9665 return; 9666 } 9667 self2.$selection.off("keyup.search"); 9668 } 9669 ); 9670 this.$selection.on( 9671 "keyup.search input.search", 9672 ".select2-search--inline", 9673 function(evt) { 9674 if (disableInputEvents && evt.type === "input") { 9675 self2.$selection.off("input.search input.searchcheck"); 9676 return; 9677 } 9678 var key = evt.which; 9679 if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) { 9680 return; 9681 } 9682 if (key == KEYS.TAB) { 9683 return; 9684 } 9685 self2.handleSearch(evt); 9686 } 9687 ); 9688 }; 9689 Search.prototype._transferTabIndex = function(decorated) { 9690 this.$search.attr("tabindex", this.$selection.attr("tabindex")); 9691 this.$selection.attr("tabindex", "-1"); 9692 }; 9693 Search.prototype.createPlaceholder = function(decorated, placeholder) { 9694 this.$search.attr("placeholder", placeholder.text); 9695 }; 9696 Search.prototype.update = function(decorated, data) { 9697 var searchHadFocus = this.$search[0] == document.activeElement; 9698 this.$search.attr("placeholder", ""); 9699 decorated.call(this, data); 9700 this.resizeSearch(); 9701 if (searchHadFocus) { 9702 this.$search.trigger("focus"); 9703 } 9704 }; 9705 Search.prototype.handleSearch = function() { 9706 this.resizeSearch(); 9707 if (!this._keyUpPrevented) { 9708 var input = this.$search.val(); 9709 this.trigger("query", { 9710 term: input 9711 }); 9712 } 9713 this._keyUpPrevented = false; 9714 }; 9715 Search.prototype.searchRemoveChoice = function(decorated, item) { 9716 this.trigger("unselect", { 9717 data: item 9718 }); 9719 this.$search.val(item.text); 9720 this.handleSearch(); 9721 }; 9722 Search.prototype.resizeSearch = function() { 9723 this.$search.css("width", "25px"); 9724 var width = "100%"; 9725 if (this.$search.attr("placeholder") === "") { 9726 var minimumWidth = this.$search.val().length + 1; 9727 width = minimumWidth * 0.75 + "em"; 9728 } 9729 this.$search.css("width", width); 9730 }; 9731 return Search; 9732 }); 9733 S22.define("select2/selection/selectionCss", [ 9734 "../utils" 9735 ], function(Utils) { 9736 function SelectionCSS() { 9737 } 9738 SelectionCSS.prototype.render = function(decorated) { 9739 var $selection = decorated.call(this); 9740 var selectionCssClass = this.options.get("selectionCssClass") || ""; 9741 if (selectionCssClass.indexOf(":all:") !== -1) { 9742 selectionCssClass = selectionCssClass.replace(":all:", ""); 9743 Utils.copyNonInternalCssClasses($selection[0], this.$element[0]); 9744 } 9745 $selection.addClass(selectionCssClass); 9746 return $selection; 9747 }; 9748 return SelectionCSS; 9749 }); 9750 S22.define("select2/selection/eventRelay", [ 9751 "jquery" 9752 ], function($3) { 9753 function EventRelay() { 9754 } 9755 EventRelay.prototype.bind = function(decorated, container, $container) { 9756 var self2 = this; 9757 var relayEvents = [ 9758 "open", 9759 "opening", 9760 "close", 9761 "closing", 9762 "select", 9763 "selecting", 9764 "unselect", 9765 "unselecting", 9766 "clear", 9767 "clearing" 9768 ]; 9769 var preventableEvents = [ 9770 "opening", 9771 "closing", 9772 "selecting", 9773 "unselecting", 9774 "clearing" 9775 ]; 9776 decorated.call(this, container, $container); 9777 container.on("*", function(name, params) { 9778 if (relayEvents.indexOf(name) === -1) { 9779 return; 9780 } 9781 params = params || {}; 9782 var evt = $3.Event("select2:" + name, { 9783 params 9784 }); 9785 self2.$element.trigger(evt); 9786 if (preventableEvents.indexOf(name) === -1) { 9787 return; 9788 } 9789 params.prevented = evt.isDefaultPrevented(); 9790 }); 9791 }; 9792 return EventRelay; 9793 }); 9794 S22.define("select2/translation", [ 9795 "jquery", 9796 "require" 9797 ], function($3, require2) { 9798 function Translation(dict) { 9799 this.dict = dict || {}; 9800 } 9801 Translation.prototype.all = function() { 9802 return this.dict; 9803 }; 9804 Translation.prototype.get = function(key) { 9805 return this.dict[key]; 9806 }; 9807 Translation.prototype.extend = function(translation) { 9808 this.dict = $3.extend({}, translation.all(), this.dict); 9809 }; 9810 Translation._cache = {}; 9811 Translation.loadPath = function(path) { 9812 if (!(path in Translation._cache)) { 9813 var translations2 = require2(path); 9814 Translation._cache[path] = translations2; 9815 } 9816 return new Translation(Translation._cache[path]); 9817 }; 9818 return Translation; 9819 }); 9820 S22.define("select2/diacritics", [], function() { 9821 var diacritics = { 9822 "\u24B6": "A", 9823 "\uFF21": "A", 9824 "\xC0": "A", 9825 "\xC1": "A", 9826 "\xC2": "A", 9827 "\u1EA6": "A", 9828 "\u1EA4": "A", 9829 "\u1EAA": "A", 9830 "\u1EA8": "A", 9831 "\xC3": "A", 9832 "\u0100": "A", 9833 "\u0102": "A", 9834 "\u1EB0": "A", 9835 "\u1EAE": "A", 9836 "\u1EB4": "A", 9837 "\u1EB2": "A", 9838 "\u0226": "A", 9839 "\u01E0": "A", 9840 "\xC4": "A", 9841 "\u01DE": "A", 9842 "\u1EA2": "A", 9843 "\xC5": "A", 9844 "\u01FA": "A", 9845 "\u01CD": "A", 9846 "\u0200": "A", 9847 "\u0202": "A", 9848 "\u1EA0": "A", 9849 "\u1EAC": "A", 9850 "\u1EB6": "A", 9851 "\u1E00": "A", 9852 "\u0104": "A", 9853 "\u023A": "A", 9854 "\u2C6F": "A", 9855 "\uA732": "AA", 9856 "\xC6": "AE", 9857 "\u01FC": "AE", 9858 "\u01E2": "AE", 9859 "\uA734": "AO", 9860 "\uA736": "AU", 9861 "\uA738": "AV", 9862 "\uA73A": "AV", 9863 "\uA73C": "AY", 9864 "\u24B7": "B", 9865 "\uFF22": "B", 9866 "\u1E02": "B", 9867 "\u1E04": "B", 9868 "\u1E06": "B", 9869 "\u0243": "B", 9870 "\u0182": "B", 9871 "\u0181": "B", 9872 "\u24B8": "C", 9873 "\uFF23": "C", 9874 "\u0106": "C", 9875 "\u0108": "C", 9876 "\u010A": "C", 9877 "\u010C": "C", 9878 "\xC7": "C", 9879 "\u1E08": "C", 9880 "\u0187": "C", 9881 "\u023B": "C", 9882 "\uA73E": "C", 9883 "\u24B9": "D", 9884 "\uFF24": "D", 9885 "\u1E0A": "D", 9886 "\u010E": "D", 9887 "\u1E0C": "D", 9888 "\u1E10": "D", 9889 "\u1E12": "D", 9890 "\u1E0E": "D", 9891 "\u0110": "D", 9892 "\u018B": "D", 9893 "\u018A": "D", 9894 "\u0189": "D", 9895 "\uA779": "D", 9896 "\u01F1": "DZ", 9897 "\u01C4": "DZ", 9898 "\u01F2": "Dz", 9899 "\u01C5": "Dz", 9900 "\u24BA": "E", 9901 "\uFF25": "E", 9902 "\xC8": "E", 9903 "\xC9": "E", 9904 "\xCA": "E", 9905 "\u1EC0": "E", 9906 "\u1EBE": "E", 9907 "\u1EC4": "E", 9908 "\u1EC2": "E", 9909 "\u1EBC": "E", 9910 "\u0112": "E", 9911 "\u1E14": "E", 9912 "\u1E16": "E", 9913 "\u0114": "E", 9914 "\u0116": "E", 9915 "\xCB": "E", 9916 "\u1EBA": "E", 9917 "\u011A": "E", 9918 "\u0204": "E", 9919 "\u0206": "E", 9920 "\u1EB8": "E", 9921 "\u1EC6": "E", 9922 "\u0228": "E", 9923 "\u1E1C": "E", 9924 "\u0118": "E", 9925 "\u1E18": "E", 9926 "\u1E1A": "E", 9927 "\u0190": "E", 9928 "\u018E": "E", 9929 "\u24BB": "F", 9930 "\uFF26": "F", 9931 "\u1E1E": "F", 9932 "\u0191": "F", 9933 "\uA77B": "F", 9934 "\u24BC": "G", 9935 "\uFF27": "G", 9936 "\u01F4": "G", 9937 "\u011C": "G", 9938 "\u1E20": "G", 9939 "\u011E": "G", 9940 "\u0120": "G", 9941 "\u01E6": "G", 9942 "\u0122": "G", 9943 "\u01E4": "G", 9944 "\u0193": "G", 9945 "\uA7A0": "G", 9946 "\uA77D": "G", 9947 "\uA77E": "G", 9948 "\u24BD": "H", 9949 "\uFF28": "H", 9950 "\u0124": "H", 9951 "\u1E22": "H", 9952 "\u1E26": "H", 9953 "\u021E": "H", 9954 "\u1E24": "H", 9955 "\u1E28": "H", 9956 "\u1E2A": "H", 9957 "\u0126": "H", 9958 "\u2C67": "H", 9959 "\u2C75": "H", 9960 "\uA78D": "H", 9961 "\u24BE": "I", 9962 "\uFF29": "I", 9963 "\xCC": "I", 9964 "\xCD": "I", 9965 "\xCE": "I", 9966 "\u0128": "I", 9967 "\u012A": "I", 9968 "\u012C": "I", 9969 "\u0130": "I", 9970 "\xCF": "I", 9971 "\u1E2E": "I", 9972 "\u1EC8": "I", 9973 "\u01CF": "I", 9974 "\u0208": "I", 9975 "\u020A": "I", 9976 "\u1ECA": "I", 9977 "\u012E": "I", 9978 "\u1E2C": "I", 9979 "\u0197": "I", 9980 "\u24BF": "J", 9981 "\uFF2A": "J", 9982 "\u0134": "J", 9983 "\u0248": "J", 9984 "\u24C0": "K", 9985 "\uFF2B": "K", 9986 "\u1E30": "K", 9987 "\u01E8": "K", 9988 "\u1E32": "K", 9989 "\u0136": "K", 9990 "\u1E34": "K", 9991 "\u0198": "K", 9992 "\u2C69": "K", 9993 "\uA740": "K", 9994 "\uA742": "K", 9995 "\uA744": "K", 9996 "\uA7A2": "K", 9997 "\u24C1": "L", 9998 "\uFF2C": "L", 9999 "\u013F": "L", 10000 "\u0139": "L", 10001 "\u013D": "L", 10002 "\u1E36": "L", 10003 "\u1E38": "L", 10004 "\u013B": "L", 10005 "\u1E3C": "L", 10006 "\u1E3A": "L", 10007 "\u0141": "L", 10008 "\u023D": "L", 10009 "\u2C62": "L", 10010 "\u2C60": "L", 10011 "\uA748": "L", 10012 "\uA746": "L", 10013 "\uA780": "L", 10014 "\u01C7": "LJ", 10015 "\u01C8": "Lj", 10016 "\u24C2": "M", 10017 "\uFF2D": "M", 10018 "\u1E3E": "M", 10019 "\u1E40": "M", 10020 "\u1E42": "M", 10021 "\u2C6E": "M", 10022 "\u019C": "M", 10023 "\u24C3": "N", 10024 "\uFF2E": "N", 10025 "\u01F8": "N", 10026 "\u0143": "N", 10027 "\xD1": "N", 10028 "\u1E44": "N", 10029 "\u0147": "N", 10030 "\u1E46": "N", 10031 "\u0145": "N", 10032 "\u1E4A": "N", 10033 "\u1E48": "N", 10034 "\u0220": "N", 10035 "\u019D": "N", 10036 "\uA790": "N", 10037 "\uA7A4": "N", 10038 "\u01CA": "NJ", 10039 "\u01CB": "Nj", 10040 "\u24C4": "O", 10041 "\uFF2F": "O", 10042 "\xD2": "O", 10043 "\xD3": "O", 10044 "\xD4": "O", 10045 "\u1ED2": "O", 10046 "\u1ED0": "O", 10047 "\u1ED6": "O", 10048 "\u1ED4": "O", 10049 "\xD5": "O", 10050 "\u1E4C": "O", 10051 "\u022C": "O", 10052 "\u1E4E": "O", 10053 "\u014C": "O", 10054 "\u1E50": "O", 10055 "\u1E52": "O", 10056 "\u014E": "O", 10057 "\u022E": "O", 10058 "\u0230": "O", 10059 "\xD6": "O", 10060 "\u022A": "O", 10061 "\u1ECE": "O", 10062 "\u0150": "O", 10063 "\u01D1": "O", 10064 "\u020C": "O", 10065 "\u020E": "O", 10066 "\u01A0": "O", 10067 "\u1EDC": "O", 10068 "\u1EDA": "O", 10069 "\u1EE0": "O", 10070 "\u1EDE": "O", 10071 "\u1EE2": "O", 10072 "\u1ECC": "O", 10073 "\u1ED8": "O", 10074 "\u01EA": "O", 10075 "\u01EC": "O", 10076 "\xD8": "O", 10077 "\u01FE": "O", 10078 "\u0186": "O", 10079 "\u019F": "O", 10080 "\uA74A": "O", 10081 "\uA74C": "O", 10082 "\u0152": "OE", 10083 "\u01A2": "OI", 10084 "\uA74E": "OO", 10085 "\u0222": "OU", 10086 "\u24C5": "P", 10087 "\uFF30": "P", 10088 "\u1E54": "P", 10089 "\u1E56": "P", 10090 "\u01A4": "P", 10091 "\u2C63": "P", 10092 "\uA750": "P", 10093 "\uA752": "P", 10094 "\uA754": "P", 10095 "\u24C6": "Q", 10096 "\uFF31": "Q", 10097 "\uA756": "Q", 10098 "\uA758": "Q", 10099 "\u024A": "Q", 10100 "\u24C7": "R", 10101 "\uFF32": "R", 10102 "\u0154": "R", 10103 "\u1E58": "R", 10104 "\u0158": "R", 10105 "\u0210": "R", 10106 "\u0212": "R", 10107 "\u1E5A": "R", 10108 "\u1E5C": "R", 10109 "\u0156": "R", 10110 "\u1E5E": "R", 10111 "\u024C": "R", 10112 "\u2C64": "R", 10113 "\uA75A": "R", 10114 "\uA7A6": "R", 10115 "\uA782": "R", 10116 "\u24C8": "S", 10117 "\uFF33": "S", 10118 "\u1E9E": "S", 10119 "\u015A": "S", 10120 "\u1E64": "S", 10121 "\u015C": "S", 10122 "\u1E60": "S", 10123 "\u0160": "S", 10124 "\u1E66": "S", 10125 "\u1E62": "S", 10126 "\u1E68": "S", 10127 "\u0218": "S", 10128 "\u015E": "S", 10129 "\u2C7E": "S", 10130 "\uA7A8": "S", 10131 "\uA784": "S", 10132 "\u24C9": "T", 10133 "\uFF34": "T", 10134 "\u1E6A": "T", 10135 "\u0164": "T", 10136 "\u1E6C": "T", 10137 "\u021A": "T", 10138 "\u0162": "T", 10139 "\u1E70": "T", 10140 "\u1E6E": "T", 10141 "\u0166": "T", 10142 "\u01AC": "T", 10143 "\u01AE": "T", 10144 "\u023E": "T", 10145 "\uA786": "T", 10146 "\uA728": "TZ", 10147 "\u24CA": "U", 10148 "\uFF35": "U", 10149 "\xD9": "U", 10150 "\xDA": "U", 10151 "\xDB": "U", 10152 "\u0168": "U", 10153 "\u1E78": "U", 10154 "\u016A": "U", 10155 "\u1E7A": "U", 10156 "\u016C": "U", 10157 "\xDC": "U", 10158 "\u01DB": "U", 10159 "\u01D7": "U", 10160 "\u01D5": "U", 10161 "\u01D9": "U", 10162 "\u1EE6": "U", 10163 "\u016E": "U", 10164 "\u0170": "U", 10165 "\u01D3": "U", 10166 "\u0214": "U", 10167 "\u0216": "U", 10168 "\u01AF": "U", 10169 "\u1EEA": "U", 10170 "\u1EE8": "U", 10171 "\u1EEE": "U", 10172 "\u1EEC": "U", 10173 "\u1EF0": "U", 10174 "\u1EE4": "U", 10175 "\u1E72": "U", 10176 "\u0172": "U", 10177 "\u1E76": "U", 10178 "\u1E74": "U", 10179 "\u0244": "U", 10180 "\u24CB": "V", 10181 "\uFF36": "V", 10182 "\u1E7C": "V", 10183 "\u1E7E": "V", 10184 "\u01B2": "V", 10185 "\uA75E": "V", 10186 "\u0245": "V", 10187 "\uA760": "VY", 10188 "\u24CC": "W", 10189 "\uFF37": "W", 10190 "\u1E80": "W", 10191 "\u1E82": "W", 10192 "\u0174": "W", 10193 "\u1E86": "W", 10194 "\u1E84": "W", 10195 "\u1E88": "W", 10196 "\u2C72": "W", 10197 "\u24CD": "X", 10198 "\uFF38": "X", 10199 "\u1E8A": "X", 10200 "\u1E8C": "X", 10201 "\u24CE": "Y", 10202 "\uFF39": "Y", 10203 "\u1EF2": "Y", 10204 "\xDD": "Y", 10205 "\u0176": "Y", 10206 "\u1EF8": "Y", 10207 "\u0232": "Y", 10208 "\u1E8E": "Y", 10209 "\u0178": "Y", 10210 "\u1EF6": "Y", 10211 "\u1EF4": "Y", 10212 "\u01B3": "Y", 10213 "\u024E": "Y", 10214 "\u1EFE": "Y", 10215 "\u24CF": "Z", 10216 "\uFF3A": "Z", 10217 "\u0179": "Z", 10218 "\u1E90": "Z", 10219 "\u017B": "Z", 10220 "\u017D": "Z", 10221 "\u1E92": "Z", 10222 "\u1E94": "Z", 10223 "\u01B5": "Z", 10224 "\u0224": "Z", 10225 "\u2C7F": "Z", 10226 "\u2C6B": "Z", 10227 "\uA762": "Z", 10228 "\u24D0": "a", 10229 "\uFF41": "a", 10230 "\u1E9A": "a", 10231 "\xE0": "a", 10232 "\xE1": "a", 10233 "\xE2": "a", 10234 "\u1EA7": "a", 10235 "\u1EA5": "a", 10236 "\u1EAB": "a", 10237 "\u1EA9": "a", 10238 "\xE3": "a", 10239 "\u0101": "a", 10240 "\u0103": "a", 10241 "\u1EB1": "a", 10242 "\u1EAF": "a", 10243 "\u1EB5": "a", 10244 "\u1EB3": "a", 10245 "\u0227": "a", 10246 "\u01E1": "a", 10247 "\xE4": "a", 10248 "\u01DF": "a", 10249 "\u1EA3": "a", 10250 "\xE5": "a", 10251 "\u01FB": "a", 10252 "\u01CE": "a", 10253 "\u0201": "a", 10254 "\u0203": "a", 10255 "\u1EA1": "a", 10256 "\u1EAD": "a", 10257 "\u1EB7": "a", 10258 "\u1E01": "a", 10259 "\u0105": "a", 10260 "\u2C65": "a", 10261 "\u0250": "a", 10262 "\uA733": "aa", 10263 "\xE6": "ae", 10264 "\u01FD": "ae", 10265 "\u01E3": "ae", 10266 "\uA735": "ao", 10267 "\uA737": "au", 10268 "\uA739": "av", 10269 "\uA73B": "av", 10270 "\uA73D": "ay", 10271 "\u24D1": "b", 10272 "\uFF42": "b", 10273 "\u1E03": "b", 10274 "\u1E05": "b", 10275 "\u1E07": "b", 10276 "\u0180": "b", 10277 "\u0183": "b", 10278 "\u0253": "b", 10279 "\u24D2": "c", 10280 "\uFF43": "c", 10281 "\u0107": "c", 10282 "\u0109": "c", 10283 "\u010B": "c", 10284 "\u010D": "c", 10285 "\xE7": "c", 10286 "\u1E09": "c", 10287 "\u0188": "c", 10288 "\u023C": "c", 10289 "\uA73F": "c", 10290 "\u2184": "c", 10291 "\u24D3": "d", 10292 "\uFF44": "d", 10293 "\u1E0B": "d", 10294 "\u010F": "d", 10295 "\u1E0D": "d", 10296 "\u1E11": "d", 10297 "\u1E13": "d", 10298 "\u1E0F": "d", 10299 "\u0111": "d", 10300 "\u018C": "d", 10301 "\u0256": "d", 10302 "\u0257": "d", 10303 "\uA77A": "d", 10304 "\u01F3": "dz", 10305 "\u01C6": "dz", 10306 "\u24D4": "e", 10307 "\uFF45": "e", 10308 "\xE8": "e", 10309 "\xE9": "e", 10310 "\xEA": "e", 10311 "\u1EC1": "e", 10312 "\u1EBF": "e", 10313 "\u1EC5": "e", 10314 "\u1EC3": "e", 10315 "\u1EBD": "e", 10316 "\u0113": "e", 10317 "\u1E15": "e", 10318 "\u1E17": "e", 10319 "\u0115": "e", 10320 "\u0117": "e", 10321 "\xEB": "e", 10322 "\u1EBB": "e", 10323 "\u011B": "e", 10324 "\u0205": "e", 10325 "\u0207": "e", 10326 "\u1EB9": "e", 10327 "\u1EC7": "e", 10328 "\u0229": "e", 10329 "\u1E1D": "e", 10330 "\u0119": "e", 10331 "\u1E19": "e", 10332 "\u1E1B": "e", 10333 "\u0247": "e", 10334 "\u025B": "e", 10335 "\u01DD": "e", 10336 "\u24D5": "f", 10337 "\uFF46": "f", 10338 "\u1E1F": "f", 10339 "\u0192": "f", 10340 "\uA77C": "f", 10341 "\u24D6": "g", 10342 "\uFF47": "g", 10343 "\u01F5": "g", 10344 "\u011D": "g", 10345 "\u1E21": "g", 10346 "\u011F": "g", 10347 "\u0121": "g", 10348 "\u01E7": "g", 10349 "\u0123": "g", 10350 "\u01E5": "g", 10351 "\u0260": "g", 10352 "\uA7A1": "g", 10353 "\u1D79": "g", 10354 "\uA77F": "g", 10355 "\u24D7": "h", 10356 "\uFF48": "h", 10357 "\u0125": "h", 10358 "\u1E23": "h", 10359 "\u1E27": "h", 10360 "\u021F": "h", 10361 "\u1E25": "h", 10362 "\u1E29": "h", 10363 "\u1E2B": "h", 10364 "\u1E96": "h", 10365 "\u0127": "h", 10366 "\u2C68": "h", 10367 "\u2C76": "h", 10368 "\u0265": "h", 10369 "\u0195": "hv", 10370 "\u24D8": "i", 10371 "\uFF49": "i", 10372 "\xEC": "i", 10373 "\xED": "i", 10374 "\xEE": "i", 10375 "\u0129": "i", 10376 "\u012B": "i", 10377 "\u012D": "i", 10378 "\xEF": "i", 10379 "\u1E2F": "i", 10380 "\u1EC9": "i", 10381 "\u01D0": "i", 10382 "\u0209": "i", 10383 "\u020B": "i", 10384 "\u1ECB": "i", 10385 "\u012F": "i", 10386 "\u1E2D": "i", 10387 "\u0268": "i", 10388 "\u0131": "i", 10389 "\u24D9": "j", 10390 "\uFF4A": "j", 10391 "\u0135": "j", 10392 "\u01F0": "j", 10393 "\u0249": "j", 10394 "\u24DA": "k", 10395 "\uFF4B": "k", 10396 "\u1E31": "k", 10397 "\u01E9": "k", 10398 "\u1E33": "k", 10399 "\u0137": "k", 10400 "\u1E35": "k", 10401 "\u0199": "k", 10402 "\u2C6A": "k", 10403 "\uA741": "k", 10404 "\uA743": "k", 10405 "\uA745": "k", 10406 "\uA7A3": "k", 10407 "\u24DB": "l", 10408 "\uFF4C": "l", 10409 "\u0140": "l", 10410 "\u013A": "l", 10411 "\u013E": "l", 10412 "\u1E37": "l", 10413 "\u1E39": "l", 10414 "\u013C": "l", 10415 "\u1E3D": "l", 10416 "\u1E3B": "l", 10417 "\u017F": "l", 10418 "\u0142": "l", 10419 "\u019A": "l", 10420 "\u026B": "l", 10421 "\u2C61": "l", 10422 "\uA749": "l", 10423 "\uA781": "l", 10424 "\uA747": "l", 10425 "\u01C9": "lj", 10426 "\u24DC": "m", 10427 "\uFF4D": "m", 10428 "\u1E3F": "m", 10429 "\u1E41": "m", 10430 "\u1E43": "m", 10431 "\u0271": "m", 10432 "\u026F": "m", 10433 "\u24DD": "n", 10434 "\uFF4E": "n", 10435 "\u01F9": "n", 10436 "\u0144": "n", 10437 "\xF1": "n", 10438 "\u1E45": "n", 10439 "\u0148": "n", 10440 "\u1E47": "n", 10441 "\u0146": "n", 10442 "\u1E4B": "n", 10443 "\u1E49": "n", 10444 "\u019E": "n", 10445 "\u0272": "n", 10446 "\u0149": "n", 10447 "\uA791": "n", 10448 "\uA7A5": "n", 10449 "\u01CC": "nj", 10450 "\u24DE": "o", 10451 "\uFF4F": "o", 10452 "\xF2": "o", 10453 "\xF3": "o", 10454 "\xF4": "o", 10455 "\u1ED3": "o", 10456 "\u1ED1": "o", 10457 "\u1ED7": "o", 10458 "\u1ED5": "o", 10459 "\xF5": "o", 10460 "\u1E4D": "o", 10461 "\u022D": "o", 10462 "\u1E4F": "o", 10463 "\u014D": "o", 10464 "\u1E51": "o", 10465 "\u1E53": "o", 10466 "\u014F": "o", 10467 "\u022F": "o", 10468 "\u0231": "o", 10469 "\xF6": "o", 10470 "\u022B": "o", 10471 "\u1ECF": "o", 10472 "\u0151": "o", 10473 "\u01D2": "o", 10474 "\u020D": "o", 10475 "\u020F": "o", 10476 "\u01A1": "o", 10477 "\u1EDD": "o", 10478 "\u1EDB": "o", 10479 "\u1EE1": "o", 10480 "\u1EDF": "o", 10481 "\u1EE3": "o", 10482 "\u1ECD": "o", 10483 "\u1ED9": "o", 10484 "\u01EB": "o", 10485 "\u01ED": "o", 10486 "\xF8": "o", 10487 "\u01FF": "o", 10488 "\u0254": "o", 10489 "\uA74B": "o", 10490 "\uA74D": "o", 10491 "\u0275": "o", 10492 "\u0153": "oe", 10493 "\u01A3": "oi", 10494 "\u0223": "ou", 10495 "\uA74F": "oo", 10496 "\u24DF": "p", 10497 "\uFF50": "p", 10498 "\u1E55": "p", 10499 "\u1E57": "p", 10500 "\u01A5": "p", 10501 "\u1D7D": "p", 10502 "\uA751": "p", 10503 "\uA753": "p", 10504 "\uA755": "p", 10505 "\u24E0": "q", 10506 "\uFF51": "q", 10507 "\u024B": "q", 10508 "\uA757": "q", 10509 "\uA759": "q", 10510 "\u24E1": "r", 10511 "\uFF52": "r", 10512 "\u0155": "r", 10513 "\u1E59": "r", 10514 "\u0159": "r", 10515 "\u0211": "r", 10516 "\u0213": "r", 10517 "\u1E5B": "r", 10518 "\u1E5D": "r", 10519 "\u0157": "r", 10520 "\u1E5F": "r", 10521 "\u024D": "r", 10522 "\u027D": "r", 10523 "\uA75B": "r", 10524 "\uA7A7": "r", 10525 "\uA783": "r", 10526 "\u24E2": "s", 10527 "\uFF53": "s", 10528 "\xDF": "s", 10529 "\u015B": "s", 10530 "\u1E65": "s", 10531 "\u015D": "s", 10532 "\u1E61": "s", 10533 "\u0161": "s", 10534 "\u1E67": "s", 10535 "\u1E63": "s", 10536 "\u1E69": "s", 10537 "\u0219": "s", 10538 "\u015F": "s", 10539 "\u023F": "s", 10540 "\uA7A9": "s", 10541 "\uA785": "s", 10542 "\u1E9B": "s", 10543 "\u24E3": "t", 10544 "\uFF54": "t", 10545 "\u1E6B": "t", 10546 "\u1E97": "t", 10547 "\u0165": "t", 10548 "\u1E6D": "t", 10549 "\u021B": "t", 10550 "\u0163": "t", 10551 "\u1E71": "t", 10552 "\u1E6F": "t", 10553 "\u0167": "t", 10554 "\u01AD": "t", 10555 "\u0288": "t", 10556 "\u2C66": "t", 10557 "\uA787": "t", 10558 "\uA729": "tz", 10559 "\u24E4": "u", 10560 "\uFF55": "u", 10561 "\xF9": "u", 10562 "\xFA": "u", 10563 "\xFB": "u", 10564 "\u0169": "u", 10565 "\u1E79": "u", 10566 "\u016B": "u", 10567 "\u1E7B": "u", 10568 "\u016D": "u", 10569 "\xFC": "u", 10570 "\u01DC": "u", 10571 "\u01D8": "u", 10572 "\u01D6": "u", 10573 "\u01DA": "u", 10574 "\u1EE7": "u", 10575 "\u016F": "u", 10576 "\u0171": "u", 10577 "\u01D4": "u", 10578 "\u0215": "u", 10579 "\u0217": "u", 10580 "\u01B0": "u", 10581 "\u1EEB": "u", 10582 "\u1EE9": "u", 10583 "\u1EEF": "u", 10584 "\u1EED": "u", 10585 "\u1EF1": "u", 10586 "\u1EE5": "u", 10587 "\u1E73": "u", 10588 "\u0173": "u", 10589 "\u1E77": "u", 10590 "\u1E75": "u", 10591 "\u0289": "u", 10592 "\u24E5": "v", 10593 "\uFF56": "v", 10594 "\u1E7D": "v", 10595 "\u1E7F": "v", 10596 "\u028B": "v", 10597 "\uA75F": "v", 10598 "\u028C": "v", 10599 "\uA761": "vy", 10600 "\u24E6": "w", 10601 "\uFF57": "w", 10602 "\u1E81": "w", 10603 "\u1E83": "w", 10604 "\u0175": "w", 10605 "\u1E87": "w", 10606 "\u1E85": "w", 10607 "\u1E98": "w", 10608 "\u1E89": "w", 10609 "\u2C73": "w", 10610 "\u24E7": "x", 10611 "\uFF58": "x", 10612 "\u1E8B": "x", 10613 "\u1E8D": "x", 10614 "\u24E8": "y", 10615 "\uFF59": "y", 10616 "\u1EF3": "y", 10617 "\xFD": "y", 10618 "\u0177": "y", 10619 "\u1EF9": "y", 10620 "\u0233": "y", 10621 "\u1E8F": "y", 10622 "\xFF": "y", 10623 "\u1EF7": "y", 10624 "\u1E99": "y", 10625 "\u1EF5": "y", 10626 "\u01B4": "y", 10627 "\u024F": "y", 10628 "\u1EFF": "y", 10629 "\u24E9": "z", 10630 "\uFF5A": "z", 10631 "\u017A": "z", 10632 "\u1E91": "z", 10633 "\u017C": "z", 10634 "\u017E": "z", 10635 "\u1E93": "z", 10636 "\u1E95": "z", 10637 "\u01B6": "z", 10638 "\u0225": "z", 10639 "\u0240": "z", 10640 "\u2C6C": "z", 10641 "\uA763": "z", 10642 "\u0386": "\u0391", 10643 "\u0388": "\u0395", 10644 "\u0389": "\u0397", 10645 "\u038A": "\u0399", 10646 "\u03AA": "\u0399", 10647 "\u038C": "\u039F", 10648 "\u038E": "\u03A5", 10649 "\u03AB": "\u03A5", 10650 "\u038F": "\u03A9", 10651 "\u03AC": "\u03B1", 10652 "\u03AD": "\u03B5", 10653 "\u03AE": "\u03B7", 10654 "\u03AF": "\u03B9", 10655 "\u03CA": "\u03B9", 10656 "\u0390": "\u03B9", 10657 "\u03CC": "\u03BF", 10658 "\u03CD": "\u03C5", 10659 "\u03CB": "\u03C5", 10660 "\u03B0": "\u03C5", 10661 "\u03CE": "\u03C9", 10662 "\u03C2": "\u03C3", 10663 "\u2019": "'" 10664 }; 10665 return diacritics; 10666 }); 10667 S22.define("select2/data/base", [ 10668 "../utils" 10669 ], function(Utils) { 10670 function BaseAdapter($element, options) { 10671 BaseAdapter.__super__.constructor.call(this); 10672 } 10673 Utils.Extend(BaseAdapter, Utils.Observable); 10674 BaseAdapter.prototype.current = function(callback) { 10675 throw new Error("The `current` method must be defined in child classes."); 10676 }; 10677 BaseAdapter.prototype.query = function(params, callback) { 10678 throw new Error("The `query` method must be defined in child classes."); 10679 }; 10680 BaseAdapter.prototype.bind = function(container, $container) { 10681 }; 10682 BaseAdapter.prototype.destroy = function() { 10683 }; 10684 BaseAdapter.prototype.generateResultId = function(container, data) { 10685 var id = container.id + "-result-"; 10686 id += Utils.generateChars(4); 10687 if (data.id != null) { 10688 id += "-" + data.id.toString(); 10689 } else { 10690 id += "-" + Utils.generateChars(4); 10691 } 10692 return id; 10693 }; 10694 return BaseAdapter; 10695 }); 10696 S22.define("select2/data/select", [ 10697 "./base", 10698 "../utils", 10699 "jquery" 10700 ], function(BaseAdapter, Utils, $3) { 10701 function SelectAdapter($element, options) { 10702 this.$element = $element; 10703 this.options = options; 10704 SelectAdapter.__super__.constructor.call(this); 10705 } 10706 Utils.Extend(SelectAdapter, BaseAdapter); 10707 SelectAdapter.prototype.current = function(callback) { 10708 var self2 = this; 10709 var data = Array.prototype.map.call( 10710 this.$element[0].querySelectorAll(":checked"), 10711 function(selectedElement) { 10712 return self2.item($3(selectedElement)); 10713 } 10714 ); 10715 callback(data); 10716 }; 10717 SelectAdapter.prototype.select = function(data) { 10718 var self2 = this; 10719 data.selected = true; 10720 if (data.element != null && data.element.tagName.toLowerCase() === "option") { 10721 data.element.selected = true; 10722 this.$element.trigger("input").trigger("change"); 10723 return; 10724 } 10725 if (this.$element.prop("multiple")) { 10726 this.current(function(currentData) { 10727 var val2 = []; 10728 data = [data]; 10729 data.push.apply(data, currentData); 10730 for (var d = 0; d < data.length; d++) { 10731 var id = data[d].id; 10732 if (val2.indexOf(id) === -1) { 10733 val2.push(id); 10734 } 10735 } 10736 self2.$element.val(val2); 10737 self2.$element.trigger("input").trigger("change"); 10738 }); 10739 } else { 10740 var val = data.id; 10741 this.$element.val(val); 10742 this.$element.trigger("input").trigger("change"); 10743 } 10744 }; 10745 SelectAdapter.prototype.unselect = function(data) { 10746 var self2 = this; 10747 if (!this.$element.prop("multiple")) { 10748 return; 10749 } 10750 data.selected = false; 10751 if (data.element != null && data.element.tagName.toLowerCase() === "option") { 10752 data.element.selected = false; 10753 this.$element.trigger("input").trigger("change"); 10754 return; 10755 } 10756 this.current(function(currentData) { 10757 var val = []; 10758 for (var d = 0; d < currentData.length; d++) { 10759 var id = currentData[d].id; 10760 if (id !== data.id && val.indexOf(id) === -1) { 10761 val.push(id); 10762 } 10763 } 10764 self2.$element.val(val); 10765 self2.$element.trigger("input").trigger("change"); 10766 }); 10767 }; 10768 SelectAdapter.prototype.bind = function(container, $container) { 10769 var self2 = this; 10770 this.container = container; 10771 container.on("select", function(params) { 10772 self2.select(params.data); 10773 }); 10774 container.on("unselect", function(params) { 10775 self2.unselect(params.data); 10776 }); 10777 }; 10778 SelectAdapter.prototype.destroy = function() { 10779 this.$element.find("*").each(function() { 10780 Utils.RemoveData(this); 10781 }); 10782 }; 10783 SelectAdapter.prototype.query = function(params, callback) { 10784 var data = []; 10785 var self2 = this; 10786 var $options = this.$element.children(); 10787 $options.each(function() { 10788 if (this.tagName.toLowerCase() !== "option" && this.tagName.toLowerCase() !== "optgroup") { 10789 return; 10790 } 10791 var $option = $3(this); 10792 var option = self2.item($option); 10793 var matches = self2.matches(params, option); 10794 if (matches !== null) { 10795 data.push(matches); 10796 } 10797 }); 10798 callback({ 10799 results: data 10800 }); 10801 }; 10802 SelectAdapter.prototype.addOptions = function($options) { 10803 this.$element.append($options); 10804 }; 10805 SelectAdapter.prototype.option = function(data) { 10806 var option; 10807 if (data.children) { 10808 option = document.createElement("optgroup"); 10809 option.label = data.text; 10810 } else { 10811 option = document.createElement("option"); 10812 if (option.textContent !== void 0) { 10813 option.textContent = data.text; 10814 } else { 10815 option.innerText = data.text; 10816 } 10817 } 10818 if (data.id !== void 0) { 10819 option.value = data.id; 10820 } 10821 if (data.disabled) { 10822 option.disabled = true; 10823 } 10824 if (data.selected) { 10825 option.selected = true; 10826 } 10827 if (data.title) { 10828 option.title = data.title; 10829 } 10830 var normalizedData = this._normalizeItem(data); 10831 normalizedData.element = option; 10832 Utils.StoreData(option, "data", normalizedData); 10833 return $3(option); 10834 }; 10835 SelectAdapter.prototype.item = function($option) { 10836 var data = {}; 10837 data = Utils.GetData($option[0], "data"); 10838 if (data != null) { 10839 return data; 10840 } 10841 var option = $option[0]; 10842 if (option.tagName.toLowerCase() === "option") { 10843 data = { 10844 id: $option.val(), 10845 text: $option.text(), 10846 disabled: $option.prop("disabled"), 10847 selected: $option.prop("selected"), 10848 title: $option.prop("title") 10849 }; 10850 } else if (option.tagName.toLowerCase() === "optgroup") { 10851 data = { 10852 text: $option.prop("label"), 10853 children: [], 10854 title: $option.prop("title") 10855 }; 10856 var $children = $option.children("option"); 10857 var children = []; 10858 for (var c = 0; c < $children.length; c++) { 10859 var $child = $3($children[c]); 10860 var child = this.item($child); 10861 children.push(child); 10862 } 10863 data.children = children; 10864 } 10865 data = this._normalizeItem(data); 10866 data.element = $option[0]; 10867 Utils.StoreData($option[0], "data", data); 10868 return data; 10869 }; 10870 SelectAdapter.prototype._normalizeItem = function(item) { 10871 if (item !== Object(item)) { 10872 item = { 10873 id: item, 10874 text: item 10875 }; 10876 } 10877 item = $3.extend({}, { 10878 text: "" 10879 }, item); 10880 var defaults = { 10881 selected: false, 10882 disabled: false 10883 }; 10884 if (item.id != null) { 10885 item.id = item.id.toString(); 10886 } 10887 if (item.text != null) { 10888 item.text = item.text.toString(); 10889 } 10890 if (item._resultId == null && item.id && this.container != null) { 10891 item._resultId = this.generateResultId(this.container, item); 10892 } 10893 return $3.extend({}, defaults, item); 10894 }; 10895 SelectAdapter.prototype.matches = function(params, data) { 10896 var matcher = this.options.get("matcher"); 10897 return matcher(params, data); 10898 }; 10899 return SelectAdapter; 10900 }); 10901 S22.define("select2/data/array", [ 10902 "./select", 10903 "../utils", 10904 "jquery" 10905 ], function(SelectAdapter, Utils, $3) { 10906 function ArrayAdapter($element, options) { 10907 this._dataToConvert = options.get("data") || []; 10908 ArrayAdapter.__super__.constructor.call(this, $element, options); 10909 } 10910 Utils.Extend(ArrayAdapter, SelectAdapter); 10911 ArrayAdapter.prototype.bind = function(container, $container) { 10912 ArrayAdapter.__super__.bind.call(this, container, $container); 10913 this.addOptions(this.convertToOptions(this._dataToConvert)); 10914 }; 10915 ArrayAdapter.prototype.select = function(data) { 10916 var $option = this.$element.find("option").filter(function(i, elm) { 10917 return elm.value == data.id.toString(); 10918 }); 10919 if ($option.length === 0) { 10920 $option = this.option(data); 10921 this.addOptions($option); 10922 } 10923 ArrayAdapter.__super__.select.call(this, data); 10924 }; 10925 ArrayAdapter.prototype.convertToOptions = function(data) { 10926 var self2 = this; 10927 var $existing = this.$element.find("option"); 10928 var existingIds = $existing.map(function() { 10929 return self2.item($3(this)).id; 10930 }).get(); 10931 var $options = []; 10932 function onlyItem(item2) { 10933 return function() { 10934 return $3(this).val() == item2.id; 10935 }; 10936 } 10937 for (var d = 0; d < data.length; d++) { 10938 var item = this._normalizeItem(data[d]); 10939 if (existingIds.indexOf(item.id) >= 0) { 10940 var $existingOption = $existing.filter(onlyItem(item)); 10941 var existingData = this.item($existingOption); 10942 var newData = $3.extend(true, {}, item, existingData); 10943 var $newOption = this.option(newData); 10944 $existingOption.replaceWith($newOption); 10945 continue; 10946 } 10947 var $option = this.option(item); 10948 if (item.children) { 10949 var $children = this.convertToOptions(item.children); 10950 $option.append($children); 10951 } 10952 $options.push($option); 10953 } 10954 return $options; 10955 }; 10956 return ArrayAdapter; 10957 }); 10958 S22.define("select2/data/ajax", [ 10959 "./array", 10960 "../utils", 10961 "jquery" 10962 ], function(ArrayAdapter, Utils, $3) { 10963 function AjaxAdapter($element, options) { 10964 this.ajaxOptions = this._applyDefaults(options.get("ajax")); 10965 if (this.ajaxOptions.processResults != null) { 10966 this.processResults = this.ajaxOptions.processResults; 10967 } 10968 AjaxAdapter.__super__.constructor.call(this, $element, options); 10969 } 10970 Utils.Extend(AjaxAdapter, ArrayAdapter); 10971 AjaxAdapter.prototype._applyDefaults = function(options) { 10972 var defaults = { 10973 data: function(params) { 10974 return $3.extend({}, params, { 10975 q: params.term 10976 }); 10977 }, 10978 transport: function(params, success, failure) { 10979 var $request = $3.ajax(params); 10980 $request.then(success); 10981 $request.fail(failure); 10982 return $request; 10983 } 10984 }; 10985 return $3.extend({}, defaults, options, true); 10986 }; 10987 AjaxAdapter.prototype.processResults = function(results) { 10988 return results; 10989 }; 10990 AjaxAdapter.prototype.query = function(params, callback) { 10991 var matches = []; 10992 var self2 = this; 10993 if (this._request != null) { 10994 if (typeof this._request.abort === "function") { 10995 this._request.abort(); 10996 } 10997 this._request = null; 10998 } 10999 var options = $3.extend({ 11000 type: "GET" 11001 }, this.ajaxOptions); 11002 if (typeof options.url === "function") { 11003 options.url = options.url.call(this.$element, params); 11004 } 11005 if (typeof options.data === "function") { 11006 options.data = options.data.call(this.$element, params); 11007 } 11008 function request() { 11009 var $request = options.transport(options, function(data) { 11010 var results = self2.processResults(data, params); 11011 if (self2.options.get("debug") && window.console && console.error) { 11012 if (!results || !results.results || !Array.isArray(results.results)) { 11013 console.error( 11014 "Select2: The AJAX results did not return an array in the `results` key of the response." 11015 ); 11016 } 11017 } 11018 callback(results); 11019 }, function() { 11020 if ("status" in $request && ($request.status === 0 || $request.status === "0")) { 11021 return; 11022 } 11023 self2.trigger("results:message", { 11024 message: "errorLoading" 11025 }); 11026 }); 11027 self2._request = $request; 11028 } 11029 if (this.ajaxOptions.delay && params.term != null) { 11030 if (this._queryTimeout) { 11031 window.clearTimeout(this._queryTimeout); 11032 } 11033 this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay); 11034 } else { 11035 request(); 11036 } 11037 }; 11038 return AjaxAdapter; 11039 }); 11040 S22.define("select2/data/tags", [ 11041 "jquery" 11042 ], function($3) { 11043 function Tags(decorated, $element, options) { 11044 var tags = options.get("tags"); 11045 var createTag = options.get("createTag"); 11046 if (createTag !== void 0) { 11047 this.createTag = createTag; 11048 } 11049 var insertTag = options.get("insertTag"); 11050 if (insertTag !== void 0) { 11051 this.insertTag = insertTag; 11052 } 11053 decorated.call(this, $element, options); 11054 if (Array.isArray(tags)) { 11055 for (var t2 = 0; t2 < tags.length; t2++) { 11056 var tag = tags[t2]; 11057 var item = this._normalizeItem(tag); 11058 var $option = this.option(item); 11059 this.$element.append($option); 11060 } 11061 } 11062 } 11063 Tags.prototype.query = function(decorated, params, callback) { 11064 var self2 = this; 11065 this._removeOldTags(); 11066 if (params.term == null || params.page != null) { 11067 decorated.call(this, params, callback); 11068 return; 11069 } 11070 function wrapper(obj, child) { 11071 var data = obj.results; 11072 for (var i = 0; i < data.length; i++) { 11073 var option = data[i]; 11074 var checkChildren = option.children != null && !wrapper({ 11075 results: option.children 11076 }, true); 11077 var optionText = (option.text || "").toUpperCase(); 11078 var paramsTerm = (params.term || "").toUpperCase(); 11079 var checkText = optionText === paramsTerm; 11080 if (checkText || checkChildren) { 11081 if (child) { 11082 return false; 11083 } 11084 obj.data = data; 11085 callback(obj); 11086 return; 11087 } 11088 } 11089 if (child) { 11090 return true; 11091 } 11092 var tag = self2.createTag(params); 11093 if (tag != null) { 11094 var $option = self2.option(tag); 11095 $option.attr("data-select2-tag", "true"); 11096 self2.addOptions([$option]); 11097 self2.insertTag(data, tag); 11098 } 11099 obj.results = data; 11100 callback(obj); 11101 } 11102 decorated.call(this, params, wrapper); 11103 }; 11104 Tags.prototype.createTag = function(decorated, params) { 11105 if (params.term == null) { 11106 return null; 11107 } 11108 var term = params.term.trim(); 11109 if (term === "") { 11110 return null; 11111 } 11112 return { 11113 id: term, 11114 text: term 11115 }; 11116 }; 11117 Tags.prototype.insertTag = function(_, data, tag) { 11118 data.unshift(tag); 11119 }; 11120 Tags.prototype._removeOldTags = function(_) { 11121 var $options = this.$element.find("option[data-select2-tag]"); 11122 $options.each(function() { 11123 if (this.selected) { 11124 return; 11125 } 11126 $3(this).remove(); 11127 }); 11128 }; 11129 return Tags; 11130 }); 11131 S22.define("select2/data/tokenizer", [ 11132 "jquery" 11133 ], function($3) { 11134 function Tokenizer(decorated, $element, options) { 11135 var tokenizer = options.get("tokenizer"); 11136 if (tokenizer !== void 0) { 11137 this.tokenizer = tokenizer; 11138 } 11139 decorated.call(this, $element, options); 11140 } 11141 Tokenizer.prototype.bind = function(decorated, container, $container) { 11142 decorated.call(this, container, $container); 11143 this.$search = container.dropdown.$search || container.selection.$search || $container.find(".select2-search__field"); 11144 }; 11145 Tokenizer.prototype.query = function(decorated, params, callback) { 11146 var self2 = this; 11147 function createAndSelect(data) { 11148 var item = self2._normalizeItem(data); 11149 var $existingOptions = self2.$element.find("option").filter(function() { 11150 return $3(this).val() === item.id; 11151 }); 11152 if (!$existingOptions.length) { 11153 var $option = self2.option(item); 11154 $option.attr("data-select2-tag", true); 11155 self2._removeOldTags(); 11156 self2.addOptions([$option]); 11157 } 11158 select(item); 11159 } 11160 function select(data) { 11161 self2.trigger("select", { 11162 data 11163 }); 11164 } 11165 params.term = params.term || ""; 11166 var tokenData = this.tokenizer(params, this.options, createAndSelect); 11167 if (tokenData.term !== params.term) { 11168 if (this.$search.length) { 11169 this.$search.val(tokenData.term); 11170 this.$search.trigger("focus"); 11171 } 11172 params.term = tokenData.term; 11173 } 11174 decorated.call(this, params, callback); 11175 }; 11176 Tokenizer.prototype.tokenizer = function(_, params, options, callback) { 11177 var separators = options.get("tokenSeparators") || []; 11178 var term = params.term; 11179 var i = 0; 11180 var createTag = this.createTag || function(params2) { 11181 return { 11182 id: params2.term, 11183 text: params2.term 11184 }; 11185 }; 11186 while (i < term.length) { 11187 var termChar = term[i]; 11188 if (separators.indexOf(termChar) === -1) { 11189 i++; 11190 continue; 11191 } 11192 var part = term.substr(0, i); 11193 var partParams = $3.extend({}, params, { 11194 term: part 11195 }); 11196 var data = createTag(partParams); 11197 if (data == null) { 11198 i++; 11199 continue; 11200 } 11201 callback(data); 11202 term = term.substr(i + 1) || ""; 11203 i = 0; 11204 } 11205 return { 11206 term 11207 }; 11208 }; 11209 return Tokenizer; 11210 }); 11211 S22.define("select2/data/minimumInputLength", [], function() { 11212 function MinimumInputLength(decorated, $e, options) { 11213 this.minimumInputLength = options.get("minimumInputLength"); 11214 decorated.call(this, $e, options); 11215 } 11216 MinimumInputLength.prototype.query = function(decorated, params, callback) { 11217 params.term = params.term || ""; 11218 if (params.term.length < this.minimumInputLength) { 11219 this.trigger("results:message", { 11220 message: "inputTooShort", 11221 args: { 11222 minimum: this.minimumInputLength, 11223 input: params.term, 11224 params 11225 } 11226 }); 11227 return; 11228 } 11229 decorated.call(this, params, callback); 11230 }; 11231 return MinimumInputLength; 11232 }); 11233 S22.define("select2/data/maximumInputLength", [], function() { 11234 function MaximumInputLength(decorated, $e, options) { 11235 this.maximumInputLength = options.get("maximumInputLength"); 11236 decorated.call(this, $e, options); 11237 } 11238 MaximumInputLength.prototype.query = function(decorated, params, callback) { 11239 params.term = params.term || ""; 11240 if (this.maximumInputLength > 0 && params.term.length > this.maximumInputLength) { 11241 this.trigger("results:message", { 11242 message: "inputTooLong", 11243 args: { 11244 maximum: this.maximumInputLength, 11245 input: params.term, 11246 params 11247 } 11248 }); 11249 return; 11250 } 11251 decorated.call(this, params, callback); 11252 }; 11253 return MaximumInputLength; 11254 }); 11255 S22.define("select2/data/maximumSelectionLength", [], function() { 11256 function MaximumSelectionLength(decorated, $e, options) { 11257 this.maximumSelectionLength = options.get("maximumSelectionLength"); 11258 decorated.call(this, $e, options); 11259 } 11260 MaximumSelectionLength.prototype.bind = function(decorated, container, $container) { 11261 var self2 = this; 11262 decorated.call(this, container, $container); 11263 container.on("select", function() { 11264 self2._checkIfMaximumSelected(); 11265 }); 11266 }; 11267 MaximumSelectionLength.prototype.query = function(decorated, params, callback) { 11268 var self2 = this; 11269 this._checkIfMaximumSelected(function() { 11270 decorated.call(self2, params, callback); 11271 }); 11272 }; 11273 MaximumSelectionLength.prototype._checkIfMaximumSelected = function(_, successCallback) { 11274 var self2 = this; 11275 this.current(function(currentData) { 11276 var count = currentData != null ? currentData.length : 0; 11277 if (self2.maximumSelectionLength > 0 && count >= self2.maximumSelectionLength) { 11278 self2.trigger("results:message", { 11279 message: "maximumSelected", 11280 args: { 11281 maximum: self2.maximumSelectionLength 11282 } 11283 }); 11284 return; 11285 } 11286 if (successCallback) { 11287 successCallback(); 11288 } 11289 }); 11290 }; 11291 return MaximumSelectionLength; 11292 }); 11293 S22.define("select2/dropdown", [ 11294 "jquery", 11295 "./utils" 11296 ], function($3, Utils) { 11297 function Dropdown($element, options) { 11298 this.$element = $element; 11299 this.options = options; 11300 Dropdown.__super__.constructor.call(this); 11301 } 11302 Utils.Extend(Dropdown, Utils.Observable); 11303 Dropdown.prototype.render = function() { 11304 var $dropdown = $3( 11305 '<span class="select2-dropdown"><span class="select2-results"></span></span>' 11306 ); 11307 $dropdown.attr("dir", this.options.get("dir")); 11308 this.$dropdown = $dropdown; 11309 return $dropdown; 11310 }; 11311 Dropdown.prototype.bind = function() { 11312 }; 11313 Dropdown.prototype.position = function($dropdown, $container) { 11314 }; 11315 Dropdown.prototype.destroy = function() { 11316 this.$dropdown.remove(); 11317 }; 11318 return Dropdown; 11319 }); 11320 S22.define("select2/dropdown/search", [ 11321 "jquery" 11322 ], function($3) { 11323 function Search() { 11324 } 11325 Search.prototype.render = function(decorated) { 11326 var $rendered = decorated.call(this); 11327 var searchLabel = this.options.get("translations").get("search"); 11328 var $search = $3( 11329 '<span class="select2-search select2-search--dropdown"><input class="select2-search__field" type="search" tabindex="-1" autocorrect="off" autocapitalize="none" spellcheck="false" role="searchbox" aria-autocomplete="list" /></span>' 11330 ); 11331 this.$searchContainer = $search; 11332 this.$search = $search.find("input"); 11333 this.$search.prop("autocomplete", this.options.get("autocomplete")); 11334 this.$search.attr("aria-label", searchLabel()); 11335 $rendered.prepend($search); 11336 return $rendered; 11337 }; 11338 Search.prototype.bind = function(decorated, container, $container) { 11339 var self2 = this; 11340 var resultsId = container.id + "-results"; 11341 decorated.call(this, container, $container); 11342 this.$search.on("keydown", function(evt) { 11343 self2.trigger("keypress", evt); 11344 self2._keyUpPrevented = evt.isDefaultPrevented(); 11345 }); 11346 this.$search.on("input", function(evt) { 11347 $3(this).off("keyup"); 11348 }); 11349 this.$search.on("keyup input", function(evt) { 11350 self2.handleSearch(evt); 11351 }); 11352 container.on("open", function() { 11353 self2.$search.attr("tabindex", 0); 11354 self2.$search.attr("aria-controls", resultsId); 11355 self2.$search.trigger("focus"); 11356 window.setTimeout(function() { 11357 self2.$search.trigger("focus"); 11358 }, 0); 11359 }); 11360 container.on("close", function() { 11361 self2.$search.attr("tabindex", -1); 11362 self2.$search.removeAttr("aria-controls"); 11363 self2.$search.removeAttr("aria-activedescendant"); 11364 self2.$search.val(""); 11365 self2.$search.trigger("blur"); 11366 }); 11367 container.on("focus", function() { 11368 if (!container.isOpen()) { 11369 self2.$search.trigger("focus"); 11370 } 11371 }); 11372 container.on("results:all", function(params) { 11373 if (params.query.term == null || params.query.term === "") { 11374 var showSearch = self2.showSearch(params); 11375 if (showSearch) { 11376 self2.$searchContainer[0].classList.remove("select2-search--hide"); 11377 } else { 11378 self2.$searchContainer[0].classList.add("select2-search--hide"); 11379 } 11380 } 11381 }); 11382 container.on("results:focus", function(params) { 11383 if (params.data._resultId) { 11384 self2.$search.attr("aria-activedescendant", params.data._resultId); 11385 } else { 11386 self2.$search.removeAttr("aria-activedescendant"); 11387 } 11388 }); 11389 }; 11390 Search.prototype.handleSearch = function(evt) { 11391 if (!this._keyUpPrevented) { 11392 var input = this.$search.val(); 11393 this.trigger("query", { 11394 term: input 11395 }); 11396 } 11397 this._keyUpPrevented = false; 11398 }; 11399 Search.prototype.showSearch = function(_, params) { 11400 return true; 11401 }; 11402 return Search; 11403 }); 11404 S22.define("select2/dropdown/hidePlaceholder", [], function() { 11405 function HidePlaceholder(decorated, $element, options, dataAdapter) { 11406 this.placeholder = this.normalizePlaceholder(options.get("placeholder")); 11407 decorated.call(this, $element, options, dataAdapter); 11408 } 11409 HidePlaceholder.prototype.append = function(decorated, data) { 11410 data.results = this.removePlaceholder(data.results); 11411 decorated.call(this, data); 11412 }; 11413 HidePlaceholder.prototype.normalizePlaceholder = function(_, placeholder) { 11414 if (typeof placeholder === "string") { 11415 placeholder = { 11416 id: "", 11417 text: placeholder 11418 }; 11419 } 11420 return placeholder; 11421 }; 11422 HidePlaceholder.prototype.removePlaceholder = function(_, data) { 11423 var modifiedData = data.slice(0); 11424 for (var d = data.length - 1; d >= 0; d--) { 11425 var item = data[d]; 11426 if (this.placeholder.id === item.id) { 11427 modifiedData.splice(d, 1); 11428 } 11429 } 11430 return modifiedData; 11431 }; 11432 return HidePlaceholder; 11433 }); 11434 S22.define("select2/dropdown/infiniteScroll", [ 11435 "jquery" 11436 ], function($3) { 11437 function InfiniteScroll(decorated, $element, options, dataAdapter) { 11438 this.lastParams = {}; 11439 decorated.call(this, $element, options, dataAdapter); 11440 this.$loadingMore = this.createLoadingMore(); 11441 this.loading = false; 11442 } 11443 InfiniteScroll.prototype.append = function(decorated, data) { 11444 this.$loadingMore.remove(); 11445 this.loading = false; 11446 decorated.call(this, data); 11447 if (this.showLoadingMore(data)) { 11448 this.$results.append(this.$loadingMore); 11449 this.loadMoreIfNeeded(); 11450 } 11451 }; 11452 InfiniteScroll.prototype.bind = function(decorated, container, $container) { 11453 var self2 = this; 11454 decorated.call(this, container, $container); 11455 container.on("query", function(params) { 11456 self2.lastParams = params; 11457 self2.loading = true; 11458 }); 11459 container.on("query:append", function(params) { 11460 self2.lastParams = params; 11461 self2.loading = true; 11462 }); 11463 this.$results.on("scroll", this.loadMoreIfNeeded.bind(this)); 11464 }; 11465 InfiniteScroll.prototype.loadMoreIfNeeded = function() { 11466 var isLoadMoreVisible = $3.contains( 11467 document.documentElement, 11468 this.$loadingMore[0] 11469 ); 11470 if (this.loading || !isLoadMoreVisible) { 11471 return; 11472 } 11473 var currentOffset = this.$results.offset().top + this.$results.outerHeight(false); 11474 var loadingMoreOffset = this.$loadingMore.offset().top + this.$loadingMore.outerHeight(false); 11475 if (currentOffset + 50 >= loadingMoreOffset) { 11476 this.loadMore(); 11477 } 11478 }; 11479 InfiniteScroll.prototype.loadMore = function() { 11480 this.loading = true; 11481 var params = $3.extend({}, { page: 1 }, this.lastParams); 11482 params.page++; 11483 this.trigger("query:append", params); 11484 }; 11485 InfiniteScroll.prototype.showLoadingMore = function(_, data) { 11486 return data.pagination && data.pagination.more; 11487 }; 11488 InfiniteScroll.prototype.createLoadingMore = function() { 11489 var $option = $3( 11490 '<li class="select2-results__option select2-results__option--load-more"role="option" aria-disabled="true"></li>' 11491 ); 11492 var message = this.options.get("translations").get("loadingMore"); 11493 $option.html(message(this.lastParams)); 11494 return $option; 11495 }; 11496 return InfiniteScroll; 11497 }); 11498 S22.define("select2/dropdown/attachBody", [ 11499 "jquery", 11500 "../utils" 11501 ], function($3, Utils) { 11502 function AttachBody(decorated, $element, options) { 11503 this.$dropdownParent = $3(options.get("dropdownParent") || document.body); 11504 decorated.call(this, $element, options); 11505 } 11506 AttachBody.prototype.bind = function(decorated, container, $container) { 11507 var self2 = this; 11508 decorated.call(this, container, $container); 11509 container.on("open", function() { 11510 self2._showDropdown(); 11511 self2._attachPositioningHandler(container); 11512 self2._bindContainerResultHandlers(container); 11513 }); 11514 container.on("close", function() { 11515 self2._hideDropdown(); 11516 self2._detachPositioningHandler(container); 11517 }); 11518 this.$dropdownContainer.on("mousedown", function(evt) { 11519 evt.stopPropagation(); 11520 }); 11521 }; 11522 AttachBody.prototype.destroy = function(decorated) { 11523 decorated.call(this); 11524 this.$dropdownContainer.remove(); 11525 }; 11526 AttachBody.prototype.position = function(decorated, $dropdown, $container) { 11527 $dropdown.attr("class", $container.attr("class")); 11528 $dropdown[0].classList.remove("select2"); 11529 $dropdown[0].classList.add("select2-container--open"); 11530 $dropdown.css({ 11531 position: "absolute", 11532 top: -999999 11533 }); 11534 this.$container = $container; 11535 }; 11536 AttachBody.prototype.render = function(decorated) { 11537 var $container = $3("<span></span>"); 11538 var $dropdown = decorated.call(this); 11539 $container.append($dropdown); 11540 this.$dropdownContainer = $container; 11541 return $container; 11542 }; 11543 AttachBody.prototype._hideDropdown = function(decorated) { 11544 this.$dropdownContainer.detach(); 11545 }; 11546 AttachBody.prototype._bindContainerResultHandlers = function(decorated, container) { 11547 if (this._containerResultsHandlersBound) { 11548 return; 11549 } 11550 var self2 = this; 11551 container.on("results:all", function() { 11552 self2._positionDropdown(); 11553 self2._resizeDropdown(); 11554 }); 11555 container.on("results:append", function() { 11556 self2._positionDropdown(); 11557 self2._resizeDropdown(); 11558 }); 11559 container.on("results:message", function() { 11560 self2._positionDropdown(); 11561 self2._resizeDropdown(); 11562 }); 11563 container.on("select", function() { 11564 self2._positionDropdown(); 11565 self2._resizeDropdown(); 11566 }); 11567 container.on("unselect", function() { 11568 self2._positionDropdown(); 11569 self2._resizeDropdown(); 11570 }); 11571 this._containerResultsHandlersBound = true; 11572 }; 11573 AttachBody.prototype._attachPositioningHandler = function(decorated, container) { 11574 var self2 = this; 11575 var scrollEvent = "scroll.select2." + container.id; 11576 var resizeEvent = "resize.select2." + container.id; 11577 var orientationEvent = "orientationchange.select2." + container.id; 11578 var $watchers = this.$container.parents().filter(Utils.hasScroll); 11579 $watchers.each(function() { 11580 Utils.StoreData(this, "select2-scroll-position", { 11581 x: $3(this).scrollLeft(), 11582 y: $3(this).scrollTop() 11583 }); 11584 }); 11585 $watchers.on(scrollEvent, function(ev) { 11586 var position = Utils.GetData(this, "select2-scroll-position"); 11587 $3(this).scrollTop(position.y); 11588 }); 11589 $3(window).on( 11590 scrollEvent + " " + resizeEvent + " " + orientationEvent, 11591 function(e) { 11592 self2._positionDropdown(); 11593 self2._resizeDropdown(); 11594 } 11595 ); 11596 }; 11597 AttachBody.prototype._detachPositioningHandler = function(decorated, container) { 11598 var scrollEvent = "scroll.select2." + container.id; 11599 var resizeEvent = "resize.select2." + container.id; 11600 var orientationEvent = "orientationchange.select2." + container.id; 11601 var $watchers = this.$container.parents().filter(Utils.hasScroll); 11602 $watchers.off(scrollEvent); 11603 $3(window).off(scrollEvent + " " + resizeEvent + " " + orientationEvent); 11604 }; 11605 AttachBody.prototype._positionDropdown = function() { 11606 var $window = $3(window); 11607 var isCurrentlyAbove = this.$dropdown[0].classList.contains("select2-dropdown--above"); 11608 var isCurrentlyBelow = this.$dropdown[0].classList.contains("select2-dropdown--below"); 11609 var newDirection = null; 11610 var offset = this.$container.offset(); 11611 offset.bottom = offset.top + this.$container.outerHeight(false); 11612 var container = { 11613 height: this.$container.outerHeight(false) 11614 }; 11615 container.top = offset.top; 11616 container.bottom = offset.top + container.height; 11617 var dropdown = { 11618 height: this.$dropdown.outerHeight(false) 11619 }; 11620 var viewport = { 11621 top: $window.scrollTop(), 11622 bottom: $window.scrollTop() + $window.height() 11623 }; 11624 var enoughRoomAbove = viewport.top < offset.top - dropdown.height; 11625 var enoughRoomBelow = viewport.bottom > offset.bottom + dropdown.height; 11626 var css = { 11627 left: offset.left, 11628 top: container.bottom 11629 }; 11630 var $offsetParent = this.$dropdownParent; 11631 if ($offsetParent.css("position") === "static") { 11632 $offsetParent = $offsetParent.offsetParent(); 11633 } 11634 var parentOffset = { 11635 top: 0, 11636 left: 0 11637 }; 11638 if ($3.contains(document.body, $offsetParent[0]) || $offsetParent[0].isConnected) { 11639 parentOffset = $offsetParent.offset(); 11640 } 11641 css.top -= parentOffset.top; 11642 css.left -= parentOffset.left; 11643 if (!isCurrentlyAbove && !isCurrentlyBelow) { 11644 newDirection = "below"; 11645 } 11646 if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) { 11647 newDirection = "above"; 11648 } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) { 11649 newDirection = "below"; 11650 } 11651 if (newDirection == "above" || isCurrentlyAbove && newDirection !== "below") { 11652 css.top = container.top - parentOffset.top - dropdown.height; 11653 } 11654 if (newDirection != null) { 11655 this.$dropdown[0].classList.remove("select2-dropdown--below"); 11656 this.$dropdown[0].classList.remove("select2-dropdown--above"); 11657 this.$dropdown[0].classList.add("select2-dropdown--" + newDirection); 11658 this.$container[0].classList.remove("select2-container--below"); 11659 this.$container[0].classList.remove("select2-container--above"); 11660 this.$container[0].classList.add("select2-container--" + newDirection); 11661 } 11662 this.$dropdownContainer.css(css); 11663 }; 11664 AttachBody.prototype._resizeDropdown = function() { 11665 var css = { 11666 width: this.$container.outerWidth(false) + "px" 11667 }; 11668 if (this.options.get("dropdownAutoWidth")) { 11669 css.minWidth = css.width; 11670 css.position = "relative"; 11671 css.width = "auto"; 11672 } 11673 this.$dropdown.css(css); 11674 }; 11675 AttachBody.prototype._showDropdown = function(decorated) { 11676 this.$dropdownContainer.appendTo(this.$dropdownParent); 11677 this._positionDropdown(); 11678 this._resizeDropdown(); 11679 }; 11680 return AttachBody; 11681 }); 11682 S22.define("select2/dropdown/minimumResultsForSearch", [], function() { 11683 function countResults(data) { 11684 var count = 0; 11685 for (var d = 0; d < data.length; d++) { 11686 var item = data[d]; 11687 if (item.children) { 11688 count += countResults(item.children); 11689 } else { 11690 count++; 11691 } 11692 } 11693 return count; 11694 } 11695 function MinimumResultsForSearch(decorated, $element, options, dataAdapter) { 11696 this.minimumResultsForSearch = options.get("minimumResultsForSearch"); 11697 if (this.minimumResultsForSearch < 0) { 11698 this.minimumResultsForSearch = Infinity; 11699 } 11700 decorated.call(this, $element, options, dataAdapter); 11701 } 11702 MinimumResultsForSearch.prototype.showSearch = function(decorated, params) { 11703 if (countResults(params.data.results) < this.minimumResultsForSearch) { 11704 return false; 11705 } 11706 return decorated.call(this, params); 11707 }; 11708 return MinimumResultsForSearch; 11709 }); 11710 S22.define("select2/dropdown/selectOnClose", [ 11711 "../utils" 11712 ], function(Utils) { 11713 function SelectOnClose() { 11714 } 11715 SelectOnClose.prototype.bind = function(decorated, container, $container) { 11716 var self2 = this; 11717 decorated.call(this, container, $container); 11718 container.on("close", function(params) { 11719 self2._handleSelectOnClose(params); 11720 }); 11721 }; 11722 SelectOnClose.prototype._handleSelectOnClose = function(_, params) { 11723 if (params && params.originalSelect2Event != null) { 11724 var event2 = params.originalSelect2Event; 11725 if (event2._type === "select" || event2._type === "unselect") { 11726 return; 11727 } 11728 } 11729 var $highlightedResults = this.getHighlightedResults(); 11730 if ($highlightedResults.length < 1) { 11731 return; 11732 } 11733 var data = Utils.GetData($highlightedResults[0], "data"); 11734 if (data.element != null && data.element.selected || data.element == null && data.selected) { 11735 return; 11736 } 11737 this.trigger("select", { 11738 data 11739 }); 11740 }; 11741 return SelectOnClose; 11742 }); 11743 S22.define("select2/dropdown/closeOnSelect", [], function() { 11744 function CloseOnSelect() { 11745 } 11746 CloseOnSelect.prototype.bind = function(decorated, container, $container) { 11747 var self2 = this; 11748 decorated.call(this, container, $container); 11749 container.on("select", function(evt) { 11750 self2._selectTriggered(evt); 11751 }); 11752 container.on("unselect", function(evt) { 11753 self2._selectTriggered(evt); 11754 }); 11755 }; 11756 CloseOnSelect.prototype._selectTriggered = function(_, evt) { 11757 var originalEvent = evt.originalEvent; 11758 if (originalEvent && (originalEvent.ctrlKey || originalEvent.metaKey)) { 11759 return; 11760 } 11761 this.trigger("close", { 11762 originalEvent, 11763 originalSelect2Event: evt 11764 }); 11765 }; 11766 return CloseOnSelect; 11767 }); 11768 S22.define("select2/dropdown/dropdownCss", [ 11769 "../utils" 11770 ], function(Utils) { 11771 function DropdownCSS() { 11772 } 11773 DropdownCSS.prototype.render = function(decorated) { 11774 var $dropdown = decorated.call(this); 11775 var dropdownCssClass = this.options.get("dropdownCssClass") || ""; 11776 if (dropdownCssClass.indexOf(":all:") !== -1) { 11777 dropdownCssClass = dropdownCssClass.replace(":all:", ""); 11778 Utils.copyNonInternalCssClasses($dropdown[0], this.$element[0]); 11779 } 11780 $dropdown.addClass(dropdownCssClass); 11781 return $dropdown; 11782 }; 11783 return DropdownCSS; 11784 }); 11785 S22.define("select2/dropdown/tagsSearchHighlight", [ 11786 "../utils" 11787 ], function(Utils) { 11788 function TagsSearchHighlight() { 11789 } 11790 TagsSearchHighlight.prototype.highlightFirstItem = function(decorated) { 11791 var $options = this.$results.find( 11792 ".select2-results__option--selectable:not(.select2-results__option--selected)" 11793 ); 11794 if ($options.length > 0) { 11795 var $firstOption = $options.first(); 11796 var data = Utils.GetData($firstOption[0], "data"); 11797 var firstElement = data.element; 11798 if (firstElement && firstElement.getAttribute) { 11799 if (firstElement.getAttribute("data-select2-tag") === "true") { 11800 $firstOption.trigger("mouseenter"); 11801 return; 11802 } 11803 } 11804 } 11805 decorated.call(this); 11806 }; 11807 return TagsSearchHighlight; 11808 }); 11809 S22.define("select2/i18n/en", [], function() { 11810 return { 11811 errorLoading: function() { 11812 return "The results could not be loaded."; 11813 }, 11814 inputTooLong: function(args) { 11815 var overChars = args.input.length - args.maximum; 11816 var message = "Please delete " + overChars + " character"; 11817 if (overChars != 1) { 11818 message += "s"; 11819 } 11820 return message; 11821 }, 11822 inputTooShort: function(args) { 11823 var remainingChars = args.minimum - args.input.length; 11824 var message = "Please enter " + remainingChars + " or more characters"; 11825 return message; 11826 }, 11827 loadingMore: function() { 11828 return "Loading more results\u2026"; 11829 }, 11830 maximumSelected: function(args) { 11831 var message = "You can only select " + args.maximum + " item"; 11832 if (args.maximum != 1) { 11833 message += "s"; 11834 } 11835 return message; 11836 }, 11837 noResults: function() { 11838 return "No results found"; 11839 }, 11840 searching: function() { 11841 return "Searching\u2026"; 11842 }, 11843 removeAllItems: function() { 11844 return "Remove all items"; 11845 }, 11846 removeItem: function() { 11847 return "Remove item"; 11848 }, 11849 search: function() { 11850 return "Search"; 11851 } 11852 }; 11853 }); 11854 S22.define("select2/defaults", [ 11855 "jquery", 11856 "./results", 11857 "./selection/single", 11858 "./selection/multiple", 11859 "./selection/placeholder", 11860 "./selection/allowClear", 11861 "./selection/search", 11862 "./selection/selectionCss", 11863 "./selection/eventRelay", 11864 "./utils", 11865 "./translation", 11866 "./diacritics", 11867 "./data/select", 11868 "./data/array", 11869 "./data/ajax", 11870 "./data/tags", 11871 "./data/tokenizer", 11872 "./data/minimumInputLength", 11873 "./data/maximumInputLength", 11874 "./data/maximumSelectionLength", 11875 "./dropdown", 11876 "./dropdown/search", 11877 "./dropdown/hidePlaceholder", 11878 "./dropdown/infiniteScroll", 11879 "./dropdown/attachBody", 11880 "./dropdown/minimumResultsForSearch", 11881 "./dropdown/selectOnClose", 11882 "./dropdown/closeOnSelect", 11883 "./dropdown/dropdownCss", 11884 "./dropdown/tagsSearchHighlight", 11885 "./i18n/en" 11886 ], function($3, ResultsList, SingleSelection, MultipleSelection, Placeholder, AllowClear, SelectionSearch, SelectionCSS, EventRelay, Utils, Translation, DIACRITICS, SelectData, ArrayData, AjaxData, Tags, Tokenizer, MinimumInputLength, MaximumInputLength, MaximumSelectionLength, Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll, AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect, DropdownCSS, TagsSearchHighlight, EnglishTranslation) { 11887 function Defaults() { 11888 this.reset(); 11889 } 11890 Defaults.prototype.apply = function(options) { 11891 options = $3.extend(true, {}, this.defaults, options); 11892 if (options.dataAdapter == null) { 11893 if (options.ajax != null) { 11894 options.dataAdapter = AjaxData; 11895 } else if (options.data != null) { 11896 options.dataAdapter = ArrayData; 11897 } else { 11898 options.dataAdapter = SelectData; 11899 } 11900 if (options.minimumInputLength > 0) { 11901 options.dataAdapter = Utils.Decorate( 11902 options.dataAdapter, 11903 MinimumInputLength 11904 ); 11905 } 11906 if (options.maximumInputLength > 0) { 11907 options.dataAdapter = Utils.Decorate( 11908 options.dataAdapter, 11909 MaximumInputLength 11910 ); 11911 } 11912 if (options.maximumSelectionLength > 0) { 11913 options.dataAdapter = Utils.Decorate( 11914 options.dataAdapter, 11915 MaximumSelectionLength 11916 ); 11917 } 11918 if (options.tags) { 11919 options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags); 11920 } 11921 if (options.tokenSeparators != null || options.tokenizer != null) { 11922 options.dataAdapter = Utils.Decorate( 11923 options.dataAdapter, 11924 Tokenizer 11925 ); 11926 } 11927 } 11928 if (options.resultsAdapter == null) { 11929 options.resultsAdapter = ResultsList; 11930 if (options.ajax != null) { 11931 options.resultsAdapter = Utils.Decorate( 11932 options.resultsAdapter, 11933 InfiniteScroll 11934 ); 11935 } 11936 if (options.placeholder != null) { 11937 options.resultsAdapter = Utils.Decorate( 11938 options.resultsAdapter, 11939 HidePlaceholder 11940 ); 11941 } 11942 if (options.selectOnClose) { 11943 options.resultsAdapter = Utils.Decorate( 11944 options.resultsAdapter, 11945 SelectOnClose 11946 ); 11947 } 11948 if (options.tags) { 11949 options.resultsAdapter = Utils.Decorate( 11950 options.resultsAdapter, 11951 TagsSearchHighlight 11952 ); 11953 } 11954 } 11955 if (options.dropdownAdapter == null) { 11956 if (options.multiple) { 11957 options.dropdownAdapter = Dropdown; 11958 } else { 11959 var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch); 11960 options.dropdownAdapter = SearchableDropdown; 11961 } 11962 if (options.minimumResultsForSearch !== 0) { 11963 options.dropdownAdapter = Utils.Decorate( 11964 options.dropdownAdapter, 11965 MinimumResultsForSearch 11966 ); 11967 } 11968 if (options.closeOnSelect) { 11969 options.dropdownAdapter = Utils.Decorate( 11970 options.dropdownAdapter, 11971 CloseOnSelect 11972 ); 11973 } 11974 if (options.dropdownCssClass != null) { 11975 options.dropdownAdapter = Utils.Decorate( 11976 options.dropdownAdapter, 11977 DropdownCSS 11978 ); 11979 } 11980 options.dropdownAdapter = Utils.Decorate( 11981 options.dropdownAdapter, 11982 AttachBody 11983 ); 11984 } 11985 if (options.selectionAdapter == null) { 11986 if (options.multiple) { 11987 options.selectionAdapter = MultipleSelection; 11988 } else { 11989 options.selectionAdapter = SingleSelection; 11990 } 11991 if (options.placeholder != null) { 11992 options.selectionAdapter = Utils.Decorate( 11993 options.selectionAdapter, 11994 Placeholder 11995 ); 11996 } 11997 if (options.allowClear) { 11998 options.selectionAdapter = Utils.Decorate( 11999 options.selectionAdapter, 12000 AllowClear 12001 ); 12002 } 12003 if (options.multiple) { 12004 options.selectionAdapter = Utils.Decorate( 12005 options.selectionAdapter, 12006 SelectionSearch 12007 ); 12008 } 12009 if (options.selectionCssClass != null) { 12010 options.selectionAdapter = Utils.Decorate( 12011 options.selectionAdapter, 12012 SelectionCSS 12013 ); 12014 } 12015 options.selectionAdapter = Utils.Decorate( 12016 options.selectionAdapter, 12017 EventRelay 12018 ); 12019 } 12020 options.language = this._resolveLanguage(options.language); 12021 options.language.push("en"); 12022 var uniqueLanguages = []; 12023 for (var l = 0; l < options.language.length; l++) { 12024 var language = options.language[l]; 12025 if (uniqueLanguages.indexOf(language) === -1) { 12026 uniqueLanguages.push(language); 12027 } 12028 } 12029 options.language = uniqueLanguages; 12030 options.translations = this._processTranslations( 12031 options.language, 12032 options.debug 12033 ); 12034 return options; 12035 }; 12036 Defaults.prototype.reset = function() { 12037 function stripDiacritics(text) { 12038 function match(a) { 12039 return DIACRITICS[a] || a; 12040 } 12041 return text.replace(/[^\u0000-\u007E]/g, match); 12042 } 12043 function matcher(params, data) { 12044 if (params.term == null || params.term.trim() === "") { 12045 return data; 12046 } 12047 if (data.children && data.children.length > 0) { 12048 var match = $3.extend(true, {}, data); 12049 for (var c = data.children.length - 1; c >= 0; c--) { 12050 var child = data.children[c]; 12051 var matches = matcher(params, child); 12052 if (matches == null) { 12053 match.children.splice(c, 1); 12054 } 12055 } 12056 if (match.children.length > 0) { 12057 return match; 12058 } 12059 return matcher(params, match); 12060 } 12061 var original = stripDiacritics(data.text).toUpperCase(); 12062 var term = stripDiacritics(params.term).toUpperCase(); 12063 if (original.indexOf(term) > -1) { 12064 return data; 12065 } 12066 return null; 12067 } 12068 this.defaults = { 12069 amdLanguageBase: "./i18n/", 12070 autocomplete: "off", 12071 closeOnSelect: true, 12072 debug: false, 12073 dropdownAutoWidth: false, 12074 escapeMarkup: Utils.escapeMarkup, 12075 language: {}, 12076 matcher, 12077 minimumInputLength: 0, 12078 maximumInputLength: 0, 12079 maximumSelectionLength: 0, 12080 minimumResultsForSearch: 0, 12081 selectOnClose: false, 12082 scrollAfterSelect: false, 12083 sorter: function(data) { 12084 return data; 12085 }, 12086 templateResult: function(result) { 12087 return result.text; 12088 }, 12089 templateSelection: function(selection) { 12090 return selection.text; 12091 }, 12092 theme: "default", 12093 width: "resolve" 12094 }; 12095 }; 12096 Defaults.prototype.applyFromElement = function(options, $element) { 12097 var optionLanguage = options.language; 12098 var defaultLanguage = this.defaults.language; 12099 var elementLanguage = $element.prop("lang"); 12100 var parentLanguage = $element.closest("[lang]").prop("lang"); 12101 var languages = Array.prototype.concat.call( 12102 this._resolveLanguage(elementLanguage), 12103 this._resolveLanguage(optionLanguage), 12104 this._resolveLanguage(defaultLanguage), 12105 this._resolveLanguage(parentLanguage) 12106 ); 12107 options.language = languages; 12108 return options; 12109 }; 12110 Defaults.prototype._resolveLanguage = function(language) { 12111 if (!language) { 12112 return []; 12113 } 12114 if ($3.isEmptyObject(language)) { 12115 return []; 12116 } 12117 if ($3.isPlainObject(language)) { 12118 return [language]; 12119 } 12120 var languages; 12121 if (!Array.isArray(language)) { 12122 languages = [language]; 12123 } else { 12124 languages = language; 12125 } 12126 var resolvedLanguages = []; 12127 for (var l = 0; l < languages.length; l++) { 12128 resolvedLanguages.push(languages[l]); 12129 if (typeof languages[l] === "string" && languages[l].indexOf("-") > 0) { 12130 var languageParts = languages[l].split("-"); 12131 var baseLanguage = languageParts[0]; 12132 resolvedLanguages.push(baseLanguage); 12133 } 12134 } 12135 return resolvedLanguages; 12136 }; 12137 Defaults.prototype._processTranslations = function(languages, debug) { 12138 var translations2 = new Translation(); 12139 for (var l = 0; l < languages.length; l++) { 12140 var languageData = new Translation(); 12141 var language = languages[l]; 12142 if (typeof language === "string") { 12143 try { 12144 languageData = Translation.loadPath(language); 12145 } catch (e) { 12146 try { 12147 language = this.defaults.amdLanguageBase + language; 12148 languageData = Translation.loadPath(language); 12149 } catch (ex) { 12150 if (debug && window.console && console.warn) { 12151 console.warn( 12152 'Select2: The language file for "' + language + '" could not be automatically loaded. A fallback will be used instead.' 12153 ); 12154 } 12155 } 12156 } 12157 } else if ($3.isPlainObject(language)) { 12158 languageData = new Translation(language); 12159 } else { 12160 languageData = language; 12161 } 12162 translations2.extend(languageData); 12163 } 12164 return translations2; 12165 }; 12166 Defaults.prototype.set = function(key, value) { 12167 var camelKey = $3.camelCase(key); 12168 var data = {}; 12169 data[camelKey] = value; 12170 var convertedData = Utils._convertData(data); 12171 $3.extend(true, this.defaults, convertedData); 12172 }; 12173 var defaults = new Defaults(); 12174 return defaults; 12175 }); 12176 S22.define("select2/options", [ 12177 "jquery", 12178 "./defaults", 12179 "./utils" 12180 ], function($3, Defaults, Utils) { 12181 function Options(options, $element) { 12182 this.options = options; 12183 if ($element != null) { 12184 this.fromElement($element); 12185 } 12186 if ($element != null) { 12187 this.options = Defaults.applyFromElement(this.options, $element); 12188 } 12189 this.options = Defaults.apply(this.options); 12190 } 12191 Options.prototype.fromElement = function($e) { 12192 var excludedData = ["select2"]; 12193 if (this.options.multiple == null) { 12194 this.options.multiple = $e.prop("multiple"); 12195 } 12196 if (this.options.disabled == null) { 12197 this.options.disabled = $e.prop("disabled"); 12198 } 12199 if (this.options.autocomplete == null && $e.prop("autocomplete")) { 12200 this.options.autocomplete = $e.prop("autocomplete"); 12201 } 12202 if (this.options.dir == null) { 12203 if ($e.prop("dir")) { 12204 this.options.dir = $e.prop("dir"); 12205 } else if ($e.closest("[dir]").prop("dir")) { 12206 this.options.dir = $e.closest("[dir]").prop("dir"); 12207 } else { 12208 this.options.dir = "ltr"; 12209 } 12210 } 12211 $e.prop("disabled", this.options.disabled); 12212 $e.prop("multiple", this.options.multiple); 12213 if (Utils.GetData($e[0], "select2Tags")) { 12214 if (this.options.debug && window.console && console.warn) { 12215 console.warn( 12216 'Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.' 12217 ); 12218 } 12219 Utils.StoreData($e[0], "data", Utils.GetData($e[0], "select2Tags")); 12220 Utils.StoreData($e[0], "tags", true); 12221 } 12222 if (Utils.GetData($e[0], "ajaxUrl")) { 12223 if (this.options.debug && window.console && console.warn) { 12224 console.warn( 12225 "Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2." 12226 ); 12227 } 12228 $e.attr("ajax--url", Utils.GetData($e[0], "ajaxUrl")); 12229 Utils.StoreData($e[0], "ajax-Url", Utils.GetData($e[0], "ajaxUrl")); 12230 } 12231 var dataset = {}; 12232 function upperCaseLetter(_, letter) { 12233 return letter.toUpperCase(); 12234 } 12235 for (var attr = 0; attr < $e[0].attributes.length; attr++) { 12236 var attributeName = $e[0].attributes[attr].name; 12237 var prefix = "data-"; 12238 if (attributeName.substr(0, prefix.length) == prefix) { 12239 var dataName = attributeName.substring(prefix.length); 12240 var dataValue = Utils.GetData($e[0], dataName); 12241 var camelDataName = dataName.replace(/-([a-z])/g, upperCaseLetter); 12242 dataset[camelDataName] = dataValue; 12243 } 12244 } 12245 if ($3.fn.jquery && $3.fn.jquery.substr(0, 2) == "1." && $e[0].dataset) { 12246 dataset = $3.extend(true, {}, $e[0].dataset, dataset); 12247 } 12248 var data = $3.extend(true, {}, Utils.GetData($e[0]), dataset); 12249 data = Utils._convertData(data); 12250 for (var key in data) { 12251 if (excludedData.indexOf(key) > -1) { 12252 continue; 12253 } 12254 if ($3.isPlainObject(this.options[key])) { 12255 $3.extend(this.options[key], data[key]); 12256 } else { 12257 this.options[key] = data[key]; 12258 } 12259 } 12260 return this; 12261 }; 12262 Options.prototype.get = function(key) { 12263 return this.options[key]; 12264 }; 12265 Options.prototype.set = function(key, val) { 12266 this.options[key] = val; 12267 }; 12268 return Options; 12269 }); 12270 S22.define("select2/core", [ 12271 "jquery", 12272 "./options", 12273 "./utils", 12274 "./keys" 12275 ], function($3, Options, Utils, KEYS) { 12276 var Select2 = function($element, options) { 12277 if (Utils.GetData($element[0], "select2") != null) { 12278 Utils.GetData($element[0], "select2").destroy(); 12279 } 12280 this.$element = $element; 12281 this.id = this._generateId($element); 12282 options = options || {}; 12283 this.options = new Options(options, $element); 12284 Select2.__super__.constructor.call(this); 12285 var tabindex = $element.attr("tabindex") || 0; 12286 Utils.StoreData($element[0], "old-tabindex", tabindex); 12287 $element.attr("tabindex", "-1"); 12288 var DataAdapter = this.options.get("dataAdapter"); 12289 this.dataAdapter = new DataAdapter($element, this.options); 12290 var $container = this.render(); 12291 this._placeContainer($container); 12292 var SelectionAdapter = this.options.get("selectionAdapter"); 12293 this.selection = new SelectionAdapter($element, this.options); 12294 this.$selection = this.selection.render(); 12295 this.selection.position(this.$selection, $container); 12296 var DropdownAdapter = this.options.get("dropdownAdapter"); 12297 this.dropdown = new DropdownAdapter($element, this.options); 12298 this.$dropdown = this.dropdown.render(); 12299 this.dropdown.position(this.$dropdown, $container); 12300 var ResultsAdapter = this.options.get("resultsAdapter"); 12301 this.results = new ResultsAdapter($element, this.options, this.dataAdapter); 12302 this.$results = this.results.render(); 12303 this.results.position(this.$results, this.$dropdown); 12304 var self2 = this; 12305 this._bindAdapters(); 12306 this._registerDomEvents(); 12307 this._registerDataEvents(); 12308 this._registerSelectionEvents(); 12309 this._registerDropdownEvents(); 12310 this._registerResultsEvents(); 12311 this._registerEvents(); 12312 this.dataAdapter.current(function(initialData) { 12313 self2.trigger("selection:update", { 12314 data: initialData 12315 }); 12316 }); 12317 $element[0].classList.add("select2-hidden-accessible"); 12318 $element.attr("aria-hidden", "true"); 12319 this._syncAttributes(); 12320 Utils.StoreData($element[0], "select2", this); 12321 $element.data("select2", this); 12322 }; 12323 Utils.Extend(Select2, Utils.Observable); 12324 Select2.prototype._generateId = function($element) { 12325 var id = ""; 12326 if ($element.attr("id") != null) { 12327 id = $element.attr("id"); 12328 } else if ($element.attr("name") != null) { 12329 id = $element.attr("name") + "-" + Utils.generateChars(2); 12330 } else { 12331 id = Utils.generateChars(4); 12332 } 12333 id = id.replace(/(:|\.|\[|\]|,)/g, ""); 12334 id = "select2-" + id; 12335 return id; 12336 }; 12337 Select2.prototype._placeContainer = function($container) { 12338 $container.insertAfter(this.$element); 12339 var width = this._resolveWidth(this.$element, this.options.get("width")); 12340 if (width != null) { 12341 $container.css("width", width); 12342 } 12343 }; 12344 Select2.prototype._resolveWidth = function($element, method) { 12345 var WIDTH = /^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i; 12346 if (method == "resolve") { 12347 var styleWidth = this._resolveWidth($element, "style"); 12348 if (styleWidth != null) { 12349 return styleWidth; 12350 } 12351 return this._resolveWidth($element, "element"); 12352 } 12353 if (method == "element") { 12354 var elementWidth = $element.outerWidth(false); 12355 if (elementWidth <= 0) { 12356 return "auto"; 12357 } 12358 return elementWidth + "px"; 12359 } 12360 if (method == "style") { 12361 var style = $element.attr("style"); 12362 if (typeof style !== "string") { 12363 return null; 12364 } 12365 var attrs = style.split(";"); 12366 for (var i = 0, l = attrs.length; i < l; i = i + 1) { 12367 var attr = attrs[i].replace(/\s/g, ""); 12368 var matches = attr.match(WIDTH); 12369 if (matches !== null && matches.length >= 1) { 12370 return matches[1]; 12371 } 12372 } 12373 return null; 12374 } 12375 if (method == "computedstyle") { 12376 var computedStyle = window.getComputedStyle($element[0]); 12377 return computedStyle.width; 12378 } 12379 return method; 12380 }; 12381 Select2.prototype._bindAdapters = function() { 12382 this.dataAdapter.bind(this, this.$container); 12383 this.selection.bind(this, this.$container); 12384 this.dropdown.bind(this, this.$container); 12385 this.results.bind(this, this.$container); 12386 }; 12387 Select2.prototype._registerDomEvents = function() { 12388 var self2 = this; 12389 this.$element.on("change.select2", function() { 12390 self2.dataAdapter.current(function(data) { 12391 self2.trigger("selection:update", { 12392 data 12393 }); 12394 }); 12395 }); 12396 this.$element.on("focus.select2", function(evt) { 12397 self2.trigger("focus", evt); 12398 }); 12399 this._syncA = Utils.bind(this._syncAttributes, this); 12400 this._syncS = Utils.bind(this._syncSubtree, this); 12401 this._observer = new window.MutationObserver(function(mutations) { 12402 self2._syncA(); 12403 self2._syncS(mutations); 12404 }); 12405 this._observer.observe(this.$element[0], { 12406 attributes: true, 12407 childList: true, 12408 subtree: false 12409 }); 12410 }; 12411 Select2.prototype._registerDataEvents = function() { 12412 var self2 = this; 12413 this.dataAdapter.on("*", function(name, params) { 12414 self2.trigger(name, params); 12415 }); 12416 }; 12417 Select2.prototype._registerSelectionEvents = function() { 12418 var self2 = this; 12419 var nonRelayEvents = ["toggle", "focus"]; 12420 this.selection.on("toggle", function() { 12421 self2.toggleDropdown(); 12422 }); 12423 this.selection.on("focus", function(params) { 12424 self2.focus(params); 12425 }); 12426 this.selection.on("*", function(name, params) { 12427 if (nonRelayEvents.indexOf(name) !== -1) { 12428 return; 12429 } 12430 self2.trigger(name, params); 12431 }); 12432 }; 12433 Select2.prototype._registerDropdownEvents = function() { 12434 var self2 = this; 12435 this.dropdown.on("*", function(name, params) { 12436 self2.trigger(name, params); 12437 }); 12438 }; 12439 Select2.prototype._registerResultsEvents = function() { 12440 var self2 = this; 12441 this.results.on("*", function(name, params) { 12442 self2.trigger(name, params); 12443 }); 12444 }; 12445 Select2.prototype._registerEvents = function() { 12446 var self2 = this; 12447 this.on("open", function() { 12448 self2.$container[0].classList.add("select2-container--open"); 12449 }); 12450 this.on("close", function() { 12451 self2.$container[0].classList.remove("select2-container--open"); 12452 }); 12453 this.on("enable", function() { 12454 self2.$container[0].classList.remove("select2-container--disabled"); 12455 }); 12456 this.on("disable", function() { 12457 self2.$container[0].classList.add("select2-container--disabled"); 12458 }); 12459 this.on("blur", function() { 12460 self2.$container[0].classList.remove("select2-container--focus"); 12461 }); 12462 this.on("query", function(params) { 12463 if (!self2.isOpen()) { 12464 self2.trigger("open", {}); 12465 } 12466 this.dataAdapter.query(params, function(data) { 12467 self2.trigger("results:all", { 12468 data, 12469 query: params 12470 }); 12471 }); 12472 }); 12473 this.on("query:append", function(params) { 12474 this.dataAdapter.query(params, function(data) { 12475 self2.trigger("results:append", { 12476 data, 12477 query: params 12478 }); 12479 }); 12480 }); 12481 this.on("keypress", function(evt) { 12482 var key = evt.which; 12483 if (self2.isOpen()) { 12484 if (key === KEYS.ESC || key === KEYS.UP && evt.altKey) { 12485 self2.close(evt); 12486 evt.preventDefault(); 12487 } else if (key === KEYS.ENTER || key === KEYS.TAB) { 12488 self2.trigger("results:select", {}); 12489 evt.preventDefault(); 12490 } else if (key === KEYS.SPACE && evt.ctrlKey) { 12491 self2.trigger("results:toggle", {}); 12492 evt.preventDefault(); 12493 } else if (key === KEYS.UP) { 12494 self2.trigger("results:previous", {}); 12495 evt.preventDefault(); 12496 } else if (key === KEYS.DOWN) { 12497 self2.trigger("results:next", {}); 12498 evt.preventDefault(); 12499 } 12500 } else { 12501 if (key === KEYS.ENTER || key === KEYS.SPACE || key === KEYS.DOWN && evt.altKey) { 12502 self2.open(); 12503 evt.preventDefault(); 12504 } 12505 } 12506 }); 12507 }; 12508 Select2.prototype._syncAttributes = function() { 12509 this.options.set("disabled", this.$element.prop("disabled")); 12510 if (this.isDisabled()) { 12511 if (this.isOpen()) { 12512 this.close(); 12513 } 12514 this.trigger("disable", {}); 12515 } else { 12516 this.trigger("enable", {}); 12517 } 12518 }; 12519 Select2.prototype._isChangeMutation = function(mutations) { 12520 var self2 = this; 12521 if (mutations.addedNodes && mutations.addedNodes.length > 0) { 12522 for (var n = 0; n < mutations.addedNodes.length; n++) { 12523 var node = mutations.addedNodes[n]; 12524 if (node.selected) { 12525 return true; 12526 } 12527 } 12528 } else if (mutations.removedNodes && mutations.removedNodes.length > 0) { 12529 return true; 12530 } else if (Array.isArray(mutations)) { 12531 return mutations.some(function(mutation) { 12532 return self2._isChangeMutation(mutation); 12533 }); 12534 } 12535 return false; 12536 }; 12537 Select2.prototype._syncSubtree = function(mutations) { 12538 var changed = this._isChangeMutation(mutations); 12539 var self2 = this; 12540 if (changed) { 12541 this.dataAdapter.current(function(currentData) { 12542 self2.trigger("selection:update", { 12543 data: currentData 12544 }); 12545 }); 12546 } 12547 }; 12548 Select2.prototype.trigger = function(name, args) { 12549 var actualTrigger = Select2.__super__.trigger; 12550 var preTriggerMap = { 12551 "open": "opening", 12552 "close": "closing", 12553 "select": "selecting", 12554 "unselect": "unselecting", 12555 "clear": "clearing" 12556 }; 12557 if (args === void 0) { 12558 args = {}; 12559 } 12560 if (name in preTriggerMap) { 12561 var preTriggerName = preTriggerMap[name]; 12562 var preTriggerArgs = { 12563 prevented: false, 12564 name, 12565 args 12566 }; 12567 actualTrigger.call(this, preTriggerName, preTriggerArgs); 12568 if (preTriggerArgs.prevented) { 12569 args.prevented = true; 12570 return; 12571 } 12572 } 12573 actualTrigger.call(this, name, args); 12574 }; 12575 Select2.prototype.toggleDropdown = function() { 12576 if (this.isDisabled()) { 12577 return; 12578 } 12579 if (this.isOpen()) { 12580 this.close(); 12581 } else { 12582 this.open(); 12583 } 12584 }; 12585 Select2.prototype.open = function() { 12586 if (this.isOpen()) { 12587 return; 12588 } 12589 if (this.isDisabled()) { 12590 return; 12591 } 12592 this.trigger("query", {}); 12593 }; 12594 Select2.prototype.close = function(evt) { 12595 if (!this.isOpen()) { 12596 return; 12597 } 12598 this.trigger("close", { originalEvent: evt }); 12599 }; 12600 Select2.prototype.isEnabled = function() { 12601 return !this.isDisabled(); 12602 }; 12603 Select2.prototype.isDisabled = function() { 12604 return this.options.get("disabled"); 12605 }; 12606 Select2.prototype.isOpen = function() { 12607 return this.$container[0].classList.contains("select2-container--open"); 12608 }; 12609 Select2.prototype.hasFocus = function() { 12610 return this.$container[0].classList.contains("select2-container--focus"); 12611 }; 12612 Select2.prototype.focus = function(data) { 12613 if (this.hasFocus()) { 12614 return; 12615 } 12616 this.$container[0].classList.add("select2-container--focus"); 12617 this.trigger("focus", {}); 12618 }; 12619 Select2.prototype.enable = function(args) { 12620 if (this.options.get("debug") && window.console && console.warn) { 12621 console.warn( 12622 'Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.' 12623 ); 12624 } 12625 if (args == null || args.length === 0) { 12626 args = [true]; 12627 } 12628 var disabled = !args[0]; 12629 this.$element.prop("disabled", disabled); 12630 }; 12631 Select2.prototype.data = function() { 12632 if (this.options.get("debug") && arguments.length > 0 && window.console && console.warn) { 12633 console.warn( 12634 'Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.' 12635 ); 12636 } 12637 var data = []; 12638 this.dataAdapter.current(function(currentData) { 12639 data = currentData; 12640 }); 12641 return data; 12642 }; 12643 Select2.prototype.val = function(args) { 12644 if (this.options.get("debug") && window.console && console.warn) { 12645 console.warn( 12646 'Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.' 12647 ); 12648 } 12649 if (args == null || args.length === 0) { 12650 return this.$element.val(); 12651 } 12652 var newVal = args[0]; 12653 if (Array.isArray(newVal)) { 12654 newVal = newVal.map(function(obj) { 12655 return obj.toString(); 12656 }); 12657 } 12658 this.$element.val(newVal).trigger("input").trigger("change"); 12659 }; 12660 Select2.prototype.destroy = function() { 12661 Utils.RemoveData(this.$container[0]); 12662 this.$container.remove(); 12663 this._observer.disconnect(); 12664 this._observer = null; 12665 this._syncA = null; 12666 this._syncS = null; 12667 this.$element.off(".select2"); 12668 this.$element.attr( 12669 "tabindex", 12670 Utils.GetData(this.$element[0], "old-tabindex") 12671 ); 12672 this.$element[0].classList.remove("select2-hidden-accessible"); 12673 this.$element.attr("aria-hidden", "false"); 12674 Utils.RemoveData(this.$element[0]); 12675 this.$element.removeData("select2"); 12676 this.dataAdapter.destroy(); 12677 this.selection.destroy(); 12678 this.dropdown.destroy(); 12679 this.results.destroy(); 12680 this.dataAdapter = null; 12681 this.selection = null; 12682 this.dropdown = null; 12683 this.results = null; 12684 }; 12685 Select2.prototype.render = function() { 12686 var $container = $3( 12687 '<span class="select2 select2-container"><span class="selection"></span><span class="dropdown-wrapper" aria-hidden="true"></span></span>' 12688 ); 12689 $container.attr("dir", this.options.get("dir")); 12690 this.$container = $container; 12691 this.$container[0].classList.add("select2-container--" + this.options.get("theme")); 12692 Utils.StoreData($container[0], "element", this.$element); 12693 return $container; 12694 }; 12695 return Select2; 12696 }); 12697 S22.define("jquery-mousewheel", [ 12698 "jquery" 12699 ], function($3) { 12700 return $3; 12701 }); 12702 S22.define("jquery.select2", [ 12703 "jquery", 12704 "jquery-mousewheel", 12705 "./select2/core", 12706 "./select2/defaults", 12707 "./select2/utils" 12708 ], function($3, _, Select2, Defaults, Utils) { 12709 if ($3.fn.select2 == null) { 12710 var thisMethods = ["open", "close", "destroy"]; 12711 $3.fn.select2 = function(options) { 12712 options = options || {}; 12713 if (typeof options === "object") { 12714 this.each(function() { 12715 var instanceOptions = $3.extend(true, {}, options); 12716 var instance = new Select2($3(this), instanceOptions); 12717 }); 12718 return this; 12719 } else if (typeof options === "string") { 12720 var ret; 12721 var args = Array.prototype.slice.call(arguments, 1); 12722 this.each(function() { 12723 var instance = Utils.GetData(this, "select2"); 12724 if (instance == null && window.console && console.error) { 12725 console.error( 12726 "The select2('" + options + "') method was called on an element that is not using Select2." 12727 ); 12728 } 12729 ret = instance[options].apply(instance, args); 12730 }); 12731 if (thisMethods.indexOf(options) > -1) { 12732 return this; 12733 } 12734 return ret; 12735 } else { 12736 throw new Error("Invalid arguments for Select2: " + options); 12737 } 12738 }; 12739 } 12740 if ($3.fn.select2.defaults == null) { 12741 $3.fn.select2.defaults = Defaults; 12742 } 12743 return Select2; 12744 }); 12745 return { 12746 define: S22.define, 12747 require: S22.require 12748 }; 12749 })(); 12750 var select22 = S2.require("jquery.select2"); 12751 jQuery2.fn.select2.amd = S2; 12752 return select22; 12753 }); 12754 } 12755 }); 12756 12757
vendor: 161,460 bytes, lines 12757-16926
12757// node_modules/moment/moment.js 12758 var require_moment = __commonJS({ 12759 "node_modules/moment/moment.js"(exports, module) { 12760 init_esbuild_shims(); 12761 (function(global2, factory) { 12762 typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define(factory) : global2.moment = factory(); 12763 })(exports, (function() { 12764 "use strict"; 12765 var hookCallback; 12766 function hooks() { 12767 return hookCallback.apply(null, arguments); 12768 } 12769 function setHookCallback(callback) { 12770 hookCallback = callback; 12771 } 12772 function isArray(input) { 12773 return input instanceof Array || Object.prototype.toString.call(input) === "[object Array]"; 12774 } 12775 function isObject(input) { 12776 return input != null && Object.prototype.toString.call(input) === "[object Object]"; 12777 } 12778 function hasOwnProp(a, b) { 12779 return Object.prototype.hasOwnProperty.call(a, b); 12780 } 12781 function isObjectEmpty(obj) { 12782 if (Object.getOwnPropertyNames) { 12783 return Object.getOwnPropertyNames(obj).length === 0; 12784 } else { 12785 var k; 12786 for (k in obj) { 12787 if (hasOwnProp(obj, k)) { 12788 return false; 12789 } 12790 } 12791 return true; 12792 } 12793 } 12794 function isUndefined(input) { 12795 return input === void 0; 12796 } 12797 function isNumber(input) { 12798 return typeof input === "number" || Object.prototype.toString.call(input) === "[object Number]"; 12799 } 12800 function isDate(input) { 12801 return input instanceof Date || Object.prototype.toString.call(input) === "[object Date]"; 12802 } 12803 function map(arr, fn) { 12804 var res = [], i, arrLen = arr.length; 12805 for (i = 0; i < arrLen; ++i) { 12806 res.push(fn(arr[i], i)); 12807 } 12808 return res; 12809 } 12810 function extend(a, b) { 12811 for (var i in b) { 12812 if (hasOwnProp(b, i)) { 12813 a[i] = b[i]; 12814 } 12815 } 12816 if (hasOwnProp(b, "toString")) { 12817 a.toString = b.toString; 12818 } 12819 if (hasOwnProp(b, "valueOf")) { 12820 a.valueOf = b.valueOf; 12821 } 12822 return a; 12823 } 12824 function createUTC(input, format2, locale2, strict) { 12825 return createLocalOrUTC(input, format2, locale2, strict, true).utc(); 12826 } 12827 function defaultParsingFlags() { 12828 return { 12829 empty: false, 12830 unusedTokens: [], 12831 unusedInput: [], 12832 overflow: -2, 12833 charsLeftOver: 0, 12834 nullInput: false, 12835 invalidEra: null, 12836 invalidMonth: null, 12837 invalidOffset: null, 12838 invalidFormat: false, 12839 userInvalidated: false, 12840 iso: false, 12841 parsedDateParts: [], 12842 era: null, 12843 meridiem: null, 12844 rfc2822: false, 12845 weekdayMismatch: false 12846 }; 12847 } 12848 function getParsingFlags(m) { 12849 if (m._pf == null) { 12850 m._pf = defaultParsingFlags(); 12851 } 12852 return m._pf; 12853 } 12854 var some; 12855 if (Array.prototype.some) { 12856 some = Array.prototype.some; 12857 } else { 12858 some = function(fun) { 12859 var t2 = Object(this), len = t2.length >>> 0, i; 12860 for (i = 0; i < len; i++) { 12861 if (i in t2 && fun.call(this, t2[i], i, t2)) { 12862 return true; 12863 } 12864 } 12865 return false; 12866 }; 12867 } 12868 function isValid$2(m) { 12869 var flags = null, parsedParts = false, isNowValid = m._d && !isNaN(m._d.getTime()); 12870 if (isNowValid) { 12871 flags = getParsingFlags(m); 12872 parsedParts = some.call(flags.parsedDateParts, function(i) { 12873 return i != null; 12874 }); 12875 isNowValid = flags.overflow < 0 && !flags.empty && !flags.invalidEra && !flags.invalidMonth && !flags.invalidOffset && !flags.invalidWeekday && !flags.weekdayMismatch && !flags.nullInput && !flags.invalidFormat && !flags.userInvalidated && (!flags.meridiem || flags.meridiem && parsedParts); 12876 if (m._strict) { 12877 isNowValid = isNowValid && flags.charsLeftOver === 0 && flags.unusedTokens.length === 0 && flags.bigHour === void 0; 12878 } 12879 } 12880 if (Object.isFrozen == null || !Object.isFrozen(m)) { 12881 m._isValid = isNowValid; 12882 } else { 12883 return isNowValid; 12884 } 12885 return m._isValid; 12886 } 12887 function createInvalid$1(flags) { 12888 var m = createUTC(NaN); 12889 if (flags != null) { 12890 extend(getParsingFlags(m), flags); 12891 } else { 12892 getParsingFlags(m).userInvalidated = true; 12893 } 12894 return m; 12895 } 12896 var momentProperties = hooks.momentProperties = [], updateInProgress = false; 12897 function copyConfig(to2, from2) { 12898 var i, prop, val, momentPropertiesLen = momentProperties.length; 12899 if (!isUndefined(from2._isAMomentObject)) { 12900 to2._isAMomentObject = from2._isAMomentObject; 12901 } 12902 if (!isUndefined(from2._i)) { 12903 to2._i = from2._i; 12904 } 12905 if (!isUndefined(from2._f)) { 12906 to2._f = from2._f; 12907 } 12908 if (!isUndefined(from2._l)) { 12909 to2._l = from2._l; 12910 } 12911 if (!isUndefined(from2._strict)) { 12912 to2._strict = from2._strict; 12913 } 12914 if (!isUndefined(from2._tzm)) { 12915 to2._tzm = from2._tzm; 12916 } 12917 if (!isUndefined(from2._isUTC)) { 12918 to2._isUTC = from2._isUTC; 12919 } 12920 if (!isUndefined(from2._offset)) { 12921 to2._offset = from2._offset; 12922 } 12923 if (!isUndefined(from2._pf)) { 12924 to2._pf = getParsingFlags(from2); 12925 } 12926 if (!isUndefined(from2._locale)) { 12927 to2._locale = from2._locale; 12928 } 12929 if (momentPropertiesLen > 0) { 12930 for (i = 0; i < momentPropertiesLen; i++) { 12931 prop = momentProperties[i]; 12932 val = from2[prop]; 12933 if (!isUndefined(val)) { 12934 to2[prop] = val; 12935 } 12936 } 12937 } 12938 return to2; 12939 } 12940 function Moment(config) { 12941 copyConfig(this, config); 12942 this._d = new Date(config._d != null ? config._d.getTime() : NaN); 12943 if (!this.isValid()) { 12944 this._d = /* @__PURE__ */ new Date(NaN); 12945 } 12946 if (updateInProgress === false) { 12947 updateInProgress = true; 12948 hooks.updateOffset(this); 12949 updateInProgress = false; 12950 } 12951 } 12952 function isMoment(obj) { 12953 return obj instanceof Moment || obj != null && obj._isAMomentObject != null; 12954 } 12955 function warn(msg) { 12956 if (hooks.suppressDeprecationWarnings === false && typeof console !== "undefined" && console.warn) { 12957 console.warn("Deprecation warning: " + msg); 12958 } 12959 } 12960 function deprecate(msg, fn) { 12961 var firstTime = true; 12962 return extend(function() { 12963 if (hooks.deprecationHandler != null) { 12964 hooks.deprecationHandler(null, msg); 12965 } 12966 if (firstTime) { 12967 var args = [], arg, i, key, argLen = arguments.length; 12968 for (i = 0; i < argLen; i++) { 12969 arg = ""; 12970 if (typeof arguments[i] === "object") { 12971 arg += "\n[" + i + "] "; 12972 for (key in arguments[0]) { 12973 if (hasOwnProp(arguments[0], key)) { 12974 arg += key + ": " + arguments[0][key] + ", "; 12975 } 12976 } 12977 arg = arg.slice(0, -2); 12978 } else { 12979 arg = arguments[i]; 12980 } 12981 args.push(arg); 12982 } 12983 warn( 12984 msg + "\nArguments: " + Array.prototype.slice.call(args).join("") + "\n" + new Error().stack 12985 ); 12986 firstTime = false; 12987 } 12988 return fn.apply(this, arguments); 12989 }, fn); 12990 } 12991 var deprecations = {}; 12992 function deprecateSimple(name, msg) { 12993 if (hooks.deprecationHandler != null) { 12994 hooks.deprecationHandler(name, msg); 12995 } 12996 if (!deprecations[name]) { 12997 warn(msg + "\n" + new Error().stack); 12998 deprecations[name] = true; 12999 } 13000 } 13001 hooks.suppressDeprecationWarnings = false; 13002 hooks.deprecationHandler = null; 13003 function isFunction(input) { 13004 return typeof Function !== "undefined" && input instanceof Function || Object.prototype.toString.call(input) === "[object Function]"; 13005 } 13006 var aliases = { 13007 D: "date", 13008 dates: "date", 13009 date: "date", 13010 d: "day", 13011 days: "day", 13012 day: "day", 13013 e: "weekday", 13014 weekdays: "weekday", 13015 weekday: "weekday", 13016 E: "isoWeekday", 13017 isoweekdays: "isoWeekday", 13018 isoweekday: "isoWeekday", 13019 DDD: "dayOfYear", 13020 dayofyears: "dayOfYear", 13021 dayofyear: "dayOfYear", 13022 h: "hour", 13023 hours: "hour", 13024 hour: "hour", 13025 ms: "millisecond", 13026 milliseconds: "millisecond", 13027 millisecond: "millisecond", 13028 m: "minute", 13029 minutes: "minute", 13030 minute: "minute", 13031 M: "month", 13032 months: "month", 13033 month: "month", 13034 Q: "quarter", 13035 quarters: "quarter", 13036 quarter: "quarter", 13037 s: "second", 13038 seconds: "second", 13039 second: "second", 13040 gg: "weekYear", 13041 weekyears: "weekYear", 13042 weekyear: "weekYear", 13043 GG: "isoWeekYear", 13044 isoweekyears: "isoWeekYear", 13045 isoweekyear: "isoWeekYear", 13046 w: "week", 13047 weeks: "week", 13048 week: "week", 13049 W: "isoWeek", 13050 isoweeks: "isoWeek", 13051 isoweek: "isoWeek", 13052 y: "year", 13053 years: "year", 13054 year: "year" 13055 }; 13056 function normalizeUnits(units) { 13057 return typeof units === "string" ? aliases[units] || aliases[units.toLowerCase()] : void 0; 13058 } 13059 function normalizeObjectUnits(inputObject) { 13060 var normalizedInput = {}, normalizedProp, prop; 13061 for (prop in inputObject) { 13062 if (hasOwnProp(inputObject, prop)) { 13063 normalizedProp = normalizeUnits(prop); 13064 if (normalizedProp) { 13065 normalizedInput[normalizedProp] = inputObject[prop]; 13066 } 13067 } 13068 } 13069 return normalizedInput; 13070 } 13071 var priorities = { 13072 date: 9, 13073 day: 11, 13074 weekday: 11, 13075 isoWeekday: 11, 13076 dayOfYear: 4, 13077 hour: 13, 13078 millisecond: 16, 13079 minute: 14, 13080 month: 8, 13081 quarter: 7, 13082 second: 15, 13083 weekYear: 1, 13084 isoWeekYear: 1, 13085 week: 5, 13086 isoWeek: 5, 13087 year: 1 13088 }; 13089 function getPrioritizedUnits(unitsObj) { 13090 var units = [], u; 13091 for (u in unitsObj) { 13092 if (hasOwnProp(unitsObj, u)) { 13093 units.push({ unit: u, priority: priorities[u] }); 13094 } 13095 } 13096 units.sort(function(a, b) { 13097 return a.priority - b.priority; 13098 }); 13099 return units; 13100 } 13101 function zeroFill(number, targetLength, forceSign) { 13102 var absNumber = "" + Math.abs(number), zerosToFill = targetLength - absNumber.length, sign2 = number >= 0; 13103 return (sign2 ? forceSign ? "+" : "" : "-") + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber; 13104 } 13105 var formattingTokens = /(\[[^\[]*\])|(\\e)|(\\)?(eHHmm|[Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g, localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, formatFunctions = {}, formatTokenFunctions = {}; 13106 function addFormatToken(token2, padded, ordinal2, callback) { 13107 var func = callback; 13108 if (typeof callback === "string") { 13109 func = function() { 13110 return this[callback](); 13111 }; 13112 } 13113 if (token2) { 13114 formatTokenFunctions[token2] = func; 13115 } 13116 if (padded) { 13117 formatTokenFunctions[padded[0]] = function() { 13118 return zeroFill(func.apply(this, arguments), padded[1], padded[2]); 13119 }; 13120 } 13121 if (ordinal2) { 13122 formatTokenFunctions[ordinal2] = function() { 13123 return this.localeData().ordinal( 13124 func.apply(this, arguments), 13125 token2 13126 ); 13127 }; 13128 } 13129 } 13130 function removeFormattingTokens(input) { 13131 if (input.match(/\[[\s\S]/)) { 13132 return input.replace(/^\[|\]$/g, ""); 13133 } 13134 return input.replace(/\\/g, ""); 13135 } 13136 function makeFormatFunction(format2) { 13137 var array = format2.match(formattingTokens), i, length; 13138 for (i = 0, length = array.length; i < length; i++) { 13139 if (formatTokenFunctions[array[i]]) { 13140 array[i] = formatTokenFunctions[array[i]]; 13141 } else { 13142 array[i] = removeFormattingTokens(array[i]); 13143 } 13144 } 13145 return function(mom) { 13146 var output = "", i2; 13147 for (i2 = 0; i2 < length; i2++) { 13148 output += isFunction(array[i2]) ? array[i2].call(mom, format2) : array[i2]; 13149 } 13150 return output; 13151 }; 13152 } 13153 function formatMoment(m, format2) { 13154 if (!m.isValid()) { 13155 return m.localeData().invalidDate(); 13156 } 13157 format2 = expandFormat(format2, m.localeData()); 13158 var cacheKey = "$" + format2; 13159 if (!hasOwnProp(formatFunctions, cacheKey)) { 13160 formatFunctions[cacheKey] = makeFormatFunction(format2); 13161 } 13162 return formatFunctions[cacheKey](m); 13163 } 13164 function expandFormat(format2, locale2) { 13165 var i = 5; 13166 function replaceLongDateFormatTokens(input) { 13167 return locale2.longDateFormat(input) || input; 13168 } 13169 localFormattingTokens.lastIndex = 0; 13170 while (i >= 0 && localFormattingTokens.test(format2)) { 13171 format2 = format2.replace( 13172 localFormattingTokens, 13173 replaceLongDateFormatTokens 13174 ); 13175 localFormattingTokens.lastIndex = 0; 13176 i -= 1; 13177 } 13178 return format2; 13179 } 13180 var match1 = /\d/, match2 = /\d\d/, match3 = /\d{3}/, match4 = /\d{4}/, match6 = /[+-]?\d{6}/, match1to2 = /\d\d?/, match3to4 = /\d\d\d\d?/, match5to6 = /\d\d\d\d\d\d?/, match1to3 = /\d{1,3}/, match1to4 = /\d{1,4}/, match1to6 = /[+-]?\d{1,6}/, matchUnsigned = /\d+/, matchSigned = /[+-]?\d+/, matchOffset = /Z|[+-]\d\d:?\d\d/gi, matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi, matchTimestamp = /[+-]?\d+(\.\d{1,3})?/, matchWord = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i, match1to2NoLeadingZero = /^[1-9]\d?/, match1to2HasZero = /^([1-9]\d|\d)/, regexes; 13181 regexes = {}; 13182 function addRegexToken(token2, regex, strictRegex) { 13183 regexes[token2] = isFunction(regex) ? regex : function(isStrict, localeData2) { 13184 return isStrict && strictRegex ? strictRegex : regex; 13185 }; 13186 } 13187 function getParseRegexForToken(token2, config) { 13188 if (!hasOwnProp(regexes, token2)) { 13189 return new RegExp(unescapeFormat(token2)); 13190 } 13191 return regexes[token2](config._strict, config._locale); 13192 } 13193 function unescapeFormat(s) { 13194 return regexEscape( 13195 s.replace("\\", "").replace( 13196 /\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, 13197 function(matched, p1, p2, p3, p4) { 13198 return p1 || p2 || p3 || p4; 13199 } 13200 ) 13201 ); 13202 } 13203 function regexEscape(s) { 13204 return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&"); 13205 } 13206 function absFloor(number) { 13207 if (number < 0) { 13208 return Math.ceil(number) || 0; 13209 } else { 13210 return Math.floor(number); 13211 } 13212 } 13213 function toInt(argumentForCoercion) { 13214 var coercedNumber = +argumentForCoercion, value = 0; 13215 if (coercedNumber !== 0 && isFinite(coercedNumber)) { 13216 value = absFloor(coercedNumber); 13217 } 13218 return value; 13219 } 13220 var tokens = {}; 13221 function addParseToken(token2, callback) { 13222 var i, func = callback, tokenLen; 13223 if (typeof token2 === "string") { 13224 token2 = [token2]; 13225 } 13226 if (isNumber(callback)) { 13227 func = function(input, array) { 13228 array[callback] = toInt(input); 13229 }; 13230 } 13231 tokenLen = token2.length; 13232 for (i = 0; i < tokenLen; i++) { 13233 tokens[token2[i]] = func; 13234 } 13235 } 13236 function addWeekParseToken(token2, callback) { 13237 addParseToken(token2, function(input, array, config, token3) { 13238 config._w = config._w || {}; 13239 callback(input, config._w, config, token3); 13240 }); 13241 } 13242 function addTimeToArrayFromToken(token2, input, config) { 13243 if (input != null && hasOwnProp(tokens, token2)) { 13244 tokens[token2](input, config._a, config, token2); 13245 } 13246 } 13247 function isLeapYear(year) { 13248 return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0; 13249 } 13250 var YEAR = 0, MONTH = 1, DATE = 2, HOUR = 3, MINUTE = 4, SECOND = 5, MILLISECOND = 6, WEEK = 7, WEEKDAY = 8; 13251 addFormatToken("Y", 0, 0, function() { 13252 var y = this.year(); 13253 return y <= 9999 ? zeroFill(y, 4) : "+" + y; 13254 }); 13255 addFormatToken(0, ["YY", 2], 0, function() { 13256 return this.year() % 100; 13257 }); 13258 addFormatToken(0, ["YYYY", 4], 0, "year"); 13259 addFormatToken(0, ["YYYYY", 5], 0, "year"); 13260 addFormatToken(0, ["YYYYYY", 6, true], 0, "year"); 13261 addRegexToken("Y", matchSigned); 13262 addRegexToken("YY", match1to2, match2); 13263 addRegexToken("YYYY", match1to4, match4); 13264 addRegexToken("YYYYY", match1to6, match6); 13265 addRegexToken("YYYYYY", match1to6, match6); 13266 addParseToken(["YYYYY", "YYYYYY"], YEAR); 13267 addParseToken("YYYY", function(input, array) { 13268 array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input); 13269 }); 13270 addParseToken("YY", function(input, array) { 13271 array[YEAR] = hooks.parseTwoDigitYear(input); 13272 }); 13273 addParseToken("Y", function(input, array) { 13274 array[YEAR] = parseInt(input, 10); 13275 }); 13276 function daysInYear(year) { 13277 return isLeapYear(year) ? 366 : 365; 13278 } 13279 hooks.parseTwoDigitYear = function(input) { 13280 return toInt(input) + (toInt(input) > 68 ? 1900 : 2e3); 13281 }; 13282 var getSetYear = makeGetSet("FullYear", true); 13283 function getIsLeapYear() { 13284 return isLeapYear(this.year()); 13285 } 13286 function makeGetSet(unit, keepTime) { 13287 return function(value) { 13288 if (value != null) { 13289 set$1(this, unit, value); 13290 hooks.updateOffset(this, keepTime); 13291 return this; 13292 } else { 13293 return get$2(this, unit); 13294 } 13295 }; 13296 } 13297 function get$2(mom, unit) { 13298 if (!mom.isValid()) { 13299 return NaN; 13300 } 13301 var d = mom._d, isUTC = mom._isUTC; 13302 switch (unit) { 13303 case "Milliseconds": 13304 return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds(); 13305 case "Seconds": 13306 return isUTC ? d.getUTCSeconds() : d.getSeconds(); 13307 case "Minutes": 13308 return isUTC ? d.getUTCMinutes() : d.getMinutes(); 13309 case "Hours": 13310 return isUTC ? d.getUTCHours() : d.getHours(); 13311 case "Date": 13312 return isUTC ? d.getUTCDate() : d.getDate(); 13313 case "Day": 13314 return isUTC ? d.getUTCDay() : d.getDay(); 13315 case "Month": 13316 return isUTC ? d.getUTCMonth() : d.getMonth(); 13317 case "FullYear": 13318 return isUTC ? d.getUTCFullYear() : d.getFullYear(); 13319 default: 13320 return NaN; 13321 } 13322 } 13323 function set$1(mom, unit, value) { 13324 var d, isUTC, year, month, date; 13325 if (!mom.isValid() || isNaN(value)) { 13326 return; 13327 } 13328 d = mom._d; 13329 isUTC = mom._isUTC; 13330 switch (unit) { 13331 case "Milliseconds": 13332 return void (isUTC ? d.setUTCMilliseconds(value) : d.setMilliseconds(value)); 13333 case "Seconds": 13334 return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value)); 13335 case "Minutes": 13336 return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value)); 13337 case "Hours": 13338 return void (isUTC ? d.setUTCHours(value) : d.setHours(value)); 13339 case "Date": 13340 return void (isUTC ? d.setUTCDate(value) : d.setDate(value)); 13341 // case 'Day': // Not real 13342 // return void (isUTC ? d.setUTCDay(value) : d.setDay(value)); 13343 // case 'Month': // Not used because we need to pass two variables 13344 // return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value)); 13345 case "FullYear": 13346 break; 13347 // See below ... 13348 default: 13349 return; 13350 } 13351 year = value; 13352 month = mom.month(); 13353 date = mom.date(); 13354 date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date; 13355 void (isUTC ? d.setUTCFullYear(year, month, date) : d.setFullYear(year, month, date)); 13356 } 13357 function stringGet(units) { 13358 units = normalizeUnits(units); 13359 if (isFunction(this[units])) { 13360 return this[units](); 13361 } 13362 return this; 13363 } 13364 function stringSet(units, value) { 13365 if (typeof units === "object") { 13366 units = normalizeObjectUnits(units); 13367 var prioritized = getPrioritizedUnits(units), i, prioritizedLen = prioritized.length; 13368 for (i = 0; i < prioritizedLen; i++) { 13369 this[prioritized[i].unit](units[prioritized[i].unit]); 13370 } 13371 } else { 13372 units = normalizeUnits(units); 13373 if (isFunction(this[units])) { 13374 return this[units](value); 13375 } 13376 } 13377 return this; 13378 } 13379 function mod$1(n, x) { 13380 return (n % x + x) % x; 13381 } 13382 var indexOf2; 13383 if (Array.prototype.indexOf) { 13384 indexOf2 = Array.prototype.indexOf; 13385 } else { 13386 indexOf2 = function(o) { 13387 var i; 13388 for (i = 0; i < this.length; ++i) { 13389 if (this[i] === o) { 13390 return i; 13391 } 13392 } 13393 return -1; 13394 }; 13395 } 13396 function daysInMonth(year, month) { 13397 if (isNaN(year) || isNaN(month)) { 13398 return NaN; 13399 } 13400 var modMonth = mod$1(month, 12); 13401 year += (month - modMonth) / 12; 13402 return modMonth === 1 ? isLeapYear(year) ? 29 : 28 : 31 - modMonth % 7 % 2; 13403 } 13404 addFormatToken("M", ["MM", 2], "Mo", function() { 13405 return this.month() + 1; 13406 }); 13407 addFormatToken("MMM", 0, 0, function(format2) { 13408 return this.localeData().monthsShort(this, format2); 13409 }); 13410 addFormatToken("MMMM", 0, 0, function(format2) { 13411 return this.localeData().months(this, format2); 13412 }); 13413 addRegexToken("M", match1to2, match1to2NoLeadingZero); 13414 addRegexToken("MM", match1to2, match2); 13415 addRegexToken("MMM", function(isStrict, locale2) { 13416 return locale2.monthsShortRegex(isStrict); 13417 }); 13418 addRegexToken("MMMM", function(isStrict, locale2) { 13419 return locale2.monthsRegex(isStrict); 13420 }); 13421 addParseToken(["M", "MM"], function(input, array) { 13422 array[MONTH] = toInt(input) - 1; 13423 }); 13424 addParseToken(["MMM", "MMMM"], function(input, array, config, token2) { 13425 var month = config._locale.monthsParse(input, token2, config._strict); 13426 if (month != null) { 13427 array[MONTH] = month; 13428 } else { 13429 getParsingFlags(config).invalidMonth = input; 13430 } 13431 }); 13432 var defaultLocaleMonths = "January_February_March_April_May_June_July_August_September_October_November_December".split( 13433 "_" 13434 ), defaultLocaleMonthsShort = "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/, defaultMonthsShortRegex = matchWord, defaultMonthsRegex = matchWord, monthsParseProperties = [ 13435 "monthsParse", 13436 "longMonthsParse", 13437 "shortMonthsParse", 13438 "monthsRegex", 13439 "monthsShortRegex", 13440 "monthsStrictRegex", 13441 "monthsShortStrictRegex" 13442 ]; 13443 function clearMonthsParseCache(locale2, config) { 13444 var i, prop; 13445 for (i = 0; i < monthsParseProperties.length; i++) { 13446 prop = monthsParseProperties[i]; 13447 if (!hasOwnProp(config, prop)) { 13448 delete locale2["_" + prop]; 13449 } 13450 } 13451 } 13452 function localeMonths(m, format2) { 13453 if (!m) { 13454 return isArray(this._months) ? this._months : this._months["standalone"]; 13455 } 13456 return isArray(this._months) ? this._months[m.month()] : this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format2) ? "format" : "standalone"][m.month()]; 13457 } 13458 function localeMonthsShort(m, format2) { 13459 if (!m) { 13460 return isArray(this._monthsShort) ? this._monthsShort : this._monthsShort["standalone"]; 13461 } 13462 return isArray(this._monthsShort) ? this._monthsShort[m.month()] : this._monthsShort[MONTHS_IN_FORMAT.test(format2) ? "format" : "standalone"][m.month()]; 13463 } 13464 function handleStrictParse$1(monthName, format2, strict) { 13465 var i, ii, mom, llc = monthName.toLocaleLowerCase(); 13466 if (!this._monthsParse) { 13467 this._monthsParse = []; 13468 this._longMonthsParse = []; 13469 this._shortMonthsParse = []; 13470 for (i = 0; i < 12; ++i) { 13471 mom = createUTC([2e3, i]); 13472 this._shortMonthsParse[i] = this.monthsShort( 13473 mom, 13474 "" 13475 ).toLocaleLowerCase(); 13476 this._longMonthsParse[i] = this.months(mom, "").toLocaleLowerCase(); 13477 } 13478 } 13479 if (strict) { 13480 if (format2 === "MMM") { 13481 ii = indexOf2.call(this._shortMonthsParse, llc); 13482 return ii !== -1 ? ii : null; 13483 } else { 13484 ii = indexOf2.call(this._longMonthsParse, llc); 13485 return ii !== -1 ? ii : null; 13486 } 13487 } else { 13488 if (format2 === "MMM") { 13489 ii = indexOf2.call(this._shortMonthsParse, llc); 13490 if (ii !== -1) { 13491 return ii; 13492 } 13493 ii = indexOf2.call(this._longMonthsParse, llc); 13494 return ii !== -1 ? ii : null; 13495 } else { 13496 ii = indexOf2.call(this._longMonthsParse, llc); 13497 if (ii !== -1) { 13498 return ii; 13499 } 13500 ii = indexOf2.call(this._shortMonthsParse, llc); 13501 return ii !== -1 ? ii : null; 13502 } 13503 } 13504 } 13505 function localeMonthsParse(monthName, format2, strict) { 13506 var i, mom, regex; 13507 if (this._monthsParseExact) { 13508 return handleStrictParse$1.call(this, monthName, format2, strict); 13509 } 13510 if (!this._monthsParse) { 13511 this._monthsParse = []; 13512 this._longMonthsParse = []; 13513 this._shortMonthsParse = []; 13514 } 13515 for (i = 0; i < 12; i++) { 13516 mom = createUTC([2e3, i]); 13517 if (strict && !this._longMonthsParse[i]) { 13518 this._longMonthsParse[i] = new RegExp( 13519 "^" + this.months(mom, "").replace(".", "") + "$", 13520 "i" 13521 ); 13522 this._shortMonthsParse[i] = new RegExp( 13523 "^" + this.monthsShort(mom, "").replace(".", "") + "$", 13524 "i" 13525 ); 13526 } 13527 if (!strict && !this._monthsParse[i]) { 13528 regex = "^" + this.months(mom, "") + "|^" + this.monthsShort(mom, ""); 13529 this._monthsParse[i] = new RegExp(regex.replace(".", ""), "i"); 13530 } 13531 if (strict && format2 === "MMMM" && this._longMonthsParse[i].test(monthName)) { 13532 return i; 13533 } else if (strict && format2 === "MMM" && this._shortMonthsParse[i].test(monthName)) { 13534 return i; 13535 } else if (!strict && this._monthsParse[i].test(monthName)) { 13536 return i; 13537 } 13538 } 13539 } 13540 function setMonth(mom, value) { 13541 if (!mom.isValid()) { 13542 return mom; 13543 } 13544 if (typeof value === "string") { 13545 if (/^\d+$/.test(value)) { 13546 value = toInt(value); 13547 } else { 13548 value = mom.localeData().monthsParse(value); 13549 if (!isNumber(value)) { 13550 return mom; 13551 } 13552 } 13553 } 13554 var month = value, date = mom.date(); 13555 date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month)); 13556 void (mom._isUTC ? mom._d.setUTCMonth(month, date) : mom._d.setMonth(month, date)); 13557 return mom; 13558 } 13559 function getSetMonth(value) { 13560 if (value != null) { 13561 setMonth(this, value); 13562 hooks.updateOffset(this, true); 13563 return this; 13564 } else { 13565 return get$2(this, "Month"); 13566 } 13567 } 13568 function getDaysInMonth() { 13569 return daysInMonth(this.year(), this.month()); 13570 } 13571 function monthsShortRegex(isStrict) { 13572 if (this._monthsParseExact) { 13573 if (!hasOwnProp(this, "_monthsRegex")) { 13574 computeMonthsParse.call(this); 13575 } 13576 if (isStrict) { 13577 return this._monthsShortStrictRegex; 13578 } else { 13579 return this._monthsShortRegex; 13580 } 13581 } else { 13582 if (!hasOwnProp(this, "_monthsShortRegex")) { 13583 this._monthsShortRegex = defaultMonthsShortRegex; 13584 } 13585 return this._monthsShortStrictRegex && isStrict ? this._monthsShortStrictRegex : this._monthsShortRegex; 13586 } 13587 } 13588 function monthsRegex(isStrict) { 13589 if (this._monthsParseExact) { 13590 if (!hasOwnProp(this, "_monthsRegex")) { 13591 computeMonthsParse.call(this); 13592 } 13593 if (isStrict) { 13594 return this._monthsStrictRegex; 13595 } else { 13596 return this._monthsRegex; 13597 } 13598 } else { 13599 if (!hasOwnProp(this, "_monthsRegex")) { 13600 this._monthsRegex = defaultMonthsRegex; 13601 } 13602 return this._monthsStrictRegex && isStrict ? this._monthsStrictRegex : this._monthsRegex; 13603 } 13604 } 13605 function computeMonthsParse() { 13606 function cmpLenRev(a, b) { 13607 return b.length - a.length; 13608 } 13609 var shortPieces = [], longPieces = [], mixedPieces = [], i, mom, shortP, longP; 13610 for (i = 0; i < 12; i++) { 13611 mom = createUTC([2e3, i]); 13612 shortP = regexEscape(this.monthsShort(mom, "")); 13613 longP = regexEscape(this.months(mom, "")); 13614 shortPieces.push(shortP); 13615 longPieces.push(longP); 13616 mixedPieces.push(longP); 13617 mixedPieces.push(shortP); 13618 } 13619 shortPieces.sort(cmpLenRev); 13620 longPieces.sort(cmpLenRev); 13621 mixedPieces.sort(cmpLenRev); 13622 this._monthsRegex = new RegExp("^(" + mixedPieces.join("|") + ")", "i"); 13623 this._monthsShortRegex = this._monthsRegex; 13624 this._monthsStrictRegex = new RegExp( 13625 "^(" + longPieces.join("|") + ")", 13626 "i" 13627 ); 13628 this._monthsShortStrictRegex = new RegExp( 13629 "^(" + shortPieces.join("|") + ")", 13630 "i" 13631 ); 13632 } 13633 addFormatToken("d", 0, "do", "day"); 13634 addFormatToken("dd", 0, 0, function(format2) { 13635 return this.localeData().weekdaysMin(this, format2); 13636 }); 13637 addFormatToken("ddd", 0, 0, function(format2) { 13638 return this.localeData().weekdaysShort(this, format2); 13639 }); 13640 addFormatToken("dddd", 0, 0, function(format2) { 13641 return this.localeData().weekdays(this, format2); 13642 }); 13643 addFormatToken("e", 0, 0, "weekday"); 13644 addFormatToken("E", 0, 0, "isoWeekday"); 13645 addFormatToken("eHHmm", 0, 0, function() { 13646 return "" + this.weekday() + zeroFill(this.hours(), 2) + zeroFill(this.minutes(), 2); 13647 }); 13648 addRegexToken("d", match1to2); 13649 addRegexToken("e", match1to2); 13650 addRegexToken("E", match1to2); 13651 addRegexToken("eHHmm", match5to6); 13652 addRegexToken("dd", function(isStrict, locale2) { 13653 return locale2.weekdaysMinRegex(isStrict); 13654 }); 13655 addRegexToken("ddd", function(isStrict, locale2) { 13656 return locale2.weekdaysShortRegex(isStrict); 13657 }); 13658 addRegexToken("dddd", function(isStrict, locale2) { 13659 return locale2.weekdaysRegex(isStrict); 13660 }); 13661 addWeekParseToken(["dd", "ddd", "dddd"], function(input, week, config, token2) { 13662 var weekday = config._locale.weekdaysParse(input, token2, config._strict); 13663 if (weekday != null) { 13664 week.d = weekday; 13665 } else { 13666 getParsingFlags(config).invalidWeekday = input; 13667 } 13668 }); 13669 addWeekParseToken(["d", "e", "E"], function(input, week, config, token2) { 13670 week[token2] = toInt(input); 13671 }); 13672 addWeekParseToken("eHHmm", function(input, week, config) { 13673 var weekdayEnd = input.length - 4; 13674 week.e = toInt(input.substr(0, weekdayEnd)); 13675 config._a[HOUR] = toInt(input.substr(weekdayEnd, 2)); 13676 config._a[MINUTE] = toInt(input.substr(weekdayEnd + 2)); 13677 }); 13678 function parseWeekday(input, locale2) { 13679 if (typeof input !== "string") { 13680 return input; 13681 } 13682 if (!isNaN(input)) { 13683 return parseInt(input, 10); 13684 } 13685 input = locale2.weekdaysParse(input); 13686 if (typeof input === "number") { 13687 return input; 13688 } 13689 return null; 13690 } 13691 function parseIsoWeekday(input, locale2) { 13692 if (typeof input === "string") { 13693 return locale2.weekdaysParse(input) % 7 || 7; 13694 } 13695 return isNaN(input) ? null : input; 13696 } 13697 function shiftWeekdays(ws, n) { 13698 return ws.slice(n, 7).concat(ws.slice(0, n)); 13699 } 13700 var defaultLocaleWeekdays = "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), defaultLocaleWeekdaysShort = "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), defaultLocaleWeekdaysMin = "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), defaultWeekdaysRegex = matchWord, defaultWeekdaysShortRegex = matchWord, defaultWeekdaysMinRegex = matchWord, weekdaysParseProperties = [ 13701 "weekdaysParse", 13702 "fullWeekdaysParse", 13703 "shortWeekdaysParse", 13704 "minWeekdaysParse", 13705 "weekdaysRegex", 13706 "weekdaysShortRegex", 13707 "weekdaysMinRegex", 13708 "weekdaysStrictRegex", 13709 "weekdaysShortStrictRegex", 13710 "weekdaysMinStrictRegex" 13711 ]; 13712 function clearWeekdaysParseCache(locale2, config) { 13713 var i, prop; 13714 for (i = 0; i < weekdaysParseProperties.length; i++) { 13715 prop = weekdaysParseProperties[i]; 13716 if (!hasOwnProp(config, prop)) { 13717 delete locale2["_" + prop]; 13718 } 13719 } 13720 } 13721 function localeWeekdays(m, format2) { 13722 var weekdays = isArray(this._weekdays) ? this._weekdays : this._weekdays[m && m !== true && this._weekdays.isFormat.test(format2) ? "format" : "standalone"]; 13723 return m === true ? shiftWeekdays(weekdays, this._week.dow) : m ? weekdays[m.day()] : weekdays; 13724 } 13725 function localeWeekdaysShort(m) { 13726 return m === true ? shiftWeekdays(this._weekdaysShort, this._week.dow) : m ? this._weekdaysShort[m.day()] : this._weekdaysShort; 13727 } 13728 function localeWeekdaysMin(m) { 13729 return m === true ? shiftWeekdays(this._weekdaysMin, this._week.dow) : m ? this._weekdaysMin[m.day()] : this._weekdaysMin; 13730 } 13731 function handleStrictParse(weekdayName, format2, strict) { 13732 var i, ii, mom, llc = weekdayName.toLocaleLowerCase(); 13733 if (!this._weekdaysParse) { 13734 this._weekdaysParse = []; 13735 this._shortWeekdaysParse = []; 13736 this._minWeekdaysParse = []; 13737 for (i = 0; i < 7; ++i) { 13738 mom = createUTC([2e3, 1]).day(i); 13739 this._minWeekdaysParse[i] = this.weekdaysMin( 13740 mom, 13741 "" 13742 ).toLocaleLowerCase(); 13743 this._shortWeekdaysParse[i] = this.weekdaysShort( 13744 mom, 13745 "" 13746 ).toLocaleLowerCase(); 13747 this._weekdaysParse[i] = this.weekdays(mom, "").toLocaleLowerCase(); 13748 } 13749 } 13750 if (strict) { 13751 if (format2 === "dddd") { 13752 ii = indexOf2.call(this._weekdaysParse, llc); 13753 return ii !== -1 ? ii : null; 13754 } else if (format2 === "ddd") { 13755 ii = indexOf2.call(this._shortWeekdaysParse, llc); 13756 return ii !== -1 ? ii : null; 13757 } else { 13758 ii = indexOf2.call(this._minWeekdaysParse, llc); 13759 return ii !== -1 ? ii : null; 13760 } 13761 } else { 13762 if (format2 === "dddd") { 13763 ii = indexOf2.call(this._weekdaysParse, llc); 13764 if (ii !== -1) { 13765 return ii; 13766 } 13767 ii = indexOf2.call(this._shortWeekdaysParse, llc); 13768 if (ii !== -1) { 13769 return ii; 13770 } 13771 ii = indexOf2.call(this._minWeekdaysParse, llc); 13772 return ii !== -1 ? ii : null; 13773 } else if (format2 === "ddd") { 13774 ii = indexOf2.call(this._shortWeekdaysParse, llc); 13775 if (ii !== -1) { 13776 return ii; 13777 } 13778 ii = indexOf2.call(this._weekdaysParse, llc); 13779 if (ii !== -1) { 13780 return ii; 13781 } 13782 ii = indexOf2.call(this._minWeekdaysParse, llc); 13783 return ii !== -1 ? ii : null; 13784 } else { 13785 ii = indexOf2.call(this._minWeekdaysParse, llc); 13786 if (ii !== -1) { 13787 return ii; 13788 } 13789 ii = indexOf2.call(this._weekdaysParse, llc); 13790 if (ii !== -1) { 13791 return ii; 13792 } 13793 ii = indexOf2.call(this._shortWeekdaysParse, llc); 13794 return ii !== -1 ? ii : null; 13795 } 13796 } 13797 } 13798 function localeWeekdaysParse(weekdayName, format2, strict) { 13799 var i, mom, regex; 13800 if (this._weekdaysParseExact) { 13801 return handleStrictParse.call(this, weekdayName, format2, strict); 13802 } 13803 if (!this._weekdaysParse) { 13804 this._weekdaysParse = []; 13805 this._minWeekdaysParse = []; 13806 this._shortWeekdaysParse = []; 13807 this._fullWeekdaysParse = []; 13808 } 13809 for (i = 0; i < 7; i++) { 13810 mom = createUTC([2e3, 1]).day(i); 13811 if (strict && !this._fullWeekdaysParse[i]) { 13812 this._fullWeekdaysParse[i] = new RegExp( 13813 "^" + this.weekdays(mom, "").replace(".", "\\.?") + "$", 13814 "i" 13815 ); 13816 this._shortWeekdaysParse[i] = new RegExp( 13817 "^" + this.weekdaysShort(mom, "").replace(".", "\\.?") + "$", 13818 "i" 13819 ); 13820 this._minWeekdaysParse[i] = new RegExp( 13821 "^" + this.weekdaysMin(mom, "").replace(".", "\\.?") + "$", 13822 "i" 13823 ); 13824 } 13825 if (!this._weekdaysParse[i]) { 13826 regex = "^" + this.weekdays(mom, "") + "|^" + this.weekdaysShort(mom, "") + "|^" + this.weekdaysMin(mom, ""); 13827 this._weekdaysParse[i] = new RegExp(regex.replace(".", ""), "i"); 13828 } 13829 if (strict && format2 === "dddd" && this._fullWeekdaysParse[i].test(weekdayName)) { 13830 return i; 13831 } else if (strict && format2 === "ddd" && this._shortWeekdaysParse[i].test(weekdayName)) { 13832 return i; 13833 } else if (strict && format2 === "dd" && this._minWeekdaysParse[i].test(weekdayName)) { 13834 return i; 13835 } else if (!strict && this._weekdaysParse[i].test(weekdayName)) { 13836 return i; 13837 } 13838 } 13839 } 13840 function getSetDayOfWeek(input) { 13841 if (!this.isValid()) { 13842 return input != null ? this : NaN; 13843 } 13844 var day = get$2(this, "Day"); 13845 if (input != null) { 13846 input = parseWeekday(input, this.localeData()); 13847 return this.add(input - day, "d"); 13848 } else { 13849 return day; 13850 } 13851 } 13852 function getSetLocaleDayOfWeek(input) { 13853 if (!this.isValid()) { 13854 return input != null ? this : NaN; 13855 } 13856 var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; 13857 return input == null ? weekday : this.add(input - weekday, "d"); 13858 } 13859 function getSetISODayOfWeek(input) { 13860 if (!this.isValid()) { 13861 return input != null ? this : NaN; 13862 } 13863 if (input != null) { 13864 var weekday = parseIsoWeekday(input, this.localeData()); 13865 return this.day(this.day() % 7 ? weekday : weekday - 7); 13866 } else { 13867 return this.day() || 7; 13868 } 13869 } 13870 function weekdaysRegex(isStrict) { 13871 if (this._weekdaysParseExact) { 13872 if (!hasOwnProp(this, "_weekdaysRegex")) { 13873 computeWeekdaysParse.call(this); 13874 } 13875 if (isStrict) { 13876 return this._weekdaysStrictRegex; 13877 } else { 13878 return this._weekdaysRegex; 13879 } 13880 } else { 13881 if (!hasOwnProp(this, "_weekdaysRegex")) { 13882 this._weekdaysRegex = defaultWeekdaysRegex; 13883 } 13884 return this._weekdaysStrictRegex && isStrict ? this._weekdaysStrictRegex : this._weekdaysRegex; 13885 } 13886 } 13887 function weekdaysShortRegex(isStrict) { 13888 if (this._weekdaysParseExact) { 13889 if (!hasOwnProp(this, "_weekdaysRegex")) { 13890 computeWeekdaysParse.call(this); 13891 } 13892 if (isStrict) { 13893 return this._weekdaysShortStrictRegex; 13894 } else { 13895 return this._weekdaysShortRegex; 13896 } 13897 } else { 13898 if (!hasOwnProp(this, "_weekdaysShortRegex")) { 13899 this._weekdaysShortRegex = defaultWeekdaysShortRegex; 13900 } 13901 return this._weekdaysShortStrictRegex && isStrict ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex; 13902 } 13903 } 13904 function weekdaysMinRegex(isStrict) { 13905 if (this._weekdaysParseExact) { 13906 if (!hasOwnProp(this, "_weekdaysRegex")) { 13907 computeWeekdaysParse.call(this); 13908 } 13909 if (isStrict) { 13910 return this._weekdaysMinStrictRegex; 13911 } else { 13912 return this._weekdaysMinRegex; 13913 } 13914 } else { 13915 if (!hasOwnProp(this, "_weekdaysMinRegex")) { 13916 this._weekdaysMinRegex = defaultWeekdaysMinRegex; 13917 } 13918 return this._weekdaysMinStrictRegex && isStrict ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex; 13919 } 13920 } 13921 function computeWeekdaysParse() { 13922 function cmpLenRev(a, b) { 13923 return b.length - a.length; 13924 } 13925 var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [], i, mom, minp, shortp, longp; 13926 for (i = 0; i < 7; i++) { 13927 mom = createUTC([2e3, 1]).day(i); 13928 minp = regexEscape(this.weekdaysMin(mom, "")); 13929 shortp = regexEscape(this.weekdaysShort(mom, "")); 13930 longp = regexEscape(this.weekdays(mom, "")); 13931 minPieces.push(minp); 13932 shortPieces.push(shortp); 13933 longPieces.push(longp); 13934 mixedPieces.push(minp); 13935 mixedPieces.push(shortp); 13936 mixedPieces.push(longp); 13937 } 13938 minPieces.sort(cmpLenRev); 13939 shortPieces.sort(cmpLenRev); 13940 longPieces.sort(cmpLenRev); 13941 mixedPieces.sort(cmpLenRev); 13942 this._weekdaysRegex = new RegExp("^(" + mixedPieces.join("|") + ")", "i"); 13943 this._weekdaysShortRegex = this._weekdaysRegex; 13944 this._weekdaysMinRegex = this._weekdaysRegex; 13945 this._weekdaysStrictRegex = new RegExp( 13946 "^(" + longPieces.join("|") + ")", 13947 "i" 13948 ); 13949 this._weekdaysShortStrictRegex = new RegExp( 13950 "^(" + shortPieces.join("|") + ")", 13951 "i" 13952 ); 13953 this._weekdaysMinStrictRegex = new RegExp( 13954 "^(" + minPieces.join("|") + ")", 13955 "i" 13956 ); 13957 } 13958 function set(config) { 13959 var prop, i; 13960 clearMonthsParseCache(this, config); 13961 clearWeekdaysParseCache(this, config); 13962 for (i in config) { 13963 if (hasOwnProp(config, i)) { 13964 prop = config[i]; 13965 if (isFunction(prop)) { 13966 this[i] = prop; 13967 } else { 13968 this["_" + i] = prop; 13969 } 13970 } 13971 } 13972 this._config = config; 13973 this._dayOfMonthOrdinalParseLenient = new RegExp( 13974 (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + "|" + /\d{1,2}/.source 13975 ); 13976 } 13977 function mergeConfigs(parentConfig, childConfig) { 13978 var res = extend({}, parentConfig), prop; 13979 for (prop in childConfig) { 13980 if (hasOwnProp(childConfig, prop)) { 13981 if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) { 13982 res[prop] = {}; 13983 extend(res[prop], parentConfig[prop]); 13984 extend(res[prop], childConfig[prop]); 13985 } else if (childConfig[prop] != null) { 13986 res[prop] = childConfig[prop]; 13987 } else { 13988 delete res[prop]; 13989 } 13990 } 13991 } 13992 for (prop in parentConfig) { 13993 if (hasOwnProp(parentConfig, prop) && !hasOwnProp(childConfig, prop) && isObject(parentConfig[prop])) { 13994 res[prop] = extend({}, res[prop]); 13995 } 13996 } 13997 return res; 13998 } 13999 function Locale(config) { 14000 if (config != null) { 14001 this.set(config); 14002 } 14003 } 14004 var keys; 14005 if (Object.keys) { 14006 keys = Object.keys; 14007 } else { 14008 keys = function(obj) { 14009 var i, res = []; 14010 for (i in obj) { 14011 if (hasOwnProp(obj, i)) { 14012 res.push(i); 14013 } 14014 } 14015 return res; 14016 }; 14017 } 14018 var defaultCalendar = { 14019 sameDay: "[Today at] LT", 14020 nextDay: "[Tomorrow at] LT", 14021 nextWeek: "dddd [at] LT", 14022 lastDay: "[Yesterday at] LT", 14023 lastWeek: "[Last] dddd [at] LT", 14024 sameElse: "L" 14025 }; 14026 function calendar$1(key, mom, now2) { 14027 var output = this._calendar[key] || this._calendar["sameElse"]; 14028 return isFunction(output) ? output.call(mom, now2) : output; 14029 } 14030 var defaultLongDateFormat = { 14031 LTS: "h:mm:ss A", 14032 LT: "h:mm A", 14033 L: "MM/DD/YYYY", 14034 LL: "MMMM D, YYYY", 14035 LLL: "MMMM D, YYYY h:mm A", 14036 LLLL: "dddd, MMMM D, YYYY h:mm A" 14037 }; 14038 function longDateFormat(key) { 14039 var format2 = this._longDateFormat[key], formatUpper = this._longDateFormat[key.toUpperCase()], formatCache = this._longDateFormatCache; 14040 if (format2 || !formatUpper) { 14041 return format2; 14042 } 14043 if (formatCache && formatCache[key] && formatCache[key].formatUpper === formatUpper) { 14044 return formatCache[key].format; 14045 } 14046 format2 = formatUpper.match(formattingTokens).map(function(tok) { 14047 if (tok === "MMMM" || tok === "MM" || tok === "DD" || tok === "dddd") { 14048 return tok.slice(1); 14049 } 14050 return tok; 14051 }).join(""); 14052 if (!formatCache) { 14053 formatCache = this._longDateFormatCache = {}; 14054 } 14055 formatCache[key] = { 14056 formatUpper, 14057 format: format2 14058 }; 14059 return format2; 14060 } 14061 var defaultInvalidDate = "Invalid date"; 14062 function invalidDate() { 14063 return this._invalidDate; 14064 } 14065 var defaultOrdinal = "%d", defaultDayOfMonthOrdinalParse = /\d{1,2}/; 14066 function ordinal(number) { 14067 return this._ordinal.replace("%d", number); 14068 } 14069 var defaultRelativeTime = { 14070 future: "in %s", 14071 past: "%s ago", 14072 s: "a few seconds", 14073 ss: "%d seconds", 14074 m: "a minute", 14075 mm: "%d minutes", 14076 h: "an hour", 14077 hh: "%d hours", 14078 d: "a day", 14079 dd: "%d days", 14080 w: "a week", 14081 ww: "%d weeks", 14082 M: "a month", 14083 MM: "%d months", 14084 y: "a year", 14085 yy: "%d years" 14086 }; 14087 function relativeTimeWithoutPostformat(number, withoutSuffix, string, isFuture) { 14088 var output = this._relativeTime[string]; 14089 return isFunction(output) ? output(number, withoutSuffix, string, isFuture) : output.replace(/%d/i, number); 14090 } 14091 function relativeTime$1(number, withoutSuffix, string, isFuture) { 14092 return this.postformat( 14093 relativeTimeWithoutPostformat.call( 14094 this, 14095 number, 14096 withoutSuffix, 14097 string, 14098 isFuture 14099 ) 14100 ); 14101 } 14102 function pastFutureWithoutPostformat(diff2, output) { 14103 var format2 = this._relativeTime[diff2 > 0 ? "future" : "past"]; 14104 return isFunction(format2) ? format2(output) : format2.replace(/%s/i, output); 14105 } 14106 function pastFuture(diff2, output) { 14107 return this.postformat( 14108 pastFutureWithoutPostformat.call(this, diff2, output) 14109 ); 14110 } 14111 function createDate(y, m, d, h, M, s, ms) { 14112 var date; 14113 if (y < 100 && y >= 0) { 14114 date = new Date(y + 400, m, d, h, M, s, ms); 14115 if (isFinite(date.getFullYear())) { 14116 date.setFullYear(y); 14117 } 14118 } else { 14119 date = new Date(y, m, d, h, M, s, ms); 14120 } 14121 return date; 14122 } 14123 function createUTCDate(y) { 14124 var date, args; 14125 if (y < 100 && y >= 0) { 14126 args = Array.prototype.slice.call(arguments); 14127 args[0] = y + 400; 14128 date = new Date(Date.UTC.apply(null, args)); 14129 if (isFinite(date.getUTCFullYear())) { 14130 date.setUTCFullYear(y); 14131 } 14132 } else { 14133 date = new Date(Date.UTC.apply(null, arguments)); 14134 } 14135 return date; 14136 } 14137 function firstWeekOffset(year, dow, doy) { 14138 var fwd = 7 + dow - doy, fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7; 14139 return -fwdlw + fwd - 1; 14140 } 14141 function dayOfYearFromWeeks(year, week, weekday, dow, doy) { 14142 var localWeekday = (7 + weekday - dow) % 7, weekOffset = firstWeekOffset(year, dow, doy), dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset, resYear, resDayOfYear; 14143 if (dayOfYear <= 0) { 14144 resYear = year - 1; 14145 resDayOfYear = daysInYear(resYear) + dayOfYear; 14146 } else if (dayOfYear > daysInYear(year)) { 14147 resYear = year + 1; 14148 resDayOfYear = dayOfYear - daysInYear(year); 14149 } else { 14150 resYear = year; 14151 resDayOfYear = dayOfYear; 14152 } 14153 return { 14154 year: resYear, 14155 dayOfYear: resDayOfYear 14156 }; 14157 } 14158 function weekOfYearFromDayOfYear(year, dayOfYear, dow, doy) { 14159 var weekOffset = firstWeekOffset(year, dow, doy), week = Math.floor((dayOfYear - weekOffset - 1) / 7) + 1, resWeek, resYear; 14160 if (week < 1) { 14161 resYear = year - 1; 14162 resWeek = week + weeksInYear(resYear, dow, doy); 14163 } else if (week > weeksInYear(year, dow, doy)) { 14164 resWeek = week - weeksInYear(year, dow, doy); 14165 resYear = year + 1; 14166 } else { 14167 resYear = year; 14168 resWeek = week; 14169 } 14170 return { 14171 week: resWeek, 14172 year: resYear 14173 }; 14174 } 14175 function weekOfYear(mom, dow, doy) { 14176 return weekOfYearFromDayOfYear(mom.year(), mom.dayOfYear(), dow, doy); 14177 } 14178 function weekOfYearFromDate(year, month, date, dow, doy) { 14179 var dayOfYear = Math.round( 14180 (createUTCDate(year, month, date) - createUTCDate(year, 0, 1)) / 864e5 14181 ) + 1; 14182 return weekOfYearFromDayOfYear(year, dayOfYear, dow, doy); 14183 } 14184 function weeksInYear(year, dow, doy) { 14185 var weekOffset = firstWeekOffset(year, dow, doy), weekOffsetNext = firstWeekOffset(year + 1, dow, doy); 14186 return (daysInYear(year) - weekOffset + weekOffsetNext) / 7; 14187 } 14188 addFormatToken("w", ["ww", 2], "wo", "week"); 14189 addFormatToken("W", ["WW", 2], "Wo", "isoWeek"); 14190 addRegexToken("w", match1to2, match1to2NoLeadingZero); 14191 addRegexToken("ww", match1to2, match2); 14192 addRegexToken("W", match1to2, match1to2NoLeadingZero); 14193 addRegexToken("WW", match1to2, match2); 14194 addWeekParseToken( 14195 ["w", "ww", "W", "WW"], 14196 function(input, week, config, token2) { 14197 week[token2.substr(0, 1)] = toInt(input); 14198 } 14199 ); 14200 function localeWeek(mom) { 14201 return weekOfYear(mom, this._week.dow, this._week.doy).week; 14202 } 14203 var defaultLocaleWeek = { 14204 dow: 0, 14205 // Sunday is the first day of the week. 14206 doy: 6 14207 // The week that contains Jan 6th is the first week of the year. 14208 }; 14209 function localeFirstDayOfWeek() { 14210 return this._week.dow; 14211 } 14212 function localeFirstDayOfYear() { 14213 return this._week.doy; 14214 } 14215 function getSetWeek(input) { 14216 var week = this.localeData().week(this); 14217 return input == null ? week : this.add((input - week) * 7, "d"); 14218 } 14219 function getSetISOWeek(input) { 14220 var week = weekOfYear(this, 1, 4).week; 14221 return input == null ? week : this.add((input - week) * 7, "d"); 14222 } 14223 function hFormat() { 14224 return this.hours() % 12 || 12; 14225 } 14226 function kFormat() { 14227 return this.hours() || 24; 14228 } 14229 addFormatToken("H", ["HH", 2], 0, "hour"); 14230 addFormatToken("h", ["hh", 2], 0, hFormat); 14231 addFormatToken("k", ["kk", 2], 0, kFormat); 14232 addFormatToken("hmm", 0, 0, function() { 14233 return "" + hFormat.apply(this) + zeroFill(this.minutes(), 2); 14234 }); 14235 addFormatToken("hmmss", 0, 0, function() { 14236 return "" + hFormat.apply(this) + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2); 14237 }); 14238 addFormatToken("Hmm", 0, 0, function() { 14239 return "" + this.hours() + zeroFill(this.minutes(), 2); 14240 }); 14241 addFormatToken("Hmmss", 0, 0, function() { 14242 return "" + this.hours() + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2); 14243 }); 14244 function meridiem(token2, lowercase) { 14245 addFormatToken(token2, 0, 0, function() { 14246 return this.localeData().meridiem( 14247 this.hours(), 14248 this.minutes(), 14249 lowercase 14250 ); 14251 }); 14252 } 14253 meridiem("a", true); 14254 meridiem("A", false); 14255 function matchMeridiem(isStrict, locale2) { 14256 return locale2._meridiemParse; 14257 } 14258 addRegexToken("a", matchMeridiem); 14259 addRegexToken("A", matchMeridiem); 14260 addRegexToken("H", match1to2, match1to2HasZero); 14261 addRegexToken("h", match1to2, match1to2NoLeadingZero); 14262 addRegexToken("k", match1to2, match1to2NoLeadingZero); 14263 addRegexToken("HH", match1to2, match2); 14264 addRegexToken("hh", match1to2, match2); 14265 addRegexToken("kk", match1to2, match2); 14266 addRegexToken("hmm", match3to4); 14267 addRegexToken("hmmss", match5to6); 14268 addRegexToken("Hmm", match3to4); 14269 addRegexToken("Hmmss", match5to6); 14270 addParseToken(["H", "HH"], HOUR); 14271 addParseToken(["k", "kk"], function(input, array, config) { 14272 var kInput = toInt(input); 14273 array[HOUR] = kInput === 24 ? 0 : kInput; 14274 }); 14275 addParseToken(["a", "A"], function(input, array, config) { 14276 config._isPm = config._locale.isPM(input); 14277 config._meridiem = input; 14278 }); 14279 addParseToken(["h", "hh"], function(input, array, config) { 14280 array[HOUR] = toInt(input); 14281 getParsingFlags(config).bigHour = true; 14282 }); 14283 addParseToken("hmm", function(input, array, config) { 14284 var pos = input.length - 2; 14285 array[HOUR] = toInt(input.substr(0, pos)); 14286 array[MINUTE] = toInt(input.substr(pos)); 14287 getParsingFlags(config).bigHour = true; 14288 }); 14289 addParseToken("hmmss", function(input, array, config) { 14290 var pos1 = input.length - 4, pos2 = input.length - 2; 14291 array[HOUR] = toInt(input.substr(0, pos1)); 14292 array[MINUTE] = toInt(input.substr(pos1, 2)); 14293 array[SECOND] = toInt(input.substr(pos2)); 14294 getParsingFlags(config).bigHour = true; 14295 }); 14296 addParseToken("Hmm", function(input, array, config) { 14297 var pos = input.length - 2; 14298 array[HOUR] = toInt(input.substr(0, pos)); 14299 array[MINUTE] = toInt(input.substr(pos)); 14300 }); 14301 addParseToken("Hmmss", function(input, array, config) { 14302 var pos1 = input.length - 4, pos2 = input.length - 2; 14303 array[HOUR] = toInt(input.substr(0, pos1)); 14304 array[MINUTE] = toInt(input.substr(pos1, 2)); 14305 array[SECOND] = toInt(input.substr(pos2)); 14306 }); 14307 function localeIsPM(input) { 14308 return (input + "").toLowerCase().charAt(0) === "p"; 14309 } 14310 var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i, getSetHour = makeGetSet("Hours", true); 14311 function localeMeridiem(hours2, minutes2, isLower) { 14312 if (hours2 > 11) { 14313 return isLower ? "pm" : "PM"; 14314 } else { 14315 return isLower ? "am" : "AM"; 14316 } 14317 } 14318 var baseConfig = { 14319 calendar: defaultCalendar, 14320 longDateFormat: defaultLongDateFormat, 14321 invalidDate: defaultInvalidDate, 14322 ordinal: defaultOrdinal, 14323 dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse, 14324 relativeTime: defaultRelativeTime, 14325 months: defaultLocaleMonths, 14326 monthsShort: defaultLocaleMonthsShort, 14327 week: defaultLocaleWeek, 14328 weekdays: defaultLocaleWeekdays, 14329 weekdaysMin: defaultLocaleWeekdaysMin, 14330 weekdaysShort: defaultLocaleWeekdaysShort, 14331 meridiemParse: defaultLocaleMeridiemParse 14332 }; 14333 var locales = {}, localeFamilies = {}, globalLocale; 14334 function commonPrefix(arr1, arr2) { 14335 var i, minl = Math.min(arr1.length, arr2.length); 14336 for (i = 0; i < minl; i += 1) { 14337 if (arr1[i] !== arr2[i]) { 14338 return i; 14339 } 14340 } 14341 return minl; 14342 } 14343 function normalizeLocale(key) { 14344 return key ? key.toLowerCase().replace("_", "-") : key; 14345 } 14346 function chooseLocale(names) { 14347 var i = 0, j, next, locale2, split; 14348 while (i < names.length) { 14349 split = normalizeLocale(names[i]).split("-"); 14350 j = split.length; 14351 next = normalizeLocale(names[i + 1]); 14352 next = next ? next.split("-") : null; 14353 while (j > 0) { 14354 locale2 = loadLocale(split.slice(0, j).join("-")); 14355 if (locale2) { 14356 return locale2; 14357 } 14358 if (next && next.length >= j && commonPrefix(split, next) >= j - 1) { 14359 break; 14360 } 14361 j--; 14362 } 14363 i++; 14364 } 14365 return globalLocale; 14366 } 14367 function isLocaleNameSane(name) { 14368 return typeof name === "string" && /^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(name); 14369 } 14370 function loadLocale(name) { 14371 var oldLocale = null, aliasedRequire, normalizedName; 14372 if (hasOwnProp(locales, name)) { 14373 return locales[name]; 14374 } 14375 normalizedName = normalizeLocale(name); 14376 if (hasOwnProp(locales, normalizedName)) { 14377 return locales[normalizedName]; 14378 } 14379 if (typeof module !== "undefined" && module && module.exports && isLocaleNameSane(normalizedName)) { 14380 try { 14381 oldLocale = globalLocale._abbr; 14382 aliasedRequire = __require; 14383 aliasedRequire("./locale/" + normalizedName); 14384 getSetGlobalLocale(oldLocale); 14385 } catch (e) { 14386 locales[normalizedName] = null; 14387 } 14388 } 14389 if (hasOwnProp(locales, normalizedName)) { 14390 return locales[normalizedName]; 14391 } 14392 } 14393 function getSetGlobalLocale(key, values) { 14394 var data; 14395 if (key) { 14396 if (isUndefined(values)) { 14397 data = getLocale(key); 14398 } else { 14399 data = defineLocale(key, values); 14400 } 14401 if (data) { 14402 globalLocale = data; 14403 } else { 14404 if (typeof console !== "undefined" && console.warn) { 14405 console.warn( 14406 "Locale " + key + " not found. Did you forget to load it?" 14407 ); 14408 } 14409 } 14410 } 14411 return globalLocale._abbr; 14412 } 14413 function defineLocale(name, config) { 14414 if (config !== null) { 14415 var locale2, parentConfig = baseConfig; 14416 config.abbr = name; 14417 if (locales[name] != null) { 14418 deprecateSimple( 14419 "defineLocaleOverride", 14420 "use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info." 14421 ); 14422 parentConfig = locales[name]._config; 14423 } else if (config.parentLocale != null) { 14424 if (locales[config.parentLocale] != null) { 14425 parentConfig = locales[config.parentLocale]._config; 14426 } else { 14427 locale2 = loadLocale(config.parentLocale); 14428 if (locale2 != null) { 14429 parentConfig = locale2._config; 14430 } else { 14431 if (!localeFamilies[config.parentLocale]) { 14432 localeFamilies[config.parentLocale] = []; 14433 } 14434 localeFamilies[config.parentLocale].push({ 14435 name, 14436 config 14437 }); 14438 return null; 14439 } 14440 } 14441 } 14442 locales[name] = new Locale(mergeConfigs(parentConfig, config)); 14443 if (localeFamilies[name]) { 14444 localeFamilies[name].forEach(function(x) { 14445 defineLocale(x.name, x.config); 14446 }); 14447 } 14448 getSetGlobalLocale(name); 14449 return locales[name]; 14450 } else { 14451 delete locales[name]; 14452 return null; 14453 } 14454 } 14455 function updateLocale(name, config) { 14456 var locale2, tmpLocale = loadLocale(name), parentConfig = baseConfig; 14457 if (tmpLocale != null) { 14458 name = tmpLocale._abbr; 14459 } 14460 if (config != null) { 14461 if (locales[name] != null && locales[name].parentLocale != null) { 14462 locales[name].set(mergeConfigs(locales[name]._config, config)); 14463 } else { 14464 if (tmpLocale != null) { 14465 parentConfig = tmpLocale._config; 14466 } 14467 config = mergeConfigs(parentConfig, config); 14468 if (tmpLocale == null) { 14469 config.abbr = name; 14470 } 14471 locale2 = new Locale(config); 14472 locale2.parentLocale = locales[name]; 14473 locales[name] = locale2; 14474 } 14475 getSetGlobalLocale(name); 14476 } else { 14477 if (locales[name] != null) { 14478 if (locales[name].parentLocale != null) { 14479 locales[name] = locales[name].parentLocale; 14480 if (name === getSetGlobalLocale()) { 14481 getSetGlobalLocale(name); 14482 } 14483 } else if (locales[name] != null) { 14484 delete locales[name]; 14485 } 14486 } 14487 } 14488 return locales[name]; 14489 } 14490 function getLocale(key) { 14491 var locale2; 14492 if (key && key._locale && key._locale._abbr) { 14493 key = key._locale._abbr; 14494 } 14495 if (!key) { 14496 return globalLocale; 14497 } 14498 if (!isArray(key)) { 14499 locale2 = loadLocale(key); 14500 if (locale2) { 14501 return locale2; 14502 } 14503 key = [key]; 14504 } 14505 return chooseLocale(key); 14506 } 14507 function listLocales() { 14508 return keys(locales); 14509 } 14510 function checkOverflow(m) { 14511 var overflow, a = m._a; 14512 if (a && getParsingFlags(m).overflow === -2) { 14513 overflow = a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : a[HOUR] < 0 || a[HOUR] > 24 || a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0) ? HOUR : a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : -1; 14514 if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { 14515 overflow = DATE; 14516 } 14517 if (getParsingFlags(m)._overflowWeeks && overflow === -1) { 14518 overflow = WEEK; 14519 } 14520 if (getParsingFlags(m)._overflowWeekday && overflow === -1) { 14521 overflow = WEEKDAY; 14522 } 14523 getParsingFlags(m).overflow = overflow; 14524 } 14525 return m; 14526 } 14527 var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/, basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/, tzRegex = /Z|[+-]\d\d(?::?\d\d)?/, isoDates = [ 14528 ["YYYYYY-MM-DD", /[+-]\d{6}-\d\d-\d\d/], 14529 ["YYYY-MM-DD", /\d{4}-\d\d-\d\d/], 14530 ["GGGG-[W]WW-E", /\d{4}-W\d\d-\d/], 14531 ["GGGG-[W]WW", /\d{4}-W\d\d/, false], 14532 ["YYYY-DDD", /\d{4}-\d{3}/], 14533 ["YYYY-MM", /\d{4}-\d\d/, false], 14534 ["YYYYYYMMDD", /[+-]\d{10}/], 14535 ["YYYYMMDD", /\d{8}/], 14536 ["GGGG[W]WWE", /\d{4}W\d{3}/], 14537 ["GGGG[W]WW", /\d{4}W\d{2}/, false], 14538 ["YYYYDDD", /\d{7}/], 14539 ["YYYYMM", /\d{6}/, false], 14540 ["YYYY", /\d{4}/, false] 14541 ], isoTimes = [ 14542 ["HH:mm:ss.SSSS", /\d\d:\d\d:\d\d\.\d+/], 14543 ["HH:mm:ss,SSSS", /\d\d:\d\d:\d\d,\d+/], 14544 ["HH:mm:ss", /\d\d:\d\d:\d\d/], 14545 ["HH:mm", /\d\d:\d\d/], 14546 ["HHmmss.SSSS", /\d\d\d\d\d\d\.\d+/], 14547 ["HHmmss,SSSS", /\d\d\d\d\d\d,\d+/], 14548 ["HHmmss", /\d\d\d\d\d\d/], 14549 ["HHmm", /\d\d\d\d/], 14550 ["HH", /\d\d/] 14551 ], aspNetJsonRegex = /^\/?Date\((-?\d+)/i, rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/, obsOffsets = { 14552 UT: 0, 14553 GMT: 0, 14554 EDT: -4 * 60, 14555 EST: -5 * 60, 14556 CDT: -5 * 60, 14557 CST: -6 * 60, 14558 MDT: -6 * 60, 14559 MST: -7 * 60, 14560 PDT: -7 * 60, 14561 PST: -8 * 60 14562 }; 14563 function configFromISO(config) { 14564 var i, l, string = config._i, match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string), allowTime, dateFormat, timeFormat, tzFormat, isoDatesLen = isoDates.length, isoTimesLen = isoTimes.length; 14565 if (match) { 14566 getParsingFlags(config).iso = true; 14567 for (i = 0, l = isoDatesLen; i < l; i++) { 14568 if (isoDates[i][1].exec(match[1])) { 14569 dateFormat = isoDates[i][0]; 14570 allowTime = isoDates[i][2] !== false; 14571 break; 14572 } 14573 } 14574 if (dateFormat == null) { 14575 config._isValid = false; 14576 return; 14577 } 14578 if (match[3]) { 14579 for (i = 0, l = isoTimesLen; i < l; i++) { 14580 if (isoTimes[i][1].exec(match[3])) { 14581 timeFormat = (match[2] || " ") + isoTimes[i][0]; 14582 break; 14583 } 14584 } 14585 if (timeFormat == null) { 14586 config._isValid = false; 14587 return; 14588 } 14589 } 14590 if (!allowTime && timeFormat != null) { 14591 config._isValid = false; 14592 return; 14593 } 14594 if (match[4]) { 14595 if (tzRegex.exec(match[4])) { 14596 tzFormat = "Z"; 14597 } else { 14598 config._isValid = false; 14599 return; 14600 } 14601 } 14602 config._f = dateFormat + (timeFormat || "") + (tzFormat || ""); 14603 configFromStringAndFormat(config); 14604 } else { 14605 config._isValid = false; 14606 } 14607 } 14608 function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) { 14609 var result = [ 14610 untruncateYear(yearStr), 14611 defaultLocaleMonthsShort.indexOf(monthStr), 14612 parseInt(dayStr, 10), 14613 parseInt(hourStr, 10), 14614 parseInt(minuteStr, 10) 14615 ]; 14616 if (secondStr) { 14617 result.push(parseInt(secondStr, 10)); 14618 } 14619 return result; 14620 } 14621 function untruncateYear(yearStr) { 14622 var year = parseInt(yearStr, 10); 14623 if (year <= 49) { 14624 return 2e3 + year; 14625 } else if (year <= 999) { 14626 return 1900 + year; 14627 } 14628 return year; 14629 } 14630 function preprocessRFC2822(s) { 14631 return s.replace(/\([^()]*\)|[\n\t]/g, " ").replace(/(\s\s+)/g, " ").replace(/^\s\s*/, "").replace(/\s\s*$/, ""); 14632 } 14633 function checkWeekday(weekdayStr, parsedInput, config) { 14634 if (weekdayStr) { 14635 var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr), weekdayActual = new Date( 14636 parsedInput[0], 14637 parsedInput[1], 14638 parsedInput[2] 14639 ).getDay(); 14640 if (weekdayProvided !== weekdayActual) { 14641 getParsingFlags(config).weekdayMismatch = true; 14642 config._isValid = false; 14643 return false; 14644 } 14645 } 14646 return true; 14647 } 14648 function calculateOffset(obsOffset, militaryOffset, numOffset) { 14649 if (obsOffset) { 14650 return obsOffsets[obsOffset]; 14651 } else if (militaryOffset) { 14652 return 0; 14653 } else { 14654 var hm = parseInt(numOffset, 10), m = hm % 100, h = (hm - m) / 100; 14655 return h * 60 + m; 14656 } 14657 } 14658 function configFromRFC2822(config) { 14659 var match = rfc2822.exec(preprocessRFC2822(config._i)), parsedArray; 14660 if (match) { 14661 parsedArray = extractFromRFC2822Strings( 14662 match[4], 14663 match[3], 14664 match[2], 14665 match[5], 14666 match[6], 14667 match[7] 14668 ); 14669 if (!checkWeekday(match[1], parsedArray, config)) { 14670 return; 14671 } 14672 config._a = parsedArray; 14673 config._tzm = calculateOffset(match[8], match[9], match[10]); 14674 config._d = createUTCDate.apply(null, config._a); 14675 config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); 14676 getParsingFlags(config).rfc2822 = true; 14677 } else { 14678 config._isValid = false; 14679 } 14680 } 14681 function configFromString(config) { 14682 var matched = aspNetJsonRegex.exec(config._i); 14683 if (matched !== null) { 14684 config._d = /* @__PURE__ */ new Date(+matched[1]); 14685 return; 14686 } 14687 configFromISO(config); 14688 if (config._isValid === false) { 14689 delete config._isValid; 14690 } else { 14691 return; 14692 } 14693 configFromRFC2822(config); 14694 if (config._isValid === false) { 14695 delete config._isValid; 14696 } else { 14697 return; 14698 } 14699 if (config._strict) { 14700 config._isValid = false; 14701 } else { 14702 hooks.createFromInputFallback(config); 14703 } 14704 } 14705 hooks.createFromInputFallback = deprecate( 14706 "value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.", 14707 function(config) { 14708 config._d = /* @__PURE__ */ new Date(config._i + (config._useUTC ? " UTC" : "")); 14709 } 14710 ); 14711 function defaults(a, b, c) { 14712 if (a != null) { 14713 return a; 14714 } 14715 if (b != null) { 14716 return b; 14717 } 14718 return c; 14719 } 14720 function currentDateArray(config, now2, forWeek) { 14721 var hadWeekContext = Object.prototype.hasOwnProperty.call( 14722 config, 14723 "_isDefaultDatePartsForWeek" 14724 ), weekContext = config._isDefaultDatePartsForWeek; 14725 config._isDefaultDatePartsForWeek = !!forWeek; 14726 try { 14727 return hooks._getDefaultDateParts(config, now2, forWeek); 14728 } finally { 14729 if (hadWeekContext) { 14730 config._isDefaultDatePartsForWeek = weekContext; 14731 } else { 14732 delete config._isDefaultDatePartsForWeek; 14733 } 14734 } 14735 } 14736 function currentDateNow(config) { 14737 var now2 = config._defaultDatePartsNow; 14738 if (!now2) { 14739 return hooks.now(); 14740 } 14741 if (!now2.hasValue) { 14742 now2.value = hooks.now(); 14743 now2.hasValue = true; 14744 } 14745 return now2.value; 14746 } 14747 function getDefaultDateParts(config, now2, forWeek) { 14748 var useWeekDefaults = forWeek || config._isDefaultDatePartsForWeek, nowValue = useWeekDefaults ? createLocal(now2) : new Date(now2); 14749 if (useWeekDefaults) { 14750 return [nowValue.year(), nowValue.month(), nowValue.date()]; 14751 } 14752 if (config._useUTC) { 14753 return [ 14754 nowValue.getUTCFullYear(), 14755 nowValue.getUTCMonth(), 14756 nowValue.getUTCDate() 14757 ]; 14758 } 14759 return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()]; 14760 } 14761 hooks._getDefaultDateParts = getDefaultDateParts; 14762 function configFromArray(config) { 14763 var i, date, input = [], now2, currentDate, expectedWeekday, yearToUse, dateIsDefaulted; 14764 if (config._d) { 14765 return; 14766 } 14767 if (config._a[YEAR] == null || config._a[MONTH] == null || config._a[DATE] == null) { 14768 now2 = currentDateNow(config); 14769 currentDate = currentDateArray(config, now2); 14770 } 14771 if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { 14772 dayOfYearFromWeekInfo(config, currentDateArray(config, now2, true)); 14773 } 14774 if (config._dayOfYear != null) { 14775 yearToUse = config._a[YEAR] != null ? config._a[YEAR] : currentDate[YEAR]; 14776 if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) { 14777 getParsingFlags(config)._overflowDayOfYear = true; 14778 } 14779 date = createUTCDate(yearToUse, 0, config._dayOfYear); 14780 config._a[MONTH] = date.getUTCMonth(); 14781 config._a[DATE] = date.getUTCDate(); 14782 } 14783 dateIsDefaulted = config._a[YEAR] == null || config._a[MONTH] == null || config._a[DATE] == null; 14784 for (i = 0; i < 3 && config._a[i] == null; ++i) { 14785 config._a[i] = input[i] = currentDate[i]; 14786 } 14787 for (; i < 7; i++) { 14788 config._a[i] = input[i] = config._a[i] == null ? i === 2 ? 1 : 0 : config._a[i]; 14789 } 14790 if (config._a[HOUR] === 24 && config._a[MINUTE] === 0 && config._a[SECOND] === 0 && config._a[MILLISECOND] === 0) { 14791 config._nextDay = true; 14792 config._a[HOUR] = 0; 14793 } 14794 config._d = (config._useUTC ? createUTCDate : createDate).apply( 14795 null, 14796 input 14797 ); 14798 expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay(); 14799 if (config._tzm != null) { 14800 config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); 14801 } 14802 if (config._nextDay) { 14803 config._a[HOUR] = 24; 14804 } 14805 if (config._w && typeof config._w.d !== "undefined" && !dateIsDefaulted && config._w.d !== expectedWeekday) { 14806 getParsingFlags(config).weekdayMismatch = true; 14807 } 14808 } 14809 function dayOfYearFromWeekInfo(config, currentDate) { 14810 var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek; 14811 w = config._w; 14812 if (w.GG != null || w.W != null || w.E != null) { 14813 dow = 1; 14814 doy = 4; 14815 weekYear = defaults( 14816 w.GG, 14817 config._a[YEAR], 14818 weekOfYearFromDate( 14819 currentDate[YEAR], 14820 currentDate[MONTH], 14821 currentDate[DATE], 14822 1, 14823 4 14824 ).year 14825 ); 14826 week = defaults(w.W, 1); 14827 weekday = defaults(w.E, 1); 14828 if (weekday < 1 || weekday > 7) { 14829 weekdayOverflow = true; 14830 } 14831 } else { 14832 dow = config._locale._week.dow; 14833 doy = config._locale._week.doy; 14834 curWeek = weekOfYearFromDate( 14835 currentDate[YEAR], 14836 currentDate[MONTH], 14837 currentDate[DATE], 14838 dow, 14839 doy 14840 ); 14841 weekYear = defaults(w.gg, config._a[YEAR], curWeek.year); 14842 week = defaults(w.w, curWeek.week); 14843 if (w.d != null) { 14844 weekday = w.d; 14845 if (weekday < 0 || weekday > 6) { 14846 weekdayOverflow = true; 14847 } 14848 } else if (w.e != null) { 14849 weekday = w.e + dow; 14850 if (w.e < 0 || w.e > 6) { 14851 weekdayOverflow = true; 14852 } 14853 } else { 14854 weekday = dow; 14855 } 14856 } 14857 if (week < 1 || week > weeksInYear(weekYear, dow, doy)) { 14858 getParsingFlags(config)._overflowWeeks = true; 14859 } else if (weekdayOverflow != null) { 14860 getParsingFlags(config)._overflowWeekday = true; 14861 } else { 14862 temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy); 14863 config._a[YEAR] = temp.year; 14864 config._dayOfYear = temp.dayOfYear; 14865 } 14866 } 14867 hooks.ISO_8601 = function() { 14868 }; 14869 hooks.RFC_2822 = function() { 14870 }; 14871 function configFromStringAndFormat(config) { 14872 if (config._f === hooks.ISO_8601) { 14873 configFromISO(config); 14874 return; 14875 } 14876 if (config._f === hooks.RFC_2822) { 14877 configFromRFC2822(config); 14878 return; 14879 } 14880 config._a = []; 14881 getParsingFlags(config).empty = true; 14882 var string = "" + config._i, i, parsedInput, tokens2, token2, skipped, stringLength = string.length, totalParsedInputLength = 0, era, tokenLen; 14883 tokens2 = expandFormat(config._f, config._locale).match(formattingTokens) || []; 14884 tokenLen = tokens2.length; 14885 for (i = 0; i < tokenLen; i++) { 14886 token2 = tokens2[i]; 14887 parsedInput = (string.match(getParseRegexForToken(token2, config)) || [])[0]; 14888 if (parsedInput) { 14889 skipped = string.substr(0, string.indexOf(parsedInput)); 14890 if (skipped.length > 0) { 14891 getParsingFlags(config).unusedInput.push(skipped); 14892 } 14893 string = string.slice( 14894 string.indexOf(parsedInput) + parsedInput.length 14895 ); 14896 totalParsedInputLength += parsedInput.length; 14897 } 14898 if (formatTokenFunctions[token2]) { 14899 if (parsedInput) { 14900 getParsingFlags(config).empty = false; 14901 } else { 14902 getParsingFlags(config).unusedTokens.push(token2); 14903 } 14904 addTimeToArrayFromToken(token2, parsedInput, config); 14905 } else if (config._strict && !parsedInput) { 14906 getParsingFlags(config).unusedTokens.push(token2); 14907 } 14908 } 14909 getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength; 14910 if (string.length > 0) { 14911 getParsingFlags(config).unusedInput.push(string); 14912 } 14913 if (config._a[HOUR] <= 12 && getParsingFlags(config).bigHour === true && config._a[HOUR] > 0) { 14914 getParsingFlags(config).bigHour = void 0; 14915 } 14916 getParsingFlags(config).parsedDateParts = config._a.slice(0); 14917 getParsingFlags(config).meridiem = config._meridiem; 14918 config._a[HOUR] = meridiemFixWrap( 14919 config._locale, 14920 config._a[HOUR], 14921 config._meridiem 14922 ); 14923 era = getParsingFlags(config).era; 14924 if (era !== null) { 14925 config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]); 14926 } 14927 configFromArray(config); 14928 checkOverflow(config); 14929 } 14930 function meridiemFixWrap(locale2, hour, meridiem2) { 14931 var isPm; 14932 if (meridiem2 == null) { 14933 return hour; 14934 } 14935 if (locale2.meridiemHour != null) { 14936 return locale2.meridiemHour(hour, meridiem2); 14937 } else if (locale2.isPM != null) { 14938 isPm = locale2.isPM(meridiem2); 14939 if (isPm && hour < 12) { 14940 hour += 12; 14941 } 14942 if (!isPm && hour === 12) { 14943 hour = 0; 14944 } 14945 return hour; 14946 } else { 14947 return hour; 14948 } 14949 } 14950 function configFromStringAndArray(config) { 14951 var tempConfig, bestMoment, scoreToBeat, i, currentScore, validFormatFound, bestFormatIsValid = false, defaultDatePartsNow = {}, configfLen = config._f.length; 14952 if (configfLen === 0) { 14953 getParsingFlags(config).invalidFormat = true; 14954 config._d = /* @__PURE__ */ new Date(NaN); 14955 return; 14956 } 14957 for (i = 0; i < configfLen; i++) { 14958 currentScore = 0; 14959 validFormatFound = false; 14960 tempConfig = copyConfig({}, config); 14961 if (config._useUTC != null) { 14962 tempConfig._useUTC = config._useUTC; 14963 } 14964 tempConfig._defaultDatePartsNow = defaultDatePartsNow; 14965 tempConfig._f = config._f[i]; 14966 configFromStringAndFormat(tempConfig); 14967 if (isValid$2(tempConfig)) { 14968 validFormatFound = true; 14969 } 14970 currentScore += getParsingFlags(tempConfig).charsLeftOver; 14971 currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10; 14972 getParsingFlags(tempConfig).score = currentScore; 14973 if (!bestFormatIsValid) { 14974 if (scoreToBeat == null || currentScore < scoreToBeat || validFormatFound) { 14975 scoreToBeat = currentScore; 14976 bestMoment = tempConfig; 14977 if (validFormatFound) { 14978 bestFormatIsValid = true; 14979 } 14980 } 14981 } else { 14982 if (currentScore < scoreToBeat) { 14983 scoreToBeat = currentScore; 14984 bestMoment = tempConfig; 14985 } 14986 } 14987 } 14988 extend(config, bestMoment || tempConfig); 14989 } 14990 function configFromObject(config) { 14991 if (config._d) { 14992 return; 14993 } 14994 var i = normalizeObjectUnits(config._i), dayOrDate = i.day === void 0 ? i.date : i.day; 14995 config._a = map( 14996 [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond], 14997 function(obj) { 14998 return obj && parseInt(obj, 10); 14999 } 15000 ); 15001 configFromArray(config); 15002 } 15003 function createFromConfig(config) { 15004 var res = new Moment(checkOverflow(prepareConfig(config))); 15005 if (res._nextDay) { 15006 res.add(1, "d"); 15007 res._nextDay = void 0; 15008 } 15009 return res; 15010 } 15011 function prepareConfig(config) { 15012 var input = config._i, format2 = config._f; 15013 config._locale = config._locale || getLocale(config._l); 15014 if (input === null || format2 === void 0 && input === "") { 15015 return createInvalid$1({ nullInput: true }); 15016 } 15017 if (typeof input === "string") { 15018 config._i = input = config._locale.preparse(input); 15019 } 15020 if (isMoment(input)) { 15021 return new Moment(checkOverflow(input)); 15022 } else if (isDate(input)) { 15023 config._d = input; 15024 } else if (isArray(format2)) { 15025 configFromStringAndArray(config); 15026 } else if (format2) { 15027 configFromStringAndFormat(config); 15028 } else { 15029 configFromInput(config); 15030 } 15031 if (!isValid$2(config)) { 15032 config._d = null; 15033 } 15034 return config; 15035 } 15036 function configFromInput(config) { 15037 var input = config._i; 15038 if (isUndefined(input)) { 15039 config._d = new Date(hooks.now()); 15040 } else if (isDate(input)) { 15041 config._d = new Date(input.valueOf()); 15042 } else if (typeof input === "string") { 15043 configFromString(config); 15044 } else if (isArray(input)) { 15045 config._a = map(input.slice(0), function(obj) { 15046 return parseInt(obj, 10); 15047 }); 15048 configFromArray(config); 15049 } else if (isObject(input)) { 15050 configFromObject(config); 15051 } else if (isNumber(input)) { 15052 config._d = new Date(input); 15053 } else { 15054 hooks.createFromInputFallback(config); 15055 } 15056 } 15057 function createLocalOrUTC(input, format2, locale2, strict, isUTC) { 15058 var c = {}; 15059 if (format2 === true || format2 === false) { 15060 strict = format2; 15061 format2 = void 0; 15062 } 15063 if (locale2 === true || locale2 === false) { 15064 strict = locale2; 15065 locale2 = void 0; 15066 } 15067 if (isObject(input) && isObjectEmpty(input) || isArray(input) && input.length === 0) { 15068 input = void 0; 15069 } 15070 c._isAMomentObject = true; 15071 c._useUTC = c._isUTC = isUTC; 15072 c._l = locale2; 15073 c._i = input; 15074 c._f = format2; 15075 c._strict = strict; 15076 return createFromConfig(c); 15077 } 15078 function createLocal(input, format2, locale2, strict) { 15079 return createLocalOrUTC(input, format2, locale2, strict, false); 15080 } 15081 var prototypeMin = deprecate( 15082 "moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/", 15083 function() { 15084 var other = createLocal.apply(null, arguments); 15085 if (this.isValid() && other.isValid()) { 15086 return other < this ? this : other; 15087 } else { 15088 return createInvalid$1(); 15089 } 15090 } 15091 ), prototypeMax = deprecate( 15092 "moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/", 15093 function() { 15094 var other = createLocal.apply(null, arguments); 15095 if (this.isValid() && other.isValid()) { 15096 return other > this ? this : other; 15097 } else { 15098 return createInvalid$1(); 15099 } 15100 } 15101 ); 15102 function pickBy(fn, moments) { 15103 var res, i; 15104 if (moments.length === 1 && isArray(moments[0])) { 15105 moments = moments[0]; 15106 } 15107 if (!moments.length) { 15108 return createLocal(); 15109 } 15110 for (i = 0; i < moments.length; ++i) { 15111 if (isMoment(moments[i])) { 15112 res = moments[i]; 15113 break; 15114 } 15115 } 15116 if (!res) { 15117 return createInvalid$1(); 15118 } 15119 for (++i; i < moments.length; ++i) { 15120 if (isMoment(moments[i]) && (!moments[i].isValid() || moments[i][fn](res))) { 15121 res = moments[i]; 15122 } 15123 } 15124 return res; 15125 } 15126 function min() { 15127 var args = [].slice.call(arguments, 0); 15128 return pickBy("isBefore", args); 15129 } 15130 function max() { 15131 var args = [].slice.call(arguments, 0); 15132 return pickBy("isAfter", args); 15133 } 15134 var now = function() { 15135 return Date.now ? Date.now() : +/* @__PURE__ */ new Date(); 15136 }; 15137 var ordering = [ 15138 "year", 15139 "quarter", 15140 "month", 15141 "week", 15142 "day", 15143 "hour", 15144 "minute", 15145 "second", 15146 "millisecond" 15147 ]; 15148 function isDurationValid(m) { 15149 var key, unitHasDecimal = false, i, orderLen = ordering.length; 15150 for (key in m) { 15151 if (hasOwnProp(m, key) && !(indexOf2.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) { 15152 return false; 15153 } 15154 } 15155 for (i = 0; i < orderLen; ++i) { 15156 if (m[ordering[i]]) { 15157 if (unitHasDecimal) { 15158 return false; 15159 } 15160 if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) { 15161 unitHasDecimal = true; 15162 } 15163 } 15164 } 15165 return true; 15166 } 15167 function isValid$1() { 15168 return this._isValid; 15169 } 15170 function createInvalid() { 15171 return createDuration(NaN); 15172 } 15173 function Duration(duration) { 15174 var normalizedInput = normalizeObjectUnits(duration), years2 = normalizedInput.year || 0, quarters = normalizedInput.quarter || 0, months2 = normalizedInput.month || 0, weeks2 = normalizedInput.week || normalizedInput.isoWeek || 0, days2 = normalizedInput.day || 0, hours2 = normalizedInput.hour || 0, minutes2 = normalizedInput.minute || 0, seconds2 = normalizedInput.second || 0, milliseconds2 = normalizedInput.millisecond || 0; 15175 this._isValid = isDurationValid(normalizedInput); 15176 this._milliseconds = +milliseconds2 + seconds2 * 1e3 + // 1000 15177 minutes2 * 6e4 + // 1000 * 60 15178 hours2 * 1e3 * 60 * 60; 15179 this._days = +days2 + weeks2 * 7; 15180 this._months = +months2 + quarters * 3 + years2 * 12; 15181 this._data = {}; 15182 this._locale = getLocale(); 15183 this._bubble(); 15184 } 15185 function isDuration(obj) { 15186 return obj instanceof Duration; 15187 } 15188 function absRound(number) { 15189 if (number < 0) { 15190 return Math.round(-1 * number) * -1; 15191 } else { 15192 return Math.round(number); 15193 } 15194 } 15195 function compareArrays(array1, array2, dontConvert) { 15196 var len = Math.min(array1.length, array2.length), lengthDiff = Math.abs(array1.length - array2.length), diffs = 0, i; 15197 for (i = 0; i < len; i++) { 15198 if (toInt(array1[i]) !== toInt(array2[i])) { 15199 diffs++; 15200 } 15201 } 15202 return diffs + lengthDiff; 15203 } 15204 function offset(token2, separator) { 15205 addFormatToken(token2, 0, 0, function() { 15206 var offset2 = this.utcOffset(), sign2 = "+"; 15207 if (offset2 < 0) { 15208 offset2 = -offset2; 15209 sign2 = "-"; 15210 } 15211 return sign2 + zeroFill(~~(offset2 / 60), 2) + separator + zeroFill(~~offset2 % 60, 2); 15212 }); 15213 } 15214 offset("Z", ":"); 15215 offset("ZZ", ""); 15216 addRegexToken("Z", matchShortOffset); 15217 addRegexToken("ZZ", matchShortOffset); 15218 addParseToken(["Z", "ZZ"], function(input, array, config) { 15219 var offset2 = offsetFromString(matchShortOffset, input); 15220 config._useUTC = true; 15221 config._tzm = offset2; 15222 if (offset2 === null) { 15223 getParsingFlags(config).invalidOffset = input; 15224 } 15225 }); 15226 var chunkOffset = /([\+\-]|\d\d)/gi; 15227 function offsetFromString(matcher, string) { 15228 var matches = (string || "").match(matcher), chunk, parts, minutes2; 15229 if (matches === null) { 15230 return null; 15231 } 15232 chunk = matches[matches.length - 1] || []; 15233 parts = (chunk + "").match(chunkOffset) || ["-", 0, 0]; 15234 minutes2 = +(parts[1] * 60) + toInt(parts[2]); 15235 if (toInt(parts[2]) > 59 || (parts[0] === "+" ? minutes2 > 14 * 60 : minutes2 > 12 * 60)) { 15236 return null; 15237 } 15238 return minutes2 === 0 ? 0 : parts[0] === "+" ? minutes2 : -minutes2; 15239 } 15240 function cloneWithOffset(input, model) { 15241 var res, diff2; 15242 if (model._isUTC) { 15243 res = model.clone(); 15244 diff2 = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf(); 15245 res._d.setTime(res._d.valueOf() + diff2); 15246 hooks.updateOffset(res, false); 15247 return res; 15248 } else { 15249 return createLocal(input).local(); 15250 } 15251 } 15252 function getDateOffset(m) { 15253 return -Math.round(m._d.getTimezoneOffset()); 15254 } 15255 hooks.updateOffset = function() { 15256 }; 15257 function getSetOffset(input, keepLocalTime, keepMinutes) { 15258 var offset2 = this._offset || 0, localAdjust; 15259 if (!this.isValid()) { 15260 return input != null ? this : NaN; 15261 } 15262 if (input != null) { 15263 if (typeof input === "string") { 15264 input = offsetFromString(matchShortOffset, input); 15265 if (input === null) { 15266 return this; 15267 } 15268 } else if (Math.abs(input) < 16 && !keepMinutes) { 15269 input = input * 60; 15270 } 15271 if (!this._isUTC && keepLocalTime) { 15272 localAdjust = getDateOffset(this); 15273 } 15274 this._offset = input; 15275 this._isUTC = true; 15276 if (localAdjust != null) { 15277 this.add(localAdjust, "m"); 15278 } 15279 if (offset2 !== input) { 15280 if (!keepLocalTime || this._changeInProgress) { 15281 addSubtract$1( 15282 this, 15283 createDuration(input - offset2, "m"), 15284 1, 15285 false 15286 ); 15287 } else if (!this._changeInProgress) { 15288 this._changeInProgress = true; 15289 hooks.updateOffset(this, true); 15290 this._changeInProgress = null; 15291 } 15292 } 15293 return this; 15294 } else { 15295 return this._isUTC ? offset2 : getDateOffset(this); 15296 } 15297 } 15298 function getSetZone(input, keepLocalTime) { 15299 if (input != null) { 15300 if (typeof input !== "string") { 15301 input = -input; 15302 } 15303 this.utcOffset(input, keepLocalTime); 15304 return this; 15305 } else { 15306 return -this.utcOffset(); 15307 } 15308 } 15309 function setOffsetToUTC(keepLocalTime) { 15310 return this.utcOffset(0, keepLocalTime); 15311 } 15312 function setOffsetToLocal(keepLocalTime) { 15313 if (this._isUTC) { 15314 this.utcOffset(0, keepLocalTime); 15315 this._isUTC = false; 15316 if (keepLocalTime) { 15317 this.subtract(getDateOffset(this), "m"); 15318 } 15319 } 15320 return this; 15321 } 15322 function setOffsetToParsedOffset() { 15323 if (this._tzm != null) { 15324 this.utcOffset(this._tzm, false, true); 15325 } else if (typeof this._i === "string") { 15326 var tZone = offsetFromString(matchOffset, this._i); 15327 if (tZone != null) { 15328 this.utcOffset(tZone); 15329 } else { 15330 this.utcOffset(0, true); 15331 } 15332 } 15333 return this; 15334 } 15335 function hasAlignedHourOffset(input) { 15336 if (!this.isValid()) { 15337 return false; 15338 } 15339 input = input ? createLocal(input).utcOffset() : 0; 15340 return (this.utcOffset() - input) % 60 === 0; 15341 } 15342 function isDaylightSavingTime() { 15343 return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset(); 15344 } 15345 function isDaylightSavingTimeShifted() { 15346 if (!isUndefined(this._isDSTShifted)) { 15347 return this._isDSTShifted; 15348 } 15349 var c = {}, other; 15350 copyConfig(c, this); 15351 c = prepareConfig(c); 15352 if (c._a) { 15353 other = c._isUTC ? createUTC(c._a) : createLocal(c._a); 15354 this._isDSTShifted = this.isValid() && compareArrays(c._a, other.toArray()) > 0; 15355 } else { 15356 this._isDSTShifted = false; 15357 } 15358 return this._isDSTShifted; 15359 } 15360 function isLocal() { 15361 return this.isValid() ? !this._isUTC : false; 15362 } 15363 function isUtcOffset() { 15364 return this.isValid() ? this._isUTC : false; 15365 } 15366 function isUtc() { 15367 return this.isValid() ? this._isUTC && this._offset === 0 : false; 15368 } 15369 var aspNetRegex = /^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/, isoRegex = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/; 15370 function createDuration(input, key) { 15371 var duration = input, match = null, sign2, ret, diffRes; 15372 if (isDuration(input)) { 15373 duration = { 15374 ms: input._milliseconds, 15375 d: input._days, 15376 M: input._months 15377 }; 15378 } else if (isNumber(input) || !isNaN(+input)) { 15379 duration = {}; 15380 if (key) { 15381 duration[key] = +input; 15382 } else { 15383 duration.milliseconds = +input; 15384 } 15385 } else if (match = aspNetRegex.exec(input)) { 15386 sign2 = match[1] === "-" ? -1 : 1; 15387 duration = { 15388 y: 0, 15389 d: toInt(match[DATE]) * sign2, 15390 h: toInt(match[HOUR]) * sign2, 15391 m: toInt(match[MINUTE]) * sign2, 15392 s: toInt(match[SECOND]) * sign2, 15393 ms: toInt(absRound(match[MILLISECOND] * 1e3)) * sign2 15394 // the millisecond decimal point is included in the match 15395 }; 15396 } else if (match = isoRegex.exec(input)) { 15397 sign2 = match[1] === "-" ? -1 : 1; 15398 duration = { 15399 y: parseIso(match[2], sign2), 15400 M: parseIso(match[3], sign2), 15401 w: parseIso(match[4], sign2), 15402 d: parseIso(match[5], sign2), 15403 h: parseIso(match[6], sign2), 15404 m: parseIso(match[7], sign2), 15405 s: parseIso(match[8], sign2) 15406 }; 15407 } else if (duration == null) { 15408 duration = {}; 15409 } else if (typeof duration === "object" && ("from" in duration || "to" in duration)) { 15410 diffRes = momentsDifference( 15411 createLocal(duration.from), 15412 createLocal(duration.to) 15413 ); 15414 duration = {}; 15415 duration.ms = diffRes.milliseconds; 15416 duration.M = diffRes.months; 15417 } 15418 ret = new Duration(duration); 15419 if (isDuration(input) && hasOwnProp(input, "_locale")) { 15420 ret._locale = input._locale; 15421 } 15422 if (isDuration(input) && hasOwnProp(input, "_isValid")) { 15423 ret._isValid = input._isValid; 15424 } 15425 return ret; 15426 } 15427 createDuration.fn = Duration.prototype; 15428 createDuration.invalid = createInvalid; 15429 function parseIso(inp, sign2) { 15430 var res = inp && parseFloat(inp.replace(",", ".")); 15431 return (isNaN(res) ? 0 : res) * sign2; 15432 } 15433 function positiveMomentsDifference(base, other) { 15434 var res = {}; 15435 res.months = other.month() - base.month() + (other.year() - base.year()) * 12; 15436 if (base.clone().add(res.months, "M").isAfter(other)) { 15437 --res.months; 15438 } 15439 res.milliseconds = +other - +base.clone().add(res.months, "M"); 15440 return res; 15441 } 15442 function momentsDifference(base, other) { 15443 var res; 15444 if (!(base.isValid() && other.isValid())) { 15445 return { milliseconds: 0, months: 0 }; 15446 } 15447 other = cloneWithOffset(other, base); 15448 if (base.isBefore(other)) { 15449 res = positiveMomentsDifference(base, other); 15450 } else { 15451 res = positiveMomentsDifference(other, base); 15452 res.milliseconds = -res.milliseconds; 15453 res.months = -res.months; 15454 } 15455 return res; 15456 } 15457 function createAdder(direction, name) { 15458 return function(val, period) { 15459 var dur, tmp; 15460 if (period !== null && !isNaN(+period)) { 15461 deprecateSimple( 15462 name, 15463 "moment()." + name + "(period, number) is deprecated. Please use moment()." + name + "(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info." 15464 ); 15465 tmp = val; 15466 val = period; 15467 period = tmp; 15468 } 15469 dur = createDuration(val, period); 15470 addSubtract$1(this, dur, direction); 15471 return this; 15472 }; 15473 } 15474 function addSubtract$1(mom, duration, isAdding, updateOffset) { 15475 var milliseconds2 = duration._milliseconds, days2 = absRound(duration._days), months2 = absRound(duration._months); 15476 if (!mom.isValid()) { 15477 return; 15478 } 15479 updateOffset = updateOffset == null ? true : updateOffset; 15480 if (months2) { 15481 setMonth(mom, get$2(mom, "Month") + months2 * isAdding); 15482 } 15483 if (days2) { 15484 set$1(mom, "Date", get$2(mom, "Date") + days2 * isAdding); 15485 } 15486 if (milliseconds2) { 15487 mom._d.setTime(mom._d.valueOf() + milliseconds2 * isAdding); 15488 } 15489 if (updateOffset) { 15490 hooks.updateOffset(mom, days2 || months2); 15491 } 15492 } 15493 var add$1 = createAdder(1, "add"), subtract$1 = createAdder(-1, "subtract"); 15494 function isString(input) { 15495 return typeof input === "string" || input instanceof String; 15496 } 15497 function isMomentInput(input) { 15498 return isMoment(input) || isDate(input) || isString(input) || isNumber(input) || isNumberOrStringArray(input) || isMomentInputObject(input) || input === null || input === void 0; 15499 } 15500 function isMomentInputObject(input) { 15501 var objectTest = isObject(input) && !isObjectEmpty(input), propertyTest = false, properties = [ 15502 "years", 15503 "year", 15504 "y", 15505 "months", 15506 "month", 15507 "M", 15508 "days", 15509 "day", 15510 "d", 15511 "dates", 15512 "date", 15513 "D", 15514 "hours", 15515 "hour", 15516 "h", 15517 "minutes", 15518 "minute", 15519 "m", 15520 "seconds", 15521 "second", 15522 "s", 15523 "milliseconds", 15524 "millisecond", 15525 "ms" 15526 ], i, property, propertyLen = properties.length; 15527 for (i = 0; i < propertyLen; i += 1) { 15528 property = properties[i]; 15529 propertyTest = propertyTest || hasOwnProp(input, property); 15530 } 15531 return objectTest && propertyTest; 15532 } 15533 function isNumberOrStringArray(input) { 15534 var arrayTest = isArray(input), dataTypeTest = false; 15535 if (arrayTest) { 15536 dataTypeTest = input.filter(function(item) { 15537 return !isNumber(item) && isString(input); 15538 }).length === 0; 15539 } 15540 return arrayTest && dataTypeTest; 15541 } 15542 function isCalendarSpec(input) { 15543 var objectTest = isObject(input) && !isObjectEmpty(input), propertyTest = false, properties = [ 15544 "sameDay", 15545 "nextDay", 15546 "lastDay", 15547 "nextWeek", 15548 "lastWeek", 15549 "sameElse" 15550 ], i, property; 15551 for (i = 0; i < properties.length; i += 1) { 15552 property = properties[i]; 15553 propertyTest = propertyTest || hasOwnProp(input, property); 15554 } 15555 return objectTest && propertyTest; 15556 } 15557 function getCalendarFormat(myMoment, now2) { 15558 var diff2 = myMoment.diff(now2, "days", true); 15559 return diff2 < -6 ? "sameElse" : diff2 < -1 ? "lastWeek" : diff2 < 0 ? "lastDay" : diff2 < 1 ? "sameDay" : diff2 < 2 ? "nextDay" : diff2 < 7 ? "nextWeek" : "sameElse"; 15560 } 15561 function calendar(time, formats) { 15562 if (arguments.length === 1) { 15563 if (!arguments[0]) { 15564 time = void 0; 15565 formats = void 0; 15566 } else if (isMomentInput(arguments[0])) { 15567 time = arguments[0]; 15568 formats = void 0; 15569 } else if (isCalendarSpec(arguments[0])) { 15570 formats = arguments[0]; 15571 time = void 0; 15572 } 15573 } 15574 var now2 = time || createLocal(), sod = cloneWithOffset(now2, this).startOf("day"), format2 = hooks.calendarFormat(this, sod) || "sameElse", output = formats && (isFunction(formats[format2]) ? formats[format2].call(this, now2) : formats[format2]); 15575 return this.format( 15576 output || this.localeData().calendar(format2, this, createLocal(now2)) 15577 ); 15578 } 15579 function clone$1() { 15580 return new Moment(this); 15581 } 15582 function isAfter(input, units) { 15583 var localInput = isMoment(input) ? input : createLocal(input); 15584 if (!(this.isValid() && localInput.isValid())) { 15585 return false; 15586 } 15587 units = normalizeUnits(units) || "millisecond"; 15588 if (units === "millisecond") { 15589 return this.valueOf() > localInput.valueOf(); 15590 } else { 15591 return localInput.valueOf() < this.clone().startOf(units).valueOf(); 15592 } 15593 } 15594 function isBefore(input, units) { 15595 var localInput = isMoment(input) ? input : createLocal(input); 15596 if (!(this.isValid() && localInput.isValid())) { 15597 return false; 15598 } 15599 units = normalizeUnits(units) || "millisecond"; 15600 if (units === "millisecond") { 15601 return this.valueOf() < localInput.valueOf(); 15602 } else { 15603 return this.clone().endOf(units).valueOf() < localInput.valueOf(); 15604 } 15605 } 15606 function isBetween(from2, to2, units, inclusivity) { 15607 var localFrom = isMoment(from2) ? from2 : createLocal(from2), localTo = isMoment(to2) ? to2 : createLocal(to2); 15608 if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) { 15609 return false; 15610 } 15611 inclusivity = inclusivity || "()"; 15612 return (inclusivity[0] === "(" ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) && (inclusivity[1] === ")" ? this.isBefore(localTo, units) : !this.isAfter(localTo, units)); 15613 } 15614 function isSame(input, units) { 15615 var localInput = isMoment(input) ? input : createLocal(input), inputMs; 15616 if (!(this.isValid() && localInput.isValid())) { 15617 return false; 15618 } 15619 units = normalizeUnits(units) || "millisecond"; 15620 if (units === "millisecond") { 15621 return this.valueOf() === localInput.valueOf(); 15622 } else { 15623 inputMs = localInput.valueOf(); 15624 return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf(); 15625 } 15626 } 15627 function isSameOrAfter(input, units) { 15628 return this.isSame(input, units) || this.isAfter(input, units); 15629 } 15630 function isSameOrBefore(input, units) { 15631 return this.isSame(input, units) || this.isBefore(input, units); 15632 } 15633 function diff(input, units, asFloat) { 15634 var that, zoneDelta, output; 15635 if (!this.isValid()) { 15636 return NaN; 15637 } 15638 that = cloneWithOffset(input, this); 15639 if (!that.isValid()) { 15640 return NaN; 15641 } 15642 zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4; 15643 units = normalizeUnits(units); 15644 switch (units) { 15645 case "year": 15646 output = monthDiff(this, that) / 12; 15647 break; 15648 case "month": 15649 output = monthDiff(this, that); 15650 break; 15651 case "quarter": 15652 output = monthDiff(this, that) / 3; 15653 break; 15654 case "second": 15655 output = (this - that) / 1e3; 15656 break; 15657 // 1000 15658 case "minute": 15659 output = (this - that) / 6e4; 15660 break; 15661 // 1000 * 60 15662 case "hour": 15663 output = (this - that) / 36e5; 15664 break; 15665 // 1000 * 60 * 60 15666 case "day": 15667 output = (this - that - zoneDelta) / 864e5; 15668 break; 15669 // 1000 * 60 * 60 * 24, negate dst 15670 case "week": 15671 output = (this - that - zoneDelta) / 6048e5; 15672 break; 15673 // 1000 * 60 * 60 * 24 * 7, negate dst 15674 default: 15675 output = this - that; 15676 } 15677 return asFloat ? output : absFloor(output); 15678 } 15679 function monthDiff(a, b) { 15680 if (a.date() < b.date()) { 15681 return -monthDiff(b, a); 15682 } 15683 var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()), anchor = a.clone().add(wholeMonthDiff, "months"), anchor2, adjust; 15684 if (b - anchor < 0) { 15685 anchor2 = a.clone().add(wholeMonthDiff - 1, "months"); 15686 adjust = (b - anchor) / (anchor - anchor2); 15687 } else { 15688 anchor2 = a.clone().add(wholeMonthDiff + 1, "months"); 15689 adjust = (b - anchor) / (anchor2 - anchor); 15690 } 15691 return -(wholeMonthDiff + adjust) || 0; 15692 } 15693 hooks.defaultFormat = "YYYY-MM-DDTHH:mm:ssZ"; 15694 hooks.defaultFormatUtc = "YYYY-MM-DDTHH:mm:ss[Z]"; 15695 function toString() { 15696 return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ"); 15697 } 15698 function toISOString$1(keepOffset) { 15699 if (!this.isValid()) { 15700 return null; 15701 } 15702 var utc = keepOffset !== true, m = utc ? this.clone().utc() : this; 15703 if (m.year() < 0 || m.year() > 9999) { 15704 return formatMoment( 15705 m, 15706 utc ? "YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]" : "YYYYYY-MM-DD[T]HH:mm:ss.SSSZ" 15707 ); 15708 } 15709 if (isFunction(Date.prototype.toISOString)) { 15710 if (utc) { 15711 return this.toDate().toISOString(); 15712 } else { 15713 return new Date(this.valueOf() + this.utcOffset() * 60 * 1e3).toISOString().replace("Z", formatMoment(m, "Z")); 15714 } 15715 } 15716 return formatMoment( 15717 m, 15718 utc ? "YYYY-MM-DD[T]HH:mm:ss.SSS[Z]" : "YYYY-MM-DD[T]HH:mm:ss.SSSZ" 15719 ); 15720 } 15721 function inspect() { 15722 if (!this.isValid()) { 15723 return "moment.invalid(/* " + this._i + " */)"; 15724 } 15725 var func = "moment", zone = "", prefix, year, datetime, suffix; 15726 if (!this.isLocal()) { 15727 func = this.utcOffset() === 0 ? "moment.utc" : "moment.parseZone"; 15728 zone = "Z"; 15729 } 15730 prefix = "[" + func + '("]'; 15731 year = 0 <= this.year() && this.year() <= 9999 ? "YYYY" : "YYYYYY"; 15732 datetime = "-MM-DD[T]HH:mm:ss.SSS"; 15733 suffix = zone + '[")]'; 15734 return this.format(prefix + year + datetime + suffix); 15735 } 15736 function format(inputString) { 15737 if (!inputString) { 15738 inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat; 15739 } 15740 var output = formatMoment(this, inputString); 15741 return this.localeData().postformat(output); 15742 } 15743 function from(time, withoutSuffix) { 15744 if (this.isValid() && (isMoment(time) && time.isValid() || createLocal(time).isValid())) { 15745 return createDuration({ to: this, from: time }).locale(this.locale()).humanize(!withoutSuffix); 15746 } else { 15747 return this.localeData().invalidDate(); 15748 } 15749 } 15750 function fromNow(withoutSuffix) { 15751 return this.from(createLocal(), withoutSuffix); 15752 } 15753 function to(time, withoutSuffix) { 15754 if (this.isValid() && (isMoment(time) && time.isValid() || createLocal(time).isValid())) { 15755 return createDuration({ from: this, to: time }).locale(this.locale()).humanize(!withoutSuffix); 15756 } else { 15757 return this.localeData().invalidDate(); 15758 } 15759 } 15760 function toNow(withoutSuffix) { 15761 return this.to(createLocal(), withoutSuffix); 15762 } 15763 function locale(key) { 15764 var newLocaleData; 15765 if (key === void 0) { 15766 return this._locale._abbr; 15767 } else { 15768 newLocaleData = getLocale(key); 15769 if (newLocaleData != null) { 15770 this._locale = newLocaleData; 15771 } 15772 return this; 15773 } 15774 } 15775 var lang = deprecate( 15776 "moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.", 15777 function(key) { 15778 if (key === void 0) { 15779 return this.localeData(); 15780 } else { 15781 return this.locale(key); 15782 } 15783 } 15784 ); 15785 function localeData() { 15786 return this._locale; 15787 } 15788 var MS_PER_SECOND = 1e3, MS_PER_MINUTE = 60 * MS_PER_SECOND, MS_PER_HOUR = 60 * MS_PER_MINUTE, MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR; 15789 function mod(dividend, divisor) { 15790 return (dividend % divisor + divisor) % divisor; 15791 } 15792 function localStartOfDate(y, m, d) { 15793 if (y < 100 && y >= 0) { 15794 return new Date(y + 400, m, d) - MS_PER_400_YEARS; 15795 } else { 15796 return new Date(y, m, d).valueOf(); 15797 } 15798 } 15799 function utcStartOfDate(y, m, d) { 15800 if (y < 100 && y >= 0) { 15801 return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS; 15802 } else { 15803 return Date.UTC(y, m, d); 15804 } 15805 } 15806 function startOf(units) { 15807 var time, startOfDate; 15808 units = normalizeUnits(units); 15809 if (units === void 0 || units === "millisecond" || !this.isValid()) { 15810 return this; 15811 } 15812 startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate; 15813 switch (units) { 15814 case "year": 15815 time = startOfDate(this.year(), 0, 1); 15816 break; 15817 case "quarter": 15818 time = startOfDate( 15819 this.year(), 15820 this.month() - this.month() % 3, 15821 1 15822 ); 15823 break; 15824 case "month": 15825 time = startOfDate(this.year(), this.month(), 1); 15826 break; 15827 case "week": 15828 time = startOfDate( 15829 this.year(), 15830 this.month(), 15831 this.date() - this.weekday() 15832 ); 15833 break; 15834 case "isoWeek": 15835 time = startOfDate( 15836 this.year(), 15837 this.month(), 15838 this.date() - (this.isoWeekday() - 1) 15839 ); 15840 break; 15841 case "day": 15842 case "date": 15843 time = startOfDate(this.year(), this.month(), this.date()); 15844 break; 15845 case "hour": 15846 time = this._d.valueOf(); 15847 time -= mod( 15848 time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), 15849 MS_PER_HOUR 15850 ); 15851 break; 15852 case "minute": 15853 time = this._d.valueOf(); 15854 time -= mod(time, MS_PER_MINUTE); 15855 break; 15856 case "second": 15857 time = this._d.valueOf(); 15858 time -= mod(time, MS_PER_SECOND); 15859 break; 15860 } 15861 this._d.setTime(time); 15862 hooks.updateOffset(this, true); 15863 return this; 15864 } 15865 function endOf(units) { 15866 var time, startOfDate; 15867 units = normalizeUnits(units); 15868 if (units === void 0 || units === "millisecond" || !this.isValid()) { 15869 return this; 15870 } 15871 startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate; 15872 switch (units) { 15873 case "year": 15874 time = startOfDate(this.year() + 1, 0, 1) - 1; 15875 break; 15876 case "quarter": 15877 time = startOfDate( 15878 this.year(), 15879 this.month() - this.month() % 3 + 3, 15880 1 15881 ) - 1; 15882 break; 15883 case "month": 15884 time = startOfDate(this.year(), this.month() + 1, 1) - 1; 15885 break; 15886 case "week": 15887 time = startOfDate( 15888 this.year(), 15889 this.month(), 15890 this.date() - this.weekday() + 7 15891 ) - 1; 15892 break; 15893 case "isoWeek": 15894 time = startOfDate( 15895 this.year(), 15896 this.month(), 15897 this.date() - (this.isoWeekday() - 1) + 7 15898 ) - 1; 15899 break; 15900 case "day": 15901 case "date": 15902 time = startOfDate(this.year(), this.month(), this.date() + 1) - 1; 15903 break; 15904 case "hour": 15905 time = this._d.valueOf(); 15906 time += MS_PER_HOUR - mod( 15907 time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), 15908 MS_PER_HOUR 15909 ) - 1; 15910 break; 15911 case "minute": 15912 time = this._d.valueOf(); 15913 time += MS_PER_MINUTE - mod(time, MS_PER_MINUTE) - 1; 15914 break; 15915 case "second": 15916 time = this._d.valueOf(); 15917 time += MS_PER_SECOND - mod(time, MS_PER_SECOND) - 1; 15918 break; 15919 } 15920 this._d.setTime(time); 15921 hooks.updateOffset(this, true); 15922 return this; 15923 } 15924 function valueOf$1() { 15925 return this._d.valueOf() - (this._offset || 0) * 6e4; 15926 } 15927 function unix() { 15928 return Math.floor(this.valueOf() / 1e3); 15929 } 15930 function toDate() { 15931 return new Date(this.valueOf()); 15932 } 15933 function toArray() { 15934 var m = this; 15935 return [ 15936 m.year(), 15937 m.month(), 15938 m.date(), 15939 m.hour(), 15940 m.minute(), 15941 m.second(), 15942 m.millisecond() 15943 ]; 15944 } 15945 function toObject() { 15946 var m = this; 15947 return { 15948 years: m.year(), 15949 months: m.month(), 15950 date: m.date(), 15951 hours: m.hours(), 15952 minutes: m.minutes(), 15953 seconds: m.seconds(), 15954 milliseconds: m.milliseconds() 15955 }; 15956 } 15957 function toJSON() { 15958 return this.isValid() ? this.toISOString() : null; 15959 } 15960 function isValid() { 15961 return isValid$2(this); 15962 } 15963 function parsingFlags() { 15964 return extend({}, getParsingFlags(this)); 15965 } 15966 function invalidAt() { 15967 return getParsingFlags(this).overflow; 15968 } 15969 function creationData() { 15970 return { 15971 input: this._i, 15972 format: this._f, 15973 locale: this._locale, 15974 isUTC: this._isUTC, 15975 strict: this._strict 15976 }; 15977 } 15978 addFormatToken("N", 0, 0, "eraAbbr"); 15979 addFormatToken("NN", 0, 0, "eraAbbr"); 15980 addFormatToken("NNN", 0, 0, "eraAbbr"); 15981 addFormatToken("NNNN", 0, 0, "eraName"); 15982 addFormatToken("NNNNN", 0, 0, "eraNarrow"); 15983 addFormatToken("y", ["y", 1], "yo", "eraYear"); 15984 addFormatToken("y", ["yy", 2], 0, "eraYear"); 15985 addFormatToken("y", ["yyy", 3], 0, "eraYear"); 15986 addFormatToken("y", ["yyyy", 4], 0, "eraYear"); 15987 addRegexToken("N", matchEraAbbr); 15988 addRegexToken("NN", matchEraAbbr); 15989 addRegexToken("NNN", matchEraAbbr); 15990 addRegexToken("NNNN", matchEraName); 15991 addRegexToken("NNNNN", matchEraNarrow); 15992 addParseToken( 15993 ["N", "NN", "NNN", "NNNN", "NNNNN"], 15994 function(input, array, config, token2) { 15995 var era = config._locale.erasParse(input, token2, config._strict); 15996 if (era) { 15997 getParsingFlags(config).era = era; 15998 } else { 15999 getParsingFlags(config).invalidEra = input; 16000 } 16001 } 16002 ); 16003 addRegexToken("y", matchUnsigned); 16004 addRegexToken("yy", matchUnsigned); 16005 addRegexToken("yyy", matchUnsigned); 16006 addRegexToken("yyyy", matchUnsigned); 16007 addRegexToken("yo", matchEraYearOrdinal); 16008 addParseToken(["y", "yy", "yyy", "yyyy"], YEAR); 16009 addParseToken(["yo"], function(input, array, config, token2) { 16010 var match; 16011 if (config._locale._eraYearOrdinalRegex) { 16012 match = input.match(config._locale._eraYearOrdinalRegex); 16013 } 16014 if (config._locale.eraYearOrdinalParse) { 16015 array[YEAR] = config._locale.eraYearOrdinalParse(input, match); 16016 } else { 16017 array[YEAR] = parseInt(input, 10); 16018 } 16019 }); 16020 function localeEras(m, format2) { 16021 var i, l, date, eras = this._eras || getLocale("en")._eras; 16022 for (i = 0, l = eras.length; i < l; ++i) { 16023 switch (typeof eras[i].since) { 16024 case "string": 16025 date = hooks(eras[i].since).startOf("day"); 16026 eras[i].since = date.valueOf(); 16027 break; 16028 } 16029 switch (typeof eras[i].until) { 16030 case "undefined": 16031 eras[i].until = Infinity; 16032 break; 16033 case "string": 16034 date = hooks(eras[i].until).startOf("day").valueOf(); 16035 eras[i].until = date.valueOf(); 16036 break; 16037 } 16038 } 16039 return eras; 16040 } 16041 function localeErasParse(eraName, format2, strict) { 16042 var i, l, eras = this.eras(), name, abbr, narrow; 16043 eraName = eraName.toUpperCase(); 16044 for (i = 0, l = eras.length; i < l; ++i) { 16045 name = eras[i].name.toUpperCase(); 16046 abbr = eras[i].abbr.toUpperCase(); 16047 narrow = eras[i].narrow.toUpperCase(); 16048 if (strict) { 16049 switch (format2) { 16050 case "N": 16051 case "NN": 16052 case "NNN": 16053 if (abbr === eraName) { 16054 return eras[i]; 16055 } 16056 break; 16057 case "NNNN": 16058 if (name === eraName) { 16059 return eras[i]; 16060 } 16061 break; 16062 case "NNNNN": 16063 if (narrow === eraName) { 16064 return eras[i]; 16065 } 16066 break; 16067 } 16068 } else if ([name, abbr, narrow].indexOf(eraName) >= 0) { 16069 return eras[i]; 16070 } 16071 } 16072 } 16073 function localeErasConvertYear(era, year) { 16074 var dir = era.since <= era.until ? 1 : -1; 16075 if (year === void 0) { 16076 return hooks(era.since).year(); 16077 } else { 16078 return hooks(era.since).year() + (year - era.offset) * dir; 16079 } 16080 } 16081 function getEraName() { 16082 var i, l, val, eras = this.localeData().eras(); 16083 for (i = 0, l = eras.length; i < l; ++i) { 16084 val = this.clone().startOf("day").valueOf(); 16085 if (eras[i].since <= val && val <= eras[i].until) { 16086 return eras[i].name; 16087 } 16088 if (eras[i].until <= val && val <= eras[i].since) { 16089 return eras[i].name; 16090 } 16091 } 16092 return ""; 16093 } 16094 function getEraNarrow() { 16095 var i, l, val, eras = this.localeData().eras(); 16096 for (i = 0, l = eras.length; i < l; ++i) { 16097 val = this.clone().startOf("day").valueOf(); 16098 if (eras[i].since <= val && val <= eras[i].until) { 16099 return eras[i].narrow; 16100 } 16101 if (eras[i].until <= val && val <= eras[i].since) { 16102 return eras[i].narrow; 16103 } 16104 } 16105 return ""; 16106 } 16107 function getEraAbbr() { 16108 var i, l, val, eras = this.localeData().eras(); 16109 for (i = 0, l = eras.length; i < l; ++i) { 16110 val = this.clone().startOf("day").valueOf(); 16111 if (eras[i].since <= val && val <= eras[i].until) { 16112 return eras[i].abbr; 16113 } 16114 if (eras[i].until <= val && val <= eras[i].since) { 16115 return eras[i].abbr; 16116 } 16117 } 16118 return ""; 16119 } 16120 function getEraYear() { 16121 var i, l, dir, val, eras = this.localeData().eras(); 16122 for (i = 0, l = eras.length; i < l; ++i) { 16123 dir = eras[i].since <= eras[i].until ? 1 : -1; 16124 val = this.clone().startOf("day").valueOf(); 16125 if (eras[i].since <= val && val <= eras[i].until || eras[i].until <= val && val <= eras[i].since) { 16126 return (this.year() - hooks(eras[i].since).year()) * dir + eras[i].offset; 16127 } 16128 } 16129 return this.year(); 16130 } 16131 function erasNameRegex(isStrict) { 16132 if (!hasOwnProp(this, "_erasNameRegex")) { 16133 computeErasParse.call(this); 16134 } 16135 return isStrict ? this._erasNameRegex : this._erasRegex; 16136 } 16137 function erasAbbrRegex(isStrict) { 16138 if (!hasOwnProp(this, "_erasAbbrRegex")) { 16139 computeErasParse.call(this); 16140 } 16141 return isStrict ? this._erasAbbrRegex : this._erasRegex; 16142 } 16143 function erasNarrowRegex(isStrict) { 16144 if (!hasOwnProp(this, "_erasNarrowRegex")) { 16145 computeErasParse.call(this); 16146 } 16147 return isStrict ? this._erasNarrowRegex : this._erasRegex; 16148 } 16149 function matchEraAbbr(isStrict, locale2) { 16150 return locale2.erasAbbrRegex(isStrict); 16151 } 16152 function matchEraName(isStrict, locale2) { 16153 return locale2.erasNameRegex(isStrict); 16154 } 16155 function matchEraNarrow(isStrict, locale2) { 16156 return locale2.erasNarrowRegex(isStrict); 16157 } 16158 function matchEraYearOrdinal(isStrict, locale2) { 16159 return locale2._eraYearOrdinalRegex || matchUnsigned; 16160 } 16161 function computeErasParse() { 16162 var abbrPieces = [], namePieces = [], narrowPieces = [], mixedPieces = [], i, l, erasName, erasAbbr, erasNarrow, eras = this.eras(); 16163 for (i = 0, l = eras.length; i < l; ++i) { 16164 erasName = regexEscape(eras[i].name); 16165 erasAbbr = regexEscape(eras[i].abbr); 16166 erasNarrow = regexEscape(eras[i].narrow); 16167 namePieces.push(erasName); 16168 abbrPieces.push(erasAbbr); 16169 narrowPieces.push(erasNarrow); 16170 mixedPieces.push(erasName); 16171 mixedPieces.push(erasAbbr); 16172 mixedPieces.push(erasNarrow); 16173 } 16174 this._erasRegex = new RegExp("^(" + mixedPieces.join("|") + ")", "i"); 16175 this._erasNameRegex = new RegExp("^(" + namePieces.join("|") + ")", "i"); 16176 this._erasAbbrRegex = new RegExp("^(" + abbrPieces.join("|") + ")", "i"); 16177 this._erasNarrowRegex = new RegExp( 16178 "^(" + narrowPieces.join("|") + ")", 16179 "i" 16180 ); 16181 } 16182 addFormatToken(0, ["gg", 2], 0, function() { 16183 return this.weekYear() % 100; 16184 }); 16185 addFormatToken(0, ["GG", 2], 0, function() { 16186 return this.isoWeekYear() % 100; 16187 }); 16188 function addWeekYearFormatToken(token2, getter) { 16189 addFormatToken(0, [token2, token2.length], 0, getter); 16190 } 16191 addWeekYearFormatToken("gggg", "weekYear"); 16192 addWeekYearFormatToken("ggggg", "weekYear"); 16193 addWeekYearFormatToken("GGGG", "isoWeekYear"); 16194 addWeekYearFormatToken("GGGGG", "isoWeekYear"); 16195 addRegexToken("G", matchSigned); 16196 addRegexToken("g", matchSigned); 16197 addRegexToken("GG", match1to2, match2); 16198 addRegexToken("gg", match1to2, match2); 16199 addRegexToken("GGGG", match1to4, match4); 16200 addRegexToken("gggg", match1to4, match4); 16201 addRegexToken("GGGGG", match1to6, match6); 16202 addRegexToken("ggggg", match1to6, match6); 16203 addWeekParseToken( 16204 ["gggg", "ggggg", "GGGG", "GGGGG"], 16205 function(input, week, config, token2) { 16206 week[token2.substr(0, 2)] = toInt(input); 16207 } 16208 ); 16209 addWeekParseToken(["gg", "GG"], function(input, week, config, token2) { 16210 week[token2] = hooks.parseTwoDigitYear(input); 16211 }); 16212 function getSetWeekYear(input) { 16213 return getSetWeekYearHelper.call( 16214 this, 16215 input, 16216 this.week(), 16217 this.weekday() + this.localeData()._week.dow, 16218 this.localeData()._week.dow, 16219 this.localeData()._week.doy 16220 ); 16221 } 16222 function getSetISOWeekYear(input) { 16223 return getSetWeekYearHelper.call( 16224 this, 16225 input, 16226 this.isoWeek(), 16227 this.isoWeekday(), 16228 1, 16229 4 16230 ); 16231 } 16232 function getISOWeeksInYear() { 16233 return weeksInYear(this.year(), 1, 4); 16234 } 16235 function getISOWeeksInISOWeekYear() { 16236 return weeksInYear(this.isoWeekYear(), 1, 4); 16237 } 16238 function getWeeksInYear() { 16239 var weekInfo = this.localeData()._week; 16240 return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); 16241 } 16242 function getWeeksInWeekYear() { 16243 var weekInfo = this.localeData()._week; 16244 return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy); 16245 } 16246 function getSetWeekYearHelper(input, week, weekday, dow, doy) { 16247 var weeksTarget; 16248 if (input == null) { 16249 return weekOfYear(this, dow, doy).year; 16250 } else { 16251 weeksTarget = weeksInYear(input, dow, doy); 16252 if (week > weeksTarget) { 16253 week = weeksTarget; 16254 } 16255 return setWeekAll.call(this, input, week, weekday, dow, doy); 16256 } 16257 } 16258 function setWeekAll(weekYear, week, weekday, dow, doy) { 16259 var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy), date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear); 16260 this.year(date.getUTCFullYear()); 16261 this.month(date.getUTCMonth()); 16262 this.date(date.getUTCDate()); 16263 return this; 16264 } 16265 addFormatToken("Q", 0, "Qo", "quarter"); 16266 addRegexToken("Q", match1); 16267 addParseToken("Q", function(input, array) { 16268 array[MONTH] = (toInt(input) - 1) * 3; 16269 }); 16270 function getSetQuarter(input) { 16271 return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); 16272 } 16273 addFormatToken("D", ["DD", 2], "Do", "date"); 16274 addRegexToken("D", match1to2, match1to2NoLeadingZero); 16275 addRegexToken("DD", match1to2, match2); 16276 addRegexToken("Do", function(isStrict, locale2) { 16277 return isStrict ? locale2._dayOfMonthOrdinalParse || locale2._ordinalParse : locale2._dayOfMonthOrdinalParseLenient; 16278 }); 16279 addParseToken(["D", "DD"], DATE); 16280 addParseToken("Do", function(input, array) { 16281 array[DATE] = toInt(input.match(match1to2)[0]); 16282 }); 16283 var getSetDayOfMonth = makeGetSet("Date", true); 16284 addFormatToken("DDD", ["DDDD", 3], "DDDo", "dayOfYear"); 16285 addRegexToken("DDD", match1to3); 16286 addRegexToken("DDDD", match3); 16287 addParseToken(["DDD", "DDDD"], function(input, array, config) { 16288 config._dayOfYear = toInt(input); 16289 }); 16290 function getSetDayOfYear(input) { 16291 var dayOfYear = Math.round( 16292 (this.clone().startOf("day") - this.clone().startOf("year")) / 864e5 16293 ) + 1; 16294 return input == null ? dayOfYear : this.add(input - dayOfYear, "d"); 16295 } 16296 addFormatToken("m", ["mm", 2], 0, "minute"); 16297 addRegexToken("m", match1to2, match1to2HasZero); 16298 addRegexToken("mm", match1to2, match2); 16299 addParseToken(["m", "mm"], MINUTE); 16300 var getSetMinute = makeGetSet("Minutes", false); 16301 addFormatToken("s", ["ss", 2], 0, "second"); 16302 addRegexToken("s", match1to2, match1to2HasZero); 16303 addRegexToken("ss", match1to2, match2); 16304 addParseToken(["s", "ss"], SECOND); 16305 var getSetSecond = makeGetSet("Seconds", false); 16306 addFormatToken("S", 0, 0, function() { 16307 return ~~(this.millisecond() / 100); 16308 }); 16309 addFormatToken(0, ["SS", 2], 0, function() { 16310 return ~~(this.millisecond() / 10); 16311 }); 16312 addFormatToken(0, ["SSS", 3], 0, "millisecond"); 16313 addFormatToken(0, ["SSSS", 4], 0, function() { 16314 return this.millisecond() * 10; 16315 }); 16316 addFormatToken(0, ["SSSSS", 5], 0, function() { 16317 return this.millisecond() * 100; 16318 }); 16319 addFormatToken(0, ["SSSSSS", 6], 0, function() { 16320 return this.millisecond() * 1e3; 16321 }); 16322 addFormatToken(0, ["SSSSSSS", 7], 0, function() { 16323 return this.millisecond() * 1e4; 16324 }); 16325 addFormatToken(0, ["SSSSSSSS", 8], 0, function() { 16326 return this.millisecond() * 1e5; 16327 }); 16328 addFormatToken(0, ["SSSSSSSSS", 9], 0, function() { 16329 return this.millisecond() * 1e6; 16330 }); 16331 addRegexToken("S", match1to3, match1); 16332 addRegexToken("SS", match1to3, match2); 16333 addRegexToken("SSS", match1to3, match3); 16334 var token, getSetMillisecond; 16335 for (token = "SSSS"; token.length <= 9; token += "S") { 16336 addRegexToken(token, matchUnsigned); 16337 } 16338 function parseMs(input, array) { 16339 array[MILLISECOND] = toInt(("0." + input) * 1e3); 16340 } 16341 for (token = "S"; token.length <= 9; token += "S") { 16342 addParseToken(token, parseMs); 16343 } 16344 getSetMillisecond = makeGetSet("Milliseconds", false); 16345 addFormatToken("z", 0, 0, "zoneAbbr"); 16346 addFormatToken("zz", 0, 0, "zoneName"); 16347 function getZoneAbbr() { 16348 return this._isUTC ? "UTC" : ""; 16349 } 16350 function getZoneName() { 16351 return this._isUTC ? "Coordinated Universal Time" : ""; 16352 } 16353 var proto$2 = Moment.prototype; 16354 proto$2.add = add$1; 16355 proto$2.calendar = calendar; 16356 proto$2.clone = clone$1; 16357 proto$2.diff = diff; 16358 proto$2.endOf = endOf; 16359 proto$2.format = format; 16360 proto$2.from = from; 16361 proto$2.fromNow = fromNow; 16362 proto$2.to = to; 16363 proto$2.toNow = toNow; 16364 proto$2.get = stringGet; 16365 proto$2.invalidAt = invalidAt; 16366 proto$2.isAfter = isAfter; 16367 proto$2.isBefore = isBefore; 16368 proto$2.isBetween = isBetween; 16369 proto$2.isSame = isSame; 16370 proto$2.isSameOrAfter = isSameOrAfter; 16371 proto$2.isSameOrBefore = isSameOrBefore; 16372 proto$2.isValid = isValid; 16373 proto$2.lang = lang; 16374 proto$2.locale = locale; 16375 proto$2.localeData = localeData; 16376 proto$2.max = prototypeMax; 16377 proto$2.min = prototypeMin; 16378 proto$2.parsingFlags = parsingFlags; 16379 proto$2.set = stringSet; 16380 proto$2.startOf = startOf; 16381 proto$2.subtract = subtract$1; 16382 proto$2.toArray = toArray; 16383 proto$2.toObject = toObject; 16384 proto$2.toDate = toDate; 16385 proto$2.toISOString = toISOString$1; 16386 proto$2.inspect = inspect; 16387 if (typeof Symbol !== "undefined" && Symbol.for != null) { 16388 proto$2[/* @__PURE__ */ Symbol.for("nodejs.util.inspect.custom")] = function() { 16389 return "Moment<" + this.format() + ">"; 16390 }; 16391 } 16392 proto$2.toJSON = toJSON; 16393 proto$2.toString = toString; 16394 proto$2.unix = unix; 16395 proto$2.valueOf = valueOf$1; 16396 proto$2.creationData = creationData; 16397 proto$2.eraName = getEraName; 16398 proto$2.eraNarrow = getEraNarrow; 16399 proto$2.eraAbbr = getEraAbbr; 16400 proto$2.eraYear = getEraYear; 16401 proto$2.year = getSetYear; 16402 proto$2.isLeapYear = getIsLeapYear; 16403 proto$2.weekYear = getSetWeekYear; 16404 proto$2.isoWeekYear = getSetISOWeekYear; 16405 proto$2.quarter = proto$2.quarters = getSetQuarter; 16406 proto$2.month = getSetMonth; 16407 proto$2.daysInMonth = getDaysInMonth; 16408 proto$2.week = proto$2.weeks = getSetWeek; 16409 proto$2.isoWeek = proto$2.isoWeeks = getSetISOWeek; 16410 proto$2.weeksInYear = getWeeksInYear; 16411 proto$2.weeksInWeekYear = getWeeksInWeekYear; 16412 proto$2.isoWeeksInYear = getISOWeeksInYear; 16413 proto$2.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear; 16414 proto$2.date = getSetDayOfMonth; 16415 proto$2.day = proto$2.days = getSetDayOfWeek; 16416 proto$2.weekday = getSetLocaleDayOfWeek; 16417 proto$2.isoWeekday = getSetISODayOfWeek; 16418 proto$2.dayOfYear = getSetDayOfYear; 16419 proto$2.hour = proto$2.hours = getSetHour; 16420 proto$2.minute = proto$2.minutes = getSetMinute; 16421 proto$2.second = proto$2.seconds = getSetSecond; 16422 proto$2.millisecond = proto$2.milliseconds = getSetMillisecond; 16423 proto$2.utcOffset = getSetOffset; 16424 proto$2.utc = setOffsetToUTC; 16425 proto$2.local = setOffsetToLocal; 16426 proto$2.parseZone = setOffsetToParsedOffset; 16427 proto$2.hasAlignedHourOffset = hasAlignedHourOffset; 16428 proto$2.isDST = isDaylightSavingTime; 16429 proto$2.isLocal = isLocal; 16430 proto$2.isUtcOffset = isUtcOffset; 16431 proto$2.isUtc = isUtc; 16432 proto$2.isUTC = isUtc; 16433 proto$2.zoneAbbr = getZoneAbbr; 16434 proto$2.zoneName = getZoneName; 16435 proto$2.dates = deprecate( 16436 "dates accessor is deprecated. Use date instead.", 16437 getSetDayOfMonth 16438 ); 16439 proto$2.months = deprecate( 16440 "months accessor is deprecated. Use month instead", 16441 getSetMonth 16442 ); 16443 proto$2.years = deprecate( 16444 "years accessor is deprecated. Use year instead", 16445 getSetYear 16446 ); 16447 proto$2.zone = deprecate( 16448 "moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/", 16449 getSetZone 16450 ); 16451 proto$2.isDSTShifted = deprecate( 16452 "isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information", 16453 isDaylightSavingTimeShifted 16454 ); 16455 function createUnix(input) { 16456 return createLocal(input * 1e3); 16457 } 16458 function createInZone() { 16459 return createLocal.apply(null, arguments).parseZone(); 16460 } 16461 function preParsePostFormat(string) { 16462 return string; 16463 } 16464 var proto$1 = Locale.prototype; 16465 proto$1.calendar = calendar$1; 16466 proto$1.longDateFormat = longDateFormat; 16467 proto$1.invalidDate = invalidDate; 16468 proto$1.ordinal = ordinal; 16469 proto$1.preparse = preParsePostFormat; 16470 proto$1.postformat = preParsePostFormat; 16471 proto$1.relativeTime = relativeTime$1; 16472 proto$1.pastFuture = pastFuture; 16473 proto$1.set = set; 16474 proto$1.eras = localeEras; 16475 proto$1.erasParse = localeErasParse; 16476 proto$1.erasConvertYear = localeErasConvertYear; 16477 proto$1.erasAbbrRegex = erasAbbrRegex; 16478 proto$1.erasNameRegex = erasNameRegex; 16479 proto$1.erasNarrowRegex = erasNarrowRegex; 16480 proto$1.months = localeMonths; 16481 proto$1.monthsShort = localeMonthsShort; 16482 proto$1.monthsParse = localeMonthsParse; 16483 proto$1.monthsRegex = monthsRegex; 16484 proto$1.monthsShortRegex = monthsShortRegex; 16485 proto$1.week = localeWeek; 16486 proto$1.firstDayOfYear = localeFirstDayOfYear; 16487 proto$1.firstDayOfWeek = localeFirstDayOfWeek; 16488 proto$1.weekdays = localeWeekdays; 16489 proto$1.weekdaysMin = localeWeekdaysMin; 16490 proto$1.weekdaysShort = localeWeekdaysShort; 16491 proto$1.weekdaysParse = localeWeekdaysParse; 16492 proto$1.weekdaysRegex = weekdaysRegex; 16493 proto$1.weekdaysShortRegex = weekdaysShortRegex; 16494 proto$1.weekdaysMinRegex = weekdaysMinRegex; 16495 proto$1.isPM = localeIsPM; 16496 proto$1.meridiem = localeMeridiem; 16497 function get$1(format2, index, field, setter) { 16498 var locale2 = getLocale(), utc = createUTC().set(setter, index); 16499 return locale2[field](utc, format2); 16500 } 16501 function listMonthsImpl(format2, index, field) { 16502 if (isNumber(format2)) { 16503 index = format2; 16504 format2 = void 0; 16505 } 16506 format2 = format2 || ""; 16507 if (index != null) { 16508 return get$1(format2, index, field, "month"); 16509 } 16510 var i, out = []; 16511 for (i = 0; i < 12; i++) { 16512 out[i] = get$1(format2, i, field, "month"); 16513 } 16514 return out; 16515 } 16516 function listWeekdaysImpl(localeSorted, format2, index, field) { 16517 if (typeof localeSorted === "boolean") { 16518 if (isNumber(format2)) { 16519 index = format2; 16520 format2 = void 0; 16521 } 16522 format2 = format2 || ""; 16523 } else { 16524 format2 = localeSorted; 16525 index = format2; 16526 localeSorted = false; 16527 if (isNumber(format2)) { 16528 index = format2; 16529 format2 = void 0; 16530 } 16531 format2 = format2 || ""; 16532 } 16533 var locale2 = getLocale(), shift = localeSorted ? locale2._week.dow : 0, i, out = []; 16534 if (index != null) { 16535 return get$1(format2, (index + shift) % 7, field, "day"); 16536 } 16537 for (i = 0; i < 7; i++) { 16538 out[i] = get$1(format2, (i + shift) % 7, field, "day"); 16539 } 16540 return out; 16541 } 16542 function listMonths(format2, index) { 16543 return listMonthsImpl(format2, index, "months"); 16544 } 16545 function listMonthsShort(format2, index) { 16546 return listMonthsImpl(format2, index, "monthsShort"); 16547 } 16548 function listWeekdays(localeSorted, format2, index) { 16549 return listWeekdaysImpl(localeSorted, format2, index, "weekdays"); 16550 } 16551 function listWeekdaysShort(localeSorted, format2, index) { 16552 return listWeekdaysImpl(localeSorted, format2, index, "weekdaysShort"); 16553 } 16554 function listWeekdaysMin(localeSorted, format2, index) { 16555 return listWeekdaysImpl(localeSorted, format2, index, "weekdaysMin"); 16556 } 16557 getSetGlobalLocale("en", { 16558 eras: [ 16559 { 16560 since: "0001-01-01", 16561 until: Infinity, 16562 offset: 1, 16563 name: "Anno Domini", 16564 narrow: "AD", 16565 abbr: "AD" 16566 }, 16567 { 16568 since: "0000-12-31", 16569 until: -Infinity, 16570 offset: 1, 16571 name: "Before Christ", 16572 narrow: "BC", 16573 abbr: "BC" 16574 } 16575 ], 16576 dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, 16577 ordinal: function(number) { 16578 var b = number % 10, output = toInt(number % 100 / 10) === 1 ? "th" : b === 1 ? "st" : b === 2 ? "nd" : b === 3 ? "rd" : "th"; 16579 return number + output; 16580 } 16581 }); 16582 hooks.lang = deprecate( 16583 "moment.lang is deprecated. Use moment.locale instead.", 16584 getSetGlobalLocale 16585 ); 16586 hooks.langData = deprecate( 16587 "moment.langData is deprecated. Use moment.localeData instead.", 16588 getLocale 16589 ); 16590 var mathAbs = Math.abs; 16591 function abs$1() { 16592 var data = this._data; 16593 this._milliseconds = mathAbs(this._milliseconds); 16594 this._days = mathAbs(this._days); 16595 this._months = mathAbs(this._months); 16596 data.milliseconds = mathAbs(data.milliseconds); 16597 data.seconds = mathAbs(data.seconds); 16598 data.minutes = mathAbs(data.minutes); 16599 data.hours = mathAbs(data.hours); 16600 data.months = mathAbs(data.months); 16601 data.years = mathAbs(data.years); 16602 return this; 16603 } 16604 function addSubtract(duration, input, value, direction) { 16605 var other = createDuration(input, value); 16606 duration._milliseconds += direction * other._milliseconds; 16607 duration._days += direction * other._days; 16608 duration._months += direction * other._months; 16609 return duration._bubble(); 16610 } 16611 function add(input, value) { 16612 return addSubtract(this, input, value, 1); 16613 } 16614 function subtract(input, value) { 16615 return addSubtract(this, input, value, -1); 16616 } 16617 function absCeil(number) { 16618 if (number < 0) { 16619 return Math.floor(number); 16620 } else { 16621 return Math.ceil(number); 16622 } 16623 } 16624 function bubble() { 16625 var milliseconds2 = this._milliseconds, days2 = this._days, months2 = this._months, data = this._data, seconds2, minutes2, hours2, years2, monthsFromDays; 16626 if (!(milliseconds2 >= 0 && days2 >= 0 && months2 >= 0 || milliseconds2 <= 0 && days2 <= 0 && months2 <= 0)) { 16627 milliseconds2 += absCeil(monthsToDays(months2) + days2) * 864e5; 16628 days2 = 0; 16629 months2 = 0; 16630 } 16631 data.milliseconds = milliseconds2 % 1e3; 16632 seconds2 = absFloor(milliseconds2 / 1e3); 16633 data.seconds = seconds2 % 60; 16634 minutes2 = absFloor(seconds2 / 60); 16635 data.minutes = minutes2 % 60; 16636 hours2 = absFloor(minutes2 / 60); 16637 data.hours = hours2 % 24; 16638 days2 += absFloor(hours2 / 24); 16639 monthsFromDays = absFloor(daysToMonths(days2)); 16640 months2 += monthsFromDays; 16641 days2 -= absCeil(monthsToDays(monthsFromDays)); 16642 years2 = absFloor(months2 / 12); 16643 months2 %= 12; 16644 data.days = days2; 16645 data.months = months2; 16646 data.years = years2; 16647 return this; 16648 } 16649 function daysToMonths(days2) { 16650 return days2 * 4800 / 146097; 16651 } 16652 function monthsToDays(months2) { 16653 return months2 * 146097 / 4800; 16654 } 16655 function as(units) { 16656 if (!this.isValid()) { 16657 return NaN; 16658 } 16659 var days2, months2, milliseconds2 = this._milliseconds; 16660 units = normalizeUnits(units); 16661 if (units === "month" || units === "quarter" || units === "year") { 16662 days2 = this._days + milliseconds2 / 864e5; 16663 months2 = this._months + daysToMonths(days2); 16664 switch (units) { 16665 case "month": 16666 return months2; 16667 case "quarter": 16668 return months2 / 3; 16669 case "year": 16670 return months2 / 12; 16671 } 16672 } else { 16673 days2 = this._days + Math.round(monthsToDays(this._months)); 16674 switch (units) { 16675 case "week": 16676 return days2 / 7 + milliseconds2 / 6048e5; 16677 case "day": 16678 return days2 + milliseconds2 / 864e5; 16679 case "hour": 16680 return days2 * 24 + milliseconds2 / 36e5; 16681 case "minute": 16682 return days2 * 1440 + milliseconds2 / 6e4; 16683 case "second": 16684 return days2 * 86400 + milliseconds2 / 1e3; 16685 // Math.floor prevents floating point math errors here 16686 case "millisecond": 16687 return Math.floor(days2 * 864e5) + milliseconds2; 16688 default: 16689 throw new Error("Unknown unit " + units); 16690 } 16691 } 16692 } 16693 function makeAs(alias) { 16694 return function() { 16695 return this.as(alias); 16696 }; 16697 } 16698 var asMilliseconds = makeAs("ms"), asSeconds = makeAs("s"), asMinutes = makeAs("m"), asHours = makeAs("h"), asDays = makeAs("d"), asWeeks = makeAs("w"), asMonths = makeAs("M"), asQuarters = makeAs("Q"), asYears = makeAs("y"), valueOf = asMilliseconds; 16699 function clone() { 16700 return createDuration(this); 16701 } 16702 function get(units) { 16703 units = normalizeUnits(units); 16704 return this.isValid() ? this[units + "s"]() : NaN; 16705 } 16706 function makeGetter(name) { 16707 return function() { 16708 return this.isValid() ? this._data[name] : NaN; 16709 }; 16710 } 16711 var milliseconds = makeGetter("milliseconds"), seconds = makeGetter("seconds"), minutes = makeGetter("minutes"), hours = makeGetter("hours"), days = makeGetter("days"), months = makeGetter("months"), years = makeGetter("years"); 16712 function weeks() { 16713 return absFloor(this.days() / 7); 16714 } 16715 var round = Math.round, thresholds = { 16716 ss: 44, 16717 // a few seconds to seconds 16718 s: 45, 16719 // seconds to minute 16720 m: 45, 16721 // minutes to hour 16722 h: 22, 16723 // hours to day 16724 d: 26, 16725 // days to month/week 16726 w: null, 16727 // weeks to month 16728 M: 11 16729 // months to year 16730 }; 16731 function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale2) { 16732 return relativeTimeWithoutPostformat.call( 16733 locale2, 16734 number || 1, 16735 !!withoutSuffix, 16736 string, 16737 isFuture 16738 ); 16739 } 16740 function relativeTime(posNegDuration, withoutSuffix, thresholds2, locale2) { 16741 var duration = createDuration(posNegDuration).abs(), seconds2 = round(duration.as("s")), minutes2 = round(duration.as("m")), hours2 = round(duration.as("h")), days2 = round(duration.as("d")), months2 = round(duration.as("M")), weeks2 = round(duration.as("w")), years2 = round(duration.as("y")), a = seconds2 <= thresholds2.ss && ["s", seconds2] || seconds2 < thresholds2.s && ["ss", seconds2] || minutes2 <= 1 && ["m"] || minutes2 < thresholds2.m && ["mm", minutes2] || hours2 <= 1 && ["h"] || hours2 < thresholds2.h && ["hh", hours2] || days2 <= 1 && ["d"] || days2 < thresholds2.d && ["dd", days2]; 16742 if (thresholds2.w != null) { 16743 a = a || weeks2 <= 1 && ["w"] || weeks2 < thresholds2.w && ["ww", weeks2]; 16744 } 16745 a = a || months2 <= 1 && ["M"] || months2 < thresholds2.M && ["MM", months2] || years2 <= 1 && ["y"] || ["yy", years2]; 16746 a[2] = withoutSuffix; 16747 a[3] = +posNegDuration > 0; 16748 a[4] = locale2; 16749 return substituteTimeAgo.apply(null, a); 16750 } 16751 function getSetRelativeTimeRounding(roundingFunction) { 16752 if (roundingFunction === void 0) { 16753 return round; 16754 } 16755 if (typeof roundingFunction === "function") { 16756 round = roundingFunction; 16757 return true; 16758 } 16759 return false; 16760 } 16761 function getSetRelativeTimeThreshold(threshold, limit) { 16762 if (thresholds[threshold] === void 0) { 16763 return false; 16764 } 16765 if (limit === void 0) { 16766 return thresholds[threshold]; 16767 } 16768 thresholds[threshold] = limit; 16769 if (threshold === "s") { 16770 thresholds.ss = limit - 1; 16771 } 16772 return true; 16773 } 16774 function humanize(argWithSuffix, argThresholds) { 16775 if (!this.isValid()) { 16776 return this.localeData().invalidDate(); 16777 } 16778 var withSuffix = false, th = thresholds, locale2, output; 16779 if (typeof argWithSuffix === "object") { 16780 argThresholds = argWithSuffix; 16781 argWithSuffix = false; 16782 } 16783 if (typeof argWithSuffix === "boolean") { 16784 withSuffix = argWithSuffix; 16785 } 16786 if (typeof argThresholds === "object") { 16787 th = extend(extend({}, thresholds), argThresholds || {}); 16788 if (argThresholds.s != null && argThresholds.ss == null) { 16789 th.ss = argThresholds.s - 1; 16790 } 16791 } 16792 locale2 = this.localeData(); 16793 output = relativeTime(this, !withSuffix, th, locale2); 16794 if (withSuffix) { 16795 output = pastFutureWithoutPostformat.call(locale2, +this, output); 16796 } 16797 return locale2.postformat(output); 16798 } 16799 var abs = Math.abs; 16800 function sign(x) { 16801 return (x > 0) - (x < 0) || +x; 16802 } 16803 function toISOString() { 16804 if (!this.isValid()) { 16805 return this.localeData().invalidDate(); 16806 } 16807 var seconds2 = abs(this._milliseconds) / 1e3, days2 = abs(this._days), months2 = abs(this._months), minutes2, hours2, years2, s, total = this.asSeconds(), totalSign, ymSign, daysSign, hmsSign; 16808 if (!total) { 16809 return "P0D"; 16810 } 16811 minutes2 = absFloor(seconds2 / 60); 16812 hours2 = absFloor(minutes2 / 60); 16813 seconds2 %= 60; 16814 minutes2 %= 60; 16815 years2 = absFloor(months2 / 12); 16816 months2 %= 12; 16817 s = seconds2 ? seconds2.toFixed(3).replace(/\.?0+$/, "") : ""; 16818 totalSign = total < 0 ? "-" : ""; 16819 ymSign = sign(this._months) !== sign(total) ? "-" : ""; 16820 daysSign = sign(this._days) !== sign(total) ? "-" : ""; 16821 hmsSign = sign(this._milliseconds) !== sign(total) ? "-" : ""; 16822 return totalSign + "P" + (years2 ? ymSign + years2 + "Y" : "") + (months2 ? ymSign + months2 + "M" : "") + (days2 ? daysSign + days2 + "D" : "") + (hours2 || minutes2 || seconds2 ? "T" : "") + (hours2 ? hmsSign + hours2 + "H" : "") + (minutes2 ? hmsSign + minutes2 + "M" : "") + (seconds2 ? hmsSign + s + "S" : ""); 16823 } 16824 var proto = Duration.prototype; 16825 proto.isValid = isValid$1; 16826 proto.abs = abs$1; 16827 proto.add = add; 16828 proto.subtract = subtract; 16829 proto.as = as; 16830 proto.asMilliseconds = asMilliseconds; 16831 proto.asSeconds = asSeconds; 16832 proto.asMinutes = asMinutes; 16833 proto.asHours = asHours; 16834 proto.asDays = asDays; 16835 proto.asWeeks = asWeeks; 16836 proto.asMonths = asMonths; 16837 proto.asQuarters = asQuarters; 16838 proto.asYears = asYears; 16839 proto.valueOf = valueOf; 16840 proto._bubble = bubble; 16841 proto.clone = clone; 16842 proto.get = get; 16843 proto.milliseconds = milliseconds; 16844 proto.seconds = seconds; 16845 proto.minutes = minutes; 16846 proto.hours = hours; 16847 proto.days = days; 16848 proto.weeks = weeks; 16849 proto.months = months; 16850 proto.years = years; 16851 proto.humanize = humanize; 16852 proto.toISOString = toISOString; 16853 proto.toString = toISOString; 16854 proto.toJSON = toISOString; 16855 proto.locale = locale; 16856 proto.localeData = localeData; 16857 proto.toIsoString = deprecate( 16858 "toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)", 16859 toISOString 16860 ); 16861 proto.lang = lang; 16862 addFormatToken("X", 0, 0, "unix"); 16863 addFormatToken("x", 0, 0, "valueOf"); 16864 addRegexToken("x", matchSigned); 16865 addRegexToken("X", matchTimestamp); 16866 addParseToken("X", function(input, array, config) { 16867 config._d = new Date(parseFloat(input) * 1e3); 16868 }); 16869 addParseToken("x", function(input, array, config) { 16870 config._d = new Date(toInt(input)); 16871 }); 16872 hooks.version = "2.31.0"; 16873 setHookCallback(createLocal); 16874 hooks.fn = proto$2; 16875 hooks.min = min; 16876 hooks.max = max; 16877 hooks.now = now; 16878 hooks.utc = createUTC; 16879 hooks.unix = createUnix; 16880 hooks.months = listMonths; 16881 hooks.isDate = isDate; 16882 hooks.locale = getSetGlobalLocale; 16883 hooks.invalid = createInvalid$1; 16884 hooks.duration = createDuration; 16885 hooks.isMoment = isMoment; 16886 hooks.weekdays = listWeekdays; 16887 hooks.parseZone = createInZone; 16888 hooks.localeData = getLocale; 16889 hooks.isDuration = isDuration; 16890 hooks.monthsShort = listMonthsShort; 16891 hooks.weekdaysMin = listWeekdaysMin; 16892 hooks.defineLocale = defineLocale; 16893 hooks.updateLocale = updateLocale; 16894 hooks.locales = listLocales; 16895 hooks.weekdaysShort = listWeekdaysShort; 16896 hooks.normalizeUnits = normalizeUnits; 16897 hooks.relativeTimeRounding = getSetRelativeTimeRounding; 16898 hooks.relativeTimeThreshold = getSetRelativeTimeThreshold; 16899 hooks.calendarFormat = getCalendarFormat; 16900 hooks.prototype = proto$2; 16901 hooks.HTML5_FMT = { 16902 DATETIME_LOCAL: "YYYY-MM-DDTHH:mm", 16903 // <input type="datetime-local" /> 16904 DATETIME_LOCAL_SECONDS: "YYYY-MM-DDTHH:mm:ss", 16905 // <input type="datetime-local" step="1" /> 16906 DATETIME_LOCAL_MS: "YYYY-MM-DDTHH:mm:ss.SSS", 16907 // <input type="datetime-local" step="0.001" /> 16908 DATE: "YYYY-MM-DD", 16909 // <input type="date" /> 16910 TIME: "HH:mm", 16911 // <input type="time" /> 16912 TIME_SECONDS: "HH:mm:ss", 16913 // <input type="time" step="1" /> 16914 TIME_MS: "HH:mm:ss.SSS", 16915 // <input type="time" step="0.001" /> 16916 WEEK: "GGGG-[W]WW", 16917 // <input type="week" /> 16918 MONTH: "YYYY-MM" 16919 // <input type="month" /> 16920 }; 16921 return hooks; 16922 })); 16923 } 16924 }); 16925 16926
vendor: 39,386 bytes, lines 16926-17852
16926// node_modules/pikaday/pikaday.js 16927 var require_pikaday = __commonJS({ 16928 "node_modules/pikaday/pikaday.js"(exports, module) { 16929 init_esbuild_shims(); 16930 (function(root, factory) { 16931 "use strict"; 16932 var moment2; 16933 if (typeof exports === "object") { 16934 try { 16935 moment2 = require_moment(); 16936 } catch (e) { 16937 } 16938 module.exports = factory(moment2); 16939 } else if (typeof define === "function" && define.amd) { 16940 define(function(req) { 16941 var id = "moment"; 16942 try { 16943 moment2 = req(id); 16944 } catch (e) { 16945 } 16946 return factory(moment2); 16947 }); 16948 } else { 16949 root.Pikaday = factory(root.moment); 16950 } 16951 })(exports, function(moment2) { 16952 "use strict"; 16953 var hasMoment = typeof moment2 === "function", hasEventListeners = !!window.addEventListener, document2 = window.document, sto = window.setTimeout, addEvent = function(el, e, callback, capture) { 16954 if (hasEventListeners) { 16955 el.addEventListener(e, callback, !!capture); 16956 } else { 16957 el.attachEvent("on" + e, callback); 16958 } 16959 }, removeEvent = function(el, e, callback, capture) { 16960 if (hasEventListeners) { 16961 el.removeEventListener(e, callback, !!capture); 16962 } else { 16963 el.detachEvent("on" + e, callback); 16964 } 16965 }, trim = function(str) { 16966 return str.trim ? str.trim() : str.replace(/^\s+|\s+$/g, ""); 16967 }, hasClass = function(el, cn) { 16968 return (" " + el.className + " ").indexOf(" " + cn + " ") !== -1; 16969 }, addClass = function(el, cn) { 16970 if (!hasClass(el, cn)) { 16971 el.className = el.className === "" ? cn : el.className + " " + cn; 16972 } 16973 }, removeClass = function(el, cn) { 16974 el.className = trim((" " + el.className + " ").replace(" " + cn + " ", " ")); 16975 }, isArray = function(obj) { 16976 return /Array/.test(Object.prototype.toString.call(obj)); 16977 }, isDate = function(obj) { 16978 return /Date/.test(Object.prototype.toString.call(obj)) && !isNaN(obj.getTime()); 16979 }, isWeekend = function(date) { 16980 var day = date.getDay(); 16981 return day === 0 || day === 6; 16982 }, isLeapYear = function(year) { 16983 return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0; 16984 }, getDaysInMonth = function(year, month) { 16985 return [31, isLeapYear(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month]; 16986 }, setToStartOfDay = function(date) { 16987 if (isDate(date)) date.setHours(0, 0, 0, 0); 16988 }, compareDates = function(a, b) { 16989 return a.getTime() === b.getTime(); 16990 }, extend = function(to, from, overwrite) { 16991 var prop, hasProp; 16992 for (prop in from) { 16993 hasProp = to[prop] !== void 0; 16994 if (hasProp && typeof from[prop] === "object" && from[prop] !== null && from[prop].nodeName === void 0) { 16995 if (isDate(from[prop])) { 16996 if (overwrite) { 16997 to[prop] = new Date(from[prop].getTime()); 16998 } 16999 } else if (isArray(from[prop])) { 17000 if (overwrite) { 17001 to[prop] = from[prop].slice(0); 17002 } 17003 } else { 17004 to[prop] = extend({}, from[prop], overwrite); 17005 } 17006 } else if (overwrite || !hasProp) { 17007 to[prop] = from[prop]; 17008 } 17009 } 17010 return to; 17011 }, fireEvent = function(el, eventName, data) { 17012 var ev; 17013 if (document2.createEvent) { 17014 ev = document2.createEvent("HTMLEvents"); 17015 ev.initEvent(eventName, true, false); 17016 ev = extend(ev, data); 17017 el.dispatchEvent(ev); 17018 } else if (document2.createEventObject) { 17019 ev = document2.createEventObject(); 17020 ev = extend(ev, data); 17021 el.fireEvent("on" + eventName, ev); 17022 } 17023 }, adjustCalendar = function(calendar) { 17024 if (calendar.month < 0) { 17025 calendar.year -= Math.ceil(Math.abs(calendar.month) / 12); 17026 calendar.month += 12; 17027 } 17028 if (calendar.month > 11) { 17029 calendar.year += Math.floor(Math.abs(calendar.month) / 12); 17030 calendar.month -= 12; 17031 } 17032 return calendar; 17033 }, defaults = { 17034 // bind the picker to a form field 17035 field: null, 17036 // automatically show/hide the picker on `field` focus (default `true` if `field` is set) 17037 bound: void 0, 17038 // data-attribute on the input field with an aria assistance text (only applied when `bound` is set) 17039 ariaLabel: "Use the arrow keys to pick a date", 17040 // position of the datepicker, relative to the field (default to bottom & left) 17041 // ('bottom' & 'left' keywords are not used, 'top' & 'right' are modifier on the bottom/left position) 17042 position: "bottom left", 17043 // automatically fit in the viewport even if it means repositioning from the position option 17044 reposition: true, 17045 // the default output format for `.toString()` and `field` value 17046 format: "YYYY-MM-DD", 17047 // the toString function which gets passed a current date object and format 17048 // and returns a string 17049 toString: null, 17050 // used to create date object from current input string 17051 parse: null, 17052 // the initial date to view when first opened 17053 defaultDate: null, 17054 // make the `defaultDate` the initial selected value 17055 setDefaultDate: false, 17056 // first day of week (0: Sunday, 1: Monday etc) 17057 firstDay: 0, 17058 // minimum number of days in the week that gets week number one 17059 // default ISO 8601, week 01 is the week with the first Thursday (4) 17060 firstWeekOfYearMinDays: 4, 17061 // the default flag for moment's strict date parsing 17062 formatStrict: false, 17063 // the minimum/earliest date that can be selected 17064 minDate: null, 17065 // the maximum/latest date that can be selected 17066 maxDate: null, 17067 // number of years either side, or array of upper/lower range 17068 yearRange: 10, 17069 // show week numbers at head of row 17070 showWeekNumber: false, 17071 // Week picker mode 17072 pickWholeWeek: false, 17073 // used internally (don't config outside) 17074 minYear: 0, 17075 maxYear: 9999, 17076 minMonth: void 0, 17077 maxMonth: void 0, 17078 startRange: null, 17079 endRange: null, 17080 isRTL: false, 17081 // Additional text to append to the year in the calendar title 17082 yearSuffix: "", 17083 // Render the month after year in the calendar title 17084 showMonthAfterYear: false, 17085 // Render days of the calendar grid that fall in the next or previous month 17086 showDaysInNextAndPreviousMonths: false, 17087 // Allows user to select days that fall in the next or previous month 17088 enableSelectionDaysInNextAndPreviousMonths: false, 17089 // how many months are visible 17090 numberOfMonths: 1, 17091 // when numberOfMonths is used, this will help you to choose where the main calendar will be (default `left`, can be set to `right`) 17092 // only used for the first display or when a selected date is not visible 17093 mainCalendar: "left", 17094 // Specify a DOM element to render the calendar in 17095 container: void 0, 17096 // Blur field when date is selected 17097 blurFieldOnSelect: true, 17098 // internationalization 17099 i18n: { 17100 previousMonth: "Previous Month", 17101 nextMonth: "Next Month", 17102 months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], 17103 weekdays: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], 17104 weekdaysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"] 17105 }, 17106 // Theme Classname 17107 theme: null, 17108 // events array 17109 events: [], 17110 // callback function 17111 onSelect: null, 17112 onOpen: null, 17113 onClose: null, 17114 onDraw: null, 17115 // Enable keyboard input 17116 keyboardInput: true 17117 }, renderDayName = function(opts, day, abbr) { 17118 day += opts.firstDay; 17119 while (day >= 7) { 17120 day -= 7; 17121 } 17122 return abbr ? opts.i18n.weekdaysShort[day] : opts.i18n.weekdays[day]; 17123 }, renderDay = function(opts) { 17124 var arr = []; 17125 var ariaSelected = "false"; 17126 if (opts.isEmpty) { 17127 if (opts.showDaysInNextAndPreviousMonths) { 17128 arr.push("is-outside-current-month"); 17129 if (!opts.enableSelectionDaysInNextAndPreviousMonths) { 17130 arr.push("is-selection-disabled"); 17131 } 17132 } else { 17133 return '<td class="is-empty"></td>'; 17134 } 17135 } 17136 if (opts.isDisabled) { 17137 arr.push("is-disabled"); 17138 } 17139 if (opts.isToday) { 17140 arr.push("is-today"); 17141 } 17142 if (opts.isSelected) { 17143 arr.push("is-selected"); 17144 ariaSelected = "true"; 17145 } 17146 if (opts.hasEvent) { 17147 arr.push("has-event"); 17148 } 17149 if (opts.isInRange) { 17150 arr.push("is-inrange"); 17151 } 17152 if (opts.isStartRange) { 17153 arr.push("is-startrange"); 17154 } 17155 if (opts.isEndRange) { 17156 arr.push("is-endrange"); 17157 } 17158 return '<td data-day="' + opts.day + '" class="' + arr.join(" ") + '" aria-selected="' + ariaSelected + '"><button class="pika-button pika-day" type="button" data-pika-year="' + opts.year + '" data-pika-month="' + opts.month + '" data-pika-day="' + opts.day + '">' + opts.day + "</button></td>"; 17159 }, isoWeek = function(date, firstWeekOfYearMinDays) { 17160 date.setHours(0, 0, 0, 0); 17161 var yearDay = date.getDate(), weekDay = date.getDay(), dayInFirstWeek = firstWeekOfYearMinDays, dayShift = dayInFirstWeek - 1, daysPerWeek = 7, prevWeekDay = function(day) { 17162 return (day + daysPerWeek - 1) % daysPerWeek; 17163 }; 17164 date.setDate(yearDay + dayShift - prevWeekDay(weekDay)); 17165 var jan4th = new Date(date.getFullYear(), 0, dayInFirstWeek), msPerDay = 24 * 60 * 60 * 1e3, daysBetween = (date.getTime() - jan4th.getTime()) / msPerDay, weekNum = 1 + Math.round((daysBetween - dayShift + prevWeekDay(jan4th.getDay())) / daysPerWeek); 17166 return weekNum; 17167 }, renderWeek = function(d, m, y, firstWeekOfYearMinDays) { 17168 var date = new Date(y, m, d), week = hasMoment ? moment2(date).isoWeek() : isoWeek(date, firstWeekOfYearMinDays); 17169 return '<td class="pika-week">' + week + "</td>"; 17170 }, renderRow = function(days, isRTL, pickWholeWeek, isRowSelected) { 17171 return '<tr class="pika-row' + (pickWholeWeek ? " pick-whole-week" : "") + (isRowSelected ? " is-selected" : "") + '">' + (isRTL ? days.reverse() : days).join("") + "</tr>"; 17172 }, renderBody = function(rows) { 17173 return "<tbody>" + rows.join("") + "</tbody>"; 17174 }, renderHead = function(opts) { 17175 var i, arr = []; 17176 if (opts.showWeekNumber) { 17177 arr.push("<th></th>"); 17178 } 17179 for (i = 0; i < 7; i++) { 17180 arr.push('<th scope="col"><abbr title="' + renderDayName(opts, i) + '">' + renderDayName(opts, i, true) + "</abbr></th>"); 17181 } 17182 return "<thead><tr>" + (opts.isRTL ? arr.reverse() : arr).join("") + "</tr></thead>"; 17183 }, renderTitle = function(instance, c, year, month, refYear, randId) { 17184 var i, j, arr, opts = instance._o, isMinYear = year === opts.minYear, isMaxYear = year === opts.maxYear, html = '<div id="' + randId + '" class="pika-title" role="heading" aria-live="assertive">', monthHtml, yearHtml, prev = true, next = true; 17185 for (arr = [], i = 0; i < 12; i++) { 17186 arr.push('<option value="' + (year === refYear ? i - c : 12 + i - c) + '"' + (i === month ? ' selected="selected"' : "") + (isMinYear && i < opts.minMonth || isMaxYear && i > opts.maxMonth ? ' disabled="disabled"' : "") + ">" + opts.i18n.months[i] + "</option>"); 17187 } 17188 monthHtml = '<div class="pika-label">' + opts.i18n.months[month] + '<select class="pika-select pika-select-month" tabindex="-1">' + arr.join("") + "</select></div>"; 17189 if (isArray(opts.yearRange)) { 17190 i = opts.yearRange[0]; 17191 j = opts.yearRange[1] + 1; 17192 } else { 17193 i = year - opts.yearRange; 17194 j = 1 + year + opts.yearRange; 17195 } 17196 for (arr = []; i < j && i <= opts.maxYear; i++) { 17197 if (i >= opts.minYear) { 17198 arr.push('<option value="' + i + '"' + (i === year ? ' selected="selected"' : "") + ">" + i + "</option>"); 17199 } 17200 } 17201 yearHtml = '<div class="pika-label">' + year + opts.yearSuffix + '<select class="pika-select pika-select-year" tabindex="-1">' + arr.join("") + "</select></div>"; 17202 if (opts.showMonthAfterYear) { 17203 html += yearHtml + monthHtml; 17204 } else { 17205 html += monthHtml + yearHtml; 17206 } 17207 if (isMinYear && (month === 0 || opts.minMonth >= month)) { 17208 prev = false; 17209 } 17210 if (isMaxYear && (month === 11 || opts.maxMonth <= month)) { 17211 next = false; 17212 } 17213 if (c === 0) { 17214 html += '<button class="pika-prev' + (prev ? "" : " is-disabled") + '" type="button">' + opts.i18n.previousMonth + "</button>"; 17215 } 17216 if (c === instance._o.numberOfMonths - 1) { 17217 html += '<button class="pika-next' + (next ? "" : " is-disabled") + '" type="button">' + opts.i18n.nextMonth + "</button>"; 17218 } 17219 return html += "</div>"; 17220 }, renderTable = function(opts, data, randId) { 17221 return '<table cellpadding="0" cellspacing="0" class="pika-table" role="grid" aria-labelledby="' + randId + '">' + renderHead(opts) + renderBody(data) + "</table>"; 17222 }, Pikaday3 = function(options) { 17223 var self2 = this, opts = self2.config(options); 17224 self2._onMouseDown = function(e) { 17225 if (!self2._v) { 17226 return; 17227 } 17228 e = e || window.event; 17229 var target = e.target || e.srcElement; 17230 if (!target) { 17231 return; 17232 } 17233 if (!hasClass(target, "is-disabled")) { 17234 if (hasClass(target, "pika-button") && !hasClass(target, "is-empty") && !hasClass(target.parentNode, "is-disabled")) { 17235 self2.setDate(new Date(target.getAttribute("data-pika-year"), target.getAttribute("data-pika-month"), target.getAttribute("data-pika-day"))); 17236 if (opts.bound) { 17237 sto(function() { 17238 self2.hide(); 17239 if (opts.blurFieldOnSelect && opts.field) { 17240 opts.field.blur(); 17241 } 17242 }, 100); 17243 } 17244 } else if (hasClass(target, "pika-prev")) { 17245 self2.prevMonth(); 17246 } else if (hasClass(target, "pika-next")) { 17247 self2.nextMonth(); 17248 } 17249 } 17250 if (!hasClass(target, "pika-select")) { 17251 if (e.preventDefault) { 17252 e.preventDefault(); 17253 } else { 17254 e.returnValue = false; 17255 return false; 17256 } 17257 } else { 17258 self2._c = true; 17259 } 17260 }; 17261 self2._onChange = function(e) { 17262 e = e || window.event; 17263 var target = e.target || e.srcElement; 17264 if (!target) { 17265 return; 17266 } 17267 if (hasClass(target, "pika-select-month")) { 17268 self2.gotoMonth(target.value); 17269 } else if (hasClass(target, "pika-select-year")) { 17270 self2.gotoYear(target.value); 17271 } 17272 }; 17273 self2._onKeyChange = function(e) { 17274 e = e || window.event; 17275 if (self2.isVisible()) { 17276 switch (e.keyCode) { 17277 case 13: 17278 case 27: 17279 if (opts.field) { 17280 opts.field.blur(); 17281 } 17282 break; 17283 case 37: 17284 self2.adjustDate("subtract", 1); 17285 break; 17286 case 38: 17287 self2.adjustDate("subtract", 7); 17288 break; 17289 case 39: 17290 self2.adjustDate("add", 1); 17291 break; 17292 case 40: 17293 self2.adjustDate("add", 7); 17294 break; 17295 case 8: 17296 case 46: 17297 self2.setDate(null); 17298 break; 17299 } 17300 } 17301 }; 17302 self2._parseFieldValue = function() { 17303 if (opts.parse) { 17304 return opts.parse(opts.field.value, opts.format); 17305 } else if (hasMoment) { 17306 var date = moment2(opts.field.value, opts.format, opts.formatStrict); 17307 return date && date.isValid() ? date.toDate() : null; 17308 } else { 17309 return new Date(Date.parse(opts.field.value)); 17310 } 17311 }; 17312 self2._onInputChange = function(e) { 17313 var date; 17314 if (e.firedBy === self2) { 17315 return; 17316 } 17317 date = self2._parseFieldValue(); 17318 if (isDate(date)) { 17319 self2.setDate(date); 17320 } 17321 if (!self2._v) { 17322 self2.show(); 17323 } 17324 }; 17325 self2._onInputFocus = function() { 17326 self2.show(); 17327 }; 17328 self2._onInputClick = function() { 17329 self2.show(); 17330 }; 17331 self2._onInputBlur = function() { 17332 var pEl = document2.activeElement; 17333 do { 17334 if (hasClass(pEl, "pika-single")) { 17335 return; 17336 } 17337 } while (pEl = pEl.parentNode); 17338 if (!self2._c) { 17339 self2._b = sto(function() { 17340 self2.hide(); 17341 }, 50); 17342 } 17343 self2._c = false; 17344 }; 17345 self2._onClick = function(e) { 17346 e = e || window.event; 17347 var target = e.target || e.srcElement, pEl = target; 17348 if (!target) { 17349 return; 17350 } 17351 if (!hasEventListeners && hasClass(target, "pika-select")) { 17352 if (!target.onchange) { 17353 target.setAttribute("onchange", "return;"); 17354 addEvent(target, "change", self2._onChange); 17355 } 17356 } 17357 do { 17358 if (hasClass(pEl, "pika-single") || pEl === opts.trigger) { 17359 return; 17360 } 17361 } while (pEl = pEl.parentNode); 17362 if (self2._v && target !== opts.trigger && pEl !== opts.trigger) { 17363 self2.hide(); 17364 } 17365 }; 17366 self2.el = document2.createElement("div"); 17367 self2.el.className = "pika-single" + (opts.isRTL ? " is-rtl" : "") + (opts.theme ? " " + opts.theme : ""); 17368 addEvent(self2.el, "mousedown", self2._onMouseDown, true); 17369 addEvent(self2.el, "touchend", self2._onMouseDown, true); 17370 addEvent(self2.el, "change", self2._onChange); 17371 if (opts.keyboardInput) { 17372 addEvent(document2, "keydown", self2._onKeyChange); 17373 } 17374 if (opts.field) { 17375 if (opts.container) { 17376 opts.container.appendChild(self2.el); 17377 } else if (opts.bound) { 17378 document2.body.appendChild(self2.el); 17379 } else { 17380 opts.field.parentNode.insertBefore(self2.el, opts.field.nextSibling); 17381 } 17382 addEvent(opts.field, "change", self2._onInputChange); 17383 if (!opts.defaultDate) { 17384 opts.defaultDate = self2._parseFieldValue(); 17385 opts.setDefaultDate = true; 17386 } 17387 } 17388 var defDate = opts.defaultDate; 17389 if (isDate(defDate)) { 17390 if (opts.setDefaultDate) { 17391 self2.setDate(defDate, true); 17392 } else { 17393 self2.gotoDate(defDate); 17394 } 17395 } else { 17396 self2.gotoDate(/* @__PURE__ */ new Date()); 17397 } 17398 if (opts.bound) { 17399 this.hide(); 17400 self2.el.className += " is-bound"; 17401 addEvent(opts.trigger, "click", self2._onInputClick); 17402 addEvent(opts.trigger, "focus", self2._onInputFocus); 17403 addEvent(opts.trigger, "blur", self2._onInputBlur); 17404 } else { 17405 this.show(); 17406 } 17407 }; 17408 Pikaday3.prototype = { 17409 /** 17410 * configure functionality 17411 */ 17412 config: function(options) { 17413 if (!this._o) { 17414 this._o = extend({}, defaults, true); 17415 } 17416 var opts = extend(this._o, options, true); 17417 opts.isRTL = !!opts.isRTL; 17418 opts.field = opts.field && opts.field.nodeName ? opts.field : null; 17419 opts.theme = typeof opts.theme === "string" && opts.theme ? opts.theme : null; 17420 opts.bound = !!(opts.bound !== void 0 ? opts.field && opts.bound : opts.field); 17421 opts.trigger = opts.trigger && opts.trigger.nodeName ? opts.trigger : opts.field; 17422 opts.disableWeekends = !!opts.disableWeekends; 17423 opts.disableDayFn = typeof opts.disableDayFn === "function" ? opts.disableDayFn : null; 17424 var nom = parseInt(opts.numberOfMonths, 10) || 1; 17425 opts.numberOfMonths = nom > 4 ? 4 : nom; 17426 if (!isDate(opts.minDate)) { 17427 opts.minDate = false; 17428 } 17429 if (!isDate(opts.maxDate)) { 17430 opts.maxDate = false; 17431 } 17432 if (opts.minDate && opts.maxDate && opts.maxDate < opts.minDate) { 17433 opts.maxDate = opts.minDate = false; 17434 } 17435 if (opts.minDate) { 17436 this.setMinDate(opts.minDate); 17437 } 17438 if (opts.maxDate) { 17439 this.setMaxDate(opts.maxDate); 17440 } 17441 if (isArray(opts.yearRange)) { 17442 var fallback = (/* @__PURE__ */ new Date()).getFullYear() - 10; 17443 opts.yearRange[0] = parseInt(opts.yearRange[0], 10) || fallback; 17444 opts.yearRange[1] = parseInt(opts.yearRange[1], 10) || fallback; 17445 } else { 17446 opts.yearRange = Math.abs(parseInt(opts.yearRange, 10)) || defaults.yearRange; 17447 if (opts.yearRange > 100) { 17448 opts.yearRange = 100; 17449 } 17450 } 17451 return opts; 17452 }, 17453 /** 17454 * return a formatted string of the current selection (using Moment.js if available) 17455 */ 17456 toString: function(format) { 17457 format = format || this._o.format; 17458 if (!isDate(this._d)) { 17459 return ""; 17460 } 17461 if (this._o.toString) { 17462 return this._o.toString(this._d, format); 17463 } 17464 if (hasMoment) { 17465 return moment2(this._d).format(format); 17466 } 17467 return this._d.toDateString(); 17468 }, 17469 /** 17470 * return a Moment.js object of the current selection (if available) 17471 */ 17472 getMoment: function() { 17473 return hasMoment ? moment2(this._d) : null; 17474 }, 17475 /** 17476 * set the current selection from a Moment.js object (if available) 17477 */ 17478 setMoment: function(date, preventOnSelect) { 17479 if (hasMoment && moment2.isMoment(date)) { 17480 this.setDate(date.toDate(), preventOnSelect); 17481 } 17482 }, 17483 /** 17484 * return a Date object of the current selection 17485 */ 17486 getDate: function() { 17487 return isDate(this._d) ? new Date(this._d.getTime()) : null; 17488 }, 17489 /** 17490 * set the current selection 17491 */ 17492 setDate: function(date, preventOnSelect) { 17493 if (!date) { 17494 this._d = null; 17495 if (this._o.field) { 17496 this._o.field.value = ""; 17497 fireEvent(this._o.field, "change", { firedBy: this }); 17498 } 17499 return this.draw(); 17500 } 17501 if (typeof date === "string") { 17502 date = new Date(Date.parse(date)); 17503 } 17504 if (!isDate(date)) { 17505 return; 17506 } 17507 var min = this._o.minDate, max = this._o.maxDate; 17508 if (isDate(min) && date < min) { 17509 date = min; 17510 } else if (isDate(max) && date > max) { 17511 date = max; 17512 } 17513 this._d = new Date(date.getTime()); 17514 setToStartOfDay(this._d); 17515 this.gotoDate(this._d); 17516 if (this._o.field) { 17517 this._o.field.value = this.toString(); 17518 fireEvent(this._o.field, "change", { firedBy: this }); 17519 } 17520 if (!preventOnSelect && typeof this._o.onSelect === "function") { 17521 this._o.onSelect.call(this, this.getDate()); 17522 } 17523 }, 17524 /** 17525 * clear and reset the date 17526 */ 17527 clear: function() { 17528 this.setDate(null); 17529 }, 17530 /** 17531 * change view to a specific date 17532 */ 17533 gotoDate: function(date) { 17534 var newCalendar = true; 17535 if (!isDate(date)) { 17536 return; 17537 } 17538 if (this.calendars) { 17539 var firstVisibleDate = new Date(this.calendars[0].year, this.calendars[0].month, 1), lastVisibleDate = new Date(this.calendars[this.calendars.length - 1].year, this.calendars[this.calendars.length - 1].month, 1), visibleDate = date.getTime(); 17540 lastVisibleDate.setMonth(lastVisibleDate.getMonth() + 1); 17541 lastVisibleDate.setDate(lastVisibleDate.getDate() - 1); 17542 newCalendar = visibleDate < firstVisibleDate.getTime() || lastVisibleDate.getTime() < visibleDate; 17543 } 17544 if (newCalendar) { 17545 this.calendars = [{ 17546 month: date.getMonth(), 17547 year: date.getFullYear() 17548 }]; 17549 if (this._o.mainCalendar === "right") { 17550 this.calendars[0].month += 1 - this._o.numberOfMonths; 17551 } 17552 } 17553 this.adjustCalendars(); 17554 }, 17555 adjustDate: function(sign, days) { 17556 var day = this.getDate() || /* @__PURE__ */ new Date(); 17557 var difference = parseInt(days) * 24 * 60 * 60 * 1e3; 17558 var newDay; 17559 if (sign === "add") { 17560 newDay = new Date(day.valueOf() + difference); 17561 } else if (sign === "subtract") { 17562 newDay = new Date(day.valueOf() - difference); 17563 } 17564 this.setDate(newDay); 17565 }, 17566 adjustCalendars: function() { 17567 this.calendars[0] = adjustCalendar(this.calendars[0]); 17568 for (var c = 1; c < this._o.numberOfMonths; c++) { 17569 this.calendars[c] = adjustCalendar({ 17570 month: this.calendars[0].month + c, 17571 year: this.calendars[0].year 17572 }); 17573 } 17574 this.draw(); 17575 }, 17576 gotoToday: function() { 17577 this.gotoDate(/* @__PURE__ */ new Date()); 17578 }, 17579 /** 17580 * change view to a specific month (zero-index, e.g. 0: January) 17581 */ 17582 gotoMonth: function(month) { 17583 if (!isNaN(month)) { 17584 this.calendars[0].month = parseInt(month, 10); 17585 this.adjustCalendars(); 17586 } 17587 }, 17588 nextMonth: function() { 17589 this.calendars[0].month++; 17590 this.adjustCalendars(); 17591 }, 17592 prevMonth: function() { 17593 this.calendars[0].month--; 17594 this.adjustCalendars(); 17595 }, 17596 /** 17597 * change view to a specific full year (e.g. "2012") 17598 */ 17599 gotoYear: function(year) { 17600 if (!isNaN(year)) { 17601 this.calendars[0].year = parseInt(year, 10); 17602 this.adjustCalendars(); 17603 } 17604 }, 17605 /** 17606 * change the minDate 17607 */ 17608 setMinDate: function(value) { 17609 if (value instanceof Date) { 17610 setToStartOfDay(value); 17611 this._o.minDate = value; 17612 this._o.minYear = value.getFullYear(); 17613 this._o.minMonth = value.getMonth(); 17614 } else { 17615 this._o.minDate = defaults.minDate; 17616 this._o.minYear = defaults.minYear; 17617 this._o.minMonth = defaults.minMonth; 17618 this._o.startRange = defaults.startRange; 17619 } 17620 this.draw(); 17621 }, 17622 /** 17623 * change the maxDate 17624 */ 17625 setMaxDate: function(value) { 17626 if (value instanceof Date) { 17627 setToStartOfDay(value); 17628 this._o.maxDate = value; 17629 this._o.maxYear = value.getFullYear(); 17630 this._o.maxMonth = value.getMonth(); 17631 } else { 17632 this._o.maxDate = defaults.maxDate; 17633 this._o.maxYear = defaults.maxYear; 17634 this._o.maxMonth = defaults.maxMonth; 17635 this._o.endRange = defaults.endRange; 17636 } 17637 this.draw(); 17638 }, 17639 setStartRange: function(value) { 17640 this._o.startRange = value; 17641 }, 17642 setEndRange: function(value) { 17643 this._o.endRange = value; 17644 }, 17645 /** 17646 * refresh the HTML 17647 */ 17648 draw: function(force) { 17649 if (!this._v && !force) { 17650 return; 17651 } 17652 var opts = this._o, minYear = opts.minYear, maxYear = opts.maxYear, minMonth = opts.minMonth, maxMonth = opts.maxMonth, html = "", randId; 17653 if (this._y <= minYear) { 17654 this._y = minYear; 17655 if (!isNaN(minMonth) && this._m < minMonth) { 17656 this._m = minMonth; 17657 } 17658 } 17659 if (this._y >= maxYear) { 17660 this._y = maxYear; 17661 if (!isNaN(maxMonth) && this._m > maxMonth) { 17662 this._m = maxMonth; 17663 } 17664 } 17665 for (var c = 0; c < opts.numberOfMonths; c++) { 17666 randId = "pika-title-" + Math.random().toString(36).replace(/[^a-z]+/g, "").substr(0, 2); 17667 html += '<div class="pika-lendar">' + renderTitle(this, c, this.calendars[c].year, this.calendars[c].month, this.calendars[0].year, randId) + this.render(this.calendars[c].year, this.calendars[c].month, randId) + "</div>"; 17668 } 17669 this.el.innerHTML = html; 17670 if (opts.bound) { 17671 if (opts.field.type !== "hidden") { 17672 sto(function() { 17673 opts.trigger.focus(); 17674 }, 1); 17675 } 17676 } 17677 if (typeof this._o.onDraw === "function") { 17678 this._o.onDraw(this); 17679 } 17680 if (opts.bound) { 17681 opts.field.setAttribute("aria-label", opts.ariaLabel); 17682 } 17683 }, 17684 adjustPosition: function() { 17685 var field, pEl, width, height, viewportWidth, viewportHeight, scrollTop, left, top, clientRect, leftAligned, bottomAligned; 17686 if (this._o.container) return; 17687 this.el.style.position = "absolute"; 17688 field = this._o.trigger; 17689 pEl = field; 17690 width = this.el.offsetWidth; 17691 height = this.el.offsetHeight; 17692 viewportWidth = window.innerWidth || document2.documentElement.clientWidth; 17693 viewportHeight = window.innerHeight || document2.documentElement.clientHeight; 17694 scrollTop = window.pageYOffset || document2.body.scrollTop || document2.documentElement.scrollTop; 17695 leftAligned = true; 17696 bottomAligned = true; 17697 if (typeof field.getBoundingClientRect === "function") { 17698 clientRect = field.getBoundingClientRect(); 17699 left = clientRect.left + window.pageXOffset; 17700 top = clientRect.bottom + window.pageYOffset; 17701 } else { 17702 left = pEl.offsetLeft; 17703 top = pEl.offsetTop + pEl.offsetHeight; 17704 while (pEl = pEl.offsetParent) { 17705 left += pEl.offsetLeft; 17706 top += pEl.offsetTop; 17707 } 17708 } 17709 if (this._o.reposition && left + width > viewportWidth || this._o.position.indexOf("right") > -1 && left - width + field.offsetWidth > 0) { 17710 left = left - width + field.offsetWidth; 17711 leftAligned = false; 17712 } 17713 if (this._o.reposition && top + height > viewportHeight + scrollTop || this._o.position.indexOf("top") > -1 && top - height - field.offsetHeight > 0) { 17714 top = top - height - field.offsetHeight; 17715 bottomAligned = false; 17716 } 17717 this.el.style.left = left + "px"; 17718 this.el.style.top = top + "px"; 17719 addClass(this.el, leftAligned ? "left-aligned" : "right-aligned"); 17720 addClass(this.el, bottomAligned ? "bottom-aligned" : "top-aligned"); 17721 removeClass(this.el, !leftAligned ? "left-aligned" : "right-aligned"); 17722 removeClass(this.el, !bottomAligned ? "bottom-aligned" : "top-aligned"); 17723 }, 17724 /** 17725 * render HTML for a particular month 17726 */ 17727 render: function(year, month, randId) { 17728 var opts = this._o, now = /* @__PURE__ */ new Date(), days = getDaysInMonth(year, month), before = new Date(year, month, 1).getDay(), data = [], row = []; 17729 setToStartOfDay(now); 17730 if (opts.firstDay > 0) { 17731 before -= opts.firstDay; 17732 if (before < 0) { 17733 before += 7; 17734 } 17735 } 17736 var previousMonth = month === 0 ? 11 : month - 1, nextMonth = month === 11 ? 0 : month + 1, yearOfPreviousMonth = month === 0 ? year - 1 : year, yearOfNextMonth = month === 11 ? year + 1 : year, daysInPreviousMonth = getDaysInMonth(yearOfPreviousMonth, previousMonth); 17737 var cells = days + before, after = cells; 17738 while (after > 7) { 17739 after -= 7; 17740 } 17741 cells += 7 - after; 17742 var isWeekSelected = false; 17743 for (var i = 0, r = 0; i < cells; i++) { 17744 var day = new Date(year, month, 1 + (i - before)), isSelected = isDate(this._d) ? compareDates(day, this._d) : false, isToday = compareDates(day, now), hasEvent = opts.events.indexOf(day.toDateString()) !== -1 ? true : false, isEmpty = i < before || i >= days + before, dayNumber = 1 + (i - before), monthNumber = month, yearNumber = year, isStartRange = opts.startRange && compareDates(opts.startRange, day), isEndRange = opts.endRange && compareDates(opts.endRange, day), isInRange = opts.startRange && opts.endRange && opts.startRange < day && day < opts.endRange, isDisabled = opts.minDate && day < opts.minDate || opts.maxDate && day > opts.maxDate || opts.disableWeekends && isWeekend(day) || opts.disableDayFn && opts.disableDayFn(day); 17745 if (isEmpty) { 17746 if (i < before) { 17747 dayNumber = daysInPreviousMonth + dayNumber; 17748 monthNumber = previousMonth; 17749 yearNumber = yearOfPreviousMonth; 17750 } else { 17751 dayNumber = dayNumber - days; 17752 monthNumber = nextMonth; 17753 yearNumber = yearOfNextMonth; 17754 } 17755 } 17756 var dayConfig = { 17757 day: dayNumber, 17758 month: monthNumber, 17759 year: yearNumber, 17760 hasEvent, 17761 isSelected, 17762 isToday, 17763 isDisabled, 17764 isEmpty, 17765 isStartRange, 17766 isEndRange, 17767 isInRange, 17768 showDaysInNextAndPreviousMonths: opts.showDaysInNextAndPreviousMonths, 17769 enableSelectionDaysInNextAndPreviousMonths: opts.enableSelectionDaysInNextAndPreviousMonths 17770 }; 17771 if (opts.pickWholeWeek && isSelected) { 17772 isWeekSelected = true; 17773 } 17774 row.push(renderDay(dayConfig)); 17775 if (++r === 7) { 17776 if (opts.showWeekNumber) { 17777 row.unshift(renderWeek(i - before, month, year, opts.firstWeekOfYearMinDays)); 17778 } 17779 data.push(renderRow(row, opts.isRTL, opts.pickWholeWeek, isWeekSelected)); 17780 row = []; 17781 r = 0; 17782 isWeekSelected = false; 17783 } 17784 } 17785 return renderTable(opts, data, randId); 17786 }, 17787 isVisible: function() { 17788 return this._v; 17789 }, 17790 show: function() { 17791 if (!this.isVisible()) { 17792 this._v = true; 17793 this.draw(); 17794 removeClass(this.el, "is-hidden"); 17795 if (this._o.bound) { 17796 addEvent(document2, "click", this._onClick); 17797 this.adjustPosition(); 17798 } 17799 if (typeof this._o.onOpen === "function") { 17800 this._o.onOpen.call(this); 17801 } 17802 } 17803 }, 17804 hide: function() { 17805 var v = this._v; 17806 if (v !== false) { 17807 if (this._o.bound) { 17808 removeEvent(document2, "click", this._onClick); 17809 } 17810 if (!this._o.container) { 17811 this.el.style.position = "static"; 17812 this.el.style.left = "auto"; 17813 this.el.style.top = "auto"; 17814 } 17815 addClass(this.el, "is-hidden"); 17816 this._v = false; 17817 if (v !== void 0 && typeof this._o.onClose === "function") { 17818 this._o.onClose.call(this); 17819 } 17820 } 17821 }, 17822 /** 17823 * GAME OVER 17824 */ 17825 destroy: function() { 17826 var opts = this._o; 17827 this.hide(); 17828 removeEvent(this.el, "mousedown", this._onMouseDown, true); 17829 removeEvent(this.el, "touchend", this._onMouseDown, true); 17830 removeEvent(this.el, "change", this._onChange); 17831 if (opts.keyboardInput) { 17832 removeEvent(document2, "keydown", this._onKeyChange); 17833 } 17834 if (opts.field) { 17835 removeEvent(opts.field, "change", this._onInputChange); 17836 if (opts.bound) { 17837 removeEvent(opts.trigger, "click", this._onInputClick); 17838 removeEvent(opts.trigger, "focus", this._onInputFocus); 17839 removeEvent(opts.trigger, "blur", this._onInputBlur); 17840 } 17841 } 17842 if (this.el.parentNode) { 17843 this.el.parentNode.removeChild(this.el); 17844 } 17845 } 17846 }; 17847 return Pikaday3; 17848 }); 17849 } 17850 }); 17851 17852
vendor: 83,084 bytes, lines 17852-19811
17852// node_modules/slick-carousel/slick/slick.js 17853 var require_slick = __commonJS({ 17854 "node_modules/slick-carousel/slick/slick.js"(exports, module) { 17855 init_esbuild_shims(); 17856 (function(factory) { 17857 "use strict"; 17858 if (typeof define === "function" && define.amd) { 17859 define(["jquery"], factory); 17860 } else if (typeof exports !== "undefined") { 17861 module.exports = factory(require_jquery()); 17862 } else { 17863 factory(jQuery); 17864 } 17865 })(function($3) { 17866 "use strict"; 17867 var Slick = window.Slick || {}; 17868 Slick = /* @__PURE__ */ (function() { 17869 var instanceUid = 0; 17870 function Slick2(element, settings) { 17871 var _ = this, dataSettings; 17872 _.defaults = { 17873 accessibility: true, 17874 adaptiveHeight: false, 17875 appendArrows: $3(element), 17876 appendDots: $3(element), 17877 arrows: true, 17878 asNavFor: null, 17879 prevArrow: '<button class="slick-prev" aria-label="Previous" type="button">Previous</button>', 17880 nextArrow: '<button class="slick-next" aria-label="Next" type="button">Next</button>', 17881 autoplay: false, 17882 autoplaySpeed: 3e3, 17883 centerMode: false, 17884 centerPadding: "50px", 17885 cssEase: "ease", 17886 customPaging: function(slider, i) { 17887 return $3('<button type="button" />').text(i + 1); 17888 }, 17889 dots: false, 17890 dotsClass: "slick-dots", 17891 draggable: true, 17892 easing: "linear", 17893 edgeFriction: 0.35, 17894 fade: false, 17895 focusOnSelect: false, 17896 focusOnChange: false, 17897 infinite: true, 17898 initialSlide: 0, 17899 lazyLoad: "ondemand", 17900 mobileFirst: false, 17901 pauseOnHover: true, 17902 pauseOnFocus: true, 17903 pauseOnDotsHover: false, 17904 respondTo: "window", 17905 responsive: null, 17906 rows: 1, 17907 rtl: false, 17908 slide: "", 17909 slidesPerRow: 1, 17910 slidesToShow: 1, 17911 slidesToScroll: 1, 17912 speed: 500, 17913 swipe: true, 17914 swipeToSlide: false, 17915 touchMove: true, 17916 touchThreshold: 5, 17917 useCSS: true, 17918 useTransform: true, 17919 variableWidth: false, 17920 vertical: false, 17921 verticalSwiping: false, 17922 waitForAnimate: true, 17923 zIndex: 1e3 17924 }; 17925 _.initials = { 17926 animating: false, 17927 dragging: false, 17928 autoPlayTimer: null, 17929 currentDirection: 0, 17930 currentLeft: null, 17931 currentSlide: 0, 17932 direction: 1, 17933 $dots: null, 17934 listWidth: null, 17935 listHeight: null, 17936 loadIndex: 0, 17937 $nextArrow: null, 17938 $prevArrow: null, 17939 scrolling: false, 17940 slideCount: null, 17941 slideWidth: null, 17942 $slideTrack: null, 17943 $slides: null, 17944 sliding: false, 17945 slideOffset: 0, 17946 swipeLeft: null, 17947 swiping: false, 17948 $list: null, 17949 touchObject: {}, 17950 transformsEnabled: false, 17951 unslicked: false 17952 }; 17953 $3.extend(_, _.initials); 17954 _.activeBreakpoint = null; 17955 _.animType = null; 17956 _.animProp = null; 17957 _.breakpoints = []; 17958 _.breakpointSettings = []; 17959 _.cssTransitions = false; 17960 _.focussed = false; 17961 _.interrupted = false; 17962 _.hidden = "hidden"; 17963 _.paused = true; 17964 _.positionProp = null; 17965 _.respondTo = null; 17966 _.rowCount = 1; 17967 _.shouldClick = true; 17968 _.$slider = $3(element); 17969 _.$slidesCache = null; 17970 _.transformType = null; 17971 _.transitionType = null; 17972 _.visibilityChange = "visibilitychange"; 17973 _.windowWidth = 0; 17974 _.windowTimer = null; 17975 dataSettings = $3(element).data("slick") || {}; 17976 _.options = $3.extend({}, _.defaults, settings, dataSettings); 17977 _.currentSlide = _.options.initialSlide; 17978 _.originalSettings = _.options; 17979 if (typeof document.mozHidden !== "undefined") { 17980 _.hidden = "mozHidden"; 17981 _.visibilityChange = "mozvisibilitychange"; 17982 } else if (typeof document.webkitHidden !== "undefined") { 17983 _.hidden = "webkitHidden"; 17984 _.visibilityChange = "webkitvisibilitychange"; 17985 } 17986 _.autoPlay = $3.proxy(_.autoPlay, _); 17987 _.autoPlayClear = $3.proxy(_.autoPlayClear, _); 17988 _.autoPlayIterator = $3.proxy(_.autoPlayIterator, _); 17989 _.changeSlide = $3.proxy(_.changeSlide, _); 17990 _.clickHandler = $3.proxy(_.clickHandler, _); 17991 _.selectHandler = $3.proxy(_.selectHandler, _); 17992 _.setPosition = $3.proxy(_.setPosition, _); 17993 _.swipeHandler = $3.proxy(_.swipeHandler, _); 17994 _.dragHandler = $3.proxy(_.dragHandler, _); 17995 _.keyHandler = $3.proxy(_.keyHandler, _); 17996 _.instanceUid = instanceUid++; 17997 _.htmlExpr = /^(?:\s*(<[\w\W]+>)[^>]*)$/; 17998 _.registerBreakpoints(); 17999 _.init(true); 18000 } 18001 return Slick2; 18002 })(); 18003 Slick.prototype.activateADA = function() { 18004 var _ = this; 18005 _.$slideTrack.find(".slick-active").attr({ 18006 "aria-hidden": "false" 18007 }).find("a, input, button, select").attr({ 18008 "tabindex": "0" 18009 }); 18010 }; 18011 Slick.prototype.addSlide = Slick.prototype.slickAdd = function(markup, index, addBefore) { 18012 var _ = this; 18013 if (typeof index === "boolean") { 18014 addBefore = index; 18015 index = null; 18016 } else if (index < 0 || index >= _.slideCount) { 18017 return false; 18018 } 18019 _.unload(); 18020 if (typeof index === "number") { 18021 if (index === 0 && _.$slides.length === 0) { 18022 $3(markup).appendTo(_.$slideTrack); 18023 } else if (addBefore) { 18024 $3(markup).insertBefore(_.$slides.eq(index)); 18025 } else { 18026 $3(markup).insertAfter(_.$slides.eq(index)); 18027 } 18028 } else { 18029 if (addBefore === true) { 18030 $3(markup).prependTo(_.$slideTrack); 18031 } else { 18032 $3(markup).appendTo(_.$slideTrack); 18033 } 18034 } 18035 _.$slides = _.$slideTrack.children(this.options.slide); 18036 _.$slideTrack.children(this.options.slide).detach(); 18037 _.$slideTrack.append(_.$slides); 18038 _.$slides.each(function(index2, element) { 18039 $3(element).attr("data-slick-index", index2); 18040 }); 18041 _.$slidesCache = _.$slides; 18042 _.reinit(); 18043 }; 18044 Slick.prototype.animateHeight = function() { 18045 var _ = this; 18046 if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) { 18047 var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true); 18048 _.$list.animate({ 18049 height: targetHeight 18050 }, _.options.speed); 18051 } 18052 }; 18053 Slick.prototype.animateSlide = function(targetLeft, callback) { 18054 var animProps = {}, _ = this; 18055 _.animateHeight(); 18056 if (_.options.rtl === true && _.options.vertical === false) { 18057 targetLeft = -targetLeft; 18058 } 18059 if (_.transformsEnabled === false) { 18060 if (_.options.vertical === false) { 18061 _.$slideTrack.animate({ 18062 left: targetLeft 18063 }, _.options.speed, _.options.easing, callback); 18064 } else { 18065 _.$slideTrack.animate({ 18066 top: targetLeft 18067 }, _.options.speed, _.options.easing, callback); 18068 } 18069 } else { 18070 if (_.cssTransitions === false) { 18071 if (_.options.rtl === true) { 18072 _.currentLeft = -_.currentLeft; 18073 } 18074 $3({ 18075 animStart: _.currentLeft 18076 }).animate({ 18077 animStart: targetLeft 18078 }, { 18079 duration: _.options.speed, 18080 easing: _.options.easing, 18081 step: function(now) { 18082 now = Math.ceil(now); 18083 if (_.options.vertical === false) { 18084 animProps[_.animType] = "translate(" + now + "px, 0px)"; 18085 _.$slideTrack.css(animProps); 18086 } else { 18087 animProps[_.animType] = "translate(0px," + now + "px)"; 18088 _.$slideTrack.css(animProps); 18089 } 18090 }, 18091 complete: function() { 18092 if (callback) { 18093 callback.call(); 18094 } 18095 } 18096 }); 18097 } else { 18098 _.applyTransition(); 18099 targetLeft = Math.ceil(targetLeft); 18100 if (_.options.vertical === false) { 18101 animProps[_.animType] = "translate3d(" + targetLeft + "px, 0px, 0px)"; 18102 } else { 18103 animProps[_.animType] = "translate3d(0px," + targetLeft + "px, 0px)"; 18104 } 18105 _.$slideTrack.css(animProps); 18106 if (callback) { 18107 setTimeout(function() { 18108 _.disableTransition(); 18109 callback.call(); 18110 }, _.options.speed); 18111 } 18112 } 18113 } 18114 }; 18115 Slick.prototype.getNavTarget = function() { 18116 var _ = this, asNavFor = _.options.asNavFor; 18117 if (asNavFor && asNavFor !== null) { 18118 asNavFor = $3(asNavFor).not(_.$slider); 18119 } 18120 return asNavFor; 18121 }; 18122 Slick.prototype.asNavFor = function(index) { 18123 var _ = this, asNavFor = _.getNavTarget(); 18124 if (asNavFor !== null && typeof asNavFor === "object") { 18125 asNavFor.each(function() { 18126 var target = $3(this).slick("getSlick"); 18127 if (!target.unslicked) { 18128 target.slideHandler(index, true); 18129 } 18130 }); 18131 } 18132 }; 18133 Slick.prototype.applyTransition = function(slide) { 18134 var _ = this, transition = {}; 18135 if (_.options.fade === false) { 18136 transition[_.transitionType] = _.transformType + " " + _.options.speed + "ms " + _.options.cssEase; 18137 } else { 18138 transition[_.transitionType] = "opacity " + _.options.speed + "ms " + _.options.cssEase; 18139 } 18140 if (_.options.fade === false) { 18141 _.$slideTrack.css(transition); 18142 } else { 18143 _.$slides.eq(slide).css(transition); 18144 } 18145 }; 18146 Slick.prototype.autoPlay = function() { 18147 var _ = this; 18148 _.autoPlayClear(); 18149 if (_.slideCount > _.options.slidesToShow) { 18150 _.autoPlayTimer = setInterval(_.autoPlayIterator, _.options.autoplaySpeed); 18151 } 18152 }; 18153 Slick.prototype.autoPlayClear = function() { 18154 var _ = this; 18155 if (_.autoPlayTimer) { 18156 clearInterval(_.autoPlayTimer); 18157 } 18158 }; 18159 Slick.prototype.autoPlayIterator = function() { 18160 var _ = this, slideTo = _.currentSlide + _.options.slidesToScroll; 18161 if (!_.paused && !_.interrupted && !_.focussed) { 18162 if (_.options.infinite === false) { 18163 if (_.direction === 1 && _.currentSlide + 1 === _.slideCount - 1) { 18164 _.direction = 0; 18165 } else if (_.direction === 0) { 18166 slideTo = _.currentSlide - _.options.slidesToScroll; 18167 if (_.currentSlide - 1 === 0) { 18168 _.direction = 1; 18169 } 18170 } 18171 } 18172 _.slideHandler(slideTo); 18173 } 18174 }; 18175 Slick.prototype.buildArrows = function() { 18176 var _ = this; 18177 if (_.options.arrows === true) { 18178 _.$prevArrow = $3(_.options.prevArrow).addClass("slick-arrow"); 18179 _.$nextArrow = $3(_.options.nextArrow).addClass("slick-arrow"); 18180 if (_.slideCount > _.options.slidesToShow) { 18181 _.$prevArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"); 18182 _.$nextArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"); 18183 if (_.htmlExpr.test(_.options.prevArrow)) { 18184 _.$prevArrow.prependTo(_.options.appendArrows); 18185 } 18186 if (_.htmlExpr.test(_.options.nextArrow)) { 18187 _.$nextArrow.appendTo(_.options.appendArrows); 18188 } 18189 if (_.options.infinite !== true) { 18190 _.$prevArrow.addClass("slick-disabled").attr("aria-disabled", "true"); 18191 } 18192 } else { 18193 _.$prevArrow.add(_.$nextArrow).addClass("slick-hidden").attr({ 18194 "aria-disabled": "true", 18195 "tabindex": "-1" 18196 }); 18197 } 18198 } 18199 }; 18200 Slick.prototype.buildDots = function() { 18201 var _ = this, i, dot; 18202 if (_.options.dots === true && _.slideCount > _.options.slidesToShow) { 18203 _.$slider.addClass("slick-dotted"); 18204 dot = $3("<ul />").addClass(_.options.dotsClass); 18205 for (i = 0; i <= _.getDotCount(); i += 1) { 18206 dot.append($3("<li />").append(_.options.customPaging.call(this, _, i))); 18207 } 18208 _.$dots = dot.appendTo(_.options.appendDots); 18209 _.$dots.find("li").first().addClass("slick-active"); 18210 } 18211 }; 18212 Slick.prototype.buildOut = function() { 18213 var _ = this; 18214 _.$slides = _.$slider.children(_.options.slide + ":not(.slick-cloned)").addClass("slick-slide"); 18215 _.slideCount = _.$slides.length; 18216 _.$slides.each(function(index, element) { 18217 $3(element).attr("data-slick-index", index).data("originalStyling", $3(element).attr("style") || ""); 18218 }); 18219 _.$slider.addClass("slick-slider"); 18220 _.$slideTrack = _.slideCount === 0 ? $3('<div class="slick-track"/>').appendTo(_.$slider) : _.$slides.wrapAll('<div class="slick-track"/>').parent(); 18221 _.$list = _.$slideTrack.wrap( 18222 '<div class="slick-list"/>' 18223 ).parent(); 18224 _.$slideTrack.css("opacity", 0); 18225 if (_.options.centerMode === true || _.options.swipeToSlide === true) { 18226 _.options.slidesToScroll = 1; 18227 } 18228 $3("img[data-lazy]", _.$slider).not("[src]").addClass("slick-loading"); 18229 _.setupInfinite(); 18230 _.buildArrows(); 18231 _.buildDots(); 18232 _.updateDots(); 18233 _.setSlideClasses(typeof _.currentSlide === "number" ? _.currentSlide : 0); 18234 if (_.options.draggable === true) { 18235 _.$list.addClass("draggable"); 18236 } 18237 }; 18238 Slick.prototype.buildRows = function() { 18239 var _ = this, a, b, c, newSlides, numOfSlides, originalSlides, slidesPerSection; 18240 newSlides = document.createDocumentFragment(); 18241 originalSlides = _.$slider.children(); 18242 if (_.options.rows > 0) { 18243 slidesPerSection = _.options.slidesPerRow * _.options.rows; 18244 numOfSlides = Math.ceil( 18245 originalSlides.length / slidesPerSection 18246 ); 18247 for (a = 0; a < numOfSlides; a++) { 18248 var slide = document.createElement("div"); 18249 for (b = 0; b < _.options.rows; b++) { 18250 var row = document.createElement("div"); 18251 for (c = 0; c < _.options.slidesPerRow; c++) { 18252 var target = a * slidesPerSection + (b * _.options.slidesPerRow + c); 18253 if (originalSlides.get(target)) { 18254 row.appendChild(originalSlides.get(target)); 18255 } 18256 } 18257 slide.appendChild(row); 18258 } 18259 newSlides.appendChild(slide); 18260 } 18261 _.$slider.empty().append(newSlides); 18262 _.$slider.children().children().children().css({ 18263 "width": 100 / _.options.slidesPerRow + "%", 18264 "display": "inline-block" 18265 }); 18266 } 18267 }; 18268 Slick.prototype.checkResponsive = function(initial, forceUpdate) { 18269 var _ = this, breakpoint, targetBreakpoint, respondToWidth, triggerBreakpoint = false; 18270 var sliderWidth = _.$slider.width(); 18271 var windowWidth = window.innerWidth || $3(window).width(); 18272 if (_.respondTo === "window") { 18273 respondToWidth = windowWidth; 18274 } else if (_.respondTo === "slider") { 18275 respondToWidth = sliderWidth; 18276 } else if (_.respondTo === "min") { 18277 respondToWidth = Math.min(windowWidth, sliderWidth); 18278 } 18279 if (_.options.responsive && _.options.responsive.length && _.options.responsive !== null) { 18280 targetBreakpoint = null; 18281 for (breakpoint in _.breakpoints) { 18282 if (_.breakpoints.hasOwnProperty(breakpoint)) { 18283 if (_.originalSettings.mobileFirst === false) { 18284 if (respondToWidth < _.breakpoints[breakpoint]) { 18285 targetBreakpoint = _.breakpoints[breakpoint]; 18286 } 18287 } else { 18288 if (respondToWidth > _.breakpoints[breakpoint]) { 18289 targetBreakpoint = _.breakpoints[breakpoint]; 18290 } 18291 } 18292 } 18293 } 18294 if (targetBreakpoint !== null) { 18295 if (_.activeBreakpoint !== null) { 18296 if (targetBreakpoint !== _.activeBreakpoint || forceUpdate) { 18297 _.activeBreakpoint = targetBreakpoint; 18298 if (_.breakpointSettings[targetBreakpoint] === "unslick") { 18299 _.unslick(targetBreakpoint); 18300 } else { 18301 _.options = $3.extend( 18302 {}, 18303 _.originalSettings, 18304 _.breakpointSettings[targetBreakpoint] 18305 ); 18306 if (initial === true) { 18307 _.currentSlide = _.options.initialSlide; 18308 } 18309 _.refresh(initial); 18310 } 18311 triggerBreakpoint = targetBreakpoint; 18312 } 18313 } else { 18314 _.activeBreakpoint = targetBreakpoint; 18315 if (_.breakpointSettings[targetBreakpoint] === "unslick") { 18316 _.unslick(targetBreakpoint); 18317 } else { 18318 _.options = $3.extend( 18319 {}, 18320 _.originalSettings, 18321 _.breakpointSettings[targetBreakpoint] 18322 ); 18323 if (initial === true) { 18324 _.currentSlide = _.options.initialSlide; 18325 } 18326 _.refresh(initial); 18327 } 18328 triggerBreakpoint = targetBreakpoint; 18329 } 18330 } else { 18331 if (_.activeBreakpoint !== null) { 18332 _.activeBreakpoint = null; 18333 _.options = _.originalSettings; 18334 if (initial === true) { 18335 _.currentSlide = _.options.initialSlide; 18336 } 18337 _.refresh(initial); 18338 triggerBreakpoint = targetBreakpoint; 18339 } 18340 } 18341 if (!initial && triggerBreakpoint !== false) { 18342 _.$slider.trigger("breakpoint", [_, triggerBreakpoint]); 18343 } 18344 } 18345 }; 18346 Slick.prototype.changeSlide = function(event2, dontAnimate) { 18347 var _ = this, $target = $3(event2.currentTarget), indexOffset, slideOffset, unevenOffset; 18348 if ($target.is("a")) { 18349 event2.preventDefault(); 18350 } 18351 if (!$target.is("li")) { 18352 $target = $target.closest("li"); 18353 } 18354 unevenOffset = _.slideCount % _.options.slidesToScroll !== 0; 18355 indexOffset = unevenOffset ? 0 : (_.slideCount - _.currentSlide) % _.options.slidesToScroll; 18356 switch (event2.data.message) { 18357 case "previous": 18358 slideOffset = indexOffset === 0 ? _.options.slidesToScroll : _.options.slidesToShow - indexOffset; 18359 if (_.slideCount > _.options.slidesToShow) { 18360 _.slideHandler(_.currentSlide - slideOffset, false, dontAnimate); 18361 } 18362 break; 18363 case "next": 18364 slideOffset = indexOffset === 0 ? _.options.slidesToScroll : indexOffset; 18365 if (_.slideCount > _.options.slidesToShow) { 18366 _.slideHandler(_.currentSlide + slideOffset, false, dontAnimate); 18367 } 18368 break; 18369 case "index": 18370 var index = event2.data.index === 0 ? 0 : event2.data.index || $target.index() * _.options.slidesToScroll; 18371 _.slideHandler(_.checkNavigable(index), false, dontAnimate); 18372 $target.children().trigger("focus"); 18373 break; 18374 default: 18375 return; 18376 } 18377 }; 18378 Slick.prototype.checkNavigable = function(index) { 18379 var _ = this, navigables, prevNavigable; 18380 navigables = _.getNavigableIndexes(); 18381 prevNavigable = 0; 18382 if (index > navigables[navigables.length - 1]) { 18383 index = navigables[navigables.length - 1]; 18384 } else { 18385 for (var n in navigables) { 18386 if (index < navigables[n]) { 18387 index = prevNavigable; 18388 break; 18389 } 18390 prevNavigable = navigables[n]; 18391 } 18392 } 18393 return index; 18394 }; 18395 Slick.prototype.cleanUpEvents = function() { 18396 var _ = this; 18397 if (_.options.dots && _.$dots !== null) { 18398 $3("li", _.$dots).off("click.slick", _.changeSlide).off("mouseenter.slick", $3.proxy(_.interrupt, _, true)).off("mouseleave.slick", $3.proxy(_.interrupt, _, false)); 18399 if (_.options.accessibility === true) { 18400 _.$dots.off("keydown.slick", _.keyHandler); 18401 } 18402 } 18403 _.$slider.off("focus.slick blur.slick"); 18404 if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) { 18405 _.$prevArrow && _.$prevArrow.off("click.slick", _.changeSlide); 18406 _.$nextArrow && _.$nextArrow.off("click.slick", _.changeSlide); 18407 if (_.options.accessibility === true) { 18408 _.$prevArrow && _.$prevArrow.off("keydown.slick", _.keyHandler); 18409 _.$nextArrow && _.$nextArrow.off("keydown.slick", _.keyHandler); 18410 } 18411 } 18412 _.$list.off("touchstart.slick mousedown.slick", _.swipeHandler); 18413 _.$list.off("touchmove.slick mousemove.slick", _.swipeHandler); 18414 _.$list.off("touchend.slick mouseup.slick", _.swipeHandler); 18415 _.$list.off("touchcancel.slick mouseleave.slick", _.swipeHandler); 18416 _.$list.off("click.slick", _.clickHandler); 18417 $3(document).off(_.visibilityChange, _.visibility); 18418 _.cleanUpSlideEvents(); 18419 if (_.options.accessibility === true) { 18420 _.$list.off("keydown.slick", _.keyHandler); 18421 } 18422 if (_.options.focusOnSelect === true) { 18423 $3(_.$slideTrack).children().off("click.slick", _.selectHandler); 18424 } 18425 $3(window).off("orientationchange.slick.slick-" + _.instanceUid, _.orientationChange); 18426 $3(window).off("resize.slick.slick-" + _.instanceUid, _.resize); 18427 $3("[draggable!=true]", _.$slideTrack).off("dragstart", _.preventDefault); 18428 $3(window).off("load.slick.slick-" + _.instanceUid, _.setPosition); 18429 }; 18430 Slick.prototype.cleanUpSlideEvents = function() { 18431 var _ = this; 18432 _.$list.off("mouseenter.slick", $3.proxy(_.interrupt, _, true)); 18433 _.$list.off("mouseleave.slick", $3.proxy(_.interrupt, _, false)); 18434 }; 18435 Slick.prototype.cleanUpRows = function() { 18436 var _ = this, originalSlides; 18437 if (_.options.rows > 0) { 18438 originalSlides = _.$slides.children().children(); 18439 originalSlides.removeAttr("style"); 18440 _.$slider.empty().append(originalSlides); 18441 } 18442 }; 18443 Slick.prototype.clickHandler = function(event2) { 18444 var _ = this; 18445 if (_.shouldClick === false) { 18446 event2.stopImmediatePropagation(); 18447 event2.stopPropagation(); 18448 event2.preventDefault(); 18449 } 18450 }; 18451 Slick.prototype.destroy = function(refresh) { 18452 var _ = this; 18453 _.autoPlayClear(); 18454 _.touchObject = {}; 18455 _.cleanUpEvents(); 18456 $3(".slick-cloned", _.$slider).detach(); 18457 if (_.$dots) { 18458 _.$dots.remove(); 18459 } 18460 if (_.$prevArrow && _.$prevArrow.length) { 18461 _.$prevArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display", ""); 18462 if (_.htmlExpr.test(_.options.prevArrow)) { 18463 _.$prevArrow.remove(); 18464 } 18465 } 18466 if (_.$nextArrow && _.$nextArrow.length) { 18467 _.$nextArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display", ""); 18468 if (_.htmlExpr.test(_.options.nextArrow)) { 18469 _.$nextArrow.remove(); 18470 } 18471 } 18472 if (_.$slides) { 18473 _.$slides.removeClass("slick-slide slick-active slick-center slick-visible slick-current").removeAttr("aria-hidden").removeAttr("data-slick-index").each(function() { 18474 $3(this).attr("style", $3(this).data("originalStyling")); 18475 }); 18476 _.$slideTrack.children(this.options.slide).detach(); 18477 _.$slideTrack.detach(); 18478 _.$list.detach(); 18479 _.$slider.append(_.$slides); 18480 } 18481 _.cleanUpRows(); 18482 _.$slider.removeClass("slick-slider"); 18483 _.$slider.removeClass("slick-initialized"); 18484 _.$slider.removeClass("slick-dotted"); 18485 _.unslicked = true; 18486 if (!refresh) { 18487 _.$slider.trigger("destroy", [_]); 18488 } 18489 }; 18490 Slick.prototype.disableTransition = function(slide) { 18491 var _ = this, transition = {}; 18492 transition[_.transitionType] = ""; 18493 if (_.options.fade === false) { 18494 _.$slideTrack.css(transition); 18495 } else { 18496 _.$slides.eq(slide).css(transition); 18497 } 18498 }; 18499 Slick.prototype.fadeSlide = function(slideIndex, callback) { 18500 var _ = this; 18501 if (_.cssTransitions === false) { 18502 _.$slides.eq(slideIndex).css({ 18503 zIndex: _.options.zIndex 18504 }); 18505 _.$slides.eq(slideIndex).animate({ 18506 opacity: 1 18507 }, _.options.speed, _.options.easing, callback); 18508 } else { 18509 _.applyTransition(slideIndex); 18510 _.$slides.eq(slideIndex).css({ 18511 opacity: 1, 18512 zIndex: _.options.zIndex 18513 }); 18514 if (callback) { 18515 setTimeout(function() { 18516 _.disableTransition(slideIndex); 18517 callback.call(); 18518 }, _.options.speed); 18519 } 18520 } 18521 }; 18522 Slick.prototype.fadeSlideOut = function(slideIndex) { 18523 var _ = this; 18524 if (_.cssTransitions === false) { 18525 _.$slides.eq(slideIndex).animate({ 18526 opacity: 0, 18527 zIndex: _.options.zIndex - 2 18528 }, _.options.speed, _.options.easing); 18529 } else { 18530 _.applyTransition(slideIndex); 18531 _.$slides.eq(slideIndex).css({ 18532 opacity: 0, 18533 zIndex: _.options.zIndex - 2 18534 }); 18535 } 18536 }; 18537 Slick.prototype.filterSlides = Slick.prototype.slickFilter = function(filter) { 18538 var _ = this; 18539 if (filter !== null) { 18540 _.$slidesCache = _.$slides; 18541 _.unload(); 18542 _.$slideTrack.children(this.options.slide).detach(); 18543 _.$slidesCache.filter(filter).appendTo(_.$slideTrack); 18544 _.reinit(); 18545 } 18546 }; 18547 Slick.prototype.focusHandler = function() { 18548 var _ = this; 18549 _.$slider.off("focus.slick blur.slick").on("focus.slick blur.slick", "*", function(event2) { 18550 event2.stopImmediatePropagation(); 18551 var $sf = $3(this); 18552 setTimeout(function() { 18553 if (_.options.pauseOnFocus) { 18554 _.focussed = $sf.is(":focus"); 18555 _.autoPlay(); 18556 } 18557 }, 0); 18558 }); 18559 }; 18560 Slick.prototype.getCurrent = Slick.prototype.slickCurrentSlide = function() { 18561 var _ = this; 18562 return _.currentSlide; 18563 }; 18564 Slick.prototype.getDotCount = function() { 18565 var _ = this; 18566 var breakPoint = 0; 18567 var counter = 0; 18568 var pagerQty = 0; 18569 if (_.options.infinite === true) { 18570 if (_.slideCount <= _.options.slidesToShow) { 18571 ++pagerQty; 18572 } else { 18573 while (breakPoint < _.slideCount) { 18574 ++pagerQty; 18575 breakPoint = counter + _.options.slidesToScroll; 18576 counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow; 18577 } 18578 } 18579 } else if (_.options.centerMode === true) { 18580 pagerQty = _.slideCount; 18581 } else if (!_.options.asNavFor) { 18582 pagerQty = 1 + Math.ceil((_.slideCount - _.options.slidesToShow) / _.options.slidesToScroll); 18583 } else { 18584 while (breakPoint < _.slideCount) { 18585 ++pagerQty; 18586 breakPoint = counter + _.options.slidesToScroll; 18587 counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow; 18588 } 18589 } 18590 return pagerQty - 1; 18591 }; 18592 Slick.prototype.getLeft = function(slideIndex) { 18593 var _ = this, targetLeft, verticalHeight, verticalOffset = 0, targetSlide, coef; 18594 _.slideOffset = 0; 18595 verticalHeight = _.$slides.first().outerHeight(true); 18596 if (_.options.infinite === true) { 18597 if (_.slideCount > _.options.slidesToShow) { 18598 _.slideOffset = _.slideWidth * _.options.slidesToShow * -1; 18599 coef = -1; 18600 if (_.options.vertical === true && _.options.centerMode === true) { 18601 if (_.options.slidesToShow === 2) { 18602 coef = -1.5; 18603 } else if (_.options.slidesToShow === 1) { 18604 coef = -2; 18605 } 18606 } 18607 verticalOffset = verticalHeight * _.options.slidesToShow * coef; 18608 } 18609 if (_.slideCount % _.options.slidesToScroll !== 0) { 18610 if (slideIndex + _.options.slidesToScroll > _.slideCount && _.slideCount > _.options.slidesToShow) { 18611 if (slideIndex > _.slideCount) { 18612 _.slideOffset = (_.options.slidesToShow - (slideIndex - _.slideCount)) * _.slideWidth * -1; 18613 verticalOffset = (_.options.slidesToShow - (slideIndex - _.slideCount)) * verticalHeight * -1; 18614 } else { 18615 _.slideOffset = _.slideCount % _.options.slidesToScroll * _.slideWidth * -1; 18616 verticalOffset = _.slideCount % _.options.slidesToScroll * verticalHeight * -1; 18617 } 18618 } 18619 } 18620 } else { 18621 if (slideIndex + _.options.slidesToShow > _.slideCount) { 18622 _.slideOffset = (slideIndex + _.options.slidesToShow - _.slideCount) * _.slideWidth; 18623 verticalOffset = (slideIndex + _.options.slidesToShow - _.slideCount) * verticalHeight; 18624 } 18625 } 18626 if (_.slideCount <= _.options.slidesToShow) { 18627 _.slideOffset = 0; 18628 verticalOffset = 0; 18629 } 18630 if (_.options.centerMode === true && _.slideCount <= _.options.slidesToShow) { 18631 _.slideOffset = _.slideWidth * Math.floor(_.options.slidesToShow) / 2 - _.slideWidth * _.slideCount / 2; 18632 } else if (_.options.centerMode === true && _.options.infinite === true) { 18633 _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2) - _.slideWidth; 18634 } else if (_.options.centerMode === true) { 18635 _.slideOffset = 0; 18636 _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2); 18637 } 18638 if (_.options.vertical === false) { 18639 targetLeft = slideIndex * _.slideWidth * -1 + _.slideOffset; 18640 } else { 18641 targetLeft = slideIndex * verticalHeight * -1 + verticalOffset; 18642 } 18643 if (_.options.variableWidth === true) { 18644 if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) { 18645 targetSlide = _.$slideTrack.children(".slick-slide").eq(slideIndex); 18646 } else { 18647 targetSlide = _.$slideTrack.children(".slick-slide").eq(slideIndex + _.options.slidesToShow); 18648 } 18649 if (_.options.rtl === true) { 18650 if (targetSlide[0]) { 18651 targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1; 18652 } else { 18653 targetLeft = 0; 18654 } 18655 } else { 18656 targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0; 18657 } 18658 if (_.options.centerMode === true) { 18659 if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) { 18660 targetSlide = _.$slideTrack.children(".slick-slide").eq(slideIndex); 18661 } else { 18662 targetSlide = _.$slideTrack.children(".slick-slide").eq(slideIndex + _.options.slidesToShow + 1); 18663 } 18664 if (_.options.rtl === true) { 18665 if (targetSlide[0]) { 18666 targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1; 18667 } else { 18668 targetLeft = 0; 18669 } 18670 } else { 18671 targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0; 18672 } 18673 targetLeft += (_.$list.width() - targetSlide.outerWidth()) / 2; 18674 } 18675 } 18676 return targetLeft; 18677 }; 18678 Slick.prototype.getOption = Slick.prototype.slickGetOption = function(option) { 18679 var _ = this; 18680 return _.options[option]; 18681 }; 18682 Slick.prototype.getNavigableIndexes = function() { 18683 var _ = this, breakPoint = 0, counter = 0, indexes = [], max; 18684 if (_.options.infinite === false) { 18685 max = _.slideCount; 18686 } else { 18687 breakPoint = _.options.slidesToScroll * -1; 18688 counter = _.options.slidesToScroll * -1; 18689 max = _.slideCount * 2; 18690 } 18691 while (breakPoint < max) { 18692 indexes.push(breakPoint); 18693 breakPoint = counter + _.options.slidesToScroll; 18694 counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow; 18695 } 18696 return indexes; 18697 }; 18698 Slick.prototype.getSlick = function() { 18699 return this; 18700 }; 18701 Slick.prototype.getSlideCount = function() { 18702 var _ = this, slidesTraversed, swipedSlide, centerOffset; 18703 centerOffset = _.options.centerMode === true ? _.slideWidth * Math.floor(_.options.slidesToShow / 2) : 0; 18704 if (_.options.swipeToSlide === true) { 18705 _.$slideTrack.find(".slick-slide").each(function(index, slide) { 18706 if (slide.offsetLeft - centerOffset + $3(slide).outerWidth() / 2 > _.swipeLeft * -1) { 18707 swipedSlide = slide; 18708 return false; 18709 } 18710 }); 18711 slidesTraversed = Math.abs($3(swipedSlide).attr("data-slick-index") - _.currentSlide) || 1; 18712 return slidesTraversed; 18713 } else { 18714 return _.options.slidesToScroll; 18715 } 18716 }; 18717 Slick.prototype.goTo = Slick.prototype.slickGoTo = function(slide, dontAnimate) { 18718 var _ = this; 18719 _.changeSlide({ 18720 data: { 18721 message: "index", 18722 index: parseInt(slide) 18723 } 18724 }, dontAnimate); 18725 }; 18726 Slick.prototype.init = function(creation) { 18727 var _ = this; 18728 if (!$3(_.$slider).hasClass("slick-initialized")) { 18729 $3(_.$slider).addClass("slick-initialized"); 18730 _.buildRows(); 18731 _.buildOut(); 18732 _.setProps(); 18733 _.startLoad(); 18734 _.loadSlider(); 18735 _.initializeEvents(); 18736 _.updateArrows(); 18737 _.updateDots(); 18738 _.checkResponsive(true); 18739 _.focusHandler(); 18740 } 18741 if (creation) { 18742 _.$slider.trigger("init", [_]); 18743 } 18744 if (_.options.accessibility === true) { 18745 _.initADA(); 18746 } 18747 if (_.options.autoplay) { 18748 _.paused = false; 18749 _.autoPlay(); 18750 } 18751 }; 18752 Slick.prototype.initADA = function() { 18753 var _ = this, numDotGroups = Math.ceil(_.slideCount / _.options.slidesToShow), tabControlIndexes = _.getNavigableIndexes().filter(function(val) { 18754 return val >= 0 && val < _.slideCount; 18755 }); 18756 _.$slides.add(_.$slideTrack.find(".slick-cloned")).attr({ 18757 "aria-hidden": "true", 18758 "tabindex": "-1" 18759 }).find("a, input, button, select").attr({ 18760 "tabindex": "-1" 18761 }); 18762 if (_.$dots !== null) { 18763 _.$slides.not(_.$slideTrack.find(".slick-cloned")).each(function(i2) { 18764 var slideControlIndex = tabControlIndexes.indexOf(i2); 18765 $3(this).attr({ 18766 "role": "tabpanel", 18767 "id": "slick-slide" + _.instanceUid + i2, 18768 "tabindex": -1 18769 }); 18770 if (slideControlIndex !== -1) { 18771 var ariaButtonControl = "slick-slide-control" + _.instanceUid + slideControlIndex; 18772 if ($3("#" + ariaButtonControl).length) { 18773 $3(this).attr({ 18774 "aria-describedby": ariaButtonControl 18775 }); 18776 } 18777 } 18778 }); 18779 _.$dots.attr("role", "tablist").find("li").each(function(i2) { 18780 var mappedSlideIndex = tabControlIndexes[i2]; 18781 $3(this).attr({ 18782 "role": "presentation" 18783 }); 18784 $3(this).find("button").first().attr({ 18785 "role": "tab", 18786 "id": "slick-slide-control" + _.instanceUid + i2, 18787 "aria-controls": "slick-slide" + _.instanceUid + mappedSlideIndex, 18788 "aria-label": i2 + 1 + " of " + numDotGroups, 18789 "aria-selected": null, 18790 "tabindex": "-1" 18791 }); 18792 }).eq(_.currentSlide).find("button").attr({ 18793 "aria-selected": "true", 18794 "tabindex": "0" 18795 }).end(); 18796 } 18797 for (var i = _.currentSlide, max = i + _.options.slidesToShow; i < max; i++) { 18798 if (_.options.focusOnChange) { 18799 _.$slides.eq(i).attr({ "tabindex": "0" }); 18800 } else { 18801 _.$slides.eq(i).removeAttr("tabindex"); 18802 } 18803 } 18804 _.activateADA(); 18805 }; 18806 Slick.prototype.initArrowEvents = function() { 18807 var _ = this; 18808 if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) { 18809 _.$prevArrow.off("click.slick").on("click.slick", { 18810 message: "previous" 18811 }, _.changeSlide); 18812 _.$nextArrow.off("click.slick").on("click.slick", { 18813 message: "next" 18814 }, _.changeSlide); 18815 if (_.options.accessibility === true) { 18816 _.$prevArrow.on("keydown.slick", _.keyHandler); 18817 _.$nextArrow.on("keydown.slick", _.keyHandler); 18818 } 18819 } 18820 }; 18821 Slick.prototype.initDotEvents = function() { 18822 var _ = this; 18823 if (_.options.dots === true && _.slideCount > _.options.slidesToShow) { 18824 $3("li", _.$dots).on("click.slick", { 18825 message: "index" 18826 }, _.changeSlide); 18827 if (_.options.accessibility === true) { 18828 _.$dots.on("keydown.slick", _.keyHandler); 18829 } 18830 } 18831 if (_.options.dots === true && _.options.pauseOnDotsHover === true && _.slideCount > _.options.slidesToShow) { 18832 $3("li", _.$dots).on("mouseenter.slick", $3.proxy(_.interrupt, _, true)).on("mouseleave.slick", $3.proxy(_.interrupt, _, false)); 18833 } 18834 }; 18835 Slick.prototype.initSlideEvents = function() { 18836 var _ = this; 18837 if (_.options.pauseOnHover) { 18838 _.$list.on("mouseenter.slick", $3.proxy(_.interrupt, _, true)); 18839 _.$list.on("mouseleave.slick", $3.proxy(_.interrupt, _, false)); 18840 } 18841 }; 18842 Slick.prototype.initializeEvents = function() { 18843 var _ = this; 18844 _.initArrowEvents(); 18845 _.initDotEvents(); 18846 _.initSlideEvents(); 18847 _.$list.on("touchstart.slick mousedown.slick", { 18848 action: "start" 18849 }, _.swipeHandler); 18850 _.$list.on("touchmove.slick mousemove.slick", { 18851 action: "move" 18852 }, _.swipeHandler); 18853 _.$list.on("touchend.slick mouseup.slick", { 18854 action: "end" 18855 }, _.swipeHandler); 18856 _.$list.on("touchcancel.slick mouseleave.slick", { 18857 action: "end" 18858 }, _.swipeHandler); 18859 _.$list.on("click.slick", _.clickHandler); 18860 $3(document).on(_.visibilityChange, $3.proxy(_.visibility, _)); 18861 if (_.options.accessibility === true) { 18862 _.$list.on("keydown.slick", _.keyHandler); 18863 } 18864 if (_.options.focusOnSelect === true) { 18865 $3(_.$slideTrack).children().on("click.slick", _.selectHandler); 18866 } 18867 $3(window).on("orientationchange.slick.slick-" + _.instanceUid, $3.proxy(_.orientationChange, _)); 18868 $3(window).on("resize.slick.slick-" + _.instanceUid, $3.proxy(_.resize, _)); 18869 $3("[draggable!=true]", _.$slideTrack).on("dragstart", _.preventDefault); 18870 $3(window).on("load.slick.slick-" + _.instanceUid, _.setPosition); 18871 $3(_.setPosition); 18872 }; 18873 Slick.prototype.initUI = function() { 18874 var _ = this; 18875 if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) { 18876 _.$prevArrow.show(); 18877 _.$nextArrow.show(); 18878 } 18879 if (_.options.dots === true && _.slideCount > _.options.slidesToShow) { 18880 _.$dots.show(); 18881 } 18882 }; 18883 Slick.prototype.keyHandler = function(event2) { 18884 var _ = this; 18885 if (!event2.target.tagName.match("TEXTAREA|INPUT|SELECT")) { 18886 if (event2.keyCode === 37 && _.options.accessibility === true) { 18887 _.changeSlide({ 18888 data: { 18889 message: _.options.rtl === true ? "next" : "previous" 18890 } 18891 }); 18892 } else if (event2.keyCode === 39 && _.options.accessibility === true) { 18893 _.changeSlide({ 18894 data: { 18895 message: _.options.rtl === true ? "previous" : "next" 18896 } 18897 }); 18898 } 18899 } 18900 }; 18901 Slick.prototype.lazyLoad = function() { 18902 var _ = this, loadRange, cloneRange, rangeStart, rangeEnd; 18903 function loadImages(imagesScope) { 18904 $3("img[data-lazy]", imagesScope).each(function() { 18905 var image = $3(this), imageSource = $3(this).attr("data-lazy"), imageSrcSet = $3(this).attr("data-srcset"), imageSizes = $3(this).attr("data-sizes") || _.$slider.attr("data-sizes"), imageToLoad = document.createElement("img"); 18906 imageToLoad.onload = function() { 18907 image.animate({ opacity: 0 }, 100, function() { 18908 if (imageSrcSet) { 18909 image.attr("srcset", imageSrcSet); 18910 if (imageSizes) { 18911 image.attr("sizes", imageSizes); 18912 } 18913 } 18914 image.attr("src", imageSource).animate({ opacity: 1 }, 200, function() { 18915 image.removeAttr("data-lazy data-srcset data-sizes").removeClass("slick-loading"); 18916 }); 18917 _.$slider.trigger("lazyLoaded", [_, image, imageSource]); 18918 }); 18919 }; 18920 imageToLoad.onerror = function() { 18921 image.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"); 18922 _.$slider.trigger("lazyLoadError", [_, image, imageSource]); 18923 }; 18924 imageToLoad.src = imageSource; 18925 }); 18926 } 18927 if (_.options.centerMode === true) { 18928 if (_.options.infinite === true) { 18929 rangeStart = _.currentSlide + (_.options.slidesToShow / 2 + 1); 18930 rangeEnd = rangeStart + _.options.slidesToShow + 2; 18931 } else { 18932 rangeStart = Math.max(0, _.currentSlide - (_.options.slidesToShow / 2 + 1)); 18933 rangeEnd = 2 + (_.options.slidesToShow / 2 + 1) + _.currentSlide; 18934 } 18935 } else { 18936 rangeStart = _.options.infinite ? _.options.slidesToShow + _.currentSlide : _.currentSlide; 18937 rangeEnd = Math.ceil(rangeStart + _.options.slidesToShow); 18938 if (_.options.fade === true) { 18939 if (rangeStart > 0) rangeStart--; 18940 if (rangeEnd <= _.slideCount) rangeEnd++; 18941 } 18942 } 18943 loadRange = _.$slider.find(".slick-slide").slice(rangeStart, rangeEnd); 18944 if (_.options.lazyLoad === "anticipated") { 18945 var prevSlide = rangeStart - 1, nextSlide = rangeEnd, $slides = _.$slider.find(".slick-slide"); 18946 for (var i = 0; i < _.options.slidesToScroll; i++) { 18947 if (prevSlide < 0) prevSlide = _.slideCount - 1; 18948 loadRange = loadRange.add($slides.eq(prevSlide)); 18949 loadRange = loadRange.add($slides.eq(nextSlide)); 18950 prevSlide--; 18951 nextSlide++; 18952 } 18953 } 18954 loadImages(loadRange); 18955 if (_.slideCount <= _.options.slidesToShow) { 18956 cloneRange = _.$slider.find(".slick-slide"); 18957 loadImages(cloneRange); 18958 } else if (_.currentSlide >= _.slideCount - _.options.slidesToShow) { 18959 cloneRange = _.$slider.find(".slick-cloned").slice(0, _.options.slidesToShow); 18960 loadImages(cloneRange); 18961 } else if (_.currentSlide === 0) { 18962 cloneRange = _.$slider.find(".slick-cloned").slice(_.options.slidesToShow * -1); 18963 loadImages(cloneRange); 18964 } 18965 }; 18966 Slick.prototype.loadSlider = function() { 18967 var _ = this; 18968 _.setPosition(); 18969 _.$slideTrack.css({ 18970 opacity: 1 18971 }); 18972 _.$slider.removeClass("slick-loading"); 18973 _.initUI(); 18974 if (_.options.lazyLoad === "progressive") { 18975 _.progressiveLazyLoad(); 18976 } 18977 }; 18978 Slick.prototype.next = Slick.prototype.slickNext = function() { 18979 var _ = this; 18980 _.changeSlide({ 18981 data: { 18982 message: "next" 18983 } 18984 }); 18985 }; 18986 Slick.prototype.orientationChange = function() { 18987 var _ = this; 18988 _.checkResponsive(); 18989 _.setPosition(); 18990 }; 18991 Slick.prototype.pause = Slick.prototype.slickPause = function() { 18992 var _ = this; 18993 _.autoPlayClear(); 18994 _.paused = true; 18995 }; 18996 Slick.prototype.play = Slick.prototype.slickPlay = function() { 18997 var _ = this; 18998 _.autoPlay(); 18999 _.options.autoplay = true; 19000 _.paused = false; 19001 _.focussed = false; 19002 _.interrupted = false; 19003 }; 19004 Slick.prototype.postSlide = function(index) { 19005 var _ = this; 19006 if (!_.unslicked) { 19007 _.$slider.trigger("afterChange", [_, index]); 19008 _.animating = false; 19009 if (_.slideCount > _.options.slidesToShow) { 19010 _.setPosition(); 19011 } 19012 _.swipeLeft = null; 19013 if (_.options.autoplay) { 19014 _.autoPlay(); 19015 } 19016 if (_.options.accessibility === true) { 19017 _.initADA(); 19018 if (_.options.focusOnChange) { 19019 var $currentSlide = $3(_.$slides.get(_.currentSlide)); 19020 $currentSlide.attr("tabindex", 0).focus(); 19021 } 19022 } 19023 } 19024 }; 19025 Slick.prototype.prev = Slick.prototype.slickPrev = function() { 19026 var _ = this; 19027 _.changeSlide({ 19028 data: { 19029 message: "previous" 19030 } 19031 }); 19032 }; 19033 Slick.prototype.preventDefault = function(event2) { 19034 event2.preventDefault(); 19035 }; 19036 Slick.prototype.progressiveLazyLoad = function(tryCount) { 19037 tryCount = tryCount || 1; 19038 var _ = this, $imgsToLoad = $3("img[data-lazy]", _.$slider), image, imageSource, imageSrcSet, imageSizes, imageToLoad; 19039 if ($imgsToLoad.length) { 19040 image = $imgsToLoad.first(); 19041 imageSource = image.attr("data-lazy"); 19042 imageSrcSet = image.attr("data-srcset"); 19043 imageSizes = image.attr("data-sizes") || _.$slider.attr("data-sizes"); 19044 imageToLoad = document.createElement("img"); 19045 imageToLoad.onload = function() { 19046 if (imageSrcSet) { 19047 image.attr("srcset", imageSrcSet); 19048 if (imageSizes) { 19049 image.attr("sizes", imageSizes); 19050 } 19051 } 19052 image.attr("src", imageSource).removeAttr("data-lazy data-srcset data-sizes").removeClass("slick-loading"); 19053 if (_.options.adaptiveHeight === true) { 19054 _.setPosition(); 19055 } 19056 _.$slider.trigger("lazyLoaded", [_, image, imageSource]); 19057 _.progressiveLazyLoad(); 19058 }; 19059 imageToLoad.onerror = function() { 19060 if (tryCount < 3) { 19061 setTimeout(function() { 19062 _.progressiveLazyLoad(tryCount + 1); 19063 }, 500); 19064 } else { 19065 image.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"); 19066 _.$slider.trigger("lazyLoadError", [_, image, imageSource]); 19067 _.progressiveLazyLoad(); 19068 } 19069 }; 19070 imageToLoad.src = imageSource; 19071 } else { 19072 _.$slider.trigger("allImagesLoaded", [_]); 19073 } 19074 }; 19075 Slick.prototype.refresh = function(initializing) { 19076 var _ = this, currentSlide, lastVisibleIndex; 19077 lastVisibleIndex = _.slideCount - _.options.slidesToShow; 19078 if (!_.options.infinite && _.currentSlide > lastVisibleIndex) { 19079 _.currentSlide = lastVisibleIndex; 19080 } 19081 if (_.slideCount <= _.options.slidesToShow) { 19082 _.currentSlide = 0; 19083 } 19084 currentSlide = _.currentSlide; 19085 _.destroy(true); 19086 $3.extend(_, _.initials, { currentSlide }); 19087 _.init(); 19088 if (!initializing) { 19089 _.changeSlide({ 19090 data: { 19091 message: "index", 19092 index: currentSlide 19093 } 19094 }, false); 19095 } 19096 }; 19097 Slick.prototype.registerBreakpoints = function() { 19098 var _ = this, breakpoint, currentBreakpoint, l, responsiveSettings = _.options.responsive || null; 19099 if ($3.type(responsiveSettings) === "array" && responsiveSettings.length) { 19100 _.respondTo = _.options.respondTo || "window"; 19101 for (breakpoint in responsiveSettings) { 19102 l = _.breakpoints.length - 1; 19103 if (responsiveSettings.hasOwnProperty(breakpoint)) { 19104 currentBreakpoint = responsiveSettings[breakpoint].breakpoint; 19105 while (l >= 0) { 19106 if (_.breakpoints[l] && _.breakpoints[l] === currentBreakpoint) { 19107 _.breakpoints.splice(l, 1); 19108 } 19109 l--; 19110 } 19111 _.breakpoints.push(currentBreakpoint); 19112 _.breakpointSettings[currentBreakpoint] = responsiveSettings[breakpoint].settings; 19113 } 19114 } 19115 _.breakpoints.sort(function(a, b) { 19116 return _.options.mobileFirst ? a - b : b - a; 19117 }); 19118 } 19119 }; 19120 Slick.prototype.reinit = function() { 19121 var _ = this; 19122 _.$slides = _.$slideTrack.children(_.options.slide).addClass("slick-slide"); 19123 _.slideCount = _.$slides.length; 19124 if (_.currentSlide >= _.slideCount && _.currentSlide !== 0) { 19125 _.currentSlide = _.currentSlide - _.options.slidesToScroll; 19126 } 19127 if (_.slideCount <= _.options.slidesToShow) { 19128 _.currentSlide = 0; 19129 } 19130 _.registerBreakpoints(); 19131 _.setProps(); 19132 _.setupInfinite(); 19133 _.buildArrows(); 19134 _.updateArrows(); 19135 _.initArrowEvents(); 19136 _.buildDots(); 19137 _.updateDots(); 19138 _.initDotEvents(); 19139 _.cleanUpSlideEvents(); 19140 _.initSlideEvents(); 19141 _.checkResponsive(false, true); 19142 if (_.options.focusOnSelect === true) { 19143 $3(_.$slideTrack).children().on("click.slick", _.selectHandler); 19144 } 19145 _.setSlideClasses(typeof _.currentSlide === "number" ? _.currentSlide : 0); 19146 _.setPosition(); 19147 _.focusHandler(); 19148 _.paused = !_.options.autoplay; 19149 _.autoPlay(); 19150 _.$slider.trigger("reInit", [_]); 19151 }; 19152 Slick.prototype.resize = function() { 19153 var _ = this; 19154 if ($3(window).width() !== _.windowWidth) { 19155 clearTimeout(_.windowDelay); 19156 _.windowDelay = window.setTimeout(function() { 19157 _.windowWidth = $3(window).width(); 19158 _.checkResponsive(); 19159 if (!_.unslicked) { 19160 _.setPosition(); 19161 } 19162 }, 50); 19163 } 19164 }; 19165 Slick.prototype.removeSlide = Slick.prototype.slickRemove = function(index, removeBefore, removeAll) { 19166 var _ = this; 19167 if (typeof index === "boolean") { 19168 removeBefore = index; 19169 index = removeBefore === true ? 0 : _.slideCount - 1; 19170 } else { 19171 index = removeBefore === true ? --index : index; 19172 } 19173 if (_.slideCount < 1 || index < 0 || index > _.slideCount - 1) { 19174 return false; 19175 } 19176 _.unload(); 19177 if (removeAll === true) { 19178 _.$slideTrack.children().remove(); 19179 } else { 19180 _.$slideTrack.children(this.options.slide).eq(index).remove(); 19181 } 19182 _.$slides = _.$slideTrack.children(this.options.slide); 19183 _.$slideTrack.children(this.options.slide).detach(); 19184 _.$slideTrack.append(_.$slides); 19185 _.$slidesCache = _.$slides; 19186 _.reinit(); 19187 }; 19188 Slick.prototype.setCSS = function(position) { 19189 var _ = this, positionProps = {}, x, y; 19190 if (_.options.rtl === true) { 19191 position = -position; 19192 } 19193 x = _.positionProp == "left" ? Math.ceil(position) + "px" : "0px"; 19194 y = _.positionProp == "top" ? Math.ceil(position) + "px" : "0px"; 19195 positionProps[_.positionProp] = position; 19196 if (_.transformsEnabled === false) { 19197 _.$slideTrack.css(positionProps); 19198 } else { 19199 positionProps = {}; 19200 if (_.cssTransitions === false) { 19201 positionProps[_.animType] = "translate(" + x + ", " + y + ")"; 19202 _.$slideTrack.css(positionProps); 19203 } else { 19204 positionProps[_.animType] = "translate3d(" + x + ", " + y + ", 0px)"; 19205 _.$slideTrack.css(positionProps); 19206 } 19207 } 19208 }; 19209 Slick.prototype.setDimensions = function() { 19210 var _ = this; 19211 if (_.options.vertical === false) { 19212 if (_.options.centerMode === true) { 19213 _.$list.css({ 19214 padding: "0px " + _.options.centerPadding 19215 }); 19216 } 19217 } else { 19218 _.$list.height(_.$slides.first().outerHeight(true) * _.options.slidesToShow); 19219 if (_.options.centerMode === true) { 19220 _.$list.css({ 19221 padding: _.options.centerPadding + " 0px" 19222 }); 19223 } 19224 } 19225 _.listWidth = _.$list.width(); 19226 _.listHeight = _.$list.height(); 19227 if (_.options.vertical === false && _.options.variableWidth === false) { 19228 _.slideWidth = Math.ceil(_.listWidth / _.options.slidesToShow); 19229 _.$slideTrack.width(Math.ceil(_.slideWidth * _.$slideTrack.children(".slick-slide").length)); 19230 } else if (_.options.variableWidth === true) { 19231 _.$slideTrack.width(5e3 * _.slideCount); 19232 } else { 19233 _.slideWidth = Math.ceil(_.listWidth); 19234 _.$slideTrack.height(Math.ceil(_.$slides.first().outerHeight(true) * _.$slideTrack.children(".slick-slide").length)); 19235 } 19236 var offset = _.$slides.first().outerWidth(true) - _.$slides.first().width(); 19237 if (_.options.variableWidth === false) _.$slideTrack.children(".slick-slide").width(_.slideWidth - offset); 19238 }; 19239 Slick.prototype.setFade = function() { 19240 var _ = this, targetLeft; 19241 _.$slides.each(function(index, element) { 19242 targetLeft = _.slideWidth * index * -1; 19243 if (_.options.rtl === true) { 19244 $3(element).css({ 19245 position: "relative", 19246 right: targetLeft, 19247 top: 0, 19248 zIndex: _.options.zIndex - 2, 19249 opacity: 0 19250 }); 19251 } else { 19252 $3(element).css({ 19253 position: "relative", 19254 left: targetLeft, 19255 top: 0, 19256 zIndex: _.options.zIndex - 2, 19257 opacity: 0 19258 }); 19259 } 19260 }); 19261 _.$slides.eq(_.currentSlide).css({ 19262 zIndex: _.options.zIndex - 1, 19263 opacity: 1 19264 }); 19265 }; 19266 Slick.prototype.setHeight = function() { 19267 var _ = this; 19268 if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) { 19269 var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true); 19270 _.$list.css("height", targetHeight); 19271 } 19272 }; 19273 Slick.prototype.setOption = Slick.prototype.slickSetOption = function() { 19274 var _ = this, l, item, option, value, refresh = false, type; 19275 if ($3.type(arguments[0]) === "object") { 19276 option = arguments[0]; 19277 refresh = arguments[1]; 19278 type = "multiple"; 19279 } else if ($3.type(arguments[0]) === "string") { 19280 option = arguments[0]; 19281 value = arguments[1]; 19282 refresh = arguments[2]; 19283 if (arguments[0] === "responsive" && $3.type(arguments[1]) === "array") { 19284 type = "responsive"; 19285 } else if (typeof arguments[1] !== "undefined") { 19286 type = "single"; 19287 } 19288 } 19289 if (type === "single") { 19290 _.options[option] = value; 19291 } else if (type === "multiple") { 19292 $3.each(option, function(opt, val) { 19293 _.options[opt] = val; 19294 }); 19295 } else if (type === "responsive") { 19296 for (item in value) { 19297 if ($3.type(_.options.responsive) !== "array") { 19298 _.options.responsive = [value[item]]; 19299 } else { 19300 l = _.options.responsive.length - 1; 19301 while (l >= 0) { 19302 if (_.options.responsive[l].breakpoint === value[item].breakpoint) { 19303 _.options.responsive.splice(l, 1); 19304 } 19305 l--; 19306 } 19307 _.options.responsive.push(value[item]); 19308 } 19309 } 19310 } 19311 if (refresh) { 19312 _.unload(); 19313 _.reinit(); 19314 } 19315 }; 19316 Slick.prototype.setPosition = function() { 19317 var _ = this; 19318 _.setDimensions(); 19319 _.setHeight(); 19320 if (_.options.fade === false) { 19321 _.setCSS(_.getLeft(_.currentSlide)); 19322 } else { 19323 _.setFade(); 19324 } 19325 _.$slider.trigger("setPosition", [_]); 19326 }; 19327 Slick.prototype.setProps = function() { 19328 var _ = this, bodyStyle = document.body.style; 19329 _.positionProp = _.options.vertical === true ? "top" : "left"; 19330 if (_.positionProp === "top") { 19331 _.$slider.addClass("slick-vertical"); 19332 } else { 19333 _.$slider.removeClass("slick-vertical"); 19334 } 19335 if (bodyStyle.WebkitTransition !== void 0 || bodyStyle.MozTransition !== void 0 || bodyStyle.msTransition !== void 0) { 19336 if (_.options.useCSS === true) { 19337 _.cssTransitions = true; 19338 } 19339 } 19340 if (_.options.fade) { 19341 if (typeof _.options.zIndex === "number") { 19342 if (_.options.zIndex < 3) { 19343 _.options.zIndex = 3; 19344 } 19345 } else { 19346 _.options.zIndex = _.defaults.zIndex; 19347 } 19348 } 19349 if (bodyStyle.OTransform !== void 0) { 19350 _.animType = "OTransform"; 19351 _.transformType = "-o-transform"; 19352 _.transitionType = "OTransition"; 19353 if (bodyStyle.perspectiveProperty === void 0 && bodyStyle.webkitPerspective === void 0) _.animType = false; 19354 } 19355 if (bodyStyle.MozTransform !== void 0) { 19356 _.animType = "MozTransform"; 19357 _.transformType = "-moz-transform"; 19358 _.transitionType = "MozTransition"; 19359 if (bodyStyle.perspectiveProperty === void 0 && bodyStyle.MozPerspective === void 0) _.animType = false; 19360 } 19361 if (bodyStyle.webkitTransform !== void 0) { 19362 _.animType = "webkitTransform"; 19363 _.transformType = "-webkit-transform"; 19364 _.transitionType = "webkitTransition"; 19365 if (bodyStyle.perspectiveProperty === void 0 && bodyStyle.webkitPerspective === void 0) _.animType = false; 19366 } 19367 if (bodyStyle.msTransform !== void 0) { 19368 _.animType = "msTransform"; 19369 _.transformType = "-ms-transform"; 19370 _.transitionType = "msTransition"; 19371 if (bodyStyle.msTransform === void 0) _.animType = false; 19372 } 19373 if (bodyStyle.transform !== void 0 && _.animType !== false) { 19374 _.animType = "transform"; 19375 _.transformType = "transform"; 19376 _.transitionType = "transition"; 19377 } 19378 _.transformsEnabled = _.options.useTransform && (_.animType !== null && _.animType !== false); 19379 }; 19380 Slick.prototype.setSlideClasses = function(index) { 19381 var _ = this, centerOffset, allSlides, indexOffset, remainder; 19382 allSlides = _.$slider.find(".slick-slide").removeClass("slick-active slick-center slick-current").attr("aria-hidden", "true"); 19383 _.$slides.eq(index).addClass("slick-current"); 19384 if (_.options.centerMode === true) { 19385 var evenCoef = _.options.slidesToShow % 2 === 0 ? 1 : 0; 19386 centerOffset = Math.floor(_.options.slidesToShow / 2); 19387 if (_.options.infinite === true) { 19388 if (index >= centerOffset && index <= _.slideCount - 1 - centerOffset) { 19389 _.$slides.slice(index - centerOffset + evenCoef, index + centerOffset + 1).addClass("slick-active").attr("aria-hidden", "false"); 19390 } else { 19391 indexOffset = _.options.slidesToShow + index; 19392 allSlides.slice(indexOffset - centerOffset + 1 + evenCoef, indexOffset + centerOffset + 2).addClass("slick-active").attr("aria-hidden", "false"); 19393 } 19394 if (index === 0) { 19395 allSlides.eq(allSlides.length - 1 - _.options.slidesToShow).addClass("slick-center"); 19396 } else if (index === _.slideCount - 1) { 19397 allSlides.eq(_.options.slidesToShow).addClass("slick-center"); 19398 } 19399 } 19400 _.$slides.eq(index).addClass("slick-center"); 19401 } else { 19402 if (index >= 0 && index <= _.slideCount - _.options.slidesToShow) { 19403 _.$slides.slice(index, index + _.options.slidesToShow).addClass("slick-active").attr("aria-hidden", "false"); 19404 } else if (allSlides.length <= _.options.slidesToShow) { 19405 allSlides.addClass("slick-active").attr("aria-hidden", "false"); 19406 } else { 19407 remainder = _.slideCount % _.options.slidesToShow; 19408 indexOffset = _.options.infinite === true ? _.options.slidesToShow + index : index; 19409 if (_.options.slidesToShow == _.options.slidesToScroll && _.slideCount - index < _.options.slidesToShow) { 19410 allSlides.slice(indexOffset - (_.options.slidesToShow - remainder), indexOffset + remainder).addClass("slick-active").attr("aria-hidden", "false"); 19411 } else { 19412 allSlides.slice(indexOffset, indexOffset + _.options.slidesToShow).addClass("slick-active").attr("aria-hidden", "false"); 19413 } 19414 } 19415 } 19416 if (_.options.lazyLoad === "ondemand" || _.options.lazyLoad === "anticipated") { 19417 _.lazyLoad(); 19418 } 19419 }; 19420 Slick.prototype.setupInfinite = function() { 19421 var _ = this, i, slideIndex, infiniteCount; 19422 if (_.options.fade === true) { 19423 _.options.centerMode = false; 19424 } 19425 if (_.options.infinite === true && _.options.fade === false) { 19426 slideIndex = null; 19427 if (_.slideCount > _.options.slidesToShow) { 19428 if (_.options.centerMode === true) { 19429 infiniteCount = _.options.slidesToShow + 1; 19430 } else { 19431 infiniteCount = _.options.slidesToShow; 19432 } 19433 for (i = _.slideCount; i > _.slideCount - infiniteCount; i -= 1) { 19434 slideIndex = i - 1; 19435 $3(_.$slides[slideIndex]).clone(true).attr("id", "").attr("data-slick-index", slideIndex - _.slideCount).prependTo(_.$slideTrack).addClass("slick-cloned"); 19436 } 19437 for (i = 0; i < infiniteCount + _.slideCount; i += 1) { 19438 slideIndex = i; 19439 $3(_.$slides[slideIndex]).clone(true).attr("id", "").attr("data-slick-index", slideIndex + _.slideCount).appendTo(_.$slideTrack).addClass("slick-cloned"); 19440 } 19441 _.$slideTrack.find(".slick-cloned").find("[id]").each(function() { 19442 $3(this).attr("id", ""); 19443 }); 19444 } 19445 } 19446 }; 19447 Slick.prototype.interrupt = function(toggle) { 19448 var _ = this; 19449 if (!toggle) { 19450 _.autoPlay(); 19451 } 19452 _.interrupted = toggle; 19453 }; 19454 Slick.prototype.selectHandler = function(event2) { 19455 var _ = this; 19456 var targetElement = $3(event2.target).is(".slick-slide") ? $3(event2.target) : $3(event2.target).parents(".slick-slide"); 19457 var index = parseInt(targetElement.attr("data-slick-index")); 19458 if (!index) index = 0; 19459 if (_.slideCount <= _.options.slidesToShow) { 19460 _.slideHandler(index, false, true); 19461 return; 19462 } 19463 _.slideHandler(index); 19464 }; 19465 Slick.prototype.slideHandler = function(index, sync, dontAnimate) { 19466 var targetSlide, animSlide, oldSlide, slideLeft, targetLeft = null, _ = this, navTarget; 19467 sync = sync || false; 19468 if (_.animating === true && _.options.waitForAnimate === true) { 19469 return; 19470 } 19471 if (_.options.fade === true && _.currentSlide === index) { 19472 return; 19473 } 19474 if (sync === false) { 19475 _.asNavFor(index); 19476 } 19477 targetSlide = index; 19478 targetLeft = _.getLeft(targetSlide); 19479 slideLeft = _.getLeft(_.currentSlide); 19480 _.currentLeft = _.swipeLeft === null ? slideLeft : _.swipeLeft; 19481 if (_.options.infinite === false && _.options.centerMode === false && (index < 0 || index > _.getDotCount() * _.options.slidesToScroll)) { 19482 if (_.options.fade === false) { 19483 targetSlide = _.currentSlide; 19484 if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) { 19485 _.animateSlide(slideLeft, function() { 19486 _.postSlide(targetSlide); 19487 }); 19488 } else { 19489 _.postSlide(targetSlide); 19490 } 19491 } 19492 return; 19493 } else if (_.options.infinite === false && _.options.centerMode === true && (index < 0 || index > _.slideCount - _.options.slidesToScroll)) { 19494 if (_.options.fade === false) { 19495 targetSlide = _.currentSlide; 19496 if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) { 19497 _.animateSlide(slideLeft, function() { 19498 _.postSlide(targetSlide); 19499 }); 19500 } else { 19501 _.postSlide(targetSlide); 19502 } 19503 } 19504 return; 19505 } 19506 if (_.options.autoplay) { 19507 clearInterval(_.autoPlayTimer); 19508 } 19509 if (targetSlide < 0) { 19510 if (_.slideCount % _.options.slidesToScroll !== 0) { 19511 animSlide = _.slideCount - _.slideCount % _.options.slidesToScroll; 19512 } else { 19513 animSlide = _.slideCount + targetSlide; 19514 } 19515 } else if (targetSlide >= _.slideCount) { 19516 if (_.slideCount % _.options.slidesToScroll !== 0) { 19517 animSlide = 0; 19518 } else { 19519 animSlide = targetSlide - _.slideCount; 19520 } 19521 } else { 19522 animSlide = targetSlide; 19523 } 19524 _.animating = true; 19525 _.$slider.trigger("beforeChange", [_, _.currentSlide, animSlide]); 19526 oldSlide = _.currentSlide; 19527 _.currentSlide = animSlide; 19528 _.setSlideClasses(_.currentSlide); 19529 if (_.options.asNavFor) { 19530 navTarget = _.getNavTarget(); 19531 navTarget = navTarget.slick("getSlick"); 19532 if (navTarget.slideCount <= navTarget.options.slidesToShow) { 19533 navTarget.setSlideClasses(_.currentSlide); 19534 } 19535 } 19536 _.updateDots(); 19537 _.updateArrows(); 19538 if (_.options.fade === true) { 19539 if (dontAnimate !== true) { 19540 _.fadeSlideOut(oldSlide); 19541 _.fadeSlide(animSlide, function() { 19542 _.postSlide(animSlide); 19543 }); 19544 } else { 19545 _.postSlide(animSlide); 19546 } 19547 _.animateHeight(); 19548 return; 19549 } 19550 if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) { 19551 _.animateSlide(targetLeft, function() { 19552 _.postSlide(animSlide); 19553 }); 19554 } else { 19555 _.postSlide(animSlide); 19556 } 19557 }; 19558 Slick.prototype.startLoad = function() { 19559 var _ = this; 19560 if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) { 19561 _.$prevArrow.hide(); 19562 _.$nextArrow.hide(); 19563 } 19564 if (_.options.dots === true && _.slideCount > _.options.slidesToShow) { 19565 _.$dots.hide(); 19566 } 19567 _.$slider.addClass("slick-loading"); 19568 }; 19569 Slick.prototype.swipeDirection = function() { 19570 var xDist, yDist, r, swipeAngle, _ = this; 19571 xDist = _.touchObject.startX - _.touchObject.curX; 19572 yDist = _.touchObject.startY - _.touchObject.curY; 19573 r = Math.atan2(yDist, xDist); 19574 swipeAngle = Math.round(r * 180 / Math.PI); 19575 if (swipeAngle < 0) { 19576 swipeAngle = 360 - Math.abs(swipeAngle); 19577 } 19578 if (swipeAngle <= 45 && swipeAngle >= 0) { 19579 return _.options.rtl === false ? "left" : "right"; 19580 } 19581 if (swipeAngle <= 360 && swipeAngle >= 315) { 19582 return _.options.rtl === false ? "left" : "right"; 19583 } 19584 if (swipeAngle >= 135 && swipeAngle <= 225) { 19585 return _.options.rtl === false ? "right" : "left"; 19586 } 19587 if (_.options.verticalSwiping === true) { 19588 if (swipeAngle >= 35 && swipeAngle <= 135) { 19589 return "down"; 19590 } else { 19591 return "up"; 19592 } 19593 } 19594 return "vertical"; 19595 }; 19596 Slick.prototype.swipeEnd = function(event2) { 19597 var _ = this, slideCount, direction; 19598 _.dragging = false; 19599 _.swiping = false; 19600 if (_.scrolling) { 19601 _.scrolling = false; 19602 return false; 19603 } 19604 _.interrupted = false; 19605 _.shouldClick = _.touchObject.swipeLength > 10 ? false : true; 19606 if (_.touchObject.curX === void 0) { 19607 return false; 19608 } 19609 if (_.touchObject.edgeHit === true) { 19610 _.$slider.trigger("edge", [_, _.swipeDirection()]); 19611 } 19612 if (_.touchObject.swipeLength >= _.touchObject.minSwipe) { 19613 direction = _.swipeDirection(); 19614 switch (direction) { 19615 case "left": 19616 case "down": 19617 slideCount = _.options.swipeToSlide ? _.checkNavigable(_.currentSlide + _.getSlideCount()) : _.currentSlide + _.getSlideCount(); 19618 _.currentDirection = 0; 19619 break; 19620 case "right": 19621 case "up": 19622 slideCount = _.options.swipeToSlide ? _.checkNavigable(_.currentSlide - _.getSlideCount()) : _.currentSlide - _.getSlideCount(); 19623 _.currentDirection = 1; 19624 break; 19625 default: 19626 } 19627 if (direction != "vertical") { 19628 _.slideHandler(slideCount); 19629 _.touchObject = {}; 19630 _.$slider.trigger("swipe", [_, direction]); 19631 } 19632 } else { 19633 if (_.touchObject.startX !== _.touchObject.curX) { 19634 _.slideHandler(_.currentSlide); 19635 _.touchObject = {}; 19636 } 19637 } 19638 }; 19639 Slick.prototype.swipeHandler = function(event2) { 19640 var _ = this; 19641 if (_.options.swipe === false || "ontouchend" in document && _.options.swipe === false) { 19642 return; 19643 } else if (_.options.draggable === false && event2.type.indexOf("mouse") !== -1) { 19644 return; 19645 } 19646 _.touchObject.fingerCount = event2.originalEvent && event2.originalEvent.touches !== void 0 ? event2.originalEvent.touches.length : 1; 19647 _.touchObject.minSwipe = _.listWidth / _.options.touchThreshold; 19648 if (_.options.verticalSwiping === true) { 19649 _.touchObject.minSwipe = _.listHeight / _.options.touchThreshold; 19650 } 19651 switch (event2.data.action) { 19652 case "start": 19653 _.swipeStart(event2); 19654 break; 19655 case "move": 19656 _.swipeMove(event2); 19657 break; 19658 case "end": 19659 _.swipeEnd(event2); 19660 break; 19661 } 19662 }; 19663 Slick.prototype.swipeMove = function(event2) { 19664 var _ = this, edgeWasHit = false, curLeft, swipeDirection, swipeLength, positionOffset, touches, verticalSwipeLength; 19665 touches = event2.originalEvent !== void 0 ? event2.originalEvent.touches : null; 19666 if (!_.dragging || _.scrolling || touches && touches.length !== 1) { 19667 return false; 19668 } 19669 curLeft = _.getLeft(_.currentSlide); 19670 _.touchObject.curX = touches !== void 0 ? touches[0].pageX : event2.clientX; 19671 _.touchObject.curY = touches !== void 0 ? touches[0].pageY : event2.clientY; 19672 _.touchObject.swipeLength = Math.round(Math.sqrt( 19673 Math.pow(_.touchObject.curX - _.touchObject.startX, 2) 19674 )); 19675 verticalSwipeLength = Math.round(Math.sqrt( 19676 Math.pow(_.touchObject.curY - _.touchObject.startY, 2) 19677 )); 19678 if (!_.options.verticalSwiping && !_.swiping && verticalSwipeLength > 4) { 19679 _.scrolling = true; 19680 return false; 19681 } 19682 if (_.options.verticalSwiping === true) { 19683 _.touchObject.swipeLength = verticalSwipeLength; 19684 } 19685 swipeDirection = _.swipeDirection(); 19686 if (event2.originalEvent !== void 0 && _.touchObject.swipeLength > 4) { 19687 _.swiping = true; 19688 event2.preventDefault(); 19689 } 19690 positionOffset = (_.options.rtl === false ? 1 : -1) * (_.touchObject.curX > _.touchObject.startX ? 1 : -1); 19691 if (_.options.verticalSwiping === true) { 19692 positionOffset = _.touchObject.curY > _.touchObject.startY ? 1 : -1; 19693 } 19694 swipeLength = _.touchObject.swipeLength; 19695 _.touchObject.edgeHit = false; 19696 if (_.options.infinite === false) { 19697 if (_.currentSlide === 0 && swipeDirection === "right" || _.currentSlide >= _.getDotCount() && swipeDirection === "left") { 19698 swipeLength = _.touchObject.swipeLength * _.options.edgeFriction; 19699 _.touchObject.edgeHit = true; 19700 } 19701 } 19702 if (_.options.vertical === false) { 19703 _.swipeLeft = curLeft + swipeLength * positionOffset; 19704 } else { 19705 _.swipeLeft = curLeft + swipeLength * (_.$list.height() / _.listWidth) * positionOffset; 19706 } 19707 if (_.options.verticalSwiping === true) { 19708 _.swipeLeft = curLeft + swipeLength * positionOffset; 19709 } 19710 if (_.options.fade === true || _.options.touchMove === false) { 19711 return false; 19712 } 19713 if (_.animating === true) { 19714 _.swipeLeft = null; 19715 return false; 19716 } 19717 _.setCSS(_.swipeLeft); 19718 }; 19719 Slick.prototype.swipeStart = function(event2) { 19720 var _ = this, touches; 19721 _.interrupted = true; 19722 if (_.touchObject.fingerCount !== 1 || _.slideCount <= _.options.slidesToShow) { 19723 _.touchObject = {}; 19724 return false; 19725 } 19726 if (event2.originalEvent !== void 0 && event2.originalEvent.touches !== void 0) { 19727 touches = event2.originalEvent.touches[0]; 19728 } 19729 _.touchObject.startX = _.touchObject.curX = touches !== void 0 ? touches.pageX : event2.clientX; 19730 _.touchObject.startY = _.touchObject.curY = touches !== void 0 ? touches.pageY : event2.clientY; 19731 _.dragging = true; 19732 }; 19733 Slick.prototype.unfilterSlides = Slick.prototype.slickUnfilter = function() { 19734 var _ = this; 19735 if (_.$slidesCache !== null) { 19736 _.unload(); 19737 _.$slideTrack.children(this.options.slide).detach(); 19738 _.$slidesCache.appendTo(_.$slideTrack); 19739 _.reinit(); 19740 } 19741 }; 19742 Slick.prototype.unload = function() { 19743 var _ = this; 19744 $3(".slick-cloned", _.$slider).remove(); 19745 if (_.$dots) { 19746 _.$dots.remove(); 19747 } 19748 if (_.$prevArrow && _.htmlExpr.test(_.options.prevArrow)) { 19749 _.$prevArrow.remove(); 19750 } 19751 if (_.$nextArrow && _.htmlExpr.test(_.options.nextArrow)) { 19752 _.$nextArrow.remove(); 19753 } 19754 _.$slides.removeClass("slick-slide slick-active slick-visible slick-current").attr("aria-hidden", "true").css("width", ""); 19755 }; 19756 Slick.prototype.unslick = function(fromBreakpoint) { 19757 var _ = this; 19758 _.$slider.trigger("unslick", [_, fromBreakpoint]); 19759 _.destroy(); 19760 }; 19761 Slick.prototype.updateArrows = function() { 19762 var _ = this, centerOffset; 19763 centerOffset = Math.floor(_.options.slidesToShow / 2); 19764 if (_.options.arrows === true && _.slideCount > _.options.slidesToShow && !_.options.infinite) { 19765 _.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false"); 19766 _.$nextArrow.removeClass("slick-disabled").attr("aria-disabled", "false"); 19767 if (_.currentSlide === 0) { 19768 _.$prevArrow.addClass("slick-disabled").attr("aria-disabled", "true"); 19769 _.$nextArrow.removeClass("slick-disabled").attr("aria-disabled", "false"); 19770 } else if (_.currentSlide >= _.slideCount - _.options.slidesToShow && _.options.centerMode === false) { 19771 _.$nextArrow.addClass("slick-disabled").attr("aria-disabled", "true"); 19772 _.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false"); 19773 } else if (_.currentSlide >= _.slideCount - 1 && _.options.centerMode === true) { 19774 _.$nextArrow.addClass("slick-disabled").attr("aria-disabled", "true"); 19775 _.$prevArrow.removeClass("slick-disabled").attr("aria-disabled", "false"); 19776 } 19777 } 19778 }; 19779 Slick.prototype.updateDots = function() { 19780 var _ = this; 19781 if (_.$dots !== null) { 19782 _.$dots.find("li").removeClass("slick-active").end(); 19783 _.$dots.find("li").eq(Math.floor(_.currentSlide / _.options.slidesToScroll)).addClass("slick-active"); 19784 } 19785 }; 19786 Slick.prototype.visibility = function() { 19787 var _ = this; 19788 if (_.options.autoplay) { 19789 if (document[_.hidden]) { 19790 _.interrupted = true; 19791 } else { 19792 _.interrupted = false; 19793 } 19794 } 19795 }; 19796 $3.fn.slick = function() { 19797 var _ = this, opt = arguments[0], args = Array.prototype.slice.call(arguments, 1), l = _.length, i, ret; 19798 for (i = 0; i < l; i++) { 19799 if (typeof opt == "object" || typeof opt == "undefined") 19800 _[i].slick = new Slick(_[i], opt); 19801 else 19802 ret = _[i].slick[opt].apply(_[i].slick, args); 19803 if (typeof ret != "undefined") return ret; 19804 } 19805 return _; 19806 }; 19807 }); 19808 } 19809 }); 19810 19811
vendor: 4,910 bytes, lines 19811-19942
19811// node_modules/get-size/get-size.js 19812 var require_get_size = __commonJS({ 19813 "node_modules/get-size/get-size.js"(exports, module) { 19814 init_esbuild_shims(); 19815 (function(window2, factory) { 19816 if (typeof define == "function" && define.amd) { 19817 define(factory); 19818 } else if (typeof module == "object" && module.exports) { 19819 module.exports = factory(); 19820 } else { 19821 window2.getSize = factory(); 19822 } 19823 })(window, function factory() { 19824 "use strict"; 19825 function getStyleSize(value) { 19826 var num = parseFloat(value); 19827 var isValid = value.indexOf("%") == -1 && !isNaN(num); 19828 return isValid && num; 19829 } 19830 function noop() { 19831 } 19832 var logError = typeof console == "undefined" ? noop : function(message) { 19833 console.error(message); 19834 }; 19835 var measurements = [ 19836 "paddingLeft", 19837 "paddingRight", 19838 "paddingTop", 19839 "paddingBottom", 19840 "marginLeft", 19841 "marginRight", 19842 "marginTop", 19843 "marginBottom", 19844 "borderLeftWidth", 19845 "borderRightWidth", 19846 "borderTopWidth", 19847 "borderBottomWidth" 19848 ]; 19849 var measurementsLength = measurements.length; 19850 function getZeroSize() { 19851 var size = { 19852 width: 0, 19853 height: 0, 19854 innerWidth: 0, 19855 innerHeight: 0, 19856 outerWidth: 0, 19857 outerHeight: 0 19858 }; 19859 for (var i = 0; i < measurementsLength; i++) { 19860 var measurement = measurements[i]; 19861 size[measurement] = 0; 19862 } 19863 return size; 19864 } 19865 function getStyle(elem) { 19866 var style = getComputedStyle(elem); 19867 if (!style) { 19868 logError("Style returned " + style + ". Are you running this code in a hidden iframe on Firefox? See https://bit.ly/getsizebug1"); 19869 } 19870 return style; 19871 } 19872 var isSetup = false; 19873 var isBoxSizeOuter; 19874 function setup() { 19875 if (isSetup) { 19876 return; 19877 } 19878 isSetup = true; 19879 var div = document.createElement("div"); 19880 div.style.width = "200px"; 19881 div.style.padding = "1px 2px 3px 4px"; 19882 div.style.borderStyle = "solid"; 19883 div.style.borderWidth = "1px 2px 3px 4px"; 19884 div.style.boxSizing = "border-box"; 19885 var body = document.body || document.documentElement; 19886 body.appendChild(div); 19887 var style = getStyle(div); 19888 isBoxSizeOuter = Math.round(getStyleSize(style.width)) == 200; 19889 getSize.isBoxSizeOuter = isBoxSizeOuter; 19890 body.removeChild(div); 19891 } 19892 function getSize(elem) { 19893 setup(); 19894 if (typeof elem == "string") { 19895 elem = document.querySelector(elem); 19896 } 19897 if (!elem || typeof elem != "object" || !elem.nodeType) { 19898 return; 19899 } 19900 var style = getStyle(elem); 19901 if (style.display == "none") { 19902 return getZeroSize(); 19903 } 19904 var size = {}; 19905 size.width = elem.offsetWidth; 19906 size.height = elem.offsetHeight; 19907 var isBorderBox = size.isBorderBox = style.boxSizing == "border-box"; 19908 for (var i = 0; i < measurementsLength; i++) { 19909 var measurement = measurements[i]; 19910 var value = style[measurement]; 19911 var num = parseFloat(value); 19912 size[measurement] = !isNaN(num) ? num : 0; 19913 } 19914 var paddingWidth = size.paddingLeft + size.paddingRight; 19915 var paddingHeight = size.paddingTop + size.paddingBottom; 19916 var marginWidth = size.marginLeft + size.marginRight; 19917 var marginHeight = size.marginTop + size.marginBottom; 19918 var borderWidth = size.borderLeftWidth + size.borderRightWidth; 19919 var borderHeight = size.borderTopWidth + size.borderBottomWidth; 19920 var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter; 19921 var styleWidth = getStyleSize(style.width); 19922 if (styleWidth !== false) { 19923 size.width = styleWidth + // add padding and border unless it's already including it 19924 (isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth); 19925 } 19926 var styleHeight = getStyleSize(style.height); 19927 if (styleHeight !== false) { 19928 size.height = styleHeight + // add padding and border unless it's already including it 19929 (isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight); 19930 } 19931 size.innerWidth = size.width - (paddingWidth + borderWidth); 19932 size.innerHeight = size.height - (paddingHeight + borderHeight); 19933 size.outerWidth = size.width + marginWidth; 19934 size.outerHeight = size.height + marginHeight; 19935 return size; 19936 } 19937 return getSize; 19938 }); 19939 } 19940 }); 19941 19942
vendor: 2,684 bytes, lines 19942-20019
19942// node_modules/ev-emitter/ev-emitter.js 19943 var require_ev_emitter = __commonJS({ 19944 "node_modules/ev-emitter/ev-emitter.js"(exports, module) { 19945 init_esbuild_shims(); 19946 (function(global2, factory) { 19947 if (typeof define == "function" && define.amd) { 19948 define(factory); 19949 } else if (typeof module == "object" && module.exports) { 19950 module.exports = factory(); 19951 } else { 19952 global2.EvEmitter = factory(); 19953 } 19954 })(typeof window != "undefined" ? window : exports, function() { 19955 "use strict"; 19956 function EvEmitter() { 19957 } 19958 var proto = EvEmitter.prototype; 19959 proto.on = function(eventName, listener) { 19960 if (!eventName || !listener) { 19961 return; 19962 } 19963 var events = this._events = this._events || {}; 19964 var listeners = events[eventName] = events[eventName] || []; 19965 if (listeners.indexOf(listener) == -1) { 19966 listeners.push(listener); 19967 } 19968 return this; 19969 }; 19970 proto.once = function(eventName, listener) { 19971 if (!eventName || !listener) { 19972 return; 19973 } 19974 this.on(eventName, listener); 19975 var onceEvents = this._onceEvents = this._onceEvents || {}; 19976 var onceListeners = onceEvents[eventName] = onceEvents[eventName] || {}; 19977 onceListeners[listener] = true; 19978 return this; 19979 }; 19980 proto.off = function(eventName, listener) { 19981 var listeners = this._events && this._events[eventName]; 19982 if (!listeners || !listeners.length) { 19983 return; 19984 } 19985 var index = listeners.indexOf(listener); 19986 if (index != -1) { 19987 listeners.splice(index, 1); 19988 } 19989 return this; 19990 }; 19991 proto.emitEvent = function(eventName, args) { 19992 var listeners = this._events && this._events[eventName]; 19993 if (!listeners || !listeners.length) { 19994 return; 19995 } 19996 listeners = listeners.slice(0); 19997 args = args || []; 19998 var onceListeners = this._onceEvents && this._onceEvents[eventName]; 19999 for (var i = 0; i < listeners.length; i++) { 20000 var listener = listeners[i]; 20001 var isOnce = onceListeners && onceListeners[listener]; 20002 if (isOnce) { 20003 this.off(eventName, listener); 20004 delete onceListeners[listener]; 20005 } 20006 listener.apply(this, args); 20007 } 20008 return this; 20009 }; 20010 proto.allOff = function() { 20011 delete this._events; 20012 delete this._onceEvents; 20013 }; 20014 return EvEmitter; 20015 }); 20016 } 20017 }); 20018 20019
vendor: 1,312 bytes, lines 20019-20058
20019// node_modules/desandro-matches-selector/matches-selector.js 20020 var require_matches_selector = __commonJS({ 20021 "node_modules/desandro-matches-selector/matches-selector.js"(exports, module) { 20022 init_esbuild_shims(); 20023 (function(window2, factory) { 20024 "use strict"; 20025 if (typeof define == "function" && define.amd) { 20026 define(factory); 20027 } else if (typeof module == "object" && module.exports) { 20028 module.exports = factory(); 20029 } else { 20030 window2.matchesSelector = factory(); 20031 } 20032 })(window, function factory() { 20033 "use strict"; 20034 var matchesMethod = (function() { 20035 var ElemProto = window.Element.prototype; 20036 if (ElemProto.matches) { 20037 return "matches"; 20038 } 20039 if (ElemProto.matchesSelector) { 20040 return "matchesSelector"; 20041 } 20042 var prefixes = ["webkit", "moz", "ms", "o"]; 20043 for (var i = 0; i < prefixes.length; i++) { 20044 var prefix = prefixes[i]; 20045 var method = prefix + "MatchesSelector"; 20046 if (ElemProto[method]) { 20047 return method; 20048 } 20049 } 20050 })(); 20051 return function matchesSelector(elem, selector) { 20052 return elem[matchesMethod](selector); 20053 }; 20054 }); 20055 } 20056 }); 20057 20058
vendor: 5,465 bytes, lines 20058-20214
20058// node_modules/fizzy-ui-utils/utils.js 20059 var require_utils = __commonJS({ 20060 "node_modules/fizzy-ui-utils/utils.js"(exports, module) { 20061 init_esbuild_shims(); 20062 (function(window2, factory) { 20063 if (typeof define == "function" && define.amd) { 20064 define([ 20065 "desandro-matches-selector/matches-selector" 20066 ], function(matchesSelector) { 20067 return factory(window2, matchesSelector); 20068 }); 20069 } else if (typeof module == "object" && module.exports) { 20070 module.exports = factory( 20071 window2, 20072 require_matches_selector() 20073 ); 20074 } else { 20075 window2.fizzyUIUtils = factory( 20076 window2, 20077 window2.matchesSelector 20078 ); 20079 } 20080 })(window, function factory(window2, matchesSelector) { 20081 "use strict"; 20082 var utils = {}; 20083 utils.extend = function(a, b) { 20084 for (var prop in b) { 20085 a[prop] = b[prop]; 20086 } 20087 return a; 20088 }; 20089 utils.modulo = function(num, div) { 20090 return (num % div + div) % div; 20091 }; 20092 var arraySlice = Array.prototype.slice; 20093 utils.makeArray = function(obj) { 20094 if (Array.isArray(obj)) { 20095 return obj; 20096 } 20097 if (obj === null || obj === void 0) { 20098 return []; 20099 } 20100 var isArrayLike = typeof obj == "object" && typeof obj.length == "number"; 20101 if (isArrayLike) { 20102 return arraySlice.call(obj); 20103 } 20104 return [obj]; 20105 }; 20106 utils.removeFrom = function(ary, obj) { 20107 var index = ary.indexOf(obj); 20108 if (index != -1) { 20109 ary.splice(index, 1); 20110 } 20111 }; 20112 utils.getParent = function(elem, selector) { 20113 while (elem.parentNode && elem != document.body) { 20114 elem = elem.parentNode; 20115 if (matchesSelector(elem, selector)) { 20116 return elem; 20117 } 20118 } 20119 }; 20120 utils.getQueryElement = function(elem) { 20121 if (typeof elem == "string") { 20122 return document.querySelector(elem); 20123 } 20124 return elem; 20125 }; 20126 utils.handleEvent = function(event2) { 20127 var method = "on" + event2.type; 20128 if (this[method]) { 20129 this[method](event2); 20130 } 20131 }; 20132 utils.filterFindElements = function(elems, selector) { 20133 elems = utils.makeArray(elems); 20134 var ffElems = []; 20135 elems.forEach(function(elem) { 20136 if (!(elem instanceof HTMLElement)) { 20137 return; 20138 } 20139 if (!selector) { 20140 ffElems.push(elem); 20141 return; 20142 } 20143 if (matchesSelector(elem, selector)) { 20144 ffElems.push(elem); 20145 } 20146 var childElems = elem.querySelectorAll(selector); 20147 for (var i = 0; i < childElems.length; i++) { 20148 ffElems.push(childElems[i]); 20149 } 20150 }); 20151 return ffElems; 20152 }; 20153 utils.debounceMethod = function(_class, methodName, threshold) { 20154 threshold = threshold || 100; 20155 var method = _class.prototype[methodName]; 20156 var timeoutName = methodName + "Timeout"; 20157 _class.prototype[methodName] = function() { 20158 var timeout = this[timeoutName]; 20159 clearTimeout(timeout); 20160 var args = arguments; 20161 var _this = this; 20162 this[timeoutName] = setTimeout(function() { 20163 method.apply(_this, args); 20164 delete _this[timeoutName]; 20165 }, threshold); 20166 }; 20167 }; 20168 utils.docReady = function(callback) { 20169 var readyState = document.readyState; 20170 if (readyState == "complete" || readyState == "interactive") { 20171 setTimeout(callback); 20172 } else { 20173 document.addEventListener("DOMContentLoaded", callback); 20174 } 20175 }; 20176 utils.toDashed = function(str) { 20177 return str.replace(/(.)([A-Z])/g, function(match, $1, $22) { 20178 return $1 + "-" + $22; 20179 }).toLowerCase(); 20180 }; 20181 var console2 = window2.console; 20182 utils.htmlInit = function(WidgetClass, namespace) { 20183 utils.docReady(function() { 20184 var dashedNamespace = utils.toDashed(namespace); 20185 var dataAttr = "data-" + dashedNamespace; 20186 var dataAttrElems = document.querySelectorAll("[" + dataAttr + "]"); 20187 var jsDashElems = document.querySelectorAll(".js-" + dashedNamespace); 20188 var elems = utils.makeArray(dataAttrElems).concat(utils.makeArray(jsDashElems)); 20189 var dataOptionsAttr = dataAttr + "-options"; 20190 var jQuery2 = window2.jQuery; 20191 elems.forEach(function(elem) { 20192 var attr = elem.getAttribute(dataAttr) || elem.getAttribute(dataOptionsAttr); 20193 var options; 20194 try { 20195 options = attr && JSON.parse(attr); 20196 } catch (error) { 20197 if (console2) { 20198 console2.error("Error parsing " + dataAttr + " on " + elem.className + ": " + error); 20199 } 20200 return; 20201 } 20202 var instance = new WidgetClass(elem, options); 20203 if (jQuery2) { 20204 jQuery2.data(elem, namespace, instance); 20205 } 20206 }); 20207 }); 20208 }; 20209 return utils; 20210 }); 20211 } 20212 }); 20213 20214
vendor: 13,162 bytes, lines 20214-20576
20214// node_modules/outlayer/item.js 20215 var require_item = __commonJS({ 20216 "node_modules/outlayer/item.js"(exports, module) { 20217 init_esbuild_shims(); 20218 (function(window2, factory) { 20219 if (typeof define == "function" && define.amd) { 20220 define( 20221 [ 20222 "ev-emitter/ev-emitter", 20223 "get-size/get-size" 20224 ], 20225 factory 20226 ); 20227 } else if (typeof module == "object" && module.exports) { 20228 module.exports = factory( 20229 require_ev_emitter(), 20230 require_get_size() 20231 ); 20232 } else { 20233 window2.Outlayer = {}; 20234 window2.Outlayer.Item = factory( 20235 window2.EvEmitter, 20236 window2.getSize 20237 ); 20238 } 20239 })(window, function factory(EvEmitter, getSize) { 20240 "use strict"; 20241 function isEmptyObj(obj) { 20242 for (var prop in obj) { 20243 return false; 20244 } 20245 prop = null; 20246 return true; 20247 } 20248 var docElemStyle = document.documentElement.style; 20249 var transitionProperty = typeof docElemStyle.transition == "string" ? "transition" : "WebkitTransition"; 20250 var transformProperty = typeof docElemStyle.transform == "string" ? "transform" : "WebkitTransform"; 20251 var transitionEndEvent = { 20252 WebkitTransition: "webkitTransitionEnd", 20253 transition: "transitionend" 20254 }[transitionProperty]; 20255 var vendorProperties = { 20256 transform: transformProperty, 20257 transition: transitionProperty, 20258 transitionDuration: transitionProperty + "Duration", 20259 transitionProperty: transitionProperty + "Property", 20260 transitionDelay: transitionProperty + "Delay" 20261 }; 20262 function Item(element, layout) { 20263 if (!element) { 20264 return; 20265 } 20266 this.element = element; 20267 this.layout = layout; 20268 this.position = { 20269 x: 0, 20270 y: 0 20271 }; 20272 this._create(); 20273 } 20274 var proto = Item.prototype = Object.create(EvEmitter.prototype); 20275 proto.constructor = Item; 20276 proto._create = function() { 20277 this._transn = { 20278 ingProperties: {}, 20279 clean: {}, 20280 onEnd: {} 20281 }; 20282 this.css({ 20283 position: "absolute" 20284 }); 20285 }; 20286 proto.handleEvent = function(event2) { 20287 var method = "on" + event2.type; 20288 if (this[method]) { 20289 this[method](event2); 20290 } 20291 }; 20292 proto.getSize = function() { 20293 this.size = getSize(this.element); 20294 }; 20295 proto.css = function(style) { 20296 var elemStyle = this.element.style; 20297 for (var prop in style) { 20298 var supportedProp = vendorProperties[prop] || prop; 20299 elemStyle[supportedProp] = style[prop]; 20300 } 20301 }; 20302 proto.getPosition = function() { 20303 var style = getComputedStyle(this.element); 20304 var isOriginLeft = this.layout._getOption("originLeft"); 20305 var isOriginTop = this.layout._getOption("originTop"); 20306 var xValue = style[isOriginLeft ? "left" : "right"]; 20307 var yValue = style[isOriginTop ? "top" : "bottom"]; 20308 var x = parseFloat(xValue); 20309 var y = parseFloat(yValue); 20310 var layoutSize = this.layout.size; 20311 if (xValue.indexOf("%") != -1) { 20312 x = x / 100 * layoutSize.width; 20313 } 20314 if (yValue.indexOf("%") != -1) { 20315 y = y / 100 * layoutSize.height; 20316 } 20317 x = isNaN(x) ? 0 : x; 20318 y = isNaN(y) ? 0 : y; 20319 x -= isOriginLeft ? layoutSize.paddingLeft : layoutSize.paddingRight; 20320 y -= isOriginTop ? layoutSize.paddingTop : layoutSize.paddingBottom; 20321 this.position.x = x; 20322 this.position.y = y; 20323 }; 20324 proto.layoutPosition = function() { 20325 var layoutSize = this.layout.size; 20326 var style = {}; 20327 var isOriginLeft = this.layout._getOption("originLeft"); 20328 var isOriginTop = this.layout._getOption("originTop"); 20329 var xPadding = isOriginLeft ? "paddingLeft" : "paddingRight"; 20330 var xProperty = isOriginLeft ? "left" : "right"; 20331 var xResetProperty = isOriginLeft ? "right" : "left"; 20332 var x = this.position.x + layoutSize[xPadding]; 20333 style[xProperty] = this.getXValue(x); 20334 style[xResetProperty] = ""; 20335 var yPadding = isOriginTop ? "paddingTop" : "paddingBottom"; 20336 var yProperty = isOriginTop ? "top" : "bottom"; 20337 var yResetProperty = isOriginTop ? "bottom" : "top"; 20338 var y = this.position.y + layoutSize[yPadding]; 20339 style[yProperty] = this.getYValue(y); 20340 style[yResetProperty] = ""; 20341 this.css(style); 20342 this.emitEvent("layout", [this]); 20343 }; 20344 proto.getXValue = function(x) { 20345 var isHorizontal = this.layout._getOption("horizontal"); 20346 return this.layout.options.percentPosition && !isHorizontal ? x / this.layout.size.width * 100 + "%" : x + "px"; 20347 }; 20348 proto.getYValue = function(y) { 20349 var isHorizontal = this.layout._getOption("horizontal"); 20350 return this.layout.options.percentPosition && isHorizontal ? y / this.layout.size.height * 100 + "%" : y + "px"; 20351 }; 20352 proto._transitionTo = function(x, y) { 20353 this.getPosition(); 20354 var curX = this.position.x; 20355 var curY = this.position.y; 20356 var didNotMove = x == this.position.x && y == this.position.y; 20357 this.setPosition(x, y); 20358 if (didNotMove && !this.isTransitioning) { 20359 this.layoutPosition(); 20360 return; 20361 } 20362 var transX = x - curX; 20363 var transY = y - curY; 20364 var transitionStyle = {}; 20365 transitionStyle.transform = this.getTranslate(transX, transY); 20366 this.transition({ 20367 to: transitionStyle, 20368 onTransitionEnd: { 20369 transform: this.layoutPosition 20370 }, 20371 isCleaning: true 20372 }); 20373 }; 20374 proto.getTranslate = function(x, y) { 20375 var isOriginLeft = this.layout._getOption("originLeft"); 20376 var isOriginTop = this.layout._getOption("originTop"); 20377 x = isOriginLeft ? x : -x; 20378 y = isOriginTop ? y : -y; 20379 return "translate3d(" + x + "px, " + y + "px, 0)"; 20380 }; 20381 proto.goTo = function(x, y) { 20382 this.setPosition(x, y); 20383 this.layoutPosition(); 20384 }; 20385 proto.moveTo = proto._transitionTo; 20386 proto.setPosition = function(x, y) { 20387 this.position.x = parseFloat(x); 20388 this.position.y = parseFloat(y); 20389 }; 20390 proto._nonTransition = function(args) { 20391 this.css(args.to); 20392 if (args.isCleaning) { 20393 this._removeStyles(args.to); 20394 } 20395 for (var prop in args.onTransitionEnd) { 20396 args.onTransitionEnd[prop].call(this); 20397 } 20398 }; 20399 proto.transition = function(args) { 20400 if (!parseFloat(this.layout.options.transitionDuration)) { 20401 this._nonTransition(args); 20402 return; 20403 } 20404 var _transition = this._transn; 20405 for (var prop in args.onTransitionEnd) { 20406 _transition.onEnd[prop] = args.onTransitionEnd[prop]; 20407 } 20408 for (prop in args.to) { 20409 _transition.ingProperties[prop] = true; 20410 if (args.isCleaning) { 20411 _transition.clean[prop] = true; 20412 } 20413 } 20414 if (args.from) { 20415 this.css(args.from); 20416 var h = this.element.offsetHeight; 20417 h = null; 20418 } 20419 this.enableTransition(args.to); 20420 this.css(args.to); 20421 this.isTransitioning = true; 20422 }; 20423 function toDashedAll(str) { 20424 return str.replace(/([A-Z])/g, function($1) { 20425 return "-" + $1.toLowerCase(); 20426 }); 20427 } 20428 var transitionProps = "opacity," + toDashedAll(transformProperty); 20429 proto.enableTransition = function() { 20430 if (this.isTransitioning) { 20431 return; 20432 } 20433 var duration = this.layout.options.transitionDuration; 20434 duration = typeof duration == "number" ? duration + "ms" : duration; 20435 this.css({ 20436 transitionProperty: transitionProps, 20437 transitionDuration: duration, 20438 transitionDelay: this.staggerDelay || 0 20439 }); 20440 this.element.addEventListener(transitionEndEvent, this, false); 20441 }; 20442 proto.onwebkitTransitionEnd = function(event2) { 20443 this.ontransitionend(event2); 20444 }; 20445 proto.onotransitionend = function(event2) { 20446 this.ontransitionend(event2); 20447 }; 20448 var dashedVendorProperties = { 20449 "-webkit-transform": "transform" 20450 }; 20451 proto.ontransitionend = function(event2) { 20452 if (event2.target !== this.element) { 20453 return; 20454 } 20455 var _transition = this._transn; 20456 var propertyName = dashedVendorProperties[event2.propertyName] || event2.propertyName; 20457 delete _transition.ingProperties[propertyName]; 20458 if (isEmptyObj(_transition.ingProperties)) { 20459 this.disableTransition(); 20460 } 20461 if (propertyName in _transition.clean) { 20462 this.element.style[event2.propertyName] = ""; 20463 delete _transition.clean[propertyName]; 20464 } 20465 if (propertyName in _transition.onEnd) { 20466 var onTransitionEnd = _transition.onEnd[propertyName]; 20467 onTransitionEnd.call(this); 20468 delete _transition.onEnd[propertyName]; 20469 } 20470 this.emitEvent("transitionEnd", [this]); 20471 }; 20472 proto.disableTransition = function() { 20473 this.removeTransitionStyles(); 20474 this.element.removeEventListener(transitionEndEvent, this, false); 20475 this.isTransitioning = false; 20476 }; 20477 proto._removeStyles = function(style) { 20478 var cleanStyle = {}; 20479 for (var prop in style) { 20480 cleanStyle[prop] = ""; 20481 } 20482 this.css(cleanStyle); 20483 }; 20484 var cleanTransitionStyle = { 20485 transitionProperty: "", 20486 transitionDuration: "", 20487 transitionDelay: "" 20488 }; 20489 proto.removeTransitionStyles = function() { 20490 this.css(cleanTransitionStyle); 20491 }; 20492 proto.stagger = function(delay) { 20493 delay = isNaN(delay) ? 0 : delay; 20494 this.staggerDelay = delay + "ms"; 20495 }; 20496 proto.removeElem = function() { 20497 this.element.parentNode.removeChild(this.element); 20498 this.css({ display: "" }); 20499 this.emitEvent("remove", [this]); 20500 }; 20501 proto.remove = function() { 20502 if (!transitionProperty || !parseFloat(this.layout.options.transitionDuration)) { 20503 this.removeElem(); 20504 return; 20505 } 20506 this.once("transitionEnd", function() { 20507 this.removeElem(); 20508 }); 20509 this.hide(); 20510 }; 20511 proto.reveal = function() { 20512 delete this.isHidden; 20513 this.css({ display: "" }); 20514 var options = this.layout.options; 20515 var onTransitionEnd = {}; 20516 var transitionEndProperty = this.getHideRevealTransitionEndProperty("visibleStyle"); 20517 onTransitionEnd[transitionEndProperty] = this.onRevealTransitionEnd; 20518 this.transition({ 20519 from: options.hiddenStyle, 20520 to: options.visibleStyle, 20521 isCleaning: true, 20522 onTransitionEnd 20523 }); 20524 }; 20525 proto.onRevealTransitionEnd = function() { 20526 if (!this.isHidden) { 20527 this.emitEvent("reveal"); 20528 } 20529 }; 20530 proto.getHideRevealTransitionEndProperty = function(styleProperty) { 20531 var optionStyle = this.layout.options[styleProperty]; 20532 if (optionStyle.opacity) { 20533 return "opacity"; 20534 } 20535 for (var prop in optionStyle) { 20536 return prop; 20537 } 20538 }; 20539 proto.hide = function() { 20540 this.isHidden = true; 20541 this.css({ display: "" }); 20542 var options = this.layout.options; 20543 var onTransitionEnd = {}; 20544 var transitionEndProperty = this.getHideRevealTransitionEndProperty("hiddenStyle"); 20545 onTransitionEnd[transitionEndProperty] = this.onHideTransitionEnd; 20546 this.transition({ 20547 from: options.visibleStyle, 20548 to: options.hiddenStyle, 20549 // keep hidden stuff hidden 20550 isCleaning: true, 20551 onTransitionEnd 20552 }); 20553 }; 20554 proto.onHideTransitionEnd = function() { 20555 if (this.isHidden) { 20556 this.css({ display: "none" }); 20557 this.emitEvent("hide"); 20558 } 20559 }; 20560 proto.destroy = function() { 20561 this.css({ 20562 position: "", 20563 left: "", 20564 right: "", 20565 top: "", 20566 bottom: "", 20567 transition: "", 20568 transform: "" 20569 }); 20570 }; 20571 return Item; 20572 }); 20573 } 20574 }); 20575 20576
vendor: 18,130 bytes, lines 20576-21107
20576// node_modules/outlayer/outlayer.js 20577 var require_outlayer = __commonJS({ 20578 "node_modules/outlayer/outlayer.js"(exports, module) { 20579 init_esbuild_shims(); 20580 (function(window2, factory) { 20581 "use strict"; 20582 if (typeof define == "function" && define.amd) { 20583 define( 20584 [ 20585 "ev-emitter/ev-emitter", 20586 "get-size/get-size", 20587 "fizzy-ui-utils/utils", 20588 "./item" 20589 ], 20590 function(EvEmitter, getSize, utils, Item) { 20591 return factory(window2, EvEmitter, getSize, utils, Item); 20592 } 20593 ); 20594 } else if (typeof module == "object" && module.exports) { 20595 module.exports = factory( 20596 window2, 20597 require_ev_emitter(), 20598 require_get_size(), 20599 require_utils(), 20600 require_item() 20601 ); 20602 } else { 20603 window2.Outlayer = factory( 20604 window2, 20605 window2.EvEmitter, 20606 window2.getSize, 20607 window2.fizzyUIUtils, 20608 window2.Outlayer.Item 20609 ); 20610 } 20611 })(window, function factory(window2, EvEmitter, getSize, utils, Item) { 20612 "use strict"; 20613 var console2 = window2.console; 20614 var jQuery2 = window2.jQuery; 20615 var noop = function() { 20616 }; 20617 var GUID = 0; 20618 var instances = {}; 20619 function Outlayer(element, options) { 20620 var queryElement = utils.getQueryElement(element); 20621 if (!queryElement) { 20622 if (console2) { 20623 console2.error("Bad element for " + this.constructor.namespace + ": " + (queryElement || element)); 20624 } 20625 return; 20626 } 20627 this.element = queryElement; 20628 if (jQuery2) { 20629 this.$element = jQuery2(this.element); 20630 } 20631 this.options = utils.extend({}, this.constructor.defaults); 20632 this.option(options); 20633 var id = ++GUID; 20634 this.element.outlayerGUID = id; 20635 instances[id] = this; 20636 this._create(); 20637 var isInitLayout = this._getOption("initLayout"); 20638 if (isInitLayout) { 20639 this.layout(); 20640 } 20641 } 20642 Outlayer.namespace = "outlayer"; 20643 Outlayer.Item = Item; 20644 Outlayer.defaults = { 20645 containerStyle: { 20646 position: "relative" 20647 }, 20648 initLayout: true, 20649 originLeft: true, 20650 originTop: true, 20651 resize: true, 20652 resizeContainer: true, 20653 // item options 20654 transitionDuration: "0.4s", 20655 hiddenStyle: { 20656 opacity: 0, 20657 transform: "scale(0.001)" 20658 }, 20659 visibleStyle: { 20660 opacity: 1, 20661 transform: "scale(1)" 20662 } 20663 }; 20664 var proto = Outlayer.prototype; 20665 utils.extend(proto, EvEmitter.prototype); 20666 proto.option = function(opts) { 20667 utils.extend(this.options, opts); 20668 }; 20669 proto._getOption = function(option) { 20670 var oldOption = this.constructor.compatOptions[option]; 20671 return oldOption && this.options[oldOption] !== void 0 ? this.options[oldOption] : this.options[option]; 20672 }; 20673 Outlayer.compatOptions = { 20674 // currentName: oldName 20675 initLayout: "isInitLayout", 20676 horizontal: "isHorizontal", 20677 layoutInstant: "isLayoutInstant", 20678 originLeft: "isOriginLeft", 20679 originTop: "isOriginTop", 20680 resize: "isResizeBound", 20681 resizeContainer: "isResizingContainer" 20682 }; 20683 proto._create = function() { 20684 this.reloadItems(); 20685 this.stamps = []; 20686 this.stamp(this.options.stamp); 20687 utils.extend(this.element.style, this.options.containerStyle); 20688 var canBindResize = this._getOption("resize"); 20689 if (canBindResize) { 20690 this.bindResize(); 20691 } 20692 }; 20693 proto.reloadItems = function() { 20694 this.items = this._itemize(this.element.children); 20695 }; 20696 proto._itemize = function(elems) { 20697 var itemElems = this._filterFindItemElements(elems); 20698 var Item2 = this.constructor.Item; 20699 var items = []; 20700 for (var i = 0; i < itemElems.length; i++) { 20701 var elem = itemElems[i]; 20702 var item = new Item2(elem, this); 20703 items.push(item); 20704 } 20705 return items; 20706 }; 20707 proto._filterFindItemElements = function(elems) { 20708 return utils.filterFindElements(elems, this.options.itemSelector); 20709 }; 20710 proto.getItemElements = function() { 20711 return this.items.map(function(item) { 20712 return item.element; 20713 }); 20714 }; 20715 proto.layout = function() { 20716 this._resetLayout(); 20717 this._manageStamps(); 20718 var layoutInstant = this._getOption("layoutInstant"); 20719 var isInstant = layoutInstant !== void 0 ? layoutInstant : !this._isLayoutInited; 20720 this.layoutItems(this.items, isInstant); 20721 this._isLayoutInited = true; 20722 }; 20723 proto._init = proto.layout; 20724 proto._resetLayout = function() { 20725 this.getSize(); 20726 }; 20727 proto.getSize = function() { 20728 this.size = getSize(this.element); 20729 }; 20730 proto._getMeasurement = function(measurement, size) { 20731 var option = this.options[measurement]; 20732 var elem; 20733 if (!option) { 20734 this[measurement] = 0; 20735 } else { 20736 if (typeof option == "string") { 20737 elem = this.element.querySelector(option); 20738 } else if (option instanceof HTMLElement) { 20739 elem = option; 20740 } 20741 this[measurement] = elem ? getSize(elem)[size] : option; 20742 } 20743 }; 20744 proto.layoutItems = function(items, isInstant) { 20745 items = this._getItemsForLayout(items); 20746 this._layoutItems(items, isInstant); 20747 this._postLayout(); 20748 }; 20749 proto._getItemsForLayout = function(items) { 20750 return items.filter(function(item) { 20751 return !item.isIgnored; 20752 }); 20753 }; 20754 proto._layoutItems = function(items, isInstant) { 20755 this._emitCompleteOnItems("layout", items); 20756 if (!items || !items.length) { 20757 return; 20758 } 20759 var queue = []; 20760 items.forEach(function(item) { 20761 var position = this._getItemLayoutPosition(item); 20762 position.item = item; 20763 position.isInstant = isInstant || item.isLayoutInstant; 20764 queue.push(position); 20765 }, this); 20766 this._processLayoutQueue(queue); 20767 }; 20768 proto._getItemLayoutPosition = function() { 20769 return { 20770 x: 0, 20771 y: 0 20772 }; 20773 }; 20774 proto._processLayoutQueue = function(queue) { 20775 this.updateStagger(); 20776 queue.forEach(function(obj, i) { 20777 this._positionItem(obj.item, obj.x, obj.y, obj.isInstant, i); 20778 }, this); 20779 }; 20780 proto.updateStagger = function() { 20781 var stagger = this.options.stagger; 20782 if (stagger === null || stagger === void 0) { 20783 this.stagger = 0; 20784 return; 20785 } 20786 this.stagger = getMilliseconds(stagger); 20787 return this.stagger; 20788 }; 20789 proto._positionItem = function(item, x, y, isInstant, i) { 20790 if (isInstant) { 20791 item.goTo(x, y); 20792 } else { 20793 item.stagger(i * this.stagger); 20794 item.moveTo(x, y); 20795 } 20796 }; 20797 proto._postLayout = function() { 20798 this.resizeContainer(); 20799 }; 20800 proto.resizeContainer = function() { 20801 var isResizingContainer = this._getOption("resizeContainer"); 20802 if (!isResizingContainer) { 20803 return; 20804 } 20805 var size = this._getContainerSize(); 20806 if (size) { 20807 this._setContainerMeasure(size.width, true); 20808 this._setContainerMeasure(size.height, false); 20809 } 20810 }; 20811 proto._getContainerSize = noop; 20812 proto._setContainerMeasure = function(measure, isWidth) { 20813 if (measure === void 0) { 20814 return; 20815 } 20816 var elemSize = this.size; 20817 if (elemSize.isBorderBox) { 20818 measure += isWidth ? elemSize.paddingLeft + elemSize.paddingRight + elemSize.borderLeftWidth + elemSize.borderRightWidth : elemSize.paddingBottom + elemSize.paddingTop + elemSize.borderTopWidth + elemSize.borderBottomWidth; 20819 } 20820 measure = Math.max(measure, 0); 20821 this.element.style[isWidth ? "width" : "height"] = measure + "px"; 20822 }; 20823 proto._emitCompleteOnItems = function(eventName, items) { 20824 var _this = this; 20825 function onComplete() { 20826 _this.dispatchEvent(eventName + "Complete", null, [items]); 20827 } 20828 var count = items.length; 20829 if (!items || !count) { 20830 onComplete(); 20831 return; 20832 } 20833 var doneCount = 0; 20834 function tick() { 20835 doneCount++; 20836 if (doneCount == count) { 20837 onComplete(); 20838 } 20839 } 20840 items.forEach(function(item) { 20841 item.once(eventName, tick); 20842 }); 20843 }; 20844 proto.dispatchEvent = function(type, event2, args) { 20845 var emitArgs = event2 ? [event2].concat(args) : args; 20846 this.emitEvent(type, emitArgs); 20847 if (jQuery2) { 20848 this.$element = this.$element || jQuery2(this.element); 20849 if (event2) { 20850 var $event = jQuery2.Event(event2); 20851 $event.type = type; 20852 this.$element.trigger($event, args); 20853 } else { 20854 this.$element.trigger(type, args); 20855 } 20856 } 20857 }; 20858 proto.ignore = function(elem) { 20859 var item = this.getItem(elem); 20860 if (item) { 20861 item.isIgnored = true; 20862 } 20863 }; 20864 proto.unignore = function(elem) { 20865 var item = this.getItem(elem); 20866 if (item) { 20867 delete item.isIgnored; 20868 } 20869 }; 20870 proto.stamp = function(elems) { 20871 elems = this._find(elems); 20872 if (!elems) { 20873 return; 20874 } 20875 this.stamps = this.stamps.concat(elems); 20876 elems.forEach(this.ignore, this); 20877 }; 20878 proto.unstamp = function(elems) { 20879 elems = this._find(elems); 20880 if (!elems) { 20881 return; 20882 } 20883 elems.forEach(function(elem) { 20884 utils.removeFrom(this.stamps, elem); 20885 this.unignore(elem); 20886 }, this); 20887 }; 20888 proto._find = function(elems) { 20889 if (!elems) { 20890 return; 20891 } 20892 if (typeof elems == "string") { 20893 elems = this.element.querySelectorAll(elems); 20894 } 20895 elems = utils.makeArray(elems); 20896 return elems; 20897 }; 20898 proto._manageStamps = function() { 20899 if (!this.stamps || !this.stamps.length) { 20900 return; 20901 } 20902 this._getBoundingRect(); 20903 this.stamps.forEach(this._manageStamp, this); 20904 }; 20905 proto._getBoundingRect = function() { 20906 var boundingRect = this.element.getBoundingClientRect(); 20907 var size = this.size; 20908 this._boundingRect = { 20909 left: boundingRect.left + size.paddingLeft + size.borderLeftWidth, 20910 top: boundingRect.top + size.paddingTop + size.borderTopWidth, 20911 right: boundingRect.right - (size.paddingRight + size.borderRightWidth), 20912 bottom: boundingRect.bottom - (size.paddingBottom + size.borderBottomWidth) 20913 }; 20914 }; 20915 proto._manageStamp = noop; 20916 proto._getElementOffset = function(elem) { 20917 var boundingRect = elem.getBoundingClientRect(); 20918 var thisRect = this._boundingRect; 20919 var size = getSize(elem); 20920 var offset = { 20921 left: boundingRect.left - thisRect.left - size.marginLeft, 20922 top: boundingRect.top - thisRect.top - size.marginTop, 20923 right: thisRect.right - boundingRect.right - size.marginRight, 20924 bottom: thisRect.bottom - boundingRect.bottom - size.marginBottom 20925 }; 20926 return offset; 20927 }; 20928 proto.handleEvent = utils.handleEvent; 20929 proto.bindResize = function() { 20930 window2.addEventListener("resize", this); 20931 this.isResizeBound = true; 20932 }; 20933 proto.unbindResize = function() { 20934 window2.removeEventListener("resize", this); 20935 this.isResizeBound = false; 20936 }; 20937 proto.onresize = function() { 20938 this.resize(); 20939 }; 20940 utils.debounceMethod(Outlayer, "onresize", 100); 20941 proto.resize = function() { 20942 if (!this.isResizeBound || !this.needsResizeLayout()) { 20943 return; 20944 } 20945 this.layout(); 20946 }; 20947 proto.needsResizeLayout = function() { 20948 var size = getSize(this.element); 20949 var hasSizes = this.size && size; 20950 return hasSizes && size.innerWidth !== this.size.innerWidth; 20951 }; 20952 proto.addItems = function(elems) { 20953 var items = this._itemize(elems); 20954 if (items.length) { 20955 this.items = this.items.concat(items); 20956 } 20957 return items; 20958 }; 20959 proto.appended = function(elems) { 20960 var items = this.addItems(elems); 20961 if (!items.length) { 20962 return; 20963 } 20964 this.layoutItems(items, true); 20965 this.reveal(items); 20966 }; 20967 proto.prepended = function(elems) { 20968 var items = this._itemize(elems); 20969 if (!items.length) { 20970 return; 20971 } 20972 var previousItems = this.items.slice(0); 20973 this.items = items.concat(previousItems); 20974 this._resetLayout(); 20975 this._manageStamps(); 20976 this.layoutItems(items, true); 20977 this.reveal(items); 20978 this.layoutItems(previousItems); 20979 }; 20980 proto.reveal = function(items) { 20981 this._emitCompleteOnItems("reveal", items); 20982 if (!items || !items.length) { 20983 return; 20984 } 20985 var stagger = this.updateStagger(); 20986 items.forEach(function(item, i) { 20987 item.stagger(i * stagger); 20988 item.reveal(); 20989 }); 20990 }; 20991 proto.hide = function(items) { 20992 this._emitCompleteOnItems("hide", items); 20993 if (!items || !items.length) { 20994 return; 20995 } 20996 var stagger = this.updateStagger(); 20997 items.forEach(function(item, i) { 20998 item.stagger(i * stagger); 20999 item.hide(); 21000 }); 21001 }; 21002 proto.revealItemElements = function(elems) { 21003 var items = this.getItems(elems); 21004 this.reveal(items); 21005 }; 21006 proto.hideItemElements = function(elems) { 21007 var items = this.getItems(elems); 21008 this.hide(items); 21009 }; 21010 proto.getItem = function(elem) { 21011 for (var i = 0; i < this.items.length; i++) { 21012 var item = this.items[i]; 21013 if (item.element == elem) { 21014 return item; 21015 } 21016 } 21017 }; 21018 proto.getItems = function(elems) { 21019 elems = utils.makeArray(elems); 21020 var items = []; 21021 elems.forEach(function(elem) { 21022 var item = this.getItem(elem); 21023 if (item) { 21024 items.push(item); 21025 } 21026 }, this); 21027 return items; 21028 }; 21029 proto.remove = function(elems) { 21030 var removeItems = this.getItems(elems); 21031 this._emitCompleteOnItems("remove", removeItems); 21032 if (!removeItems || !removeItems.length) { 21033 return; 21034 } 21035 removeItems.forEach(function(item) { 21036 item.remove(); 21037 utils.removeFrom(this.items, item); 21038 }, this); 21039 }; 21040 proto.destroy = function() { 21041 var style = this.element.style; 21042 style.height = ""; 21043 style.position = ""; 21044 style.width = ""; 21045 this.items.forEach(function(item) { 21046 item.destroy(); 21047 }); 21048 this.unbindResize(); 21049 var id = this.element.outlayerGUID; 21050 delete instances[id]; 21051 delete this.element.outlayerGUID; 21052 if (jQuery2) { 21053 jQuery2.removeData(this.element, this.constructor.namespace); 21054 } 21055 }; 21056 Outlayer.data = function(elem) { 21057 elem = utils.getQueryElement(elem); 21058 var id = elem && elem.outlayerGUID; 21059 return id && instances[id]; 21060 }; 21061 Outlayer.create = function(namespace, options) { 21062 var Layout = subclass(Outlayer); 21063 Layout.defaults = utils.extend({}, Outlayer.defaults); 21064 utils.extend(Layout.defaults, options); 21065 Layout.compatOptions = utils.extend({}, Outlayer.compatOptions); 21066 Layout.namespace = namespace; 21067 Layout.data = Outlayer.data; 21068 Layout.Item = subclass(Item); 21069 utils.htmlInit(Layout, namespace); 21070 if (jQuery2 && jQuery2.bridget) { 21071 jQuery2.bridget(namespace, Layout); 21072 } 21073 return Layout; 21074 }; 21075 function subclass(Parent) { 21076 function SubClass() { 21077 Parent.apply(this, arguments); 21078 } 21079 SubClass.prototype = Object.create(Parent.prototype); 21080 SubClass.prototype.constructor = SubClass; 21081 return SubClass; 21082 } 21083 var msUnits = { 21084 ms: 1, 21085 s: 1e3 21086 }; 21087 function getMilliseconds(time) { 21088 if (typeof time == "number") { 21089 return time; 21090 } 21091 var matches = time.match(/(^\d*\.?\d*)(\w*)/); 21092 var num = matches && matches[1]; 21093 var unit = matches && matches[2]; 21094 if (!num.length) { 21095 return 0; 21096 } 21097 num = parseFloat(num); 21098 var mult = msUnits[unit] || 1; 21099 return num * mult; 21100 } 21101 Outlayer.Item = Item; 21102 return Outlayer; 21103 }); 21104 } 21105 }); 21106 21107
vendor: 3,209 bytes, lines 21107-21205
21107// node_modules/packery/js/rect.js 21108 var require_rect = __commonJS({ 21109 "node_modules/packery/js/rect.js"(exports, module) { 21110 init_esbuild_shims(); 21111 (function(window2, factory) { 21112 if (typeof define == "function" && define.amd) { 21113 define(factory); 21114 } else if (typeof module == "object" && module.exports) { 21115 module.exports = factory(); 21116 } else { 21117 window2.Packery = window2.Packery || {}; 21118 window2.Packery.Rect = factory(); 21119 } 21120 })(window, function factory() { 21121 "use strict"; 21122 function Rect(props) { 21123 for (var prop in Rect.defaults) { 21124 this[prop] = Rect.defaults[prop]; 21125 } 21126 for (prop in props) { 21127 this[prop] = props[prop]; 21128 } 21129 } 21130 Rect.defaults = { 21131 x: 0, 21132 y: 0, 21133 width: 0, 21134 height: 0 21135 }; 21136 var proto = Rect.prototype; 21137 proto.contains = function(rect) { 21138 var otherWidth = rect.width || 0; 21139 var otherHeight = rect.height || 0; 21140 return this.x <= rect.x && this.y <= rect.y && this.x + this.width >= rect.x + otherWidth && this.y + this.height >= rect.y + otherHeight; 21141 }; 21142 proto.overlaps = function(rect) { 21143 var thisRight = this.x + this.width; 21144 var thisBottom = this.y + this.height; 21145 var rectRight = rect.x + rect.width; 21146 var rectBottom = rect.y + rect.height; 21147 return this.x < rectRight && thisRight > rect.x && this.y < rectBottom && thisBottom > rect.y; 21148 }; 21149 proto.getMaximalFreeRects = function(rect) { 21150 if (!this.overlaps(rect)) { 21151 return false; 21152 } 21153 var freeRects = []; 21154 var freeRect; 21155 var thisRight = this.x + this.width; 21156 var thisBottom = this.y + this.height; 21157 var rectRight = rect.x + rect.width; 21158 var rectBottom = rect.y + rect.height; 21159 if (this.y < rect.y) { 21160 freeRect = new Rect({ 21161 x: this.x, 21162 y: this.y, 21163 width: this.width, 21164 height: rect.y - this.y 21165 }); 21166 freeRects.push(freeRect); 21167 } 21168 if (thisRight > rectRight) { 21169 freeRect = new Rect({ 21170 x: rectRight, 21171 y: this.y, 21172 width: thisRight - rectRight, 21173 height: this.height 21174 }); 21175 freeRects.push(freeRect); 21176 } 21177 if (thisBottom > rectBottom) { 21178 freeRect = new Rect({ 21179 x: this.x, 21180 y: rectBottom, 21181 width: this.width, 21182 height: thisBottom - rectBottom 21183 }); 21184 freeRects.push(freeRect); 21185 } 21186 if (this.x < rect.x) { 21187 freeRect = new Rect({ 21188 x: this.x, 21189 y: this.y, 21190 width: rect.x - this.x, 21191 height: this.height 21192 }); 21193 freeRects.push(freeRect); 21194 } 21195 return freeRects; 21196 }; 21197 proto.canFit = function(rect) { 21198 return this.width >= rect.width && this.height >= rect.height; 21199 }; 21200 return Rect; 21201 }); 21202 } 21203 }); 21204 21205
vendor: 4,516 bytes, lines 21205-21339
21205// node_modules/packery/js/packer.js 21206 var require_packer = __commonJS({ 21207 "node_modules/packery/js/packer.js"(exports, module) { 21208 init_esbuild_shims(); 21209 (function(window2, factory) { 21210 if (typeof define == "function" && define.amd) { 21211 define(["./rect"], factory); 21212 } else if (typeof module == "object" && module.exports) { 21213 module.exports = factory( 21214 require_rect() 21215 ); 21216 } else { 21217 var Packery = window2.Packery = window2.Packery || {}; 21218 Packery.Packer = factory(Packery.Rect); 21219 } 21220 })(window, function factory(Rect) { 21221 "use strict"; 21222 function Packer(width, height, sortDirection) { 21223 this.width = width || 0; 21224 this.height = height || 0; 21225 this.sortDirection = sortDirection || "downwardLeftToRight"; 21226 this.reset(); 21227 } 21228 var proto = Packer.prototype; 21229 proto.reset = function() { 21230 this.spaces = []; 21231 var initialSpace = new Rect({ 21232 x: 0, 21233 y: 0, 21234 width: this.width, 21235 height: this.height 21236 }); 21237 this.spaces.push(initialSpace); 21238 this.sorter = sorters[this.sortDirection] || sorters.downwardLeftToRight; 21239 }; 21240 proto.pack = function(rect) { 21241 for (var i = 0; i < this.spaces.length; i++) { 21242 var space = this.spaces[i]; 21243 if (space.canFit(rect)) { 21244 this.placeInSpace(rect, space); 21245 break; 21246 } 21247 } 21248 }; 21249 proto.columnPack = function(rect) { 21250 for (var i = 0; i < this.spaces.length; i++) { 21251 var space = this.spaces[i]; 21252 var canFitInSpaceColumn = space.x <= rect.x && space.x + space.width >= rect.x + rect.width && space.height >= rect.height - 0.01; 21253 if (canFitInSpaceColumn) { 21254 rect.y = space.y; 21255 this.placed(rect); 21256 break; 21257 } 21258 } 21259 }; 21260 proto.rowPack = function(rect) { 21261 for (var i = 0; i < this.spaces.length; i++) { 21262 var space = this.spaces[i]; 21263 var canFitInSpaceRow = space.y <= rect.y && space.y + space.height >= rect.y + rect.height && space.width >= rect.width - 0.01; 21264 if (canFitInSpaceRow) { 21265 rect.x = space.x; 21266 this.placed(rect); 21267 break; 21268 } 21269 } 21270 }; 21271 proto.placeInSpace = function(rect, space) { 21272 rect.x = space.x; 21273 rect.y = space.y; 21274 this.placed(rect); 21275 }; 21276 proto.placed = function(rect) { 21277 var revisedSpaces = []; 21278 for (var i = 0; i < this.spaces.length; i++) { 21279 var space = this.spaces[i]; 21280 var newSpaces = space.getMaximalFreeRects(rect); 21281 if (newSpaces) { 21282 revisedSpaces.push.apply(revisedSpaces, newSpaces); 21283 } else { 21284 revisedSpaces.push(space); 21285 } 21286 } 21287 this.spaces = revisedSpaces; 21288 this.mergeSortSpaces(); 21289 }; 21290 proto.mergeSortSpaces = function() { 21291 Packer.mergeRects(this.spaces); 21292 this.spaces.sort(this.sorter); 21293 }; 21294 proto.addSpace = function(rect) { 21295 this.spaces.push(rect); 21296 this.mergeSortSpaces(); 21297 }; 21298 Packer.mergeRects = function(rects) { 21299 var i = 0; 21300 var rect = rects[i]; 21301 rectLoop: 21302 while (rect) { 21303 var j = 0; 21304 var compareRect = rects[i + j]; 21305 while (compareRect) { 21306 if (compareRect == rect) { 21307 j++; 21308 } else if (compareRect.contains(rect)) { 21309 rects.splice(i, 1); 21310 rect = rects[i]; 21311 continue rectLoop; 21312 } else if (rect.contains(compareRect)) { 21313 rects.splice(i + j, 1); 21314 } else { 21315 j++; 21316 } 21317 compareRect = rects[i + j]; 21318 } 21319 i++; 21320 rect = rects[i]; 21321 } 21322 return rects; 21323 }; 21324 var sorters = { 21325 // top down, then left to right 21326 downwardLeftToRight: function(a, b) { 21327 return a.y - b.y || a.x - b.x; 21328 }, 21329 // left to right, then top down 21330 rightwardTopToBottom: function(a, b) { 21331 return a.x - b.x || a.y - b.y; 21332 } 21333 }; 21334 return Packer; 21335 }); 21336 } 21337 }); 21338 21339
vendor: 3,502 bytes, lines 21339-21434
21339// node_modules/packery/js/item.js 21340 var require_item2 = __commonJS({ 21341 "node_modules/packery/js/item.js"(exports, module) { 21342 init_esbuild_shims(); 21343 (function(window2, factory) { 21344 if (typeof define == "function" && define.amd) { 21345 define( 21346 [ 21347 "outlayer/outlayer", 21348 "./rect" 21349 ], 21350 factory 21351 ); 21352 } else if (typeof module == "object" && module.exports) { 21353 module.exports = factory( 21354 require_outlayer(), 21355 require_rect() 21356 ); 21357 } else { 21358 window2.Packery.Item = factory( 21359 window2.Outlayer, 21360 window2.Packery.Rect 21361 ); 21362 } 21363 })(window, function factory(Outlayer, Rect) { 21364 "use strict"; 21365 var docElemStyle = document.documentElement.style; 21366 var transformProperty = typeof docElemStyle.transform == "string" ? "transform" : "WebkitTransform"; 21367 var Item = function PackeryItem() { 21368 Outlayer.Item.apply(this, arguments); 21369 }; 21370 var proto = Item.prototype = Object.create(Outlayer.Item.prototype); 21371 var __create2 = proto._create; 21372 proto._create = function() { 21373 __create2.call(this); 21374 this.rect = new Rect(); 21375 }; 21376 var _moveTo = proto.moveTo; 21377 proto.moveTo = function(x, y) { 21378 var dx = Math.abs(this.position.x - x); 21379 var dy = Math.abs(this.position.y - y); 21380 var canHackGoTo = this.layout.dragItemCount && !this.isPlacing && !this.isTransitioning && dx < 1 && dy < 1; 21381 if (canHackGoTo) { 21382 this.goTo(x, y); 21383 return; 21384 } 21385 _moveTo.apply(this, arguments); 21386 }; 21387 proto.enablePlacing = function() { 21388 this.removeTransitionStyles(); 21389 if (this.isTransitioning && transformProperty) { 21390 this.element.style[transformProperty] = "none"; 21391 } 21392 this.isTransitioning = false; 21393 this.getSize(); 21394 this.layout._setRectSize(this.element, this.rect); 21395 this.isPlacing = true; 21396 }; 21397 proto.disablePlacing = function() { 21398 this.isPlacing = false; 21399 }; 21400 proto.removeElem = function() { 21401 var parent = this.element.parentNode; 21402 if (parent) { 21403 parent.removeChild(this.element); 21404 } 21405 this.layout.packer.addSpace(this.rect); 21406 this.emitEvent("remove", [this]); 21407 }; 21408 proto.showDropPlaceholder = function() { 21409 var dropPlaceholder = this.dropPlaceholder; 21410 if (!dropPlaceholder) { 21411 dropPlaceholder = this.dropPlaceholder = document.createElement("div"); 21412 dropPlaceholder.className = "packery-drop-placeholder"; 21413 dropPlaceholder.style.position = "absolute"; 21414 } 21415 dropPlaceholder.style.width = this.size.width + "px"; 21416 dropPlaceholder.style.height = this.size.height + "px"; 21417 this.positionDropPlaceholder(); 21418 this.layout.element.appendChild(dropPlaceholder); 21419 }; 21420 proto.positionDropPlaceholder = function() { 21421 this.dropPlaceholder.style[transformProperty] = "translate(" + this.rect.x + "px, " + this.rect.y + "px)"; 21422 }; 21423 proto.hideDropPlaceholder = function() { 21424 var parent = this.dropPlaceholder.parentNode; 21425 if (parent) { 21426 parent.removeChild(this.dropPlaceholder); 21427 } 21428 }; 21429 return Item; 21430 }); 21431 } 21432 }); 21433 21434
vendor: 17,025 bytes, lines 21434-21881
21434// node_modules/packery/js/packery.js 21435 var require_packery = __commonJS({ 21436 "node_modules/packery/js/packery.js"(exports, module) { 21437 init_esbuild_shims(); 21438 (function(window2, factory) { 21439 if (typeof define == "function" && define.amd) { 21440 define( 21441 [ 21442 "get-size/get-size", 21443 "outlayer/outlayer", 21444 "./rect", 21445 "./packer", 21446 "./item" 21447 ], 21448 factory 21449 ); 21450 } else if (typeof module == "object" && module.exports) { 21451 module.exports = factory( 21452 require_get_size(), 21453 require_outlayer(), 21454 require_rect(), 21455 require_packer(), 21456 require_item2() 21457 ); 21458 } else { 21459 window2.Packery = factory( 21460 window2.getSize, 21461 window2.Outlayer, 21462 window2.Packery.Rect, 21463 window2.Packery.Packer, 21464 window2.Packery.Item 21465 ); 21466 } 21467 })(window, function factory(getSize, Outlayer, Rect, Packer, Item) { 21468 "use strict"; 21469 Rect.prototype.canFit = function(rect) { 21470 return this.width >= rect.width - 1 && this.height >= rect.height - 1; 21471 }; 21472 var Packery = Outlayer.create("packery"); 21473 Packery.Item = Item; 21474 var proto = Packery.prototype; 21475 proto._create = function() { 21476 Outlayer.prototype._create.call(this); 21477 this.packer = new Packer(); 21478 this.shiftPacker = new Packer(); 21479 this.isEnabled = true; 21480 this.dragItemCount = 0; 21481 var _this = this; 21482 this.handleDraggabilly = { 21483 dragStart: function() { 21484 _this.itemDragStart(this.element); 21485 }, 21486 dragMove: function() { 21487 _this.itemDragMove(this.element, this.position.x, this.position.y); 21488 }, 21489 dragEnd: function() { 21490 _this.itemDragEnd(this.element); 21491 } 21492 }; 21493 this.handleUIDraggable = { 21494 start: function handleUIDraggableStart(event2, ui) { 21495 if (!ui) { 21496 return; 21497 } 21498 _this.itemDragStart(event2.currentTarget); 21499 }, 21500 drag: function handleUIDraggableDrag(event2, ui) { 21501 if (!ui) { 21502 return; 21503 } 21504 _this.itemDragMove(event2.currentTarget, ui.position.left, ui.position.top); 21505 }, 21506 stop: function handleUIDraggableStop(event2, ui) { 21507 if (!ui) { 21508 return; 21509 } 21510 _this.itemDragEnd(event2.currentTarget); 21511 } 21512 }; 21513 }; 21514 proto._resetLayout = function() { 21515 this.getSize(); 21516 this._getMeasurements(); 21517 var width, height, sortDirection; 21518 if (this._getOption("horizontal")) { 21519 width = Infinity; 21520 height = this.size.innerHeight + this.gutter; 21521 sortDirection = "rightwardTopToBottom"; 21522 } else { 21523 width = this.size.innerWidth + this.gutter; 21524 height = Infinity; 21525 sortDirection = "downwardLeftToRight"; 21526 } 21527 this.packer.width = this.shiftPacker.width = width; 21528 this.packer.height = this.shiftPacker.height = height; 21529 this.packer.sortDirection = this.shiftPacker.sortDirection = sortDirection; 21530 this.packer.reset(); 21531 this.maxY = 0; 21532 this.maxX = 0; 21533 }; 21534 proto._getMeasurements = function() { 21535 this._getMeasurement("columnWidth", "width"); 21536 this._getMeasurement("rowHeight", "height"); 21537 this._getMeasurement("gutter", "width"); 21538 }; 21539 proto._getItemLayoutPosition = function(item) { 21540 this._setRectSize(item.element, item.rect); 21541 if (this.isShifting || this.dragItemCount > 0) { 21542 var packMethod = this._getPackMethod(); 21543 this.packer[packMethod](item.rect); 21544 } else { 21545 this.packer.pack(item.rect); 21546 } 21547 this._setMaxXY(item.rect); 21548 return item.rect; 21549 }; 21550 proto.shiftLayout = function() { 21551 this.isShifting = true; 21552 this.layout(); 21553 delete this.isShifting; 21554 }; 21555 proto._getPackMethod = function() { 21556 return this._getOption("horizontal") ? "rowPack" : "columnPack"; 21557 }; 21558 proto._setMaxXY = function(rect) { 21559 this.maxX = Math.max(rect.x + rect.width, this.maxX); 21560 this.maxY = Math.max(rect.y + rect.height, this.maxY); 21561 }; 21562 proto._setRectSize = function(elem, rect) { 21563 var size = getSize(elem); 21564 var w = size.outerWidth; 21565 var h = size.outerHeight; 21566 if (w || h) { 21567 w = this._applyGridGutter(w, this.columnWidth); 21568 h = this._applyGridGutter(h, this.rowHeight); 21569 } 21570 rect.width = Math.min(w, this.packer.width); 21571 rect.height = Math.min(h, this.packer.height); 21572 }; 21573 proto._applyGridGutter = function(measurement, gridSize) { 21574 if (!gridSize) { 21575 return measurement + this.gutter; 21576 } 21577 gridSize += this.gutter; 21578 var remainder = measurement % gridSize; 21579 var mathMethod = remainder && remainder < 1 ? "round" : "ceil"; 21580 measurement = Math[mathMethod](measurement / gridSize) * gridSize; 21581 return measurement; 21582 }; 21583 proto._getContainerSize = function() { 21584 if (this._getOption("horizontal")) { 21585 return { 21586 width: this.maxX - this.gutter 21587 }; 21588 } else { 21589 return { 21590 height: this.maxY - this.gutter 21591 }; 21592 } 21593 }; 21594 proto._manageStamp = function(elem) { 21595 var item = this.getItem(elem); 21596 var rect; 21597 if (item && item.isPlacing) { 21598 rect = item.rect; 21599 } else { 21600 var offset = this._getElementOffset(elem); 21601 rect = new Rect({ 21602 x: this._getOption("originLeft") ? offset.left : offset.right, 21603 y: this._getOption("originTop") ? offset.top : offset.bottom 21604 }); 21605 } 21606 this._setRectSize(elem, rect); 21607 this.packer.placed(rect); 21608 this._setMaxXY(rect); 21609 }; 21610 function verticalSorter(a, b) { 21611 return a.position.y - b.position.y || a.position.x - b.position.x; 21612 } 21613 function horizontalSorter(a, b) { 21614 return a.position.x - b.position.x || a.position.y - b.position.y; 21615 } 21616 proto.sortItemsByPosition = function() { 21617 var sorter = this._getOption("horizontal") ? horizontalSorter : verticalSorter; 21618 this.items.sort(sorter); 21619 }; 21620 proto.fit = function(elem, x, y) { 21621 var item = this.getItem(elem); 21622 if (!item) { 21623 return; 21624 } 21625 this.stamp(item.element); 21626 item.enablePlacing(); 21627 this.updateShiftTargets(item); 21628 x = x === void 0 ? item.rect.x : x; 21629 y = y === void 0 ? item.rect.y : y; 21630 this.shift(item, x, y); 21631 this._bindFitEvents(item); 21632 item.moveTo(item.rect.x, item.rect.y); 21633 this.shiftLayout(); 21634 this.unstamp(item.element); 21635 this.sortItemsByPosition(); 21636 item.disablePlacing(); 21637 }; 21638 proto._bindFitEvents = function(item) { 21639 var _this = this; 21640 var ticks = 0; 21641 function onLayout() { 21642 ticks++; 21643 if (ticks != 2) { 21644 return; 21645 } 21646 _this.dispatchEvent("fitComplete", null, [item]); 21647 } 21648 item.once("layout", onLayout); 21649 this.once("layoutComplete", onLayout); 21650 }; 21651 proto.resize = function() { 21652 if (!this.isResizeBound || !this.needsResizeLayout()) { 21653 return; 21654 } 21655 if (this.options.shiftPercentResize) { 21656 this.resizeShiftPercentLayout(); 21657 } else { 21658 this.layout(); 21659 } 21660 }; 21661 proto.needsResizeLayout = function() { 21662 var size = getSize(this.element); 21663 var innerSize = this._getOption("horizontal") ? "innerHeight" : "innerWidth"; 21664 return size[innerSize] != this.size[innerSize]; 21665 }; 21666 proto.resizeShiftPercentLayout = function() { 21667 var items = this._getItemsForLayout(this.items); 21668 var isHorizontal = this._getOption("horizontal"); 21669 var coord = isHorizontal ? "y" : "x"; 21670 var measure = isHorizontal ? "height" : "width"; 21671 var segmentName = isHorizontal ? "rowHeight" : "columnWidth"; 21672 var innerSize = isHorizontal ? "innerHeight" : "innerWidth"; 21673 var previousSegment = this[segmentName]; 21674 previousSegment = previousSegment && previousSegment + this.gutter; 21675 if (previousSegment) { 21676 this._getMeasurements(); 21677 var currentSegment = this[segmentName] + this.gutter; 21678 items.forEach(function(item) { 21679 var seg = Math.round(item.rect[coord] / previousSegment); 21680 item.rect[coord] = seg * currentSegment; 21681 }); 21682 } else { 21683 var currentSize = getSize(this.element)[innerSize] + this.gutter; 21684 var previousSize = this.packer[measure]; 21685 items.forEach(function(item) { 21686 item.rect[coord] = item.rect[coord] / previousSize * currentSize; 21687 }); 21688 } 21689 this.shiftLayout(); 21690 }; 21691 proto.itemDragStart = function(elem) { 21692 if (!this.isEnabled) { 21693 return; 21694 } 21695 this.stamp(elem); 21696 var item = this.getItem(elem); 21697 if (!item) { 21698 return; 21699 } 21700 item.enablePlacing(); 21701 item.showDropPlaceholder(); 21702 this.dragItemCount++; 21703 this.updateShiftTargets(item); 21704 }; 21705 proto.updateShiftTargets = function(dropItem) { 21706 this.shiftPacker.reset(); 21707 this._getBoundingRect(); 21708 var isOriginLeft = this._getOption("originLeft"); 21709 var isOriginTop = this._getOption("originTop"); 21710 this.stamps.forEach(function(stamp) { 21711 var item = this.getItem(stamp); 21712 if (item && item.isPlacing) { 21713 return; 21714 } 21715 var offset = this._getElementOffset(stamp); 21716 var rect = new Rect({ 21717 x: isOriginLeft ? offset.left : offset.right, 21718 y: isOriginTop ? offset.top : offset.bottom 21719 }); 21720 this._setRectSize(stamp, rect); 21721 this.shiftPacker.placed(rect); 21722 }, this); 21723 var isHorizontal = this._getOption("horizontal"); 21724 var segmentName = isHorizontal ? "rowHeight" : "columnWidth"; 21725 var measure = isHorizontal ? "height" : "width"; 21726 this.shiftTargetKeys = []; 21727 this.shiftTargets = []; 21728 var boundsSize; 21729 var segment = this[segmentName]; 21730 segment = segment && segment + this.gutter; 21731 if (segment) { 21732 var segmentSpan = Math.ceil(dropItem.rect[measure] / segment); 21733 var segs = Math.floor((this.shiftPacker[measure] + this.gutter) / segment); 21734 boundsSize = (segs - segmentSpan) * segment; 21735 for (var i = 0; i < segs; i++) { 21736 var initialX = isHorizontal ? 0 : i * segment; 21737 var initialY = isHorizontal ? i * segment : 0; 21738 this._addShiftTarget(initialX, initialY, boundsSize); 21739 } 21740 } else { 21741 boundsSize = this.shiftPacker[measure] + this.gutter - dropItem.rect[measure]; 21742 this._addShiftTarget(0, 0, boundsSize); 21743 } 21744 var items = this._getItemsForLayout(this.items); 21745 var packMethod = this._getPackMethod(); 21746 items.forEach(function(item) { 21747 var rect = item.rect; 21748 this._setRectSize(item.element, rect); 21749 this.shiftPacker[packMethod](rect); 21750 this._addShiftTarget(rect.x, rect.y, boundsSize); 21751 var cornerX = isHorizontal ? rect.x + rect.width : rect.x; 21752 var cornerY = isHorizontal ? rect.y : rect.y + rect.height; 21753 this._addShiftTarget(cornerX, cornerY, boundsSize); 21754 if (segment) { 21755 var segSpan = Math.round(rect[measure] / segment); 21756 for (var i2 = 1; i2 < segSpan; i2++) { 21757 var segX = isHorizontal ? cornerX : rect.x + segment * i2; 21758 var segY = isHorizontal ? rect.y + segment * i2 : cornerY; 21759 this._addShiftTarget(segX, segY, boundsSize); 21760 } 21761 } 21762 }, this); 21763 }; 21764 proto._addShiftTarget = function(x, y, boundsSize) { 21765 var checkCoord = this._getOption("horizontal") ? y : x; 21766 if (checkCoord !== 0 && checkCoord > boundsSize) { 21767 return; 21768 } 21769 var key = x + "," + y; 21770 var hasKey = this.shiftTargetKeys.indexOf(key) != -1; 21771 if (hasKey) { 21772 return; 21773 } 21774 this.shiftTargetKeys.push(key); 21775 this.shiftTargets.push({ x, y }); 21776 }; 21777 proto.shift = function(item, x, y) { 21778 var shiftPosition; 21779 var minDistance = Infinity; 21780 var position = { x, y }; 21781 this.shiftTargets.forEach(function(target) { 21782 var distance = getDistance(target, position); 21783 if (distance < minDistance) { 21784 shiftPosition = target; 21785 minDistance = distance; 21786 } 21787 }); 21788 item.rect.x = shiftPosition.x; 21789 item.rect.y = shiftPosition.y; 21790 }; 21791 function getDistance(a, b) { 21792 var dx = b.x - a.x; 21793 var dy = b.y - a.y; 21794 return Math.sqrt(dx * dx + dy * dy); 21795 } 21796 var DRAG_THROTTLE_TIME = 120; 21797 proto.itemDragMove = function(elem, x, y) { 21798 var item = this.isEnabled && this.getItem(elem); 21799 if (!item) { 21800 return; 21801 } 21802 x -= this.size.paddingLeft; 21803 y -= this.size.paddingTop; 21804 var _this = this; 21805 function onDrag() { 21806 _this.shift(item, x, y); 21807 item.positionDropPlaceholder(); 21808 _this.layout(); 21809 } 21810 var now = /* @__PURE__ */ new Date(); 21811 var isThrottled = this._itemDragTime && now - this._itemDragTime < DRAG_THROTTLE_TIME; 21812 if (isThrottled) { 21813 clearTimeout(this.dragTimeout); 21814 this.dragTimeout = setTimeout(onDrag, DRAG_THROTTLE_TIME); 21815 } else { 21816 onDrag(); 21817 this._itemDragTime = now; 21818 } 21819 }; 21820 proto.itemDragEnd = function(elem) { 21821 var item = this.isEnabled && this.getItem(elem); 21822 if (!item) { 21823 return; 21824 } 21825 clearTimeout(this.dragTimeout); 21826 item.element.classList.add("is-positioning-post-drag"); 21827 var completeCount = 0; 21828 var _this = this; 21829 function onDragEndLayoutComplete() { 21830 completeCount++; 21831 if (completeCount != 2) { 21832 return; 21833 } 21834 item.element.classList.remove("is-positioning-post-drag"); 21835 item.hideDropPlaceholder(); 21836 _this.dispatchEvent("dragItemPositioned", null, [item]); 21837 } 21838 item.once("layout", onDragEndLayoutComplete); 21839 this.once("layoutComplete", onDragEndLayoutComplete); 21840 item.moveTo(item.rect.x, item.rect.y); 21841 this.layout(); 21842 this.dragItemCount = Math.max(0, this.dragItemCount - 1); 21843 this.sortItemsByPosition(); 21844 item.disablePlacing(); 21845 this.unstamp(item.element); 21846 }; 21847 proto.bindDraggabillyEvents = function(draggie) { 21848 this._bindDraggabillyEvents(draggie, "on"); 21849 }; 21850 proto.unbindDraggabillyEvents = function(draggie) { 21851 this._bindDraggabillyEvents(draggie, "off"); 21852 }; 21853 proto._bindDraggabillyEvents = function(draggie, method) { 21854 var handlers = this.handleDraggabilly; 21855 draggie[method]("dragStart", handlers.dragStart); 21856 draggie[method]("dragMove", handlers.dragMove); 21857 draggie[method]("dragEnd", handlers.dragEnd); 21858 }; 21859 proto.bindUIDraggableEvents = function($elems) { 21860 this._bindUIDraggableEvents($elems, "on"); 21861 }; 21862 proto.unbindUIDraggableEvents = function($elems) { 21863 this._bindUIDraggableEvents($elems, "off"); 21864 }; 21865 proto._bindUIDraggableEvents = function($elems, method) { 21866 var handlers = this.handleUIDraggable; 21867 $elems[method]("dragstart", handlers.start)[method]("drag", handlers.drag)[method]("dragstop", handlers.stop); 21868 }; 21869 var _destroy = proto.destroy; 21870 proto.destroy = function() { 21871 _destroy.apply(this, arguments); 21872 this.isEnabled = false; 21873 }; 21874 Packery.Rect = Rect; 21875 Packery.Packer = Packer; 21876 return Packery; 21877 }); 21878 } 21879 }); 21880 21881
vendor: 5,181 bytes, lines 21881-22023
21881// node_modules/jquery-menu-aim/jquery.menu-aim.js 21882 var require_jquery_menu_aim = __commonJS({ 21883 "node_modules/jquery-menu-aim/jquery.menu-aim.js"(exports) { 21884 init_esbuild_shims(); 21885 (function(factory) { 21886 if (typeof exports === "object") { 21887 factory(require_jquery()); 21888 } else if (typeof define === "function" && define.amd) { 21889 define(["jquery"], factory); 21890 } else { 21891 factory(jQuery); 21892 } 21893 })(function($3) { 21894 $3.fn.menuAim = function(opts) { 21895 this.each(function() { 21896 init.call(this, opts); 21897 }); 21898 return this; 21899 }; 21900 function init(opts) { 21901 var $menu = $3(this), activeRow = null, mouseLocs = [], lastDelayLoc = null, timeoutId = null, options = $3.extend({ 21902 rowSelector: "> li", 21903 submenuSelector: "*", 21904 submenuDirection: "right", 21905 tolerance: 75, 21906 // bigger = more forgivey when entering submenu 21907 enter: $3.noop, 21908 exit: $3.noop, 21909 activate: $3.noop, 21910 deactivate: $3.noop, 21911 exitMenu: $3.noop 21912 }, opts); 21913 var MOUSE_LOCS_TRACKED = 3, DELAY = 300; 21914 var mousemoveDocument = function(e) { 21915 mouseLocs.push({ x: e.pageX, y: e.pageY }); 21916 if (mouseLocs.length > MOUSE_LOCS_TRACKED) { 21917 mouseLocs.shift(); 21918 } 21919 }; 21920 var mouseleaveMenu = function() { 21921 if (timeoutId) { 21922 clearTimeout(timeoutId); 21923 } 21924 if (options.exitMenu(this)) { 21925 if (activeRow) { 21926 options.deactivate(activeRow); 21927 } 21928 activeRow = null; 21929 } 21930 }; 21931 var mouseenterRow = function() { 21932 if (timeoutId) { 21933 clearTimeout(timeoutId); 21934 } 21935 options.enter(this); 21936 possiblyActivate(this); 21937 }, mouseleaveRow = function() { 21938 options.exit(this); 21939 }; 21940 var clickRow = function() { 21941 activate(this); 21942 }; 21943 var activate = function(row) { 21944 if (row == activeRow) { 21945 return; 21946 } 21947 if (activeRow) { 21948 options.deactivate(activeRow); 21949 } 21950 options.activate(row); 21951 activeRow = row; 21952 }; 21953 var possiblyActivate = function(row) { 21954 var delay = activationDelay(); 21955 if (delay) { 21956 timeoutId = setTimeout(function() { 21957 possiblyActivate(row); 21958 }, delay); 21959 } else { 21960 activate(row); 21961 } 21962 }; 21963 var activationDelay = function() { 21964 if (!activeRow || !$3(activeRow).is(options.submenuSelector)) { 21965 return 0; 21966 } 21967 var offset = $menu.offset(), upperLeft = { 21968 x: offset.left, 21969 y: offset.top - options.tolerance 21970 }, upperRight = { 21971 x: offset.left + $menu.outerWidth(), 21972 y: upperLeft.y 21973 }, lowerLeft = { 21974 x: offset.left, 21975 y: offset.top + $menu.outerHeight() + options.tolerance 21976 }, lowerRight = { 21977 x: offset.left + $menu.outerWidth(), 21978 y: lowerLeft.y 21979 }, loc = mouseLocs[mouseLocs.length - 1], prevLoc = mouseLocs[0]; 21980 if (!loc) { 21981 return 0; 21982 } 21983 if (!prevLoc) { 21984 prevLoc = loc; 21985 } 21986 if (prevLoc.x < offset.left || prevLoc.x > lowerRight.x || prevLoc.y < offset.top || prevLoc.y > lowerRight.y) { 21987 return 0; 21988 } 21989 if (lastDelayLoc && loc.x == lastDelayLoc.x && loc.y == lastDelayLoc.y) { 21990 return 0; 21991 } 21992 function slope(a, b) { 21993 return (b.y - a.y) / (b.x - a.x); 21994 } 21995 ; 21996 var decreasingCorner = upperRight, increasingCorner = lowerRight; 21997 if (options.submenuDirection == "left") { 21998 decreasingCorner = lowerLeft; 21999 increasingCorner = upperLeft; 22000 } else if (options.submenuDirection == "below") { 22001 decreasingCorner = lowerRight; 22002 increasingCorner = lowerLeft; 22003 } else if (options.submenuDirection == "above") { 22004 decreasingCorner = upperLeft; 22005 increasingCorner = upperRight; 22006 } 22007 var decreasingSlope = slope(loc, decreasingCorner), increasingSlope = slope(loc, increasingCorner), prevDecreasingSlope = slope(prevLoc, decreasingCorner), prevIncreasingSlope = slope(prevLoc, increasingCorner); 22008 if (decreasingSlope < prevDecreasingSlope && increasingSlope > prevIncreasingSlope) { 22009 lastDelayLoc = loc; 22010 return DELAY; 22011 } 22012 lastDelayLoc = null; 22013 return 0; 22014 }; 22015 $menu.mouseleave(mouseleaveMenu).find(options.rowSelector).mouseenter(mouseenterRow).mouseleave(mouseleaveRow).click(clickRow); 22016 $3(document).mousemove(mousemoveDocument); 22017 } 22018 ; 22019 }); 22020 } 22021 }); 22022 22023
vendor: 403,253 bytes, lines 22023-31914
22023// node_modules/datatables.net/js/jquery.dataTables.js 22024 var require_jquery_dataTables = __commonJS({ 22025 "node_modules/datatables.net/js/jquery.dataTables.js"(exports, module) { 22026 init_esbuild_shims(); 22027 (function(factory) { 22028 "use strict"; 22029 if (typeof define === "function" && define.amd) { 22030 define(["jquery"], function($3) { 22031 return factory($3, window, document); 22032 }); 22033 } else if (typeof exports === "object") { 22034 var jq = require_jquery(); 22035 if (typeof window === "undefined") { 22036 module.exports = function(root, $3) { 22037 if (!root) { 22038 root = window; 22039 } 22040 if (!$3) { 22041 $3 = jq(root); 22042 } 22043 return factory($3, root, root.document); 22044 }; 22045 } else { 22046 module.exports = factory(jq, window, window.document); 22047 } 22048 } else { 22049 window.DataTable = factory(jQuery, window, document); 22050 } 22051 })(function($3, window2, document2, undefined2) { 22052 "use strict"; 22053 var DataTable2 = function(selector, options) { 22054 if (DataTable2.factory(selector, options)) { 22055 return DataTable2; 22056 } 22057 if (this instanceof DataTable2) { 22058 return $3(selector).DataTable(options); 22059 } else { 22060 options = selector; 22061 } 22062 this.$ = function(sSelector, oOpts) { 22063 return this.api(true).$(sSelector, oOpts); 22064 }; 22065 this._ = function(sSelector, oOpts) { 22066 return this.api(true).rows(sSelector, oOpts).data(); 22067 }; 22068 this.api = function(traditional) { 22069 return traditional ? new _Api( 22070 _fnSettingsFromNode(this[_ext.iApiIndex]) 22071 ) : new _Api(this); 22072 }; 22073 this.fnAddData = function(data, redraw) { 22074 var api = this.api(true); 22075 var rows = Array.isArray(data) && (Array.isArray(data[0]) || $3.isPlainObject(data[0])) ? api.rows.add(data) : api.row.add(data); 22076 if (redraw === undefined2 || redraw) { 22077 api.draw(); 22078 } 22079 return rows.flatten().toArray(); 22080 }; 22081 this.fnAdjustColumnSizing = function(bRedraw) { 22082 var api = this.api(true).columns.adjust(); 22083 var settings = api.settings()[0]; 22084 var scroll = settings.oScroll; 22085 if (bRedraw === undefined2 || bRedraw) { 22086 api.draw(false); 22087 } else if (scroll.sX !== "" || scroll.sY !== "") { 22088 _fnScrollDraw(settings); 22089 } 22090 }; 22091 this.fnClearTable = function(bRedraw) { 22092 var api = this.api(true).clear(); 22093 if (bRedraw === undefined2 || bRedraw) { 22094 api.draw(); 22095 } 22096 }; 22097 this.fnClose = function(nTr) { 22098 this.api(true).row(nTr).child.hide(); 22099 }; 22100 this.fnDeleteRow = function(target, callback, redraw) { 22101 var api = this.api(true); 22102 var rows = api.rows(target); 22103 var settings = rows.settings()[0]; 22104 var data = settings.aoData[rows[0][0]]; 22105 rows.remove(); 22106 if (callback) { 22107 callback.call(this, settings, data); 22108 } 22109 if (redraw === undefined2 || redraw) { 22110 api.draw(); 22111 } 22112 return data; 22113 }; 22114 this.fnDestroy = function(remove) { 22115 this.api(true).destroy(remove); 22116 }; 22117 this.fnDraw = function(complete) { 22118 this.api(true).draw(complete); 22119 }; 22120 this.fnFilter = function(sInput, iColumn, bRegex, bSmart, bShowGlobal, bCaseInsensitive) { 22121 var api = this.api(true); 22122 if (iColumn === null || iColumn === undefined2) { 22123 api.search(sInput, bRegex, bSmart, bCaseInsensitive); 22124 } else { 22125 api.column(iColumn).search(sInput, bRegex, bSmart, bCaseInsensitive); 22126 } 22127 api.draw(); 22128 }; 22129 this.fnGetData = function(src, col) { 22130 var api = this.api(true); 22131 if (src !== undefined2) { 22132 var type = src.nodeName ? src.nodeName.toLowerCase() : ""; 22133 return col !== undefined2 || type == "td" || type == "th" ? api.cell(src, col).data() : api.row(src).data() || null; 22134 } 22135 return api.data().toArray(); 22136 }; 22137 this.fnGetNodes = function(iRow) { 22138 var api = this.api(true); 22139 return iRow !== undefined2 ? api.row(iRow).node() : api.rows().nodes().flatten().toArray(); 22140 }; 22141 this.fnGetPosition = function(node) { 22142 var api = this.api(true); 22143 var nodeName = node.nodeName.toUpperCase(); 22144 if (nodeName == "TR") { 22145 return api.row(node).index(); 22146 } else if (nodeName == "TD" || nodeName == "TH") { 22147 var cell = api.cell(node).index(); 22148 return [ 22149 cell.row, 22150 cell.columnVisible, 22151 cell.column 22152 ]; 22153 } 22154 return null; 22155 }; 22156 this.fnIsOpen = function(nTr) { 22157 return this.api(true).row(nTr).child.isShown(); 22158 }; 22159 this.fnOpen = function(nTr, mHtml, sClass) { 22160 return this.api(true).row(nTr).child(mHtml, sClass).show().child()[0]; 22161 }; 22162 this.fnPageChange = function(mAction, bRedraw) { 22163 var api = this.api(true).page(mAction); 22164 if (bRedraw === undefined2 || bRedraw) { 22165 api.draw(false); 22166 } 22167 }; 22168 this.fnSetColumnVis = function(iCol, bShow, bRedraw) { 22169 var api = this.api(true).column(iCol).visible(bShow); 22170 if (bRedraw === undefined2 || bRedraw) { 22171 api.columns.adjust().draw(); 22172 } 22173 }; 22174 this.fnSettings = function() { 22175 return _fnSettingsFromNode(this[_ext.iApiIndex]); 22176 }; 22177 this.fnSort = function(aaSort) { 22178 this.api(true).order(aaSort).draw(); 22179 }; 22180 this.fnSortListener = function(nNode, iColumn, fnCallback) { 22181 this.api(true).order.listener(nNode, iColumn, fnCallback); 22182 }; 22183 this.fnUpdate = function(mData, mRow, iColumn, bRedraw, bAction) { 22184 var api = this.api(true); 22185 if (iColumn === undefined2 || iColumn === null) { 22186 api.row(mRow).data(mData); 22187 } else { 22188 api.cell(mRow, iColumn).data(mData); 22189 } 22190 if (bAction === undefined2 || bAction) { 22191 api.columns.adjust(); 22192 } 22193 if (bRedraw === undefined2 || bRedraw) { 22194 api.draw(); 22195 } 22196 return 0; 22197 }; 22198 this.fnVersionCheck = _ext.fnVersionCheck; 22199 var _that = this; 22200 var emptyInit = options === undefined2; 22201 var len = this.length; 22202 if (emptyInit) { 22203 options = {}; 22204 } 22205 this.oApi = this.internal = _ext.internal; 22206 for (var fn in DataTable2.ext.internal) { 22207 if (fn) { 22208 this[fn] = _fnExternApiFunc(fn); 22209 } 22210 } 22211 this.each(function() { 22212 var o = {}; 22213 var oInit = len > 1 ? ( 22214 // optimisation for single table case 22215 _fnExtend(o, options, true) 22216 ) : options; 22217 var i2 = 0, iLen, j, jLen, k, kLen; 22218 var sId = this.getAttribute("id"); 22219 var bInitHandedOff = false; 22220 var defaults = DataTable2.defaults; 22221 var $this = $3(this); 22222 if (this.nodeName.toLowerCase() != "table") { 22223 _fnLog(null, 0, "Non-table node initialisation (" + this.nodeName + ")", 2); 22224 return; 22225 } 22226 _fnCompatOpts(defaults); 22227 _fnCompatCols(defaults.column); 22228 _fnCamelToHungarian(defaults, defaults, true); 22229 _fnCamelToHungarian(defaults.column, defaults.column, true); 22230 _fnCamelToHungarian(defaults, $3.extend(oInit, $this.data()), true); 22231 var allSettings = DataTable2.settings; 22232 for (i2 = 0, iLen = allSettings.length; i2 < iLen; i2++) { 22233 var s = allSettings[i2]; 22234 if (s.nTable == this || s.nTHead && s.nTHead.parentNode == this || s.nTFoot && s.nTFoot.parentNode == this) { 22235 var bRetrieve = oInit.bRetrieve !== undefined2 ? oInit.bRetrieve : defaults.bRetrieve; 22236 var bDestroy = oInit.bDestroy !== undefined2 ? oInit.bDestroy : defaults.bDestroy; 22237 if (emptyInit || bRetrieve) { 22238 return s.oInstance; 22239 } else if (bDestroy) { 22240 s.oInstance.fnDestroy(); 22241 break; 22242 } else { 22243 _fnLog(s, 0, "Cannot reinitialise DataTable", 3); 22244 return; 22245 } 22246 } 22247 if (s.sTableId == this.id) { 22248 allSettings.splice(i2, 1); 22249 break; 22250 } 22251 } 22252 if (sId === null || sId === "") { 22253 sId = "DataTables_Table_" + DataTable2.ext._unique++; 22254 this.id = sId; 22255 } 22256 var oSettings = $3.extend(true, {}, DataTable2.models.oSettings, { 22257 "sDestroyWidth": $this[0].style.width, 22258 "sInstance": sId, 22259 "sTableId": sId 22260 }); 22261 oSettings.nTable = this; 22262 oSettings.oApi = _that.internal; 22263 oSettings.oInit = oInit; 22264 allSettings.push(oSettings); 22265 oSettings.oInstance = _that.length === 1 ? _that : $this.dataTable(); 22266 _fnCompatOpts(oInit); 22267 _fnLanguageCompat(oInit.oLanguage); 22268 if (oInit.aLengthMenu && !oInit.iDisplayLength) { 22269 oInit.iDisplayLength = Array.isArray(oInit.aLengthMenu[0]) ? oInit.aLengthMenu[0][0] : oInit.aLengthMenu[0]; 22270 } 22271 oInit = _fnExtend($3.extend(true, {}, defaults), oInit); 22272 _fnMap(oSettings.oFeatures, oInit, [ 22273 "bPaginate", 22274 "bLengthChange", 22275 "bFilter", 22276 "bSort", 22277 "bSortMulti", 22278 "bInfo", 22279 "bProcessing", 22280 "bAutoWidth", 22281 "bSortClasses", 22282 "bServerSide", 22283 "bDeferRender" 22284 ]); 22285 _fnMap(oSettings, oInit, [ 22286 "asStripeClasses", 22287 "ajax", 22288 "fnServerData", 22289 "fnFormatNumber", 22290 "sServerMethod", 22291 "aaSorting", 22292 "aaSortingFixed", 22293 "aLengthMenu", 22294 "sPaginationType", 22295 "sAjaxSource", 22296 "sAjaxDataProp", 22297 "iStateDuration", 22298 "sDom", 22299 "bSortCellsTop", 22300 "iTabIndex", 22301 "fnStateLoadCallback", 22302 "fnStateSaveCallback", 22303 "renderer", 22304 "searchDelay", 22305 "rowId", 22306 ["iCookieDuration", "iStateDuration"], 22307 // backwards compat 22308 ["oSearch", "oPreviousSearch"], 22309 ["aoSearchCols", "aoPreSearchCols"], 22310 ["iDisplayLength", "_iDisplayLength"] 22311 ]); 22312 _fnMap(oSettings.oScroll, oInit, [ 22313 ["sScrollX", "sX"], 22314 ["sScrollXInner", "sXInner"], 22315 ["sScrollY", "sY"], 22316 ["bScrollCollapse", "bCollapse"] 22317 ]); 22318 _fnMap(oSettings.oLanguage, oInit, "fnInfoCallback"); 22319 _fnCallbackReg(oSettings, "aoDrawCallback", oInit.fnDrawCallback, "user"); 22320 _fnCallbackReg(oSettings, "aoServerParams", oInit.fnServerParams, "user"); 22321 _fnCallbackReg(oSettings, "aoStateSaveParams", oInit.fnStateSaveParams, "user"); 22322 _fnCallbackReg(oSettings, "aoStateLoadParams", oInit.fnStateLoadParams, "user"); 22323 _fnCallbackReg(oSettings, "aoStateLoaded", oInit.fnStateLoaded, "user"); 22324 _fnCallbackReg(oSettings, "aoRowCallback", oInit.fnRowCallback, "user"); 22325 _fnCallbackReg(oSettings, "aoRowCreatedCallback", oInit.fnCreatedRow, "user"); 22326 _fnCallbackReg(oSettings, "aoHeaderCallback", oInit.fnHeaderCallback, "user"); 22327 _fnCallbackReg(oSettings, "aoFooterCallback", oInit.fnFooterCallback, "user"); 22328 _fnCallbackReg(oSettings, "aoInitComplete", oInit.fnInitComplete, "user"); 22329 _fnCallbackReg(oSettings, "aoPreDrawCallback", oInit.fnPreDrawCallback, "user"); 22330 oSettings.rowIdFn = _fnGetObjectDataFn(oInit.rowId); 22331 _fnBrowserDetect(oSettings); 22332 var oClasses = oSettings.oClasses; 22333 $3.extend(oClasses, DataTable2.ext.classes, oInit.oClasses); 22334 $this.addClass(oClasses.sTable); 22335 if (oSettings.iInitDisplayStart === undefined2) { 22336 oSettings.iInitDisplayStart = oInit.iDisplayStart; 22337 oSettings._iDisplayStart = oInit.iDisplayStart; 22338 } 22339 if (oInit.iDeferLoading !== null) { 22340 oSettings.bDeferLoading = true; 22341 var tmp = Array.isArray(oInit.iDeferLoading); 22342 oSettings._iRecordsDisplay = tmp ? oInit.iDeferLoading[0] : oInit.iDeferLoading; 22343 oSettings._iRecordsTotal = tmp ? oInit.iDeferLoading[1] : oInit.iDeferLoading; 22344 } 22345 var oLanguage = oSettings.oLanguage; 22346 $3.extend(true, oLanguage, oInit.oLanguage); 22347 if (oLanguage.sUrl) { 22348 $3.ajax({ 22349 dataType: "json", 22350 url: oLanguage.sUrl, 22351 success: function(json) { 22352 _fnCamelToHungarian(defaults.oLanguage, json); 22353 _fnLanguageCompat(json); 22354 $3.extend(true, oLanguage, json, oSettings.oInit.oLanguage); 22355 _fnCallbackFire(oSettings, null, "i18n", [oSettings]); 22356 _fnInitialise(oSettings); 22357 }, 22358 error: function() { 22359 _fnInitialise(oSettings); 22360 } 22361 }); 22362 bInitHandedOff = true; 22363 } else { 22364 _fnCallbackFire(oSettings, null, "i18n", [oSettings]); 22365 } 22366 if (oInit.asStripeClasses === null) { 22367 oSettings.asStripeClasses = [ 22368 oClasses.sStripeOdd, 22369 oClasses.sStripeEven 22370 ]; 22371 } 22372 var stripeClasses = oSettings.asStripeClasses; 22373 var rowOne = $this.children("tbody").find("tr").eq(0); 22374 if ($3.inArray(true, $3.map(stripeClasses, function(el, i3) { 22375 return rowOne.hasClass(el); 22376 })) !== -1) { 22377 $3("tbody tr", this).removeClass(stripeClasses.join(" ")); 22378 oSettings.asDestroyStripes = stripeClasses.slice(); 22379 } 22380 var anThs = []; 22381 var aoColumnsInit; 22382 var nThead = this.getElementsByTagName("thead"); 22383 if (nThead.length !== 0) { 22384 _fnDetectHeader(oSettings.aoHeader, nThead[0]); 22385 anThs = _fnGetUniqueThs(oSettings); 22386 } 22387 if (oInit.aoColumns === null) { 22388 aoColumnsInit = []; 22389 for (i2 = 0, iLen = anThs.length; i2 < iLen; i2++) { 22390 aoColumnsInit.push(null); 22391 } 22392 } else { 22393 aoColumnsInit = oInit.aoColumns; 22394 } 22395 for (i2 = 0, iLen = aoColumnsInit.length; i2 < iLen; i2++) { 22396 _fnAddColumn(oSettings, anThs ? anThs[i2] : null); 22397 } 22398 _fnApplyColumnDefs(oSettings, oInit.aoColumnDefs, aoColumnsInit, function(iCol, oDef) { 22399 _fnColumnOptions(oSettings, iCol, oDef); 22400 }); 22401 if (rowOne.length) { 22402 var a = function(cell, name) { 22403 return cell.getAttribute("data-" + name) !== null ? name : null; 22404 }; 22405 $3(rowOne[0]).children("th, td").each(function(i3, cell) { 22406 var col = oSettings.aoColumns[i3]; 22407 if (!col) { 22408 _fnLog(oSettings, 0, "Incorrect column count", 18); 22409 } 22410 if (col.mData === i3) { 22411 var sort = a(cell, "sort") || a(cell, "order"); 22412 var filter = a(cell, "filter") || a(cell, "search"); 22413 if (sort !== null || filter !== null) { 22414 col.mData = { 22415 _: i3 + ".display", 22416 sort: sort !== null ? i3 + ".@data-" + sort : undefined2, 22417 type: sort !== null ? i3 + ".@data-" + sort : undefined2, 22418 filter: filter !== null ? i3 + ".@data-" + filter : undefined2 22419 }; 22420 col._isArrayHost = true; 22421 _fnColumnOptions(oSettings, i3); 22422 } 22423 } 22424 }); 22425 } 22426 var features = oSettings.oFeatures; 22427 var loadedInit = function() { 22428 if (oInit.aaSorting === undefined2) { 22429 var sorting = oSettings.aaSorting; 22430 for (i2 = 0, iLen = sorting.length; i2 < iLen; i2++) { 22431 sorting[i2][1] = oSettings.aoColumns[i2].asSorting[0]; 22432 } 22433 } 22434 _fnSortingClasses(oSettings); 22435 if (features.bSort) { 22436 _fnCallbackReg(oSettings, "aoDrawCallback", function() { 22437 if (oSettings.bSorted) { 22438 var aSort = _fnSortFlatten(oSettings); 22439 var sortedColumns = {}; 22440 $3.each(aSort, function(i3, val) { 22441 sortedColumns[val.src] = val.dir; 22442 }); 22443 _fnCallbackFire(oSettings, null, "order", [oSettings, aSort, sortedColumns]); 22444 _fnSortAria(oSettings); 22445 } 22446 }); 22447 } 22448 _fnCallbackReg(oSettings, "aoDrawCallback", function() { 22449 if (oSettings.bSorted || _fnDataSource(oSettings) === "ssp" || features.bDeferRender) { 22450 _fnSortingClasses(oSettings); 22451 } 22452 }, "sc"); 22453 var captions = $this.children("caption").each(function() { 22454 this._captionSide = $3(this).css("caption-side"); 22455 }); 22456 var thead = $this.children("thead"); 22457 if (thead.length === 0) { 22458 thead = $3("<thead/>").appendTo($this); 22459 } 22460 oSettings.nTHead = thead[0]; 22461 var tbody = $this.children("tbody"); 22462 if (tbody.length === 0) { 22463 tbody = $3("<tbody/>").insertAfter(thead); 22464 } 22465 oSettings.nTBody = tbody[0]; 22466 var tfoot = $this.children("tfoot"); 22467 if (tfoot.length === 0 && captions.length > 0 && (oSettings.oScroll.sX !== "" || oSettings.oScroll.sY !== "")) { 22468 tfoot = $3("<tfoot/>").appendTo($this); 22469 } 22470 if (tfoot.length === 0 || tfoot.children().length === 0) { 22471 $this.addClass(oClasses.sNoFooter); 22472 } else if (tfoot.length > 0) { 22473 oSettings.nTFoot = tfoot[0]; 22474 _fnDetectHeader(oSettings.aoFooter, oSettings.nTFoot); 22475 } 22476 if (oInit.aaData) { 22477 for (i2 = 0; i2 < oInit.aaData.length; i2++) { 22478 _fnAddData(oSettings, oInit.aaData[i2]); 22479 } 22480 } else if (oSettings.bDeferLoading || _fnDataSource(oSettings) == "dom") { 22481 _fnAddTr(oSettings, $3(oSettings.nTBody).children("tr")); 22482 } 22483 oSettings.aiDisplay = oSettings.aiDisplayMaster.slice(); 22484 oSettings.bInitialised = true; 22485 if (bInitHandedOff === false) { 22486 _fnInitialise(oSettings); 22487 } 22488 }; 22489 _fnCallbackReg(oSettings, "aoDrawCallback", _fnSaveState, "state_save"); 22490 if (oInit.bStateSave) { 22491 features.bStateSave = true; 22492 _fnLoadState(oSettings, oInit, loadedInit); 22493 } else { 22494 loadedInit(); 22495 } 22496 }); 22497 _that = null; 22498 return this; 22499 }; 22500 var _ext; 22501 var _Api; 22502 var _api_register; 22503 var _api_registerPlural; 22504 var _re_dic = {}; 22505 var _re_new_lines = /[\r\n\u2028]/g; 22506 var _re_html = /<.*?>/g; 22507 var _re_date = /^\d{2,4}[\.\/\-]\d{1,2}[\.\/\-]\d{1,2}([T ]{1}\d{1,2}[:\.]\d{2}([\.:]\d{2})?)?$/; 22508 var _re_escape_regex = new RegExp("(\\" + ["/", ".", "*", "+", "?", "|", "(", ")", "[", "]", "{", "}", "\\", "$", "^", "-"].join("|\\") + ")", "g"); 22509 var _re_formatted_numeric = /['\u00A0,$£â¬Â¥%\u2009\u202F\u20BD\u20a9\u20BArfkÉÎ]/gi; 22510 var _empty = function(d) { 22511 return !d || d === true || d === "-" ? true : false; 22512 }; 22513 var _intVal = function(s) { 22514 var integer = parseInt(s, 10); 22515 return !isNaN(integer) && isFinite(s) ? integer : null; 22516 }; 22517 var _numToDecimal = function(num2, decimalPoint) { 22518 if (!_re_dic[decimalPoint]) { 22519 _re_dic[decimalPoint] = new RegExp(_fnEscapeRegex(decimalPoint), "g"); 22520 } 22521 return typeof num2 === "string" && decimalPoint !== "." ? num2.replace(/\./g, "").replace(_re_dic[decimalPoint], ".") : num2; 22522 }; 22523 var _isNumber = function(d, decimalPoint, formatted) { 22524 var type = typeof d; 22525 var strType = type === "string"; 22526 if (type === "number" || type === "bigint") { 22527 return true; 22528 } 22529 if (_empty(d)) { 22530 return true; 22531 } 22532 if (decimalPoint && strType) { 22533 d = _numToDecimal(d, decimalPoint); 22534 } 22535 if (formatted && strType) { 22536 d = d.replace(_re_formatted_numeric, ""); 22537 } 22538 return !isNaN(parseFloat(d)) && isFinite(d); 22539 }; 22540 var _isHtml = function(d) { 22541 return _empty(d) || typeof d === "string"; 22542 }; 22543 var _htmlNumeric = function(d, decimalPoint, formatted) { 22544 if (_empty(d)) { 22545 return true; 22546 } 22547 var html = _isHtml(d); 22548 return !html ? null : _isNumber(_stripHtml(d), decimalPoint, formatted) ? true : null; 22549 }; 22550 var _pluck = function(a, prop, prop2) { 22551 var out = []; 22552 var i2 = 0, ien = a.length; 22553 if (prop2 !== undefined2) { 22554 for (; i2 < ien; i2++) { 22555 if (a[i2] && a[i2][prop]) { 22556 out.push(a[i2][prop][prop2]); 22557 } 22558 } 22559 } else { 22560 for (; i2 < ien; i2++) { 22561 if (a[i2]) { 22562 out.push(a[i2][prop]); 22563 } 22564 } 22565 } 22566 return out; 22567 }; 22568 var _pluck_order = function(a, order, prop, prop2) { 22569 var out = []; 22570 var i2 = 0, ien = order.length; 22571 if (prop2 !== undefined2) { 22572 for (; i2 < ien; i2++) { 22573 if (a[order[i2]][prop]) { 22574 out.push(a[order[i2]][prop][prop2]); 22575 } 22576 } 22577 } else { 22578 for (; i2 < ien; i2++) { 22579 out.push(a[order[i2]][prop]); 22580 } 22581 } 22582 return out; 22583 }; 22584 var _range = function(len, start) { 22585 var out = []; 22586 var end; 22587 if (start === undefined2) { 22588 start = 0; 22589 end = len; 22590 } else { 22591 end = start; 22592 start = len; 22593 } 22594 for (var i2 = start; i2 < end; i2++) { 22595 out.push(i2); 22596 } 22597 return out; 22598 }; 22599 var _removeEmpty = function(a) { 22600 var out = []; 22601 for (var i2 = 0, ien = a.length; i2 < ien; i2++) { 22602 if (a[i2]) { 22603 out.push(a[i2]); 22604 } 22605 } 22606 return out; 22607 }; 22608 var _stripHtml = function(d) { 22609 return d.replace(_re_html, "").replace(/<script/i, ""); 22610 }; 22611 var _areAllUnique = function(src) { 22612 if (src.length < 2) { 22613 return true; 22614 } 22615 var sorted = src.slice().sort(); 22616 var last = sorted[0]; 22617 for (var i2 = 1, ien = sorted.length; i2 < ien; i2++) { 22618 if (sorted[i2] === last) { 22619 return false; 22620 } 22621 last = sorted[i2]; 22622 } 22623 return true; 22624 }; 22625 var _unique = function(src) { 22626 if (_areAllUnique(src)) { 22627 return src.slice(); 22628 } 22629 var out = [], val, i2, ien = src.length, j, k = 0; 22630 again: for (i2 = 0; i2 < ien; i2++) { 22631 val = src[i2]; 22632 for (j = 0; j < k; j++) { 22633 if (out[j] === val) { 22634 continue again; 22635 } 22636 } 22637 out.push(val); 22638 k++; 22639 } 22640 return out; 22641 }; 22642 var _flatten = function(out, val) { 22643 if (Array.isArray(val)) { 22644 for (var i2 = 0; i2 < val.length; i2++) { 22645 _flatten(out, val[i2]); 22646 } 22647 } else { 22648 out.push(val); 22649 } 22650 return out; 22651 }; 22652 var _includes = function(search, start) { 22653 if (start === undefined2) { 22654 start = 0; 22655 } 22656 return this.indexOf(search, start) !== -1; 22657 }; 22658 if (!Array.isArray) { 22659 Array.isArray = function(arg) { 22660 return Object.prototype.toString.call(arg) === "[object Array]"; 22661 }; 22662 } 22663 if (!Array.prototype.includes) { 22664 Array.prototype.includes = _includes; 22665 } 22666 if (!String.prototype.trim) { 22667 String.prototype.trim = function() { 22668 return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ""); 22669 }; 22670 } 22671 if (!String.prototype.includes) { 22672 String.prototype.includes = _includes; 22673 } 22674 DataTable2.util = { 22675 /** 22676 * Throttle the calls to a function. Arguments and context are maintained 22677 * for the throttled function. 22678 * 22679 * @param {function} fn Function to be called 22680 * @param {integer} freq Call frequency in mS 22681 * @return {function} Wrapped function 22682 */ 22683 throttle: function(fn, freq) { 22684 var frequency = freq !== undefined2 ? freq : 200, last, timer; 22685 return function() { 22686 var that = this, now = +/* @__PURE__ */ new Date(), args = arguments; 22687 if (last && now < last + frequency) { 22688 clearTimeout(timer); 22689 timer = setTimeout(function() { 22690 last = undefined2; 22691 fn.apply(that, args); 22692 }, frequency); 22693 } else { 22694 last = now; 22695 fn.apply(that, args); 22696 } 22697 }; 22698 }, 22699 /** 22700 * Escape a string such that it can be used in a regular expression 22701 * 22702 * @param {string} val string to escape 22703 * @returns {string} escaped string 22704 */ 22705 escapeRegex: function(val) { 22706 return val.replace(_re_escape_regex, "\\$1"); 22707 }, 22708 /** 22709 * Create a function that will write to a nested object or array 22710 * @param {*} source JSON notation string 22711 * @returns Write function 22712 */ 22713 set: function(source) { 22714 if ($3.isPlainObject(source)) { 22715 return DataTable2.util.set(source._); 22716 } else if (source === null) { 22717 return function() { 22718 }; 22719 } else if (typeof source === "function") { 22720 return function(data, val, meta) { 22721 source(data, "set", val, meta); 22722 }; 22723 } else if (typeof source === "string" && (source.indexOf(".") !== -1 || source.indexOf("[") !== -1 || source.indexOf("(") !== -1)) { 22724 var setData = function(data, val, src) { 22725 var a = _fnSplitObjNotation(src), b; 22726 var aLast = a[a.length - 1]; 22727 var arrayNotation, funcNotation, o, innerSrc; 22728 for (var i2 = 0, iLen = a.length - 1; i2 < iLen; i2++) { 22729 if (a[i2] === "__proto__" || a[i2] === "constructor") { 22730 throw new Error("Cannot set prototype values"); 22731 } 22732 arrayNotation = a[i2].match(__reArray); 22733 funcNotation = a[i2].match(__reFn); 22734 if (arrayNotation) { 22735 a[i2] = a[i2].replace(__reArray, ""); 22736 data[a[i2]] = []; 22737 b = a.slice(); 22738 b.splice(0, i2 + 1); 22739 innerSrc = b.join("."); 22740 if (Array.isArray(val)) { 22741 for (var j = 0, jLen = val.length; j < jLen; j++) { 22742 o = {}; 22743 setData(o, val[j], innerSrc); 22744 data[a[i2]].push(o); 22745 } 22746 } else { 22747 data[a[i2]] = val; 22748 } 22749 return; 22750 } else if (funcNotation) { 22751 a[i2] = a[i2].replace(__reFn, ""); 22752 data = data[a[i2]](val); 22753 } 22754 if (data[a[i2]] === null || data[a[i2]] === undefined2) { 22755 data[a[i2]] = {}; 22756 } 22757 data = data[a[i2]]; 22758 } 22759 if (aLast.match(__reFn)) { 22760 data = data[aLast.replace(__reFn, "")](val); 22761 } else { 22762 data[aLast.replace(__reArray, "")] = val; 22763 } 22764 }; 22765 return function(data, val) { 22766 return setData(data, val, source); 22767 }; 22768 } else { 22769 return function(data, val) { 22770 data[source] = val; 22771 }; 22772 } 22773 }, 22774 /** 22775 * Create a function that will read nested objects from arrays, based on JSON notation 22776 * @param {*} source JSON notation string 22777 * @returns Value read 22778 */ 22779 get: function(source) { 22780 if ($3.isPlainObject(source)) { 22781 var o = {}; 22782 $3.each(source, function(key, val) { 22783 if (val) { 22784 o[key] = DataTable2.util.get(val); 22785 } 22786 }); 22787 return function(data, type, row, meta) { 22788 var t2 = o[type] || o._; 22789 return t2 !== undefined2 ? t2(data, type, row, meta) : data; 22790 }; 22791 } else if (source === null) { 22792 return function(data) { 22793 return data; 22794 }; 22795 } else if (typeof source === "function") { 22796 return function(data, type, row, meta) { 22797 return source(data, type, row, meta); 22798 }; 22799 } else if (typeof source === "string" && (source.indexOf(".") !== -1 || source.indexOf("[") !== -1 || source.indexOf("(") !== -1)) { 22800 var fetchData = function(data, type, src) { 22801 var arrayNotation, funcNotation, out, innerSrc; 22802 if (src !== "") { 22803 var a = _fnSplitObjNotation(src); 22804 for (var i2 = 0, iLen = a.length; i2 < iLen; i2++) { 22805 arrayNotation = a[i2].match(__reArray); 22806 funcNotation = a[i2].match(__reFn); 22807 if (arrayNotation) { 22808 a[i2] = a[i2].replace(__reArray, ""); 22809 if (a[i2] !== "") { 22810 data = data[a[i2]]; 22811 } 22812 out = []; 22813 a.splice(0, i2 + 1); 22814 innerSrc = a.join("."); 22815 if (Array.isArray(data)) { 22816 for (var j = 0, jLen = data.length; j < jLen; j++) { 22817 out.push(fetchData(data[j], type, innerSrc)); 22818 } 22819 } 22820 var join = arrayNotation[0].substring(1, arrayNotation[0].length - 1); 22821 data = join === "" ? out : out.join(join); 22822 break; 22823 } else if (funcNotation) { 22824 a[i2] = a[i2].replace(__reFn, ""); 22825 data = data[a[i2]](); 22826 continue; 22827 } 22828 if (data === null || data[a[i2]] === null) { 22829 return null; 22830 } else if (data === undefined2 || data[a[i2]] === undefined2) { 22831 return undefined2; 22832 } 22833 data = data[a[i2]]; 22834 } 22835 } 22836 return data; 22837 }; 22838 return function(data, type) { 22839 return fetchData(data, type, source); 22840 }; 22841 } else { 22842 return function(data, type) { 22843 return data[source]; 22844 }; 22845 } 22846 } 22847 }; 22848 function _fnHungarianMap(o) { 22849 var hungarian = "a aa ai ao as b fn i m o s ", match, newKey, map = {}; 22850 $3.each(o, function(key, val) { 22851 match = key.match(/^([^A-Z]+?)([A-Z])/); 22852 if (match && hungarian.indexOf(match[1] + " ") !== -1) { 22853 newKey = key.replace(match[0], match[2].toLowerCase()); 22854 map[newKey] = key; 22855 if (match[1] === "o") { 22856 _fnHungarianMap(o[key]); 22857 } 22858 } 22859 }); 22860 o._hungarianMap = map; 22861 } 22862 function _fnCamelToHungarian(src, user, force) { 22863 if (!src._hungarianMap) { 22864 _fnHungarianMap(src); 22865 } 22866 var hungarianKey; 22867 $3.each(user, function(key, val) { 22868 hungarianKey = src._hungarianMap[key]; 22869 if (hungarianKey !== undefined2 && (force || user[hungarianKey] === undefined2)) { 22870 if (hungarianKey.charAt(0) === "o") { 22871 if (!user[hungarianKey]) { 22872 user[hungarianKey] = {}; 22873 } 22874 $3.extend(true, user[hungarianKey], user[key]); 22875 _fnCamelToHungarian(src[hungarianKey], user[hungarianKey], force); 22876 } else { 22877 user[hungarianKey] = user[key]; 22878 } 22879 } 22880 }); 22881 } 22882 function _fnLanguageCompat(lang) { 22883 var defaults = DataTable2.defaults.oLanguage; 22884 var defaultDecimal = defaults.sDecimal; 22885 if (defaultDecimal) { 22886 _addNumericSort(defaultDecimal); 22887 } 22888 if (lang) { 22889 var zeroRecords = lang.sZeroRecords; 22890 if (!lang.sEmptyTable && zeroRecords && defaults.sEmptyTable === "No data available in table") { 22891 _fnMap(lang, lang, "sZeroRecords", "sEmptyTable"); 22892 } 22893 if (!lang.sLoadingRecords && zeroRecords && defaults.sLoadingRecords === "Loading...") { 22894 _fnMap(lang, lang, "sZeroRecords", "sLoadingRecords"); 22895 } 22896 if (lang.sInfoThousands) { 22897 lang.sThousands = lang.sInfoThousands; 22898 } 22899 var decimal = lang.sDecimal; 22900 if (decimal && defaultDecimal !== decimal) { 22901 _addNumericSort(decimal); 22902 } 22903 } 22904 } 22905 var _fnCompatMap = function(o, knew, old) { 22906 if (o[knew] !== undefined2) { 22907 o[old] = o[knew]; 22908 } 22909 }; 22910 function _fnCompatOpts(init) { 22911 _fnCompatMap(init, "ordering", "bSort"); 22912 _fnCompatMap(init, "orderMulti", "bSortMulti"); 22913 _fnCompatMap(init, "orderClasses", "bSortClasses"); 22914 _fnCompatMap(init, "orderCellsTop", "bSortCellsTop"); 22915 _fnCompatMap(init, "order", "aaSorting"); 22916 _fnCompatMap(init, "orderFixed", "aaSortingFixed"); 22917 _fnCompatMap(init, "paging", "bPaginate"); 22918 _fnCompatMap(init, "pagingType", "sPaginationType"); 22919 _fnCompatMap(init, "pageLength", "iDisplayLength"); 22920 _fnCompatMap(init, "searching", "bFilter"); 22921 if (typeof init.sScrollX === "boolean") { 22922 init.sScrollX = init.sScrollX ? "100%" : ""; 22923 } 22924 if (typeof init.scrollX === "boolean") { 22925 init.scrollX = init.scrollX ? "100%" : ""; 22926 } 22927 var searchCols = init.aoSearchCols; 22928 if (searchCols) { 22929 for (var i2 = 0, ien = searchCols.length; i2 < ien; i2++) { 22930 if (searchCols[i2]) { 22931 _fnCamelToHungarian(DataTable2.models.oSearch, searchCols[i2]); 22932 } 22933 } 22934 } 22935 } 22936 function _fnCompatCols(init) { 22937 _fnCompatMap(init, "orderable", "bSortable"); 22938 _fnCompatMap(init, "orderData", "aDataSort"); 22939 _fnCompatMap(init, "orderSequence", "asSorting"); 22940 _fnCompatMap(init, "orderDataType", "sortDataType"); 22941 var dataSort = init.aDataSort; 22942 if (typeof dataSort === "number" && !Array.isArray(dataSort)) { 22943 init.aDataSort = [dataSort]; 22944 } 22945 } 22946 function _fnBrowserDetect(settings) { 22947 if (!DataTable2.__browser) { 22948 var browser2 = {}; 22949 DataTable2.__browser = browser2; 22950 var n = $3("<div/>").css({ 22951 position: "fixed", 22952 top: 0, 22953 left: $3(window2).scrollLeft() * -1, 22954 // allow for scrolling 22955 height: 1, 22956 width: 1, 22957 overflow: "hidden" 22958 }).append( 22959 $3("<div/>").css({ 22960 position: "absolute", 22961 top: 1, 22962 left: 1, 22963 width: 100, 22964 overflow: "scroll" 22965 }).append( 22966 $3("<div/>").css({ 22967 width: "100%", 22968 height: 10 22969 }) 22970 ) 22971 ).appendTo("body"); 22972 var outer = n.children(); 22973 var inner = outer.children(); 22974 browser2.barWidth = outer[0].offsetWidth - outer[0].clientWidth; 22975 browser2.bScrollOversize = inner[0].offsetWidth === 100 && outer[0].clientWidth !== 100; 22976 browser2.bScrollbarLeft = Math.round(inner.offset().left) !== 1; 22977 browser2.bBounding = n[0].getBoundingClientRect().width ? true : false; 22978 n.remove(); 22979 } 22980 $3.extend(settings.oBrowser, DataTable2.__browser); 22981 settings.oScroll.iBarWidth = DataTable2.__browser.barWidth; 22982 } 22983 function _fnReduce(that, fn, init, start, end, inc) { 22984 var i2 = start, value, isSet = false; 22985 if (init !== undefined2) { 22986 value = init; 22987 isSet = true; 22988 } 22989 while (i2 !== end) { 22990 if (!that.hasOwnProperty(i2)) { 22991 continue; 22992 } 22993 value = isSet ? fn(value, that[i2], i2, that) : that[i2]; 22994 isSet = true; 22995 i2 += inc; 22996 } 22997 return value; 22998 } 22999 function _fnAddColumn(oSettings, nTh) { 23000 var oDefaults = DataTable2.defaults.column; 23001 var iCol = oSettings.aoColumns.length; 23002 var oCol = $3.extend({}, DataTable2.models.oColumn, oDefaults, { 23003 "nTh": nTh ? nTh : document2.createElement("th"), 23004 "sTitle": oDefaults.sTitle ? oDefaults.sTitle : nTh ? nTh.innerHTML : "", 23005 "aDataSort": oDefaults.aDataSort ? oDefaults.aDataSort : [iCol], 23006 "mData": oDefaults.mData ? oDefaults.mData : iCol, 23007 idx: iCol 23008 }); 23009 oSettings.aoColumns.push(oCol); 23010 var searchCols = oSettings.aoPreSearchCols; 23011 searchCols[iCol] = $3.extend({}, DataTable2.models.oSearch, searchCols[iCol]); 23012 _fnColumnOptions(oSettings, iCol, $3(nTh).data()); 23013 } 23014 function _fnColumnOptions(oSettings, iCol, oOptions) { 23015 var oCol = oSettings.aoColumns[iCol]; 23016 var oClasses = oSettings.oClasses; 23017 var th = $3(oCol.nTh); 23018 if (!oCol.sWidthOrig) { 23019 oCol.sWidthOrig = th.attr("width") || null; 23020 var t2 = (th.attr("style") || "").match(/width:\s*(\d+[pxem%]+)/); 23021 if (t2) { 23022 oCol.sWidthOrig = t2[1]; 23023 } 23024 } 23025 if (oOptions !== undefined2 && oOptions !== null) { 23026 _fnCompatCols(oOptions); 23027 _fnCamelToHungarian(DataTable2.defaults.column, oOptions, true); 23028 if (oOptions.mDataProp !== undefined2 && !oOptions.mData) { 23029 oOptions.mData = oOptions.mDataProp; 23030 } 23031 if (oOptions.sType) { 23032 oCol._sManualType = oOptions.sType; 23033 } 23034 if (oOptions.className && !oOptions.sClass) { 23035 oOptions.sClass = oOptions.className; 23036 } 23037 if (oOptions.sClass) { 23038 th.addClass(oOptions.sClass); 23039 } 23040 var origClass = oCol.sClass; 23041 $3.extend(oCol, oOptions); 23042 _fnMap(oCol, oOptions, "sWidth", "sWidthOrig"); 23043 if (origClass !== oCol.sClass) { 23044 oCol.sClass = origClass + " " + oCol.sClass; 23045 } 23046 if (oOptions.iDataSort !== undefined2) { 23047 oCol.aDataSort = [oOptions.iDataSort]; 23048 } 23049 _fnMap(oCol, oOptions, "aDataSort"); 23050 if (!oCol.ariaTitle) { 23051 oCol.ariaTitle = th.attr("aria-label"); 23052 } 23053 } 23054 var mDataSrc = oCol.mData; 23055 var mData = _fnGetObjectDataFn(mDataSrc); 23056 var mRender = oCol.mRender ? _fnGetObjectDataFn(oCol.mRender) : null; 23057 var attrTest = function(src) { 23058 return typeof src === "string" && src.indexOf("@") !== -1; 23059 }; 23060 oCol._bAttrSrc = $3.isPlainObject(mDataSrc) && (attrTest(mDataSrc.sort) || attrTest(mDataSrc.type) || attrTest(mDataSrc.filter)); 23061 oCol._setter = null; 23062 oCol.fnGetData = function(rowData, type, meta) { 23063 var innerData = mData(rowData, type, undefined2, meta); 23064 return mRender && type ? mRender(innerData, type, rowData, meta) : innerData; 23065 }; 23066 oCol.fnSetData = function(rowData, val, meta) { 23067 return _fnSetObjectDataFn(mDataSrc)(rowData, val, meta); 23068 }; 23069 if (typeof mDataSrc !== "number" && !oCol._isArrayHost) { 23070 oSettings._rowReadObject = true; 23071 } 23072 if (!oSettings.oFeatures.bSort) { 23073 oCol.bSortable = false; 23074 th.addClass(oClasses.sSortableNone); 23075 } 23076 var bAsc = $3.inArray("asc", oCol.asSorting) !== -1; 23077 var bDesc = $3.inArray("desc", oCol.asSorting) !== -1; 23078 if (!oCol.bSortable || !bAsc && !bDesc) { 23079 oCol.sSortingClass = oClasses.sSortableNone; 23080 oCol.sSortingClassJUI = ""; 23081 } else if (bAsc && !bDesc) { 23082 oCol.sSortingClass = oClasses.sSortableAsc; 23083 oCol.sSortingClassJUI = oClasses.sSortJUIAscAllowed; 23084 } else if (!bAsc && bDesc) { 23085 oCol.sSortingClass = oClasses.sSortableDesc; 23086 oCol.sSortingClassJUI = oClasses.sSortJUIDescAllowed; 23087 } else { 23088 oCol.sSortingClass = oClasses.sSortable; 23089 oCol.sSortingClassJUI = oClasses.sSortJUI; 23090 } 23091 } 23092 function _fnAdjustColumnSizing(settings) { 23093 if (settings.oFeatures.bAutoWidth !== false) { 23094 var columns = settings.aoColumns; 23095 _fnCalculateColumnWidths(settings); 23096 for (var i2 = 0, iLen = columns.length; i2 < iLen; i2++) { 23097 columns[i2].nTh.style.width = columns[i2].sWidth; 23098 } 23099 } 23100 var scroll = settings.oScroll; 23101 if (scroll.sY !== "" || scroll.sX !== "") { 23102 _fnScrollDraw(settings); 23103 } 23104 _fnCallbackFire(settings, null, "column-sizing", [settings]); 23105 } 23106 function _fnVisibleToColumnIndex(oSettings, iMatch) { 23107 var aiVis = _fnGetColumns(oSettings, "bVisible"); 23108 return typeof aiVis[iMatch] === "number" ? aiVis[iMatch] : null; 23109 } 23110 function _fnColumnIndexToVisible(oSettings, iMatch) { 23111 var aiVis = _fnGetColumns(oSettings, "bVisible"); 23112 var iPos = $3.inArray(iMatch, aiVis); 23113 return iPos !== -1 ? iPos : null; 23114 } 23115 function _fnVisbleColumns(oSettings) { 23116 var vis = 0; 23117 $3.each(oSettings.aoColumns, function(i2, col) { 23118 if (col.bVisible && $3(col.nTh).css("display") !== "none") { 23119 vis++; 23120 } 23121 }); 23122 return vis; 23123 } 23124 function _fnGetColumns(oSettings, sParam) { 23125 var a = []; 23126 $3.map(oSettings.aoColumns, function(val, i2) { 23127 if (val[sParam]) { 23128 a.push(i2); 23129 } 23130 }); 23131 return a; 23132 } 23133 function _fnColumnTypes(settings) { 23134 var columns = settings.aoColumns; 23135 var data = settings.aoData; 23136 var types = DataTable2.ext.type.detect; 23137 var i2, ien, j, jen, k, ken; 23138 var col, cell, detectedType, cache; 23139 for (i2 = 0, ien = columns.length; i2 < ien; i2++) { 23140 col = columns[i2]; 23141 cache = []; 23142 if (!col.sType && col._sManualType) { 23143 col.sType = col._sManualType; 23144 } else if (!col.sType) { 23145 for (j = 0, jen = types.length; j < jen; j++) { 23146 for (k = 0, ken = data.length; k < ken; k++) { 23147 if (cache[k] === undefined2) { 23148 cache[k] = _fnGetCellData(settings, k, i2, "type"); 23149 } 23150 detectedType = types[j](cache[k], settings); 23151 if (!detectedType && j !== types.length - 1) { 23152 break; 23153 } 23154 if (detectedType === "html" && !_empty(cache[k])) { 23155 break; 23156 } 23157 } 23158 if (detectedType) { 23159 col.sType = detectedType; 23160 break; 23161 } 23162 } 23163 if (!col.sType) { 23164 col.sType = "string"; 23165 } 23166 } 23167 } 23168 } 23169 function _fnApplyColumnDefs(oSettings, aoColDefs, aoCols, fn) { 23170 var i2, iLen, j, jLen, k, kLen, def; 23171 var columns = oSettings.aoColumns; 23172 if (aoColDefs) { 23173 for (i2 = aoColDefs.length - 1; i2 >= 0; i2--) { 23174 def = aoColDefs[i2]; 23175 var aTargets = def.target !== undefined2 ? def.target : def.targets !== undefined2 ? def.targets : def.aTargets; 23176 if (!Array.isArray(aTargets)) { 23177 aTargets = [aTargets]; 23178 } 23179 for (j = 0, jLen = aTargets.length; j < jLen; j++) { 23180 if (typeof aTargets[j] === "number" && aTargets[j] >= 0) { 23181 while (columns.length <= aTargets[j]) { 23182 _fnAddColumn(oSettings); 23183 } 23184 fn(aTargets[j], def); 23185 } else if (typeof aTargets[j] === "number" && aTargets[j] < 0) { 23186 fn(columns.length + aTargets[j], def); 23187 } else if (typeof aTargets[j] === "string") { 23188 for (k = 0, kLen = columns.length; k < kLen; k++) { 23189 if (aTargets[j] == "_all" || $3(columns[k].nTh).hasClass(aTargets[j])) { 23190 fn(k, def); 23191 } 23192 } 23193 } 23194 } 23195 } 23196 } 23197 if (aoCols) { 23198 for (i2 = 0, iLen = aoCols.length; i2 < iLen; i2++) { 23199 fn(i2, aoCols[i2]); 23200 } 23201 } 23202 } 23203 function _fnAddData(oSettings, aDataIn, nTr, anTds) { 23204 var iRow = oSettings.aoData.length; 23205 var oData = $3.extend(true, {}, DataTable2.models.oRow, { 23206 src: nTr ? "dom" : "data", 23207 idx: iRow 23208 }); 23209 oData._aData = aDataIn; 23210 oSettings.aoData.push(oData); 23211 var nTd, sThisType; 23212 var columns = oSettings.aoColumns; 23213 for (var i2 = 0, iLen = columns.length; i2 < iLen; i2++) { 23214 columns[i2].sType = null; 23215 } 23216 oSettings.aiDisplayMaster.push(iRow); 23217 var id = oSettings.rowIdFn(aDataIn); 23218 if (id !== undefined2) { 23219 oSettings.aIds[id] = oData; 23220 } 23221 if (nTr || !oSettings.oFeatures.bDeferRender) { 23222 _fnCreateTr(oSettings, iRow, nTr, anTds); 23223 } 23224 return iRow; 23225 } 23226 function _fnAddTr(settings, trs) { 23227 var row; 23228 if (!(trs instanceof $3)) { 23229 trs = $3(trs); 23230 } 23231 return trs.map(function(i2, el) { 23232 row = _fnGetRowElements(settings, el); 23233 return _fnAddData(settings, row.data, el, row.cells); 23234 }); 23235 } 23236 function _fnNodeToDataIndex(oSettings, n) { 23237 return n._DT_RowIndex !== undefined2 ? n._DT_RowIndex : null; 23238 } 23239 function _fnNodeToColumnIndex(oSettings, iRow, n) { 23240 return $3.inArray(n, oSettings.aoData[iRow].anCells); 23241 } 23242 function _fnGetCellData(settings, rowIdx, colIdx, type) { 23243 if (type === "search") { 23244 type = "filter"; 23245 } else if (type === "order") { 23246 type = "sort"; 23247 } 23248 var draw = settings.iDraw; 23249 var col = settings.aoColumns[colIdx]; 23250 var rowData = settings.aoData[rowIdx]._aData; 23251 var defaultContent = col.sDefaultContent; 23252 var cellData = col.fnGetData(rowData, type, { 23253 settings, 23254 row: rowIdx, 23255 col: colIdx 23256 }); 23257 if (cellData === undefined2) { 23258 if (settings.iDrawError != draw && defaultContent === null) { 23259 _fnLog(settings, 0, "Requested unknown parameter " + (typeof col.mData == "function" ? "{function}" : "'" + col.mData + "'") + " for row " + rowIdx + ", column " + colIdx, 4); 23260 settings.iDrawError = draw; 23261 } 23262 return defaultContent; 23263 } 23264 if ((cellData === rowData || cellData === null) && defaultContent !== null && type !== undefined2) { 23265 cellData = defaultContent; 23266 } else if (typeof cellData === "function") { 23267 return cellData.call(rowData); 23268 } 23269 if (cellData === null && type === "display") { 23270 return ""; 23271 } 23272 if (type === "filter") { 23273 var fomatters = DataTable2.ext.type.search; 23274 if (fomatters[col.sType]) { 23275 cellData = fomatters[col.sType](cellData); 23276 } 23277 } 23278 return cellData; 23279 } 23280 function _fnSetCellData(settings, rowIdx, colIdx, val) { 23281 var col = settings.aoColumns[colIdx]; 23282 var rowData = settings.aoData[rowIdx]._aData; 23283 col.fnSetData(rowData, val, { 23284 settings, 23285 row: rowIdx, 23286 col: colIdx 23287 }); 23288 } 23289 var __reArray = /\[.*?\]$/; 23290 var __reFn = /\(\)$/; 23291 function _fnSplitObjNotation(str) { 23292 return $3.map(str.match(/(\\.|[^\.])+/g) || [""], function(s) { 23293 return s.replace(/\\\./g, "."); 23294 }); 23295 } 23296 var _fnGetObjectDataFn = DataTable2.util.get; 23297 var _fnSetObjectDataFn = DataTable2.util.set; 23298 function _fnGetDataMaster(settings) { 23299 return _pluck(settings.aoData, "_aData"); 23300 } 23301 function _fnClearTable(settings) { 23302 settings.aoData.length = 0; 23303 settings.aiDisplayMaster.length = 0; 23304 settings.aiDisplay.length = 0; 23305 settings.aIds = {}; 23306 } 23307 function _fnDeleteIndex(a, iTarget, splice) { 23308 var iTargetIndex = -1; 23309 for (var i2 = 0, iLen = a.length; i2 < iLen; i2++) { 23310 if (a[i2] == iTarget) { 23311 iTargetIndex = i2; 23312 } else if (a[i2] > iTarget) { 23313 a[i2]--; 23314 } 23315 } 23316 if (iTargetIndex != -1 && splice === undefined2) { 23317 a.splice(iTargetIndex, 1); 23318 } 23319 } 23320 function _fnInvalidate(settings, rowIdx, src, colIdx) { 23321 var row = settings.aoData[rowIdx]; 23322 var i2, ien; 23323 var cellWrite = function(cell, col) { 23324 while (cell.childNodes.length) { 23325 cell.removeChild(cell.firstChild); 23326 } 23327 cell.innerHTML = _fnGetCellData(settings, rowIdx, col, "display"); 23328 }; 23329 if (src === "dom" || (!src || src === "auto") && row.src === "dom") { 23330 row._aData = _fnGetRowElements( 23331 settings, 23332 row, 23333 colIdx, 23334 colIdx === undefined2 ? undefined2 : row._aData 23335 ).data; 23336 } else { 23337 var cells = row.anCells; 23338 if (cells) { 23339 if (colIdx !== undefined2) { 23340 cellWrite(cells[colIdx], colIdx); 23341 } else { 23342 for (i2 = 0, ien = cells.length; i2 < ien; i2++) { 23343 cellWrite(cells[i2], i2); 23344 } 23345 } 23346 } 23347 } 23348 row._aSortData = null; 23349 row._aFilterData = null; 23350 var cols = settings.aoColumns; 23351 if (colIdx !== undefined2) { 23352 cols[colIdx].sType = null; 23353 } else { 23354 for (i2 = 0, ien = cols.length; i2 < ien; i2++) { 23355 cols[i2].sType = null; 23356 } 23357 _fnRowAttributes(settings, row); 23358 } 23359 } 23360 function _fnGetRowElements(settings, row, colIdx, d) { 23361 var tds = [], td = row.firstChild, name, col, o, i2 = 0, contents, columns = settings.aoColumns, objectRead = settings._rowReadObject; 23362 d = d !== undefined2 ? d : objectRead ? {} : []; 23363 var attr = function(str, td2) { 23364 if (typeof str === "string") { 23365 var idx = str.indexOf("@"); 23366 if (idx !== -1) { 23367 var attr2 = str.substring(idx + 1); 23368 var setter = _fnSetObjectDataFn(str); 23369 setter(d, td2.getAttribute(attr2)); 23370 } 23371 } 23372 }; 23373 var cellProcess = function(cell) { 23374 if (colIdx === undefined2 || colIdx === i2) { 23375 col = columns[i2]; 23376 contents = cell.innerHTML.trim(); 23377 if (col && col._bAttrSrc) { 23378 var setter = _fnSetObjectDataFn(col.mData._); 23379 setter(d, contents); 23380 attr(col.mData.sort, cell); 23381 attr(col.mData.type, cell); 23382 attr(col.mData.filter, cell); 23383 } else { 23384 if (objectRead) { 23385 if (!col._setter) { 23386 col._setter = _fnSetObjectDataFn(col.mData); 23387 } 23388 col._setter(d, contents); 23389 } else { 23390 d[i2] = contents; 23391 } 23392 } 23393 } 23394 i2++; 23395 }; 23396 if (td) { 23397 while (td) { 23398 name = td.nodeName.toUpperCase(); 23399 if (name == "TD" || name == "TH") { 23400 cellProcess(td); 23401 tds.push(td); 23402 } 23403 td = td.nextSibling; 23404 } 23405 } else { 23406 tds = row.anCells; 23407 for (var j = 0, jen = tds.length; j < jen; j++) { 23408 cellProcess(tds[j]); 23409 } 23410 } 23411 var rowNode = row.firstChild ? row : row.nTr; 23412 if (rowNode) { 23413 var id = rowNode.getAttribute("id"); 23414 if (id) { 23415 _fnSetObjectDataFn(settings.rowId)(d, id); 23416 } 23417 } 23418 return { 23419 data: d, 23420 cells: tds 23421 }; 23422 } 23423 function _fnCreateTr(oSettings, iRow, nTrIn, anTds) { 23424 var row = oSettings.aoData[iRow], rowData = row._aData, cells = [], nTr, nTd, oCol, i2, iLen, create; 23425 if (row.nTr === null) { 23426 nTr = nTrIn || document2.createElement("tr"); 23427 row.nTr = nTr; 23428 row.anCells = cells; 23429 nTr._DT_RowIndex = iRow; 23430 _fnRowAttributes(oSettings, row); 23431 for (i2 = 0, iLen = oSettings.aoColumns.length; i2 < iLen; i2++) { 23432 oCol = oSettings.aoColumns[i2]; 23433 create = nTrIn ? false : true; 23434 nTd = create ? document2.createElement(oCol.sCellType) : anTds[i2]; 23435 if (!nTd) { 23436 _fnLog(oSettings, 0, "Incorrect column count", 18); 23437 } 23438 nTd._DT_CellIndex = { 23439 row: iRow, 23440 column: i2 23441 }; 23442 cells.push(nTd); 23443 if (create || (oCol.mRender || oCol.mData !== i2) && (!$3.isPlainObject(oCol.mData) || oCol.mData._ !== i2 + ".display")) { 23444 nTd.innerHTML = _fnGetCellData(oSettings, iRow, i2, "display"); 23445 } 23446 if (oCol.sClass) { 23447 nTd.className += " " + oCol.sClass; 23448 } 23449 if (oCol.bVisible && !nTrIn) { 23450 nTr.appendChild(nTd); 23451 } else if (!oCol.bVisible && nTrIn) { 23452 nTd.parentNode.removeChild(nTd); 23453 } 23454 if (oCol.fnCreatedCell) { 23455 oCol.fnCreatedCell.call( 23456 oSettings.oInstance, 23457 nTd, 23458 _fnGetCellData(oSettings, iRow, i2), 23459 rowData, 23460 iRow, 23461 i2 23462 ); 23463 } 23464 } 23465 _fnCallbackFire(oSettings, "aoRowCreatedCallback", null, [nTr, rowData, iRow, cells]); 23466 } 23467 } 23468 function _fnRowAttributes(settings, row) { 23469 var tr = row.nTr; 23470 var data = row._aData; 23471 if (tr) { 23472 var id = settings.rowIdFn(data); 23473 if (id) { 23474 tr.id = id; 23475 } 23476 if (data.DT_RowClass) { 23477 var a = data.DT_RowClass.split(" "); 23478 row.__rowc = row.__rowc ? _unique(row.__rowc.concat(a)) : a; 23479 $3(tr).removeClass(row.__rowc.join(" ")).addClass(data.DT_RowClass); 23480 } 23481 if (data.DT_RowAttr) { 23482 $3(tr).attr(data.DT_RowAttr); 23483 } 23484 if (data.DT_RowData) { 23485 $3(tr).data(data.DT_RowData); 23486 } 23487 } 23488 } 23489 function _fnBuildHead(oSettings) { 23490 var i2, ien, cell, row, column; 23491 var thead = oSettings.nTHead; 23492 var tfoot = oSettings.nTFoot; 23493 var createHeader = $3("th, td", thead).length === 0; 23494 var classes = oSettings.oClasses; 23495 var columns = oSettings.aoColumns; 23496 if (createHeader) { 23497 row = $3("<tr/>").appendTo(thead); 23498 } 23499 for (i2 = 0, ien = columns.length; i2 < ien; i2++) { 23500 column = columns[i2]; 23501 cell = $3(column.nTh).addClass(column.sClass); 23502 if (createHeader) { 23503 cell.appendTo(row); 23504 } 23505 if (oSettings.oFeatures.bSort) { 23506 cell.addClass(column.sSortingClass); 23507 if (column.bSortable !== false) { 23508 cell.attr("tabindex", oSettings.iTabIndex).attr("aria-controls", oSettings.sTableId); 23509 _fnSortAttachListener(oSettings, column.nTh, i2); 23510 } 23511 } 23512 if (column.sTitle != cell[0].innerHTML) { 23513 cell.html(column.sTitle); 23514 } 23515 _fnRenderer(oSettings, "header")( 23516 oSettings, 23517 cell, 23518 column, 23519 classes 23520 ); 23521 } 23522 if (createHeader) { 23523 _fnDetectHeader(oSettings.aoHeader, thead); 23524 } 23525 $3(thead).children("tr").children("th, td").addClass(classes.sHeaderTH); 23526 $3(tfoot).children("tr").children("th, td").addClass(classes.sFooterTH); 23527 if (tfoot !== null) { 23528 var cells = oSettings.aoFooter[0]; 23529 for (i2 = 0, ien = cells.length; i2 < ien; i2++) { 23530 column = columns[i2]; 23531 if (column) { 23532 column.nTf = cells[i2].cell; 23533 if (column.sClass) { 23534 $3(column.nTf).addClass(column.sClass); 23535 } 23536 } else { 23537 _fnLog(oSettings, 0, "Incorrect column count", 18); 23538 } 23539 } 23540 } 23541 } 23542 function _fnDrawHead(oSettings, aoSource, bIncludeHidden) { 23543 var i2, iLen, j, jLen, k, kLen, n, nLocalTr; 23544 var aoLocal = []; 23545 var aApplied = []; 23546 var iColumns = oSettings.aoColumns.length; 23547 var iRowspan, iColspan; 23548 if (!aoSource) { 23549 return; 23550 } 23551 if (bIncludeHidden === undefined2) { 23552 bIncludeHidden = false; 23553 } 23554 for (i2 = 0, iLen = aoSource.length; i2 < iLen; i2++) { 23555 aoLocal[i2] = aoSource[i2].slice(); 23556 aoLocal[i2].nTr = aoSource[i2].nTr; 23557 for (j = iColumns - 1; j >= 0; j--) { 23558 if (!oSettings.aoColumns[j].bVisible && !bIncludeHidden) { 23559 aoLocal[i2].splice(j, 1); 23560 } 23561 } 23562 aApplied.push([]); 23563 } 23564 for (i2 = 0, iLen = aoLocal.length; i2 < iLen; i2++) { 23565 nLocalTr = aoLocal[i2].nTr; 23566 if (nLocalTr) { 23567 while (n = nLocalTr.firstChild) { 23568 nLocalTr.removeChild(n); 23569 } 23570 } 23571 for (j = 0, jLen = aoLocal[i2].length; j < jLen; j++) { 23572 iRowspan = 1; 23573 iColspan = 1; 23574 if (aApplied[i2][j] === undefined2) { 23575 nLocalTr.appendChild(aoLocal[i2][j].cell); 23576 aApplied[i2][j] = 1; 23577 while (aoLocal[i2 + iRowspan] !== undefined2 && aoLocal[i2][j].cell == aoLocal[i2 + iRowspan][j].cell) { 23578 aApplied[i2 + iRowspan][j] = 1; 23579 iRowspan++; 23580 } 23581 while (aoLocal[i2][j + iColspan] !== undefined2 && aoLocal[i2][j].cell == aoLocal[i2][j + iColspan].cell) { 23582 for (k = 0; k < iRowspan; k++) { 23583 aApplied[i2 + k][j + iColspan] = 1; 23584 } 23585 iColspan++; 23586 } 23587 $3(aoLocal[i2][j].cell).attr("rowspan", iRowspan).attr("colspan", iColspan); 23588 } 23589 } 23590 } 23591 } 23592 function _fnDraw(oSettings, ajaxComplete) { 23593 _fnStart(oSettings); 23594 var aPreDraw = _fnCallbackFire(oSettings, "aoPreDrawCallback", "preDraw", [oSettings]); 23595 if ($3.inArray(false, aPreDraw) !== -1) { 23596 _fnProcessingDisplay(oSettings, false); 23597 return; 23598 } 23599 var anRows = []; 23600 var iRowCount = 0; 23601 var asStripeClasses = oSettings.asStripeClasses; 23602 var iStripes = asStripeClasses.length; 23603 var oLang = oSettings.oLanguage; 23604 var bServerSide = _fnDataSource(oSettings) == "ssp"; 23605 var aiDisplay = oSettings.aiDisplay; 23606 var iDisplayStart = oSettings._iDisplayStart; 23607 var iDisplayEnd = oSettings.fnDisplayEnd(); 23608 oSettings.bDrawing = true; 23609 if (oSettings.bDeferLoading) { 23610 oSettings.bDeferLoading = false; 23611 oSettings.iDraw++; 23612 _fnProcessingDisplay(oSettings, false); 23613 } else if (!bServerSide) { 23614 oSettings.iDraw++; 23615 } else if (!oSettings.bDestroying && !ajaxComplete) { 23616 _fnAjaxUpdate(oSettings); 23617 return; 23618 } 23619 if (aiDisplay.length !== 0) { 23620 var iStart = bServerSide ? 0 : iDisplayStart; 23621 var iEnd = bServerSide ? oSettings.aoData.length : iDisplayEnd; 23622 for (var j = iStart; j < iEnd; j++) { 23623 var iDataIndex = aiDisplay[j]; 23624 var aoData = oSettings.aoData[iDataIndex]; 23625 if (aoData.nTr === null) { 23626 _fnCreateTr(oSettings, iDataIndex); 23627 } 23628 var nRow = aoData.nTr; 23629 if (iStripes !== 0) { 23630 var sStripe = asStripeClasses[iRowCount % iStripes]; 23631 if (aoData._sRowStripe != sStripe) { 23632 $3(nRow).removeClass(aoData._sRowStripe).addClass(sStripe); 23633 aoData._sRowStripe = sStripe; 23634 } 23635 } 23636 _fnCallbackFire( 23637 oSettings, 23638 "aoRowCallback", 23639 null, 23640 [nRow, aoData._aData, iRowCount, j, iDataIndex] 23641 ); 23642 anRows.push(nRow); 23643 iRowCount++; 23644 } 23645 } else { 23646 var sZero = oLang.sZeroRecords; 23647 if (oSettings.iDraw == 1 && _fnDataSource(oSettings) == "ajax") { 23648 sZero = oLang.sLoadingRecords; 23649 } else if (oLang.sEmptyTable && oSettings.fnRecordsTotal() === 0) { 23650 sZero = oLang.sEmptyTable; 23651 } 23652 anRows[0] = $3("<tr/>", { "class": iStripes ? asStripeClasses[0] : "" }).append($3("<td />", { 23653 "valign": "top", 23654 "colSpan": _fnVisbleColumns(oSettings), 23655 "class": oSettings.oClasses.sRowEmpty 23656 }).html(sZero))[0]; 23657 } 23658 _fnCallbackFire(oSettings, "aoHeaderCallback", "header", [ 23659 $3(oSettings.nTHead).children("tr")[0], 23660 _fnGetDataMaster(oSettings), 23661 iDisplayStart, 23662 iDisplayEnd, 23663 aiDisplay 23664 ]); 23665 _fnCallbackFire(oSettings, "aoFooterCallback", "footer", [ 23666 $3(oSettings.nTFoot).children("tr")[0], 23667 _fnGetDataMaster(oSettings), 23668 iDisplayStart, 23669 iDisplayEnd, 23670 aiDisplay 23671 ]); 23672 var body = $3(oSettings.nTBody); 23673 body.children().detach(); 23674 body.append($3(anRows)); 23675 _fnCallbackFire(oSettings, "aoDrawCallback", "draw", [oSettings]); 23676 oSettings.bSorted = false; 23677 oSettings.bFiltered = false; 23678 oSettings.bDrawing = false; 23679 } 23680 function _fnReDraw(settings, holdPosition) { 23681 var features = settings.oFeatures, sort = features.bSort, filter = features.bFilter; 23682 if (sort) { 23683 _fnSort(settings); 23684 } 23685 if (filter) { 23686 _fnFilterComplete(settings, settings.oPreviousSearch); 23687 } else { 23688 settings.aiDisplay = settings.aiDisplayMaster.slice(); 23689 } 23690 if (holdPosition !== true) { 23691 settings._iDisplayStart = 0; 23692 } 23693 settings._drawHold = holdPosition; 23694 _fnDraw(settings); 23695 settings._drawHold = false; 23696 } 23697 function _fnAddOptionsHtml(oSettings) { 23698 var classes = oSettings.oClasses; 23699 var table = $3(oSettings.nTable); 23700 var holding = $3("<div/>").insertBefore(table); 23701 var features = oSettings.oFeatures; 23702 var insert = $3("<div/>", { 23703 id: oSettings.sTableId + "_wrapper", 23704 "class": classes.sWrapper + (oSettings.nTFoot ? "" : " " + classes.sNoFooter) 23705 }); 23706 oSettings.nHolding = holding[0]; 23707 oSettings.nTableWrapper = insert[0]; 23708 oSettings.nTableReinsertBefore = oSettings.nTable.nextSibling; 23709 var aDom = oSettings.sDom.split(""); 23710 var featureNode, cOption, nNewNode, cNext, sAttr, j; 23711 for (var i2 = 0; i2 < aDom.length; i2++) { 23712 featureNode = null; 23713 cOption = aDom[i2]; 23714 if (cOption == "<") { 23715 nNewNode = $3("<div/>")[0]; 23716 cNext = aDom[i2 + 1]; 23717 if (cNext == "'" || cNext == '"') { 23718 sAttr = ""; 23719 j = 2; 23720 while (aDom[i2 + j] != cNext) { 23721 sAttr += aDom[i2 + j]; 23722 j++; 23723 } 23724 if (sAttr == "H") { 23725 sAttr = classes.sJUIHeader; 23726 } else if (sAttr == "F") { 23727 sAttr = classes.sJUIFooter; 23728 } 23729 if (sAttr.indexOf(".") != -1) { 23730 var aSplit = sAttr.split("."); 23731 nNewNode.id = aSplit[0].substr(1, aSplit[0].length - 1); 23732 nNewNode.className = aSplit[1]; 23733 } else if (sAttr.charAt(0) == "#") { 23734 nNewNode.id = sAttr.substr(1, sAttr.length - 1); 23735 } else { 23736 nNewNode.className = sAttr; 23737 } 23738 i2 += j; 23739 } 23740 insert.append(nNewNode); 23741 insert = $3(nNewNode); 23742 } else if (cOption == ">") { 23743 insert = insert.parent(); 23744 } else if (cOption == "l" && features.bPaginate && features.bLengthChange) { 23745 featureNode = _fnFeatureHtmlLength(oSettings); 23746 } else if (cOption == "f" && features.bFilter) { 23747 featureNode = _fnFeatureHtmlFilter(oSettings); 23748 } else if (cOption == "r" && features.bProcessing) { 23749 featureNode = _fnFeatureHtmlProcessing(oSettings); 23750 } else if (cOption == "t") { 23751 featureNode = _fnFeatureHtmlTable(oSettings); 23752 } else if (cOption == "i" && features.bInfo) { 23753 featureNode = _fnFeatureHtmlInfo(oSettings); 23754 } else if (cOption == "p" && features.bPaginate) { 23755 featureNode = _fnFeatureHtmlPaginate(oSettings); 23756 } else if (DataTable2.ext.feature.length !== 0) { 23757 var aoFeatures = DataTable2.ext.feature; 23758 for (var k = 0, kLen = aoFeatures.length; k < kLen; k++) { 23759 if (cOption == aoFeatures[k].cFeature) { 23760 featureNode = aoFeatures[k].fnInit(oSettings); 23761 break; 23762 } 23763 } 23764 } 23765 if (featureNode) { 23766 var aanFeatures = oSettings.aanFeatures; 23767 if (!aanFeatures[cOption]) { 23768 aanFeatures[cOption] = []; 23769 } 23770 aanFeatures[cOption].push(featureNode); 23771 insert.append(featureNode); 23772 } 23773 } 23774 holding.replaceWith(insert); 23775 oSettings.nHolding = null; 23776 } 23777 function _fnDetectHeader(aLayout, nThead) { 23778 var nTrs = $3(nThead).children("tr"); 23779 var nTr, nCell; 23780 var i2, k, l, iLen, jLen, iColShifted, iColumn, iColspan, iRowspan; 23781 var bUnique; 23782 var fnShiftCol = function(a, i3, j) { 23783 var k2 = a[i3]; 23784 while (k2[j]) { 23785 j++; 23786 } 23787 return j; 23788 }; 23789 aLayout.splice(0, aLayout.length); 23790 for (i2 = 0, iLen = nTrs.length; i2 < iLen; i2++) { 23791 aLayout.push([]); 23792 } 23793 for (i2 = 0, iLen = nTrs.length; i2 < iLen; i2++) { 23794 nTr = nTrs[i2]; 23795 iColumn = 0; 23796 nCell = nTr.firstChild; 23797 while (nCell) { 23798 if (nCell.nodeName.toUpperCase() == "TD" || nCell.nodeName.toUpperCase() == "TH") { 23799 iColspan = nCell.getAttribute("colspan") * 1; 23800 iRowspan = nCell.getAttribute("rowspan") * 1; 23801 iColspan = !iColspan || iColspan === 0 || iColspan === 1 ? 1 : iColspan; 23802 iRowspan = !iRowspan || iRowspan === 0 || iRowspan === 1 ? 1 : iRowspan; 23803 iColShifted = fnShiftCol(aLayout, i2, iColumn); 23804 bUnique = iColspan === 1 ? true : false; 23805 for (l = 0; l < iColspan; l++) { 23806 for (k = 0; k < iRowspan; k++) { 23807 aLayout[i2 + k][iColShifted + l] = { 23808 "cell": nCell, 23809 "unique": bUnique 23810 }; 23811 aLayout[i2 + k].nTr = nTr; 23812 } 23813 } 23814 } 23815 nCell = nCell.nextSibling; 23816 } 23817 } 23818 } 23819 function _fnGetUniqueThs(oSettings, nHeader, aLayout) { 23820 var aReturn = []; 23821 if (!aLayout) { 23822 aLayout = oSettings.aoHeader; 23823 if (nHeader) { 23824 aLayout = []; 23825 _fnDetectHeader(aLayout, nHeader); 23826 } 23827 } 23828 for (var i2 = 0, iLen = aLayout.length; i2 < iLen; i2++) { 23829 for (var j = 0, jLen = aLayout[i2].length; j < jLen; j++) { 23830 if (aLayout[i2][j].unique && (!aReturn[j] || !oSettings.bSortCellsTop)) { 23831 aReturn[j] = aLayout[i2][j].cell; 23832 } 23833 } 23834 } 23835 return aReturn; 23836 } 23837 function _fnStart(oSettings) { 23838 var bServerSide = _fnDataSource(oSettings) == "ssp"; 23839 var iInitDisplayStart = oSettings.iInitDisplayStart; 23840 if (iInitDisplayStart !== undefined2 && iInitDisplayStart !== -1) { 23841 oSettings._iDisplayStart = bServerSide ? iInitDisplayStart : iInitDisplayStart >= oSettings.fnRecordsDisplay() ? 0 : iInitDisplayStart; 23842 oSettings.iInitDisplayStart = -1; 23843 } 23844 } 23845 function _fnBuildAjax(oSettings, data, fn) { 23846 _fnCallbackFire(oSettings, "aoServerParams", "serverParams", [data]); 23847 if (data && Array.isArray(data)) { 23848 var tmp = {}; 23849 var rbracket = /(.*?)\[\]$/; 23850 $3.each(data, function(key, val) { 23851 var match = val.name.match(rbracket); 23852 if (match) { 23853 var name = match[0]; 23854 if (!tmp[name]) { 23855 tmp[name] = []; 23856 } 23857 tmp[name].push(val.value); 23858 } else { 23859 tmp[val.name] = val.value; 23860 } 23861 }); 23862 data = tmp; 23863 } 23864 var ajaxData; 23865 var ajax = oSettings.ajax; 23866 var instance = oSettings.oInstance; 23867 var callback = function(json) { 23868 var status = oSettings.jqXHR ? oSettings.jqXHR.status : null; 23869 if (json === null || typeof status === "number" && status == 204) { 23870 json = {}; 23871 _fnAjaxDataSrc(oSettings, json, []); 23872 } 23873 var error = json.error || json.sError; 23874 if (error) { 23875 _fnLog(oSettings, 0, error); 23876 } 23877 oSettings.json = json; 23878 _fnCallbackFire(oSettings, null, "xhr", [oSettings, json, oSettings.jqXHR]); 23879 fn(json); 23880 }; 23881 if ($3.isPlainObject(ajax) && ajax.data) { 23882 ajaxData = ajax.data; 23883 var newData = typeof ajaxData === "function" ? ajaxData(data, oSettings) : ( 23884 // fn can manipulate data or return 23885 ajaxData 23886 ); 23887 data = typeof ajaxData === "function" && newData ? newData : $3.extend(true, data, newData); 23888 delete ajax.data; 23889 } 23890 var baseAjax = { 23891 "data": data, 23892 "success": callback, 23893 "dataType": "json", 23894 "cache": false, 23895 "type": oSettings.sServerMethod, 23896 "error": function(xhr, error, thrown) { 23897 var ret = _fnCallbackFire(oSettings, null, "xhr", [oSettings, null, oSettings.jqXHR]); 23898 if ($3.inArray(true, ret) === -1) { 23899 if (error == "parsererror") { 23900 _fnLog(oSettings, 0, "Invalid JSON response", 1); 23901 } else if (xhr.readyState === 4) { 23902 _fnLog(oSettings, 0, "Ajax error", 7); 23903 } 23904 } 23905 _fnProcessingDisplay(oSettings, false); 23906 } 23907 }; 23908 oSettings.oAjaxData = data; 23909 _fnCallbackFire(oSettings, null, "preXhr", [oSettings, data]); 23910 if (oSettings.fnServerData) { 23911 oSettings.fnServerData.call( 23912 instance, 23913 oSettings.sAjaxSource, 23914 $3.map(data, function(val, key) { 23915 return { name: key, value: val }; 23916 }), 23917 callback, 23918 oSettings 23919 ); 23920 } else if (oSettings.sAjaxSource || typeof ajax === "string") { 23921 oSettings.jqXHR = $3.ajax($3.extend(baseAjax, { 23922 url: ajax || oSettings.sAjaxSource 23923 })); 23924 } else if (typeof ajax === "function") { 23925 oSettings.jqXHR = ajax.call(instance, data, callback, oSettings); 23926 } else { 23927 oSettings.jqXHR = $3.ajax($3.extend(baseAjax, ajax)); 23928 ajax.data = ajaxData; 23929 } 23930 } 23931 function _fnAjaxUpdate(settings) { 23932 settings.iDraw++; 23933 _fnProcessingDisplay(settings, true); 23934 var drawHold = settings._drawHold; 23935 _fnBuildAjax( 23936 settings, 23937 _fnAjaxParameters(settings), 23938 function(json) { 23939 settings._drawHold = drawHold; 23940 _fnAjaxUpdateDraw(settings, json); 23941 settings._drawHold = false; 23942 } 23943 ); 23944 } 23945 function _fnAjaxParameters(settings) { 23946 var columns = settings.aoColumns, columnCount = columns.length, features = settings.oFeatures, preSearch = settings.oPreviousSearch, preColSearch = settings.aoPreSearchCols, i2, data = [], dataProp, column, columnSearch, sort = _fnSortFlatten(settings), displayStart = settings._iDisplayStart, displayLength = features.bPaginate !== false ? settings._iDisplayLength : -1; 23947 var param = function(name, value) { 23948 data.push({ "name": name, "value": value }); 23949 }; 23950 param("sEcho", settings.iDraw); 23951 param("iColumns", columnCount); 23952 param("sColumns", _pluck(columns, "sName").join(",")); 23953 param("iDisplayStart", displayStart); 23954 param("iDisplayLength", displayLength); 23955 var d = { 23956 draw: settings.iDraw, 23957 columns: [], 23958 order: [], 23959 start: displayStart, 23960 length: displayLength, 23961 search: { 23962 value: preSearch.sSearch, 23963 regex: preSearch.bRegex 23964 } 23965 }; 23966 for (i2 = 0; i2 < columnCount; i2++) { 23967 column = columns[i2]; 23968 columnSearch = preColSearch[i2]; 23969 dataProp = typeof column.mData == "function" ? "function" : column.mData; 23970 d.columns.push({ 23971 data: dataProp, 23972 name: column.sName, 23973 searchable: column.bSearchable, 23974 orderable: column.bSortable, 23975 search: { 23976 value: columnSearch.sSearch, 23977 regex: columnSearch.bRegex 23978 } 23979 }); 23980 param("mDataProp_" + i2, dataProp); 23981 if (features.bFilter) { 23982 param("sSearch_" + i2, columnSearch.sSearch); 23983 param("bRegex_" + i2, columnSearch.bRegex); 23984 param("bSearchable_" + i2, column.bSearchable); 23985 } 23986 if (features.bSort) { 23987 param("bSortable_" + i2, column.bSortable); 23988 } 23989 } 23990 if (features.bFilter) { 23991 param("sSearch", preSearch.sSearch); 23992 param("bRegex", preSearch.bRegex); 23993 } 23994 if (features.bSort) { 23995 $3.each(sort, function(i3, val) { 23996 d.order.push({ column: val.col, dir: val.dir }); 23997 param("iSortCol_" + i3, val.col); 23998 param("sSortDir_" + i3, val.dir); 23999 }); 24000 param("iSortingCols", sort.length); 24001 } 24002 var legacy = DataTable2.ext.legacy.ajax; 24003 if (legacy === null) { 24004 return settings.sAjaxSource ? data : d; 24005 } 24006 return legacy ? data : d; 24007 } 24008 function _fnAjaxUpdateDraw(settings, json) { 24009 var compat = function(old, modern) { 24010 return json[old] !== undefined2 ? json[old] : json[modern]; 24011 }; 24012 var data = _fnAjaxDataSrc(settings, json); 24013 var draw = compat("sEcho", "draw"); 24014 var recordsTotal = compat("iTotalRecords", "recordsTotal"); 24015 var recordsFiltered = compat("iTotalDisplayRecords", "recordsFiltered"); 24016 if (draw !== undefined2) { 24017 if (draw * 1 < settings.iDraw) { 24018 return; 24019 } 24020 settings.iDraw = draw * 1; 24021 } 24022 if (!data) { 24023 data = []; 24024 } 24025 _fnClearTable(settings); 24026 settings._iRecordsTotal = parseInt(recordsTotal, 10); 24027 settings._iRecordsDisplay = parseInt(recordsFiltered, 10); 24028 for (var i2 = 0, ien = data.length; i2 < ien; i2++) { 24029 _fnAddData(settings, data[i2]); 24030 } 24031 settings.aiDisplay = settings.aiDisplayMaster.slice(); 24032 _fnDraw(settings, true); 24033 if (!settings._bInitComplete) { 24034 _fnInitComplete(settings, json); 24035 } 24036 _fnProcessingDisplay(settings, false); 24037 } 24038 function _fnAjaxDataSrc(oSettings, json, write) { 24039 var dataSrc = $3.isPlainObject(oSettings.ajax) && oSettings.ajax.dataSrc !== undefined2 ? oSettings.ajax.dataSrc : oSettings.sAjaxDataProp; 24040 if (!write) { 24041 if (dataSrc === "data") { 24042 return json.aaData || json[dataSrc]; 24043 } 24044 return dataSrc !== "" ? _fnGetObjectDataFn(dataSrc)(json) : json; 24045 } 24046 _fnSetObjectDataFn(dataSrc)(json, write); 24047 } 24048 function _fnFeatureHtmlFilter(settings) { 24049 var classes = settings.oClasses; 24050 var tableId = settings.sTableId; 24051 var language = settings.oLanguage; 24052 var previousSearch = settings.oPreviousSearch; 24053 var features = settings.aanFeatures; 24054 var input = '<input type="search" class="' + classes.sFilterInput + '"/>'; 24055 var str = language.sSearch; 24056 str = str.match(/_INPUT_/) ? str.replace("_INPUT_", input) : str + input; 24057 var filter = $3("<div/>", { 24058 "id": !features.f ? tableId + "_filter" : null, 24059 "class": classes.sFilter 24060 }).append($3("<label/>").append(str)); 24061 var searchFn = function(event2) { 24062 var n = features.f; 24063 var val = !this.value ? "" : this.value; 24064 if (previousSearch["return"] && event2.key !== "Enter") { 24065 return; 24066 } 24067 if (val != previousSearch.sSearch) { 24068 _fnFilterComplete(settings, { 24069 "sSearch": val, 24070 "bRegex": previousSearch.bRegex, 24071 "bSmart": previousSearch.bSmart, 24072 "bCaseInsensitive": previousSearch.bCaseInsensitive, 24073 "return": previousSearch["return"] 24074 }); 24075 settings._iDisplayStart = 0; 24076 _fnDraw(settings); 24077 } 24078 }; 24079 var searchDelay = settings.searchDelay !== null ? settings.searchDelay : _fnDataSource(settings) === "ssp" ? 400 : 0; 24080 var jqFilter = $3("input", filter).val(previousSearch.sSearch).attr("placeholder", language.sSearchPlaceholder).on( 24081 "keyup.DT search.DT input.DT paste.DT cut.DT", 24082 searchDelay ? _fnThrottle(searchFn, searchDelay) : searchFn 24083 ).on("mouseup.DT", function(e) { 24084 setTimeout(function() { 24085 searchFn.call(jqFilter[0], e); 24086 }, 10); 24087 }).on("keypress.DT", function(e) { 24088 if (e.keyCode == 13) { 24089 return false; 24090 } 24091 }).attr("aria-controls", tableId); 24092 $3(settings.nTable).on("search.dt.DT", function(ev, s) { 24093 if (settings === s) { 24094 try { 24095 if (jqFilter[0] !== document2.activeElement) { 24096 jqFilter.val(previousSearch.sSearch); 24097 } 24098 } catch (e) { 24099 } 24100 } 24101 }); 24102 return filter[0]; 24103 } 24104 function _fnFilterComplete(oSettings, oInput, iForce) { 24105 var oPrevSearch = oSettings.oPreviousSearch; 24106 var aoPrevSearch = oSettings.aoPreSearchCols; 24107 var fnSaveFilter = function(oFilter) { 24108 oPrevSearch.sSearch = oFilter.sSearch; 24109 oPrevSearch.bRegex = oFilter.bRegex; 24110 oPrevSearch.bSmart = oFilter.bSmart; 24111 oPrevSearch.bCaseInsensitive = oFilter.bCaseInsensitive; 24112 oPrevSearch["return"] = oFilter["return"]; 24113 }; 24114 var fnRegex = function(o) { 24115 return o.bEscapeRegex !== undefined2 ? !o.bEscapeRegex : o.bRegex; 24116 }; 24117 _fnColumnTypes(oSettings); 24118 if (_fnDataSource(oSettings) != "ssp") { 24119 _fnFilter(oSettings, oInput.sSearch, iForce, fnRegex(oInput), oInput.bSmart, oInput.bCaseInsensitive); 24120 fnSaveFilter(oInput); 24121 for (var i2 = 0; i2 < aoPrevSearch.length; i2++) { 24122 _fnFilterColumn( 24123 oSettings, 24124 aoPrevSearch[i2].sSearch, 24125 i2, 24126 fnRegex(aoPrevSearch[i2]), 24127 aoPrevSearch[i2].bSmart, 24128 aoPrevSearch[i2].bCaseInsensitive 24129 ); 24130 } 24131 _fnFilterCustom(oSettings); 24132 } else { 24133 fnSaveFilter(oInput); 24134 } 24135 oSettings.bFiltered = true; 24136 _fnCallbackFire(oSettings, null, "search", [oSettings]); 24137 } 24138 function _fnFilterCustom(settings) { 24139 var filters = DataTable2.ext.search; 24140 var displayRows = settings.aiDisplay; 24141 var row, rowIdx; 24142 for (var i2 = 0, ien = filters.length; i2 < ien; i2++) { 24143 var rows = []; 24144 for (var j = 0, jen = displayRows.length; j < jen; j++) { 24145 rowIdx = displayRows[j]; 24146 row = settings.aoData[rowIdx]; 24147 if (filters[i2](settings, row._aFilterData, rowIdx, row._aData, j)) { 24148 rows.push(rowIdx); 24149 } 24150 } 24151 displayRows.length = 0; 24152 $3.merge(displayRows, rows); 24153 } 24154 } 24155 function _fnFilterColumn(settings, searchStr, colIdx, regex, smart, caseInsensitive) { 24156 if (searchStr === "") { 24157 return; 24158 } 24159 var data; 24160 var out = []; 24161 var display = settings.aiDisplay; 24162 var rpSearch = _fnFilterCreateSearch(searchStr, regex, smart, caseInsensitive); 24163 for (var i2 = 0; i2 < display.length; i2++) { 24164 data = settings.aoData[display[i2]]._aFilterData[colIdx]; 24165 if (rpSearch.test(data)) { 24166 out.push(display[i2]); 24167 } 24168 } 24169 settings.aiDisplay = out; 24170 } 24171 function _fnFilter(settings, input, force, regex, smart, caseInsensitive) { 24172 var rpSearch = _fnFilterCreateSearch(input, regex, smart, caseInsensitive); 24173 var prevSearch = settings.oPreviousSearch.sSearch; 24174 var displayMaster = settings.aiDisplayMaster; 24175 var display, invalidated, i2; 24176 var filtered = []; 24177 if (DataTable2.ext.search.length !== 0) { 24178 force = true; 24179 } 24180 invalidated = _fnFilterData(settings); 24181 if (input.length <= 0) { 24182 settings.aiDisplay = displayMaster.slice(); 24183 } else { 24184 if (invalidated || force || regex || prevSearch.length > input.length || input.indexOf(prevSearch) !== 0 || settings.bSorted) { 24185 settings.aiDisplay = displayMaster.slice(); 24186 } 24187 display = settings.aiDisplay; 24188 for (i2 = 0; i2 < display.length; i2++) { 24189 if (rpSearch.test(settings.aoData[display[i2]]._sFilterRow)) { 24190 filtered.push(display[i2]); 24191 } 24192 } 24193 settings.aiDisplay = filtered; 24194 } 24195 } 24196 function _fnFilterCreateSearch(search, regex, smart, caseInsensitive) { 24197 search = regex ? search : _fnEscapeRegex(search); 24198 if (smart) { 24199 var a = $3.map(search.match(/["\u201C][^"\u201D]+["\u201D]|[^ ]+/g) || [""], function(word) { 24200 if (word.charAt(0) === '"') { 24201 var m = word.match(/^"(.*)"$/); 24202 word = m ? m[1] : word; 24203 } else if (word.charAt(0) === "\u201C") { 24204 var m = word.match(/^\u201C(.*)\u201D$/); 24205 word = m ? m[1] : word; 24206 } 24207 return word.replace('"', ""); 24208 }); 24209 search = "^(?=.*?" + a.join(")(?=.*?") + ").*$"; 24210 } 24211 return new RegExp(search, caseInsensitive ? "i" : ""); 24212 } 24213 var _fnEscapeRegex = DataTable2.util.escapeRegex; 24214 var __filter_div = $3("<div>")[0]; 24215 var __filter_div_textContent = __filter_div.textContent !== undefined2; 24216 function _fnFilterData(settings) { 24217 var columns = settings.aoColumns; 24218 var column; 24219 var i2, j, ien, jen, filterData, cellData, row; 24220 var wasInvalidated = false; 24221 for (i2 = 0, ien = settings.aoData.length; i2 < ien; i2++) { 24222 row = settings.aoData[i2]; 24223 if (!row._aFilterData) { 24224 filterData = []; 24225 for (j = 0, jen = columns.length; j < jen; j++) { 24226 column = columns[j]; 24227 if (column.bSearchable) { 24228 cellData = _fnGetCellData(settings, i2, j, "filter"); 24229 if (cellData === null) { 24230 cellData = ""; 24231 } 24232 if (typeof cellData !== "string" && cellData.toString) { 24233 cellData = cellData.toString(); 24234 } 24235 } else { 24236 cellData = ""; 24237 } 24238 if (cellData.indexOf && cellData.indexOf("&") !== -1) { 24239 __filter_div.innerHTML = cellData; 24240 cellData = __filter_div_textContent ? __filter_div.textContent : __filter_div.innerText; 24241 } 24242 if (cellData.replace) { 24243 cellData = cellData.replace(/[\r\n\u2028]/g, ""); 24244 } 24245 filterData.push(cellData); 24246 } 24247 row._aFilterData = filterData; 24248 row._sFilterRow = filterData.join(" "); 24249 wasInvalidated = true; 24250 } 24251 } 24252 return wasInvalidated; 24253 } 24254 function _fnSearchToCamel(obj) { 24255 return { 24256 search: obj.sSearch, 24257 smart: obj.bSmart, 24258 regex: obj.bRegex, 24259 caseInsensitive: obj.bCaseInsensitive 24260 }; 24261 } 24262 function _fnSearchToHung(obj) { 24263 return { 24264 sSearch: obj.search, 24265 bSmart: obj.smart, 24266 bRegex: obj.regex, 24267 bCaseInsensitive: obj.caseInsensitive 24268 }; 24269 } 24270 function _fnFeatureHtmlInfo(settings) { 24271 var tid = settings.sTableId, nodes = settings.aanFeatures.i, n = $3("<div/>", { 24272 "class": settings.oClasses.sInfo, 24273 "id": !nodes ? tid + "_info" : null 24274 }); 24275 if (!nodes) { 24276 settings.aoDrawCallback.push({ 24277 "fn": _fnUpdateInfo, 24278 "sName": "information" 24279 }); 24280 n.attr("role", "status").attr("aria-live", "polite"); 24281 $3(settings.nTable).attr("aria-describedby", tid + "_info"); 24282 } 24283 return n[0]; 24284 } 24285 function _fnUpdateInfo(settings) { 24286 var nodes = settings.aanFeatures.i; 24287 if (nodes.length === 0) { 24288 return; 24289 } 24290 var lang = settings.oLanguage, start = settings._iDisplayStart + 1, end = settings.fnDisplayEnd(), max = settings.fnRecordsTotal(), total = settings.fnRecordsDisplay(), out = total ? lang.sInfo : lang.sInfoEmpty; 24291 if (total !== max) { 24292 out += " " + lang.sInfoFiltered; 24293 } 24294 out += lang.sInfoPostFix; 24295 out = _fnInfoMacros(settings, out); 24296 var callback = lang.fnInfoCallback; 24297 if (callback !== null) { 24298 out = callback.call( 24299 settings.oInstance, 24300 settings, 24301 start, 24302 end, 24303 max, 24304 total, 24305 out 24306 ); 24307 } 24308 $3(nodes).html(out); 24309 } 24310 function _fnInfoMacros(settings, str) { 24311 var formatter = settings.fnFormatNumber, start = settings._iDisplayStart + 1, len = settings._iDisplayLength, vis = settings.fnRecordsDisplay(), all = len === -1; 24312 return str.replace(/_START_/g, formatter.call(settings, start)).replace(/_END_/g, formatter.call(settings, settings.fnDisplayEnd())).replace(/_MAX_/g, formatter.call(settings, settings.fnRecordsTotal())).replace(/_TOTAL_/g, formatter.call(settings, vis)).replace(/_PAGE_/g, formatter.call(settings, all ? 1 : Math.ceil(start / len))).replace(/_PAGES_/g, formatter.call(settings, all ? 1 : Math.ceil(vis / len))); 24313 } 24314 function _fnInitialise(settings) { 24315 var i2, iLen, iAjaxStart = settings.iInitDisplayStart; 24316 var columns = settings.aoColumns, column; 24317 var features = settings.oFeatures; 24318 var deferLoading = settings.bDeferLoading; 24319 if (!settings.bInitialised) { 24320 setTimeout(function() { 24321 _fnInitialise(settings); 24322 }, 200); 24323 return; 24324 } 24325 _fnAddOptionsHtml(settings); 24326 _fnBuildHead(settings); 24327 _fnDrawHead(settings, settings.aoHeader); 24328 _fnDrawHead(settings, settings.aoFooter); 24329 _fnProcessingDisplay(settings, true); 24330 if (features.bAutoWidth) { 24331 _fnCalculateColumnWidths(settings); 24332 } 24333 for (i2 = 0, iLen = columns.length; i2 < iLen; i2++) { 24334 column = columns[i2]; 24335 if (column.sWidth) { 24336 column.nTh.style.width = _fnStringToCss(column.sWidth); 24337 } 24338 } 24339 _fnCallbackFire(settings, null, "preInit", [settings]); 24340 _fnReDraw(settings); 24341 var dataSrc = _fnDataSource(settings); 24342 if (dataSrc != "ssp" || deferLoading) { 24343 if (dataSrc == "ajax") { 24344 _fnBuildAjax(settings, [], function(json) { 24345 var aData = _fnAjaxDataSrc(settings, json); 24346 for (i2 = 0; i2 < aData.length; i2++) { 24347 _fnAddData(settings, aData[i2]); 24348 } 24349 settings.iInitDisplayStart = iAjaxStart; 24350 _fnReDraw(settings); 24351 _fnProcessingDisplay(settings, false); 24352 _fnInitComplete(settings, json); 24353 }, settings); 24354 } else { 24355 _fnProcessingDisplay(settings, false); 24356 _fnInitComplete(settings); 24357 } 24358 } 24359 } 24360 function _fnInitComplete(settings, json) { 24361 settings._bInitComplete = true; 24362 if (json || settings.oInit.aaData) { 24363 _fnAdjustColumnSizing(settings); 24364 } 24365 _fnCallbackFire(settings, null, "plugin-init", [settings, json]); 24366 _fnCallbackFire(settings, "aoInitComplete", "init", [settings, json]); 24367 } 24368 function _fnLengthChange(settings, val) { 24369 var len = parseInt(val, 10); 24370 settings._iDisplayLength = len; 24371 _fnLengthOverflow(settings); 24372 _fnCallbackFire(settings, null, "length", [settings, len]); 24373 } 24374 function _fnFeatureHtmlLength(settings) { 24375 var classes = settings.oClasses, tableId = settings.sTableId, menu = settings.aLengthMenu, d2 = Array.isArray(menu[0]), lengths = d2 ? menu[0] : menu, language = d2 ? menu[1] : menu; 24376 var select = $3("<select/>", { 24377 "name": tableId + "_length", 24378 "aria-controls": tableId, 24379 "class": classes.sLengthSelect 24380 }); 24381 for (var i2 = 0, ien = lengths.length; i2 < ien; i2++) { 24382 select[0][i2] = new Option( 24383 typeof language[i2] === "number" ? settings.fnFormatNumber(language[i2]) : language[i2], 24384 lengths[i2] 24385 ); 24386 } 24387 var div = $3("<div><label/></div>").addClass(classes.sLength); 24388 if (!settings.aanFeatures.l) { 24389 div[0].id = tableId + "_length"; 24390 } 24391 div.children().append( 24392 settings.oLanguage.sLengthMenu.replace("_MENU_", select[0].outerHTML) 24393 ); 24394 $3("select", div).val(settings._iDisplayLength).on("change.DT", function(e) { 24395 _fnLengthChange(settings, $3(this).val()); 24396 _fnDraw(settings); 24397 }); 24398 $3(settings.nTable).on("length.dt.DT", function(e, s, len) { 24399 if (settings === s) { 24400 $3("select", div).val(len); 24401 } 24402 }); 24403 return div[0]; 24404 } 24405 function _fnFeatureHtmlPaginate(settings) { 24406 var type = settings.sPaginationType, plugin = DataTable2.ext.pager[type], modern = typeof plugin === "function", redraw = function(settings2) { 24407 _fnDraw(settings2); 24408 }, node = $3("<div/>").addClass(settings.oClasses.sPaging + type)[0], features = settings.aanFeatures; 24409 if (!modern) { 24410 plugin.fnInit(settings, node, redraw); 24411 } 24412 if (!features.p) { 24413 node.id = settings.sTableId + "_paginate"; 24414 settings.aoDrawCallback.push({ 24415 "fn": function(settings2) { 24416 if (modern) { 24417 var start = settings2._iDisplayStart, len = settings2._iDisplayLength, visRecords = settings2.fnRecordsDisplay(), all = len === -1, page = all ? 0 : Math.ceil(start / len), pages = all ? 1 : Math.ceil(visRecords / len), buttons = plugin(page, pages), i2, ien; 24418 for (i2 = 0, ien = features.p.length; i2 < ien; i2++) { 24419 _fnRenderer(settings2, "pageButton")( 24420 settings2, 24421 features.p[i2], 24422 i2, 24423 buttons, 24424 page, 24425 pages 24426 ); 24427 } 24428 } else { 24429 plugin.fnUpdate(settings2, redraw); 24430 } 24431 }, 24432 "sName": "pagination" 24433 }); 24434 } 24435 return node; 24436 } 24437 function _fnPageChange(settings, action, redraw) { 24438 var start = settings._iDisplayStart, len = settings._iDisplayLength, records = settings.fnRecordsDisplay(); 24439 if (records === 0 || len === -1) { 24440 start = 0; 24441 } else if (typeof action === "number") { 24442 start = action * len; 24443 if (start > records) { 24444 start = 0; 24445 } 24446 } else if (action == "first") { 24447 start = 0; 24448 } else if (action == "previous") { 24449 start = len >= 0 ? start - len : 0; 24450 if (start < 0) { 24451 start = 0; 24452 } 24453 } else if (action == "next") { 24454 if (start + len < records) { 24455 start += len; 24456 } 24457 } else if (action == "last") { 24458 start = Math.floor((records - 1) / len) * len; 24459 } else { 24460 _fnLog(settings, 0, "Unknown paging action: " + action, 5); 24461 } 24462 var changed = settings._iDisplayStart !== start; 24463 settings._iDisplayStart = start; 24464 if (changed) { 24465 _fnCallbackFire(settings, null, "page", [settings]); 24466 if (redraw) { 24467 _fnDraw(settings); 24468 } 24469 } else { 24470 _fnCallbackFire(settings, null, "page-nc", [settings]); 24471 } 24472 return changed; 24473 } 24474 function _fnFeatureHtmlProcessing(settings) { 24475 return $3("<div/>", { 24476 "id": !settings.aanFeatures.r ? settings.sTableId + "_processing" : null, 24477 "class": settings.oClasses.sProcessing, 24478 "role": "status" 24479 }).html(settings.oLanguage.sProcessing).append("<div><div></div><div></div><div></div><div></div></div>").insertBefore(settings.nTable)[0]; 24480 } 24481 function _fnProcessingDisplay(settings, show) { 24482 if (settings.oFeatures.bProcessing) { 24483 $3(settings.aanFeatures.r).css("display", show ? "block" : "none"); 24484 } 24485 _fnCallbackFire(settings, null, "processing", [settings, show]); 24486 } 24487 function _fnFeatureHtmlTable(settings) { 24488 var table = $3(settings.nTable); 24489 var scroll = settings.oScroll; 24490 if (scroll.sX === "" && scroll.sY === "") { 24491 return settings.nTable; 24492 } 24493 var scrollX = scroll.sX; 24494 var scrollY = scroll.sY; 24495 var classes = settings.oClasses; 24496 var caption = table.children("caption"); 24497 var captionSide = caption.length ? caption[0]._captionSide : null; 24498 var headerClone = $3(table[0].cloneNode(false)); 24499 var footerClone = $3(table[0].cloneNode(false)); 24500 var footer = table.children("tfoot"); 24501 var _div = "<div/>"; 24502 var size = function(s) { 24503 return !s ? null : _fnStringToCss(s); 24504 }; 24505 if (!footer.length) { 24506 footer = null; 24507 } 24508 var scroller = $3(_div, { "class": classes.sScrollWrapper }).append( 24509 $3(_div, { "class": classes.sScrollHead }).css({ 24510 overflow: "hidden", 24511 position: "relative", 24512 border: 0, 24513 width: scrollX ? size(scrollX) : "100%" 24514 }).append( 24515 $3(_div, { "class": classes.sScrollHeadInner }).css({ 24516 "box-sizing": "content-box", 24517 width: scroll.sXInner || "100%" 24518 }).append( 24519 headerClone.removeAttr("id").css("margin-left", 0).append(captionSide === "top" ? caption : null).append( 24520 table.children("thead") 24521 ) 24522 ) 24523 ) 24524 ).append( 24525 $3(_div, { "class": classes.sScrollBody }).css({ 24526 position: "relative", 24527 overflow: "auto", 24528 width: size(scrollX) 24529 }).append(table) 24530 ); 24531 if (footer) { 24532 scroller.append( 24533 $3(_div, { "class": classes.sScrollFoot }).css({ 24534 overflow: "hidden", 24535 border: 0, 24536 width: scrollX ? size(scrollX) : "100%" 24537 }).append( 24538 $3(_div, { "class": classes.sScrollFootInner }).append( 24539 footerClone.removeAttr("id").css("margin-left", 0).append(captionSide === "bottom" ? caption : null).append( 24540 table.children("tfoot") 24541 ) 24542 ) 24543 ) 24544 ); 24545 } 24546 var children = scroller.children(); 24547 var scrollHead = children[0]; 24548 var scrollBody = children[1]; 24549 var scrollFoot = footer ? children[2] : null; 24550 if (scrollX) { 24551 $3(scrollBody).on("scroll.DT", function(e) { 24552 var scrollLeft = this.scrollLeft; 24553 scrollHead.scrollLeft = scrollLeft; 24554 if (footer) { 24555 scrollFoot.scrollLeft = scrollLeft; 24556 } 24557 }); 24558 } 24559 $3(scrollBody).css("max-height", scrollY); 24560 if (!scroll.bCollapse) { 24561 $3(scrollBody).css("height", scrollY); 24562 } 24563 settings.nScrollHead = scrollHead; 24564 settings.nScrollBody = scrollBody; 24565 settings.nScrollFoot = scrollFoot; 24566 settings.aoDrawCallback.push({ 24567 "fn": _fnScrollDraw, 24568 "sName": "scrolling" 24569 }); 24570 return scroller[0]; 24571 } 24572 function _fnScrollDraw(settings) { 24573 var scroll = settings.oScroll, scrollX = scroll.sX, scrollXInner = scroll.sXInner, scrollY = scroll.sY, barWidth = scroll.iBarWidth, divHeader = $3(settings.nScrollHead), divHeaderStyle = divHeader[0].style, divHeaderInner = divHeader.children("div"), divHeaderInnerStyle = divHeaderInner[0].style, divHeaderTable = divHeaderInner.children("table"), divBodyEl = settings.nScrollBody, divBody = $3(divBodyEl), divBodyStyle = divBodyEl.style, divFooter = $3(settings.nScrollFoot), divFooterInner = divFooter.children("div"), divFooterTable = divFooterInner.children("table"), header = $3(settings.nTHead), table = $3(settings.nTable), tableEl = table[0], tableStyle = tableEl.style, footer = settings.nTFoot ? $3(settings.nTFoot) : null, browser2 = settings.oBrowser, ie67 = browser2.bScrollOversize, dtHeaderCells = _pluck(settings.aoColumns, "nTh"), headerTrgEls, footerTrgEls, headerSrcEls, footerSrcEls, headerCopy, footerCopy, headerWidths = [], footerWidths = [], headerContent = [], footerContent = [], idx, correction, sanityWidth, zeroOut = function(nSizer) { 24574 var style = nSizer.style; 24575 style.paddingTop = "0"; 24576 style.paddingBottom = "0"; 24577 style.borderTopWidth = "0"; 24578 style.borderBottomWidth = "0"; 24579 style.height = 0; 24580 }; 24581 var scrollBarVis = divBodyEl.scrollHeight > divBodyEl.clientHeight; 24582 if (settings.scrollBarVis !== scrollBarVis && settings.scrollBarVis !== undefined2) { 24583 settings.scrollBarVis = scrollBarVis; 24584 _fnAdjustColumnSizing(settings); 24585 return; 24586 } else { 24587 settings.scrollBarVis = scrollBarVis; 24588 } 24589 table.children("thead, tfoot").remove(); 24590 if (footer) { 24591 footerCopy = footer.clone().prependTo(table); 24592 footerTrgEls = footer.find("tr"); 24593 footerSrcEls = footerCopy.find("tr"); 24594 footerCopy.find("[id]").removeAttr("id"); 24595 } 24596 headerCopy = header.clone().prependTo(table); 24597 headerTrgEls = header.find("tr"); 24598 headerSrcEls = headerCopy.find("tr"); 24599 headerCopy.find("th, td").removeAttr("tabindex"); 24600 headerCopy.find("[id]").removeAttr("id"); 24601 if (!scrollX) { 24602 divBodyStyle.width = "100%"; 24603 divHeader[0].style.width = "100%"; 24604 } 24605 $3.each(_fnGetUniqueThs(settings, headerCopy), function(i2, el) { 24606 idx = _fnVisibleToColumnIndex(settings, i2); 24607 el.style.width = settings.aoColumns[idx].sWidth; 24608 }); 24609 if (footer) { 24610 _fnApplyToChildren(function(n) { 24611 n.style.width = ""; 24612 }, footerSrcEls); 24613 } 24614 sanityWidth = table.outerWidth(); 24615 if (scrollX === "") { 24616 tableStyle.width = "100%"; 24617 if (ie67 && (table.find("tbody").height() > divBodyEl.offsetHeight || divBody.css("overflow-y") == "scroll")) { 24618 tableStyle.width = _fnStringToCss(table.outerWidth() - barWidth); 24619 } 24620 sanityWidth = table.outerWidth(); 24621 } else if (scrollXInner !== "") { 24622 tableStyle.width = _fnStringToCss(scrollXInner); 24623 sanityWidth = table.outerWidth(); 24624 } 24625 _fnApplyToChildren(zeroOut, headerSrcEls); 24626 _fnApplyToChildren(function(nSizer) { 24627 var style = window2.getComputedStyle ? window2.getComputedStyle(nSizer).width : _fnStringToCss($3(nSizer).width()); 24628 headerContent.push(nSizer.innerHTML); 24629 headerWidths.push(style); 24630 }, headerSrcEls); 24631 _fnApplyToChildren(function(nToSize, i2) { 24632 nToSize.style.width = headerWidths[i2]; 24633 }, headerTrgEls); 24634 $3(headerSrcEls).css("height", 0); 24635 if (footer) { 24636 _fnApplyToChildren(zeroOut, footerSrcEls); 24637 _fnApplyToChildren(function(nSizer) { 24638 footerContent.push(nSizer.innerHTML); 24639 footerWidths.push(_fnStringToCss($3(nSizer).css("width"))); 24640 }, footerSrcEls); 24641 _fnApplyToChildren(function(nToSize, i2) { 24642 nToSize.style.width = footerWidths[i2]; 24643 }, footerTrgEls); 24644 $3(footerSrcEls).height(0); 24645 } 24646 _fnApplyToChildren(function(nSizer, i2) { 24647 nSizer.innerHTML = '<div class="dataTables_sizing">' + headerContent[i2] + "</div>"; 24648 nSizer.childNodes[0].style.height = "0"; 24649 nSizer.childNodes[0].style.overflow = "hidden"; 24650 nSizer.style.width = headerWidths[i2]; 24651 }, headerSrcEls); 24652 if (footer) { 24653 _fnApplyToChildren(function(nSizer, i2) { 24654 nSizer.innerHTML = '<div class="dataTables_sizing">' + footerContent[i2] + "</div>"; 24655 nSizer.childNodes[0].style.height = "0"; 24656 nSizer.childNodes[0].style.overflow = "hidden"; 24657 nSizer.style.width = footerWidths[i2]; 24658 }, footerSrcEls); 24659 } 24660 if (Math.round(table.outerWidth()) < Math.round(sanityWidth)) { 24661 correction = divBodyEl.scrollHeight > divBodyEl.offsetHeight || divBody.css("overflow-y") == "scroll" ? sanityWidth + barWidth : sanityWidth; 24662 if (ie67 && (divBodyEl.scrollHeight > divBodyEl.offsetHeight || divBody.css("overflow-y") == "scroll")) { 24663 tableStyle.width = _fnStringToCss(correction - barWidth); 24664 } 24665 if (scrollX === "" || scrollXInner !== "") { 24666 _fnLog(settings, 1, "Possible column misalignment", 6); 24667 } 24668 } else { 24669 correction = "100%"; 24670 } 24671 divBodyStyle.width = _fnStringToCss(correction); 24672 divHeaderStyle.width = _fnStringToCss(correction); 24673 if (footer) { 24674 settings.nScrollFoot.style.width = _fnStringToCss(correction); 24675 } 24676 if (!scrollY) { 24677 if (ie67) { 24678 divBodyStyle.height = _fnStringToCss(tableEl.offsetHeight + barWidth); 24679 } 24680 } 24681 var iOuterWidth = table.outerWidth(); 24682 divHeaderTable[0].style.width = _fnStringToCss(iOuterWidth); 24683 divHeaderInnerStyle.width = _fnStringToCss(iOuterWidth); 24684 var bScrolling = table.height() > divBodyEl.clientHeight || divBody.css("overflow-y") == "scroll"; 24685 var padding = "padding" + (browser2.bScrollbarLeft ? "Left" : "Right"); 24686 divHeaderInnerStyle[padding] = bScrolling ? barWidth + "px" : "0px"; 24687 if (footer) { 24688 divFooterTable[0].style.width = _fnStringToCss(iOuterWidth); 24689 divFooterInner[0].style.width = _fnStringToCss(iOuterWidth); 24690 divFooterInner[0].style[padding] = bScrolling ? barWidth + "px" : "0px"; 24691 } 24692 table.children("colgroup").insertBefore(table.children("thead")); 24693 divBody.trigger("scroll"); 24694 if ((settings.bSorted || settings.bFiltered) && !settings._drawHold) { 24695 divBodyEl.scrollTop = 0; 24696 } 24697 } 24698 function _fnApplyToChildren(fn, an1, an2) { 24699 var index = 0, i2 = 0, iLen = an1.length; 24700 var nNode1, nNode2; 24701 while (i2 < iLen) { 24702 nNode1 = an1[i2].firstChild; 24703 nNode2 = an2 ? an2[i2].firstChild : null; 24704 while (nNode1) { 24705 if (nNode1.nodeType === 1) { 24706 if (an2) { 24707 fn(nNode1, nNode2, index); 24708 } else { 24709 fn(nNode1, index); 24710 } 24711 index++; 24712 } 24713 nNode1 = nNode1.nextSibling; 24714 nNode2 = an2 ? nNode2.nextSibling : null; 24715 } 24716 i2++; 24717 } 24718 } 24719 var __re_html_remove = /<.*?>/g; 24720 function _fnCalculateColumnWidths(oSettings) { 24721 var table = oSettings.nTable, columns = oSettings.aoColumns, scroll = oSettings.oScroll, scrollY = scroll.sY, scrollX = scroll.sX, scrollXInner = scroll.sXInner, columnCount = columns.length, visibleColumns = _fnGetColumns(oSettings, "bVisible"), headerCells = $3("th", oSettings.nTHead), tableWidthAttr = table.getAttribute("width"), tableContainer = table.parentNode, userInputs = false, i2, column, columnIdx, width, outerWidth, browser2 = oSettings.oBrowser, ie67 = browser2.bScrollOversize; 24722 var styleWidth = table.style.width; 24723 if (styleWidth && styleWidth.indexOf("%") !== -1) { 24724 tableWidthAttr = styleWidth; 24725 } 24726 var sizes = _fnConvertToWidth(_pluck(columns, "sWidthOrig"), tableContainer); 24727 for (i2 = 0; i2 < visibleColumns.length; i2++) { 24728 column = columns[visibleColumns[i2]]; 24729 if (column.sWidth !== null) { 24730 column.sWidth = sizes[i2]; 24731 userInputs = true; 24732 } 24733 } 24734 if (ie67 || !userInputs && !scrollX && !scrollY && columnCount == _fnVisbleColumns(oSettings) && columnCount == headerCells.length) { 24735 for (i2 = 0; i2 < columnCount; i2++) { 24736 var colIdx = _fnVisibleToColumnIndex(oSettings, i2); 24737 if (colIdx !== null) { 24738 columns[colIdx].sWidth = _fnStringToCss(headerCells.eq(i2).width()); 24739 } 24740 } 24741 } else { 24742 var tmpTable = $3(table).clone().css("visibility", "hidden").removeAttr("id"); 24743 tmpTable.find("tbody tr").remove(); 24744 var tr = $3("<tr/>").appendTo(tmpTable.find("tbody")); 24745 tmpTable.find("thead, tfoot").remove(); 24746 tmpTable.append($3(oSettings.nTHead).clone()).append($3(oSettings.nTFoot).clone()); 24747 tmpTable.find("tfoot th, tfoot td").css("width", ""); 24748 headerCells = _fnGetUniqueThs(oSettings, tmpTable.find("thead")[0]); 24749 for (i2 = 0; i2 < visibleColumns.length; i2++) { 24750 column = columns[visibleColumns[i2]]; 24751 headerCells[i2].style.width = column.sWidthOrig !== null && column.sWidthOrig !== "" ? _fnStringToCss(column.sWidthOrig) : ""; 24752 if (column.sWidthOrig && scrollX) { 24753 $3(headerCells[i2]).append($3("<div/>").css({ 24754 width: column.sWidthOrig, 24755 margin: 0, 24756 padding: 0, 24757 border: 0, 24758 height: 1 24759 })); 24760 } 24761 } 24762 if (oSettings.aoData.length) { 24763 for (i2 = 0; i2 < visibleColumns.length; i2++) { 24764 columnIdx = visibleColumns[i2]; 24765 column = columns[columnIdx]; 24766 $3(_fnGetWidestNode(oSettings, columnIdx)).clone(false).append(column.sContentPadding).appendTo(tr); 24767 } 24768 } 24769 $3("[name]", tmpTable).removeAttr("name"); 24770 var holder = $3("<div/>").css( 24771 scrollX || scrollY ? { 24772 position: "absolute", 24773 top: 0, 24774 left: 0, 24775 height: 1, 24776 right: 0, 24777 overflow: "hidden" 24778 } : {} 24779 ).append(tmpTable).appendTo(tableContainer); 24780 if (scrollX && scrollXInner) { 24781 tmpTable.width(scrollXInner); 24782 } else if (scrollX) { 24783 tmpTable.css("width", "auto"); 24784 tmpTable.removeAttr("width"); 24785 if (tmpTable.width() < tableContainer.clientWidth && tableWidthAttr) { 24786 tmpTable.width(tableContainer.clientWidth); 24787 } 24788 } else if (scrollY) { 24789 tmpTable.width(tableContainer.clientWidth); 24790 } else if (tableWidthAttr) { 24791 tmpTable.width(tableWidthAttr); 24792 } 24793 var total = 0; 24794 for (i2 = 0; i2 < visibleColumns.length; i2++) { 24795 var cell = $3(headerCells[i2]); 24796 var border = cell.outerWidth() - cell.width(); 24797 var bounding = browser2.bBounding ? Math.ceil(headerCells[i2].getBoundingClientRect().width) : cell.outerWidth(); 24798 total += bounding; 24799 columns[visibleColumns[i2]].sWidth = _fnStringToCss(bounding - border); 24800 } 24801 table.style.width = _fnStringToCss(total); 24802 holder.remove(); 24803 } 24804 if (tableWidthAttr) { 24805 table.style.width = _fnStringToCss(tableWidthAttr); 24806 } 24807 if ((tableWidthAttr || scrollX) && !oSettings._reszEvt) { 24808 var bindResize = function() { 24809 $3(window2).on("resize.DT-" + oSettings.sInstance, _fnThrottle(function() { 24810 _fnAdjustColumnSizing(oSettings); 24811 })); 24812 }; 24813 if (ie67) { 24814 setTimeout(bindResize, 1e3); 24815 } else { 24816 bindResize(); 24817 } 24818 oSettings._reszEvt = true; 24819 } 24820 } 24821 var _fnThrottle = DataTable2.util.throttle; 24822 function _fnConvertToWidth(widths, parent) { 24823 var els = []; 24824 var results = []; 24825 for (var i2 = 0; i2 < widths.length; i2++) { 24826 if (widths[i2]) { 24827 els.push( 24828 $3("<div/>").css("width", _fnStringToCss(widths[i2])).appendTo(parent || document2.body) 24829 ); 24830 } else { 24831 els.push(null); 24832 } 24833 } 24834 for (var i2 = 0; i2 < widths.length; i2++) { 24835 results.push(els[i2] ? els[i2][0].offsetWidth : null); 24836 } 24837 $3(els).remove(); 24838 return results; 24839 } 24840 function _fnGetWidestNode(settings, colIdx) { 24841 var idx = _fnGetMaxLenString(settings, colIdx); 24842 if (idx < 0) { 24843 return null; 24844 } 24845 var data = settings.aoData[idx]; 24846 return !data.nTr ? ( 24847 // Might not have been created when deferred rendering 24848 $3("<td/>").html(_fnGetCellData(settings, idx, colIdx, "display"))[0] 24849 ) : data.anCells[colIdx]; 24850 } 24851 function _fnGetMaxLenString(settings, colIdx) { 24852 var s, max = -1, maxIdx = -1; 24853 for (var i2 = 0, ien = settings.aoData.length; i2 < ien; i2++) { 24854 s = _fnGetCellData(settings, i2, colIdx, "display") + ""; 24855 s = s.replace(__re_html_remove, ""); 24856 s = s.replace(/ /g, " "); 24857 if (s.length > max) { 24858 max = s.length; 24859 maxIdx = i2; 24860 } 24861 } 24862 return maxIdx; 24863 } 24864 function _fnStringToCss(s) { 24865 if (s === null) { 24866 return "0px"; 24867 } 24868 if (typeof s == "number") { 24869 return s < 0 ? "0px" : s + "px"; 24870 } 24871 return s.match(/\d$/) ? s + "px" : s; 24872 } 24873 function _fnSortFlatten(settings) { 24874 var i2, iLen, k, kLen, aSort = [], aiOrig = [], aoColumns = settings.aoColumns, aDataSort, iCol, sType, srcCol, fixed = settings.aaSortingFixed, fixedObj = $3.isPlainObject(fixed), nestedSort = [], add = function(a) { 24875 if (a.length && !Array.isArray(a[0])) { 24876 nestedSort.push(a); 24877 } else { 24878 $3.merge(nestedSort, a); 24879 } 24880 }; 24881 if (Array.isArray(fixed)) { 24882 add(fixed); 24883 } 24884 if (fixedObj && fixed.pre) { 24885 add(fixed.pre); 24886 } 24887 add(settings.aaSorting); 24888 if (fixedObj && fixed.post) { 24889 add(fixed.post); 24890 } 24891 for (i2 = 0; i2 < nestedSort.length; i2++) { 24892 srcCol = nestedSort[i2][0]; 24893 aDataSort = aoColumns[srcCol].aDataSort; 24894 for (k = 0, kLen = aDataSort.length; k < kLen; k++) { 24895 iCol = aDataSort[k]; 24896 sType = aoColumns[iCol].sType || "string"; 24897 if (nestedSort[i2]._idx === undefined2) { 24898 nestedSort[i2]._idx = $3.inArray(nestedSort[i2][1], aoColumns[iCol].asSorting); 24899 } 24900 aSort.push({ 24901 src: srcCol, 24902 col: iCol, 24903 dir: nestedSort[i2][1], 24904 index: nestedSort[i2]._idx, 24905 type: sType, 24906 formatter: DataTable2.ext.type.order[sType + "-pre"] 24907 }); 24908 } 24909 } 24910 return aSort; 24911 } 24912 function _fnSort(oSettings) { 24913 var i2, ien, iLen, j, jLen, k, kLen, sDataType, nTh, aiOrig = [], oExtSort = DataTable2.ext.type.order, aoData = oSettings.aoData, aoColumns = oSettings.aoColumns, aDataSort, data, iCol, sType, oSort, formatters = 0, sortCol, displayMaster = oSettings.aiDisplayMaster, aSort; 24914 _fnColumnTypes(oSettings); 24915 aSort = _fnSortFlatten(oSettings); 24916 for (i2 = 0, ien = aSort.length; i2 < ien; i2++) { 24917 sortCol = aSort[i2]; 24918 if (sortCol.formatter) { 24919 formatters++; 24920 } 24921 _fnSortData(oSettings, sortCol.col); 24922 } 24923 if (_fnDataSource(oSettings) != "ssp" && aSort.length !== 0) { 24924 for (i2 = 0, iLen = displayMaster.length; i2 < iLen; i2++) { 24925 aiOrig[displayMaster[i2]] = i2; 24926 } 24927 if (formatters === aSort.length) { 24928 displayMaster.sort(function(a, b) { 24929 var x, y, k2, test, sort, len = aSort.length, dataA = aoData[a]._aSortData, dataB = aoData[b]._aSortData; 24930 for (k2 = 0; k2 < len; k2++) { 24931 sort = aSort[k2]; 24932 x = dataA[sort.col]; 24933 y = dataB[sort.col]; 24934 test = x < y ? -1 : x > y ? 1 : 0; 24935 if (test !== 0) { 24936 return sort.dir === "asc" ? test : -test; 24937 } 24938 } 24939 x = aiOrig[a]; 24940 y = aiOrig[b]; 24941 return x < y ? -1 : x > y ? 1 : 0; 24942 }); 24943 } else { 24944 displayMaster.sort(function(a, b) { 24945 var x, y, k2, l, test, sort, fn, len = aSort.length, dataA = aoData[a]._aSortData, dataB = aoData[b]._aSortData; 24946 for (k2 = 0; k2 < len; k2++) { 24947 sort = aSort[k2]; 24948 x = dataA[sort.col]; 24949 y = dataB[sort.col]; 24950 fn = oExtSort[sort.type + "-" + sort.dir] || oExtSort["string-" + sort.dir]; 24951 test = fn(x, y); 24952 if (test !== 0) { 24953 return test; 24954 } 24955 } 24956 x = aiOrig[a]; 24957 y = aiOrig[b]; 24958 return x < y ? -1 : x > y ? 1 : 0; 24959 }); 24960 } 24961 } 24962 oSettings.bSorted = true; 24963 } 24964 function _fnSortAria(settings) { 24965 var label; 24966 var nextSort; 24967 var columns = settings.aoColumns; 24968 var aSort = _fnSortFlatten(settings); 24969 var oAria = settings.oLanguage.oAria; 24970 for (var i2 = 0, iLen = columns.length; i2 < iLen; i2++) { 24971 var col = columns[i2]; 24972 var asSorting = col.asSorting; 24973 var sTitle = col.ariaTitle || col.sTitle.replace(/<.*?>/g, ""); 24974 var th = col.nTh; 24975 th.removeAttribute("aria-sort"); 24976 if (col.bSortable) { 24977 if (aSort.length > 0 && aSort[0].col == i2) { 24978 th.setAttribute("aria-sort", aSort[0].dir == "asc" ? "ascending" : "descending"); 24979 nextSort = asSorting[aSort[0].index + 1] || asSorting[0]; 24980 } else { 24981 nextSort = asSorting[0]; 24982 } 24983 label = sTitle + (nextSort === "asc" ? oAria.sSortAscending : oAria.sSortDescending); 24984 } else { 24985 label = sTitle; 24986 } 24987 th.setAttribute("aria-label", label); 24988 } 24989 } 24990 function _fnSortListener(settings, colIdx, append, callback) { 24991 var col = settings.aoColumns[colIdx]; 24992 var sorting = settings.aaSorting; 24993 var asSorting = col.asSorting; 24994 var nextSortIdx; 24995 var next = function(a, overflow) { 24996 var idx = a._idx; 24997 if (idx === undefined2) { 24998 idx = $3.inArray(a[1], asSorting); 24999 } 25000 return idx + 1 < asSorting.length ? idx + 1 : overflow ? null : 0; 25001 }; 25002 if (typeof sorting[0] === "number") { 25003 sorting = settings.aaSorting = [sorting]; 25004 } 25005 if (append && settings.oFeatures.bSortMulti) { 25006 var sortIdx = $3.inArray(colIdx, _pluck(sorting, "0")); 25007 if (sortIdx !== -1) { 25008 nextSortIdx = next(sorting[sortIdx], true); 25009 if (nextSortIdx === null && sorting.length === 1) { 25010 nextSortIdx = 0; 25011 } 25012 if (nextSortIdx === null) { 25013 sorting.splice(sortIdx, 1); 25014 } else { 25015 sorting[sortIdx][1] = asSorting[nextSortIdx]; 25016 sorting[sortIdx]._idx = nextSortIdx; 25017 } 25018 } else { 25019 sorting.push([colIdx, asSorting[0], 0]); 25020 sorting[sorting.length - 1]._idx = 0; 25021 } 25022 } else if (sorting.length && sorting[0][0] == colIdx) { 25023 nextSortIdx = next(sorting[0]); 25024 sorting.length = 1; 25025 sorting[0][1] = asSorting[nextSortIdx]; 25026 sorting[0]._idx = nextSortIdx; 25027 } else { 25028 sorting.length = 0; 25029 sorting.push([colIdx, asSorting[0]]); 25030 sorting[0]._idx = 0; 25031 } 25032 _fnReDraw(settings); 25033 if (typeof callback == "function") { 25034 callback(settings); 25035 } 25036 } 25037 function _fnSortAttachListener(settings, attachTo, colIdx, callback) { 25038 var col = settings.aoColumns[colIdx]; 25039 _fnBindAction(attachTo, {}, function(e) { 25040 if (col.bSortable === false) { 25041 return; 25042 } 25043 if (settings.oFeatures.bProcessing) { 25044 _fnProcessingDisplay(settings, true); 25045 setTimeout(function() { 25046 _fnSortListener(settings, colIdx, e.shiftKey, callback); 25047 if (_fnDataSource(settings) !== "ssp") { 25048 _fnProcessingDisplay(settings, false); 25049 } 25050 }, 0); 25051 } else { 25052 _fnSortListener(settings, colIdx, e.shiftKey, callback); 25053 } 25054 }); 25055 } 25056 function _fnSortingClasses(settings) { 25057 var oldSort = settings.aLastSort; 25058 var sortClass = settings.oClasses.sSortColumn; 25059 var sort = _fnSortFlatten(settings); 25060 var features = settings.oFeatures; 25061 var i2, ien, colIdx; 25062 if (features.bSort && features.bSortClasses) { 25063 for (i2 = 0, ien = oldSort.length; i2 < ien; i2++) { 25064 colIdx = oldSort[i2].src; 25065 $3(_pluck(settings.aoData, "anCells", colIdx)).removeClass(sortClass + (i2 < 2 ? i2 + 1 : 3)); 25066 } 25067 for (i2 = 0, ien = sort.length; i2 < ien; i2++) { 25068 colIdx = sort[i2].src; 25069 $3(_pluck(settings.aoData, "anCells", colIdx)).addClass(sortClass + (i2 < 2 ? i2 + 1 : 3)); 25070 } 25071 } 25072 settings.aLastSort = sort; 25073 } 25074 function _fnSortData(settings, idx) { 25075 var column = settings.aoColumns[idx]; 25076 var customSort = DataTable2.ext.order[column.sSortDataType]; 25077 var customData; 25078 if (customSort) { 25079 customData = customSort.call( 25080 settings.oInstance, 25081 settings, 25082 idx, 25083 _fnColumnIndexToVisible(settings, idx) 25084 ); 25085 } 25086 var row, cellData; 25087 var formatter = DataTable2.ext.type.order[column.sType + "-pre"]; 25088 for (var i2 = 0, ien = settings.aoData.length; i2 < ien; i2++) { 25089 row = settings.aoData[i2]; 25090 if (!row._aSortData) { 25091 row._aSortData = []; 25092 } 25093 if (!row._aSortData[idx] || customSort) { 25094 cellData = customSort ? customData[i2] : ( 25095 // If there was a custom sort function, use data from there 25096 _fnGetCellData(settings, i2, idx, "sort") 25097 ); 25098 row._aSortData[idx] = formatter ? formatter(cellData) : cellData; 25099 } 25100 } 25101 } 25102 function _fnSaveState(settings) { 25103 if (settings._bLoadingState) { 25104 return; 25105 } 25106 var state = { 25107 time: +/* @__PURE__ */ new Date(), 25108 start: settings._iDisplayStart, 25109 length: settings._iDisplayLength, 25110 order: $3.extend(true, [], settings.aaSorting), 25111 search: _fnSearchToCamel(settings.oPreviousSearch), 25112 columns: $3.map(settings.aoColumns, function(col, i2) { 25113 return { 25114 visible: col.bVisible, 25115 search: _fnSearchToCamel(settings.aoPreSearchCols[i2]) 25116 }; 25117 }) 25118 }; 25119 settings.oSavedState = state; 25120 _fnCallbackFire(settings, "aoStateSaveParams", "stateSaveParams", [settings, state]); 25121 if (settings.oFeatures.bStateSave && !settings.bDestroying) { 25122 settings.fnStateSaveCallback.call(settings.oInstance, settings, state); 25123 } 25124 } 25125 function _fnLoadState(settings, oInit, callback) { 25126 if (!settings.oFeatures.bStateSave) { 25127 callback(); 25128 return; 25129 } 25130 var loaded = function(state2) { 25131 _fnImplementState(settings, state2, callback); 25132 }; 25133 var state = settings.fnStateLoadCallback.call(settings.oInstance, settings, loaded); 25134 if (state !== undefined2) { 25135 _fnImplementState(settings, state, callback); 25136 } 25137 return true; 25138 } 25139 function _fnImplementState(settings, s, callback) { 25140 var i2, ien; 25141 var columns = settings.aoColumns; 25142 settings._bLoadingState = true; 25143 var api = settings._bInitComplete ? new DataTable2.Api(settings) : null; 25144 if (!s || !s.time) { 25145 settings._bLoadingState = false; 25146 callback(); 25147 return; 25148 } 25149 var abStateLoad = _fnCallbackFire(settings, "aoStateLoadParams", "stateLoadParams", [settings, s]); 25150 if ($3.inArray(false, abStateLoad) !== -1) { 25151 settings._bLoadingState = false; 25152 callback(); 25153 return; 25154 } 25155 var duration = settings.iStateDuration; 25156 if (duration > 0 && s.time < +/* @__PURE__ */ new Date() - duration * 1e3) { 25157 settings._bLoadingState = false; 25158 callback(); 25159 return; 25160 } 25161 if (s.columns && columns.length !== s.columns.length) { 25162 settings._bLoadingState = false; 25163 callback(); 25164 return; 25165 } 25166 settings.oLoadedState = $3.extend(true, {}, s); 25167 if (s.length !== undefined2) { 25168 if (api) { 25169 api.page.len(s.length); 25170 } else { 25171 settings._iDisplayLength = s.length; 25172 } 25173 } 25174 if (s.start !== undefined2) { 25175 if (api === null) { 25176 settings._iDisplayStart = s.start; 25177 settings.iInitDisplayStart = s.start; 25178 } else { 25179 _fnPageChange(settings, s.start / settings._iDisplayLength); 25180 } 25181 } 25182 if (s.order !== undefined2) { 25183 settings.aaSorting = []; 25184 $3.each(s.order, function(i3, col2) { 25185 settings.aaSorting.push( 25186 col2[0] >= columns.length ? [0, col2[1]] : col2 25187 ); 25188 }); 25189 } 25190 if (s.search !== undefined2) { 25191 $3.extend(settings.oPreviousSearch, _fnSearchToHung(s.search)); 25192 } 25193 if (s.columns) { 25194 for (i2 = 0, ien = s.columns.length; i2 < ien; i2++) { 25195 var col = s.columns[i2]; 25196 if (col.visible !== undefined2) { 25197 if (api) { 25198 api.column(i2).visible(col.visible, false); 25199 } else { 25200 columns[i2].bVisible = col.visible; 25201 } 25202 } 25203 if (col.search !== undefined2) { 25204 $3.extend(settings.aoPreSearchCols[i2], _fnSearchToHung(col.search)); 25205 } 25206 } 25207 if (api) { 25208 api.columns.adjust(); 25209 } 25210 } 25211 settings._bLoadingState = false; 25212 _fnCallbackFire(settings, "aoStateLoaded", "stateLoaded", [settings, s]); 25213 callback(); 25214 } 25215 ; 25216 function _fnSettingsFromNode(table) { 25217 var settings = DataTable2.settings; 25218 var idx = $3.inArray(table, _pluck(settings, "nTable")); 25219 return idx !== -1 ? settings[idx] : null; 25220 } 25221 function _fnLog(settings, level, msg, tn) { 25222 msg = "DataTables warning: " + (settings ? "table id=" + settings.sTableId + " - " : "") + msg; 25223 if (tn) { 25224 msg += ". For more information about this error, please see https://datatables.net/tn/" + tn; 25225 } 25226 if (!level) { 25227 var ext = DataTable2.ext; 25228 var type = ext.sErrMode || ext.errMode; 25229 if (settings) { 25230 _fnCallbackFire(settings, null, "error", [settings, tn, msg]); 25231 } 25232 if (type == "alert") { 25233 alert(msg); 25234 } else if (type == "throw") { 25235 throw new Error(msg); 25236 } else if (typeof type == "function") { 25237 type(settings, tn, msg); 25238 } 25239 } else if (window2.console && console.log) { 25240 console.log(msg); 25241 } 25242 } 25243 function _fnMap(ret, src, name, mappedName) { 25244 if (Array.isArray(name)) { 25245 $3.each(name, function(i2, val) { 25246 if (Array.isArray(val)) { 25247 _fnMap(ret, src, val[0], val[1]); 25248 } else { 25249 _fnMap(ret, src, val); 25250 } 25251 }); 25252 return; 25253 } 25254 if (mappedName === undefined2) { 25255 mappedName = name; 25256 } 25257 if (src[name] !== undefined2) { 25258 ret[mappedName] = src[name]; 25259 } 25260 } 25261 function _fnExtend(out, extender, breakRefs) { 25262 var val; 25263 for (var prop in extender) { 25264 if (extender.hasOwnProperty(prop)) { 25265 val = extender[prop]; 25266 if ($3.isPlainObject(val)) { 25267 if (!$3.isPlainObject(out[prop])) { 25268 out[prop] = {}; 25269 } 25270 $3.extend(true, out[prop], val); 25271 } else if (breakRefs && prop !== "data" && prop !== "aaData" && Array.isArray(val)) { 25272 out[prop] = val.slice(); 25273 } else { 25274 out[prop] = val; 25275 } 25276 } 25277 } 25278 return out; 25279 } 25280 function _fnBindAction(n, oData, fn) { 25281 $3(n).on("click.DT", oData, function(e) { 25282 $3(n).trigger("blur"); 25283 fn(e); 25284 }).on("keypress.DT", oData, function(e) { 25285 if (e.which === 13) { 25286 e.preventDefault(); 25287 fn(e); 25288 } 25289 }).on("selectstart.DT", function() { 25290 return false; 25291 }); 25292 } 25293 function _fnCallbackReg(oSettings, sStore, fn, sName) { 25294 if (fn) { 25295 oSettings[sStore].push({ 25296 "fn": fn, 25297 "sName": sName 25298 }); 25299 } 25300 } 25301 function _fnCallbackFire(settings, callbackArr, eventName, args) { 25302 var ret = []; 25303 if (callbackArr) { 25304 ret = $3.map(settings[callbackArr].slice().reverse(), function(val, i2) { 25305 return val.fn.apply(settings.oInstance, args); 25306 }); 25307 } 25308 if (eventName !== null) { 25309 var e = $3.Event(eventName + ".dt"); 25310 var table = $3(settings.nTable); 25311 table.trigger(e, args); 25312 if (table.parents("body").length === 0) { 25313 $3("body").trigger(e, args); 25314 } 25315 ret.push(e.result); 25316 } 25317 return ret; 25318 } 25319 function _fnLengthOverflow(settings) { 25320 var start = settings._iDisplayStart, end = settings.fnDisplayEnd(), len = settings._iDisplayLength; 25321 if (start >= end) { 25322 start = end - len; 25323 } 25324 start -= start % len; 25325 if (len === -1 || start < 0) { 25326 start = 0; 25327 } 25328 settings._iDisplayStart = start; 25329 } 25330 function _fnRenderer(settings, type) { 25331 var renderer = settings.renderer; 25332 var host = DataTable2.ext.renderer[type]; 25333 if ($3.isPlainObject(renderer) && renderer[type]) { 25334 return host[renderer[type]] || host._; 25335 } else if (typeof renderer === "string") { 25336 return host[renderer] || host._; 25337 } 25338 return host._; 25339 } 25340 function _fnDataSource(settings) { 25341 if (settings.oFeatures.bServerSide) { 25342 return "ssp"; 25343 } else if (settings.ajax || settings.sAjaxSource) { 25344 return "ajax"; 25345 } 25346 return "dom"; 25347 } 25348 var __apiStruct = []; 25349 var __arrayProto = Array.prototype; 25350 var _toSettings = function(mixed) { 25351 var idx, jq; 25352 var settings = DataTable2.settings; 25353 var tables = $3.map(settings, function(el, i2) { 25354 return el.nTable; 25355 }); 25356 if (!mixed) { 25357 return []; 25358 } else if (mixed.nTable && mixed.oApi) { 25359 return [mixed]; 25360 } else if (mixed.nodeName && mixed.nodeName.toLowerCase() === "table") { 25361 idx = $3.inArray(mixed, tables); 25362 return idx !== -1 ? [settings[idx]] : null; 25363 } else if (mixed && typeof mixed.settings === "function") { 25364 return mixed.settings().toArray(); 25365 } else if (typeof mixed === "string") { 25366 jq = $3(mixed); 25367 } else if (mixed instanceof $3) { 25368 jq = mixed; 25369 } 25370 if (jq) { 25371 return jq.map(function(i2) { 25372 idx = $3.inArray(this, tables); 25373 return idx !== -1 ? settings[idx] : null; 25374 }).toArray(); 25375 } 25376 }; 25377 _Api = function(context, data) { 25378 if (!(this instanceof _Api)) { 25379 return new _Api(context, data); 25380 } 25381 var settings = []; 25382 var ctxSettings = function(o) { 25383 var a = _toSettings(o); 25384 if (a) { 25385 settings.push.apply(settings, a); 25386 } 25387 }; 25388 if (Array.isArray(context)) { 25389 for (var i2 = 0, ien = context.length; i2 < ien; i2++) { 25390 ctxSettings(context[i2]); 25391 } 25392 } else { 25393 ctxSettings(context); 25394 } 25395 this.context = _unique(settings); 25396 if (data) { 25397 $3.merge(this, data); 25398 } 25399 this.selector = { 25400 rows: null, 25401 cols: null, 25402 opts: null 25403 }; 25404 _Api.extend(this, this, __apiStruct); 25405 }; 25406 DataTable2.Api = _Api; 25407 $3.extend(_Api.prototype, { 25408 any: function() { 25409 return this.count() !== 0; 25410 }, 25411 concat: __arrayProto.concat, 25412 context: [], 25413 // array of table settings objects 25414 count: function() { 25415 return this.flatten().length; 25416 }, 25417 each: function(fn) { 25418 for (var i2 = 0, ien = this.length; i2 < ien; i2++) { 25419 fn.call(this, this[i2], i2, this); 25420 } 25421 return this; 25422 }, 25423 eq: function(idx) { 25424 var ctx = this.context; 25425 return ctx.length > idx ? new _Api(ctx[idx], this[idx]) : null; 25426 }, 25427 filter: function(fn) { 25428 var a = []; 25429 if (__arrayProto.filter) { 25430 a = __arrayProto.filter.call(this, fn, this); 25431 } else { 25432 for (var i2 = 0, ien = this.length; i2 < ien; i2++) { 25433 if (fn.call(this, this[i2], i2, this)) { 25434 a.push(this[i2]); 25435 } 25436 } 25437 } 25438 return new _Api(this.context, a); 25439 }, 25440 flatten: function() { 25441 var a = []; 25442 return new _Api(this.context, a.concat.apply(a, this.toArray())); 25443 }, 25444 join: __arrayProto.join, 25445 indexOf: __arrayProto.indexOf || function(obj, start) { 25446 for (var i2 = start || 0, ien = this.length; i2 < ien; i2++) { 25447 if (this[i2] === obj) { 25448 return i2; 25449 } 25450 } 25451 return -1; 25452 }, 25453 iterator: function(flatten, type, fn, alwaysNew) { 25454 var a = [], ret, i2, ien, j, jen, context = this.context, rows, items, item, selector = this.selector; 25455 if (typeof flatten === "string") { 25456 alwaysNew = fn; 25457 fn = type; 25458 type = flatten; 25459 flatten = false; 25460 } 25461 for (i2 = 0, ien = context.length; i2 < ien; i2++) { 25462 var apiInst = new _Api(context[i2]); 25463 if (type === "table") { 25464 ret = fn.call(apiInst, context[i2], i2); 25465 if (ret !== undefined2) { 25466 a.push(ret); 25467 } 25468 } else if (type === "columns" || type === "rows") { 25469 ret = fn.call(apiInst, context[i2], this[i2], i2); 25470 if (ret !== undefined2) { 25471 a.push(ret); 25472 } 25473 } else if (type === "column" || type === "column-rows" || type === "row" || type === "cell") { 25474 items = this[i2]; 25475 if (type === "column-rows") { 25476 rows = _selector_row_indexes(context[i2], selector.opts); 25477 } 25478 for (j = 0, jen = items.length; j < jen; j++) { 25479 item = items[j]; 25480 if (type === "cell") { 25481 ret = fn.call(apiInst, context[i2], item.row, item.column, i2, j); 25482 } else { 25483 ret = fn.call(apiInst, context[i2], item, i2, j, rows); 25484 } 25485 if (ret !== undefined2) { 25486 a.push(ret); 25487 } 25488 } 25489 } 25490 } 25491 if (a.length || alwaysNew) { 25492 var api = new _Api(context, flatten ? a.concat.apply([], a) : a); 25493 var apiSelector = api.selector; 25494 apiSelector.rows = selector.rows; 25495 apiSelector.cols = selector.cols; 25496 apiSelector.opts = selector.opts; 25497 return api; 25498 } 25499 return this; 25500 }, 25501 lastIndexOf: __arrayProto.lastIndexOf || function(obj, start) { 25502 return this.indexOf.apply(this.toArray.reverse(), arguments); 25503 }, 25504 length: 0, 25505 map: function(fn) { 25506 var a = []; 25507 if (__arrayProto.map) { 25508 a = __arrayProto.map.call(this, fn, this); 25509 } else { 25510 for (var i2 = 0, ien = this.length; i2 < ien; i2++) { 25511 a.push(fn.call(this, this[i2], i2)); 25512 } 25513 } 25514 return new _Api(this.context, a); 25515 }, 25516 pluck: function(prop) { 25517 var fn = DataTable2.util.get(prop); 25518 return this.map(function(el) { 25519 return fn(el); 25520 }); 25521 }, 25522 pop: __arrayProto.pop, 25523 push: __arrayProto.push, 25524 // Does not return an API instance 25525 reduce: __arrayProto.reduce || function(fn, init) { 25526 return _fnReduce(this, fn, init, 0, this.length, 1); 25527 }, 25528 reduceRight: __arrayProto.reduceRight || function(fn, init) { 25529 return _fnReduce(this, fn, init, this.length - 1, -1, -1); 25530 }, 25531 reverse: __arrayProto.reverse, 25532 // Object with rows, columns and opts 25533 selector: null, 25534 shift: __arrayProto.shift, 25535 slice: function() { 25536 return new _Api(this.context, this); 25537 }, 25538 sort: __arrayProto.sort, 25539 // ? name - order? 25540 splice: __arrayProto.splice, 25541 toArray: function() { 25542 return __arrayProto.slice.call(this); 25543 }, 25544 to$: function() { 25545 return $3(this); 25546 }, 25547 toJQuery: function() { 25548 return $3(this); 25549 }, 25550 unique: function() { 25551 return new _Api(this.context, _unique(this)); 25552 }, 25553 unshift: __arrayProto.unshift 25554 }); 25555 _Api.extend = function(scope, obj, ext) { 25556 if (!ext.length || !obj || !(obj instanceof _Api) && !obj.__dt_wrapper) { 25557 return; 25558 } 25559 var i2, ien, struct, methodScoping = function(scope2, fn, struc) { 25560 return function() { 25561 var ret = fn.apply(scope2, arguments); 25562 _Api.extend(ret, ret, struc.methodExt); 25563 return ret; 25564 }; 25565 }; 25566 for (i2 = 0, ien = ext.length; i2 < ien; i2++) { 25567 struct = ext[i2]; 25568 obj[struct.name] = struct.type === "function" ? methodScoping(scope, struct.val, struct) : struct.type === "object" ? {} : struct.val; 25569 obj[struct.name].__dt_wrapper = true; 25570 _Api.extend(scope, obj[struct.name], struct.propExt); 25571 } 25572 }; 25573 _Api.register = _api_register = function(name, val) { 25574 if (Array.isArray(name)) { 25575 for (var j = 0, jen = name.length; j < jen; j++) { 25576 _Api.register(name[j], val); 25577 } 25578 return; 25579 } 25580 var i2, ien, heir = name.split("."), struct = __apiStruct, key, method; 25581 var find = function(src2, name2) { 25582 for (var i3 = 0, ien2 = src2.length; i3 < ien2; i3++) { 25583 if (src2[i3].name === name2) { 25584 return src2[i3]; 25585 } 25586 } 25587 return null; 25588 }; 25589 for (i2 = 0, ien = heir.length; i2 < ien; i2++) { 25590 method = heir[i2].indexOf("()") !== -1; 25591 key = method ? heir[i2].replace("()", "") : heir[i2]; 25592 var src = find(struct, key); 25593 if (!src) { 25594 src = { 25595 name: key, 25596 val: {}, 25597 methodExt: [], 25598 propExt: [], 25599 type: "object" 25600 }; 25601 struct.push(src); 25602 } 25603 if (i2 === ien - 1) { 25604 src.val = val; 25605 src.type = typeof val === "function" ? "function" : $3.isPlainObject(val) ? "object" : "other"; 25606 } else { 25607 struct = method ? src.methodExt : src.propExt; 25608 } 25609 } 25610 }; 25611 _Api.registerPlural = _api_registerPlural = function(pluralName, singularName, val) { 25612 _Api.register(pluralName, val); 25613 _Api.register(singularName, function() { 25614 var ret = val.apply(this, arguments); 25615 if (ret === this) { 25616 return this; 25617 } else if (ret instanceof _Api) { 25618 return ret.length ? Array.isArray(ret[0]) ? new _Api(ret.context, ret[0]) : ( 25619 // Array results are 'enhanced' 25620 ret[0] 25621 ) : undefined2; 25622 } 25623 return ret; 25624 }); 25625 }; 25626 var __table_selector = function(selector, a) { 25627 if (Array.isArray(selector)) { 25628 return $3.map(selector, function(item) { 25629 return __table_selector(item, a); 25630 }); 25631 } 25632 if (typeof selector === "number") { 25633 return [a[selector]]; 25634 } 25635 var nodes = $3.map(a, function(el, i2) { 25636 return el.nTable; 25637 }); 25638 return $3(nodes).filter(selector).map(function(i2) { 25639 var idx = $3.inArray(this, nodes); 25640 return a[idx]; 25641 }).toArray(); 25642 }; 25643 _api_register("tables()", function(selector) { 25644 return selector !== undefined2 && selector !== null ? new _Api(__table_selector(selector, this.context)) : this; 25645 }); 25646 _api_register("table()", function(selector) { 25647 var tables = this.tables(selector); 25648 var ctx = tables.context; 25649 return ctx.length ? new _Api(ctx[0]) : tables; 25650 }); 25651 _api_registerPlural("tables().nodes()", "table().node()", function() { 25652 return this.iterator("table", function(ctx) { 25653 return ctx.nTable; 25654 }, 1); 25655 }); 25656 _api_registerPlural("tables().body()", "table().body()", function() { 25657 return this.iterator("table", function(ctx) { 25658 return ctx.nTBody; 25659 }, 1); 25660 }); 25661 _api_registerPlural("tables().header()", "table().header()", function() { 25662 return this.iterator("table", function(ctx) { 25663 return ctx.nTHead; 25664 }, 1); 25665 }); 25666 _api_registerPlural("tables().footer()", "table().footer()", function() { 25667 return this.iterator("table", function(ctx) { 25668 return ctx.nTFoot; 25669 }, 1); 25670 }); 25671 _api_registerPlural("tables().containers()", "table().container()", function() { 25672 return this.iterator("table", function(ctx) { 25673 return ctx.nTableWrapper; 25674 }, 1); 25675 }); 25676 _api_register("draw()", function(paging) { 25677 return this.iterator("table", function(settings) { 25678 if (paging === "page") { 25679 _fnDraw(settings); 25680 } else { 25681 if (typeof paging === "string") { 25682 paging = paging === "full-hold" ? false : true; 25683 } 25684 _fnReDraw(settings, paging === false); 25685 } 25686 }); 25687 }); 25688 _api_register("page()", function(action) { 25689 if (action === undefined2) { 25690 return this.page.info().page; 25691 } 25692 return this.iterator("table", function(settings) { 25693 _fnPageChange(settings, action); 25694 }); 25695 }); 25696 _api_register("page.info()", function(action) { 25697 if (this.context.length === 0) { 25698 return undefined2; 25699 } 25700 var settings = this.context[0], start = settings._iDisplayStart, len = settings.oFeatures.bPaginate ? settings._iDisplayLength : -1, visRecords = settings.fnRecordsDisplay(), all = len === -1; 25701 return { 25702 "page": all ? 0 : Math.floor(start / len), 25703 "pages": all ? 1 : Math.ceil(visRecords / len), 25704 "start": start, 25705 "end": settings.fnDisplayEnd(), 25706 "length": len, 25707 "recordsTotal": settings.fnRecordsTotal(), 25708 "recordsDisplay": visRecords, 25709 "serverSide": _fnDataSource(settings) === "ssp" 25710 }; 25711 }); 25712 _api_register("page.len()", function(len) { 25713 if (len === undefined2) { 25714 return this.context.length !== 0 ? this.context[0]._iDisplayLength : undefined2; 25715 } 25716 return this.iterator("table", function(settings) { 25717 _fnLengthChange(settings, len); 25718 }); 25719 }); 25720 var __reload = function(settings, holdPosition, callback) { 25721 if (callback) { 25722 var api = new _Api(settings); 25723 api.one("draw", function() { 25724 callback(api.ajax.json()); 25725 }); 25726 } 25727 if (_fnDataSource(settings) == "ssp") { 25728 _fnReDraw(settings, holdPosition); 25729 } else { 25730 _fnProcessingDisplay(settings, true); 25731 var xhr = settings.jqXHR; 25732 if (xhr && xhr.readyState !== 4) { 25733 xhr.abort(); 25734 } 25735 _fnBuildAjax(settings, [], function(json) { 25736 _fnClearTable(settings); 25737 var data = _fnAjaxDataSrc(settings, json); 25738 for (var i2 = 0, ien = data.length; i2 < ien; i2++) { 25739 _fnAddData(settings, data[i2]); 25740 } 25741 _fnReDraw(settings, holdPosition); 25742 _fnProcessingDisplay(settings, false); 25743 }); 25744 } 25745 }; 25746 _api_register("ajax.json()", function() { 25747 var ctx = this.context; 25748 if (ctx.length > 0) { 25749 return ctx[0].json; 25750 } 25751 }); 25752 _api_register("ajax.params()", function() { 25753 var ctx = this.context; 25754 if (ctx.length > 0) { 25755 return ctx[0].oAjaxData; 25756 } 25757 }); 25758 _api_register("ajax.reload()", function(callback, resetPaging) { 25759 return this.iterator("table", function(settings) { 25760 __reload(settings, resetPaging === false, callback); 25761 }); 25762 }); 25763 _api_register("ajax.url()", function(url) { 25764 var ctx = this.context; 25765 if (url === undefined2) { 25766 if (ctx.length === 0) { 25767 return undefined2; 25768 } 25769 ctx = ctx[0]; 25770 return ctx.ajax ? $3.isPlainObject(ctx.ajax) ? ctx.ajax.url : ctx.ajax : ctx.sAjaxSource; 25771 } 25772 return this.iterator("table", function(settings) { 25773 if ($3.isPlainObject(settings.ajax)) { 25774 settings.ajax.url = url; 25775 } else { 25776 settings.ajax = url; 25777 } 25778 }); 25779 }); 25780 _api_register("ajax.url().load()", function(callback, resetPaging) { 25781 return this.iterator("table", function(ctx) { 25782 __reload(ctx, resetPaging === false, callback); 25783 }); 25784 }); 25785 var _selector_run = function(type, selector, selectFn, settings, opts) { 25786 var out = [], res, a, i2, ien, j, jen, selectorType = typeof selector; 25787 if (!selector || selectorType === "string" || selectorType === "function" || selector.length === undefined2) { 25788 selector = [selector]; 25789 } 25790 for (i2 = 0, ien = selector.length; i2 < ien; i2++) { 25791 a = selector[i2] && selector[i2].split && !selector[i2].match(/[\[\(:]/) ? selector[i2].split(",") : [selector[i2]]; 25792 for (j = 0, jen = a.length; j < jen; j++) { 25793 res = selectFn(typeof a[j] === "string" ? a[j].trim() : a[j]); 25794 if (res && res.length) { 25795 out = out.concat(res); 25796 } 25797 } 25798 } 25799 var ext = _ext.selector[type]; 25800 if (ext.length) { 25801 for (i2 = 0, ien = ext.length; i2 < ien; i2++) { 25802 out = ext[i2](settings, opts, out); 25803 } 25804 } 25805 return _unique(out); 25806 }; 25807 var _selector_opts = function(opts) { 25808 if (!opts) { 25809 opts = {}; 25810 } 25811 if (opts.filter && opts.search === undefined2) { 25812 opts.search = opts.filter; 25813 } 25814 return $3.extend({ 25815 search: "none", 25816 order: "current", 25817 page: "all" 25818 }, opts); 25819 }; 25820 var _selector_first = function(inst) { 25821 for (var i2 = 0, ien = inst.length; i2 < ien; i2++) { 25822 if (inst[i2].length > 0) { 25823 inst[0] = inst[i2]; 25824 inst[0].length = 1; 25825 inst.length = 1; 25826 inst.context = [inst.context[i2]]; 25827 return inst; 25828 } 25829 } 25830 inst.length = 0; 25831 return inst; 25832 }; 25833 var _selector_row_indexes = function(settings, opts) { 25834 var i2, ien, tmp, a = [], displayFiltered = settings.aiDisplay, displayMaster = settings.aiDisplayMaster; 25835 var search = opts.search, order = opts.order, page = opts.page; 25836 if (_fnDataSource(settings) == "ssp") { 25837 return search === "removed" ? [] : _range(0, displayMaster.length); 25838 } else if (page == "current") { 25839 for (i2 = settings._iDisplayStart, ien = settings.fnDisplayEnd(); i2 < ien; i2++) { 25840 a.push(displayFiltered[i2]); 25841 } 25842 } else if (order == "current" || order == "applied") { 25843 if (search == "none") { 25844 a = displayMaster.slice(); 25845 } else if (search == "applied") { 25846 a = displayFiltered.slice(); 25847 } else if (search == "removed") { 25848 var displayFilteredMap = {}; 25849 for (var i2 = 0, ien = displayFiltered.length; i2 < ien; i2++) { 25850 displayFilteredMap[displayFiltered[i2]] = null; 25851 } 25852 a = $3.map(displayMaster, function(el) { 25853 return !displayFilteredMap.hasOwnProperty(el) ? el : null; 25854 }); 25855 } 25856 } else if (order == "index" || order == "original") { 25857 for (i2 = 0, ien = settings.aoData.length; i2 < ien; i2++) { 25858 if (search == "none") { 25859 a.push(i2); 25860 } else { 25861 tmp = $3.inArray(i2, displayFiltered); 25862 if (tmp === -1 && search == "removed" || tmp >= 0 && search == "applied") { 25863 a.push(i2); 25864 } 25865 } 25866 } 25867 } 25868 return a; 25869 }; 25870 var __row_selector = function(settings, selector, opts) { 25871 var rows; 25872 var run = function(sel) { 25873 var selInt = _intVal(sel); 25874 var i2, ien; 25875 var aoData = settings.aoData; 25876 if (selInt !== null && !opts) { 25877 return [selInt]; 25878 } 25879 if (!rows) { 25880 rows = _selector_row_indexes(settings, opts); 25881 } 25882 if (selInt !== null && $3.inArray(selInt, rows) !== -1) { 25883 return [selInt]; 25884 } else if (sel === null || sel === undefined2 || sel === "") { 25885 return rows; 25886 } 25887 if (typeof sel === "function") { 25888 return $3.map(rows, function(idx) { 25889 var row = aoData[idx]; 25890 return sel(idx, row._aData, row.nTr) ? idx : null; 25891 }); 25892 } 25893 if (sel.nodeName) { 25894 var rowIdx = sel._DT_RowIndex; 25895 var cellIdx = sel._DT_CellIndex; 25896 if (rowIdx !== undefined2) { 25897 return aoData[rowIdx] && aoData[rowIdx].nTr === sel ? [rowIdx] : []; 25898 } else if (cellIdx) { 25899 return aoData[cellIdx.row] && aoData[cellIdx.row].nTr === sel.parentNode ? [cellIdx.row] : []; 25900 } else { 25901 var host = $3(sel).closest("*[data-dt-row]"); 25902 return host.length ? [host.data("dt-row")] : []; 25903 } 25904 } 25905 if (typeof sel === "string" && sel.charAt(0) === "#") { 25906 var rowObj = settings.aIds[sel.replace(/^#/, "")]; 25907 if (rowObj !== undefined2) { 25908 return [rowObj.idx]; 25909 } 25910 } 25911 var nodes = _removeEmpty( 25912 _pluck_order(settings.aoData, rows, "nTr") 25913 ); 25914 return $3(nodes).filter(sel).map(function() { 25915 return this._DT_RowIndex; 25916 }).toArray(); 25917 }; 25918 return _selector_run("row", selector, run, settings, opts); 25919 }; 25920 _api_register("rows()", function(selector, opts) { 25921 if (selector === undefined2) { 25922 selector = ""; 25923 } else if ($3.isPlainObject(selector)) { 25924 opts = selector; 25925 selector = ""; 25926 } 25927 opts = _selector_opts(opts); 25928 var inst = this.iterator("table", function(settings) { 25929 return __row_selector(settings, selector, opts); 25930 }, 1); 25931 inst.selector.rows = selector; 25932 inst.selector.opts = opts; 25933 return inst; 25934 }); 25935 _api_register("rows().nodes()", function() { 25936 return this.iterator("row", function(settings, row) { 25937 return settings.aoData[row].nTr || undefined2; 25938 }, 1); 25939 }); 25940 _api_register("rows().data()", function() { 25941 return this.iterator(true, "rows", function(settings, rows) { 25942 return _pluck_order(settings.aoData, rows, "_aData"); 25943 }, 1); 25944 }); 25945 _api_registerPlural("rows().cache()", "row().cache()", function(type) { 25946 return this.iterator("row", function(settings, row) { 25947 var r = settings.aoData[row]; 25948 return type === "search" ? r._aFilterData : r._aSortData; 25949 }, 1); 25950 }); 25951 _api_registerPlural("rows().invalidate()", "row().invalidate()", function(src) { 25952 return this.iterator("row", function(settings, row) { 25953 _fnInvalidate(settings, row, src); 25954 }); 25955 }); 25956 _api_registerPlural("rows().indexes()", "row().index()", function() { 25957 return this.iterator("row", function(settings, row) { 25958 return row; 25959 }, 1); 25960 }); 25961 _api_registerPlural("rows().ids()", "row().id()", function(hash) { 25962 var a = []; 25963 var context = this.context; 25964 for (var i2 = 0, ien = context.length; i2 < ien; i2++) { 25965 for (var j = 0, jen = this[i2].length; j < jen; j++) { 25966 var id = context[i2].rowIdFn(context[i2].aoData[this[i2][j]]._aData); 25967 a.push((hash === true ? "#" : "") + id); 25968 } 25969 } 25970 return new _Api(context, a); 25971 }); 25972 _api_registerPlural("rows().remove()", "row().remove()", function() { 25973 var that = this; 25974 this.iterator("row", function(settings, row, thatIdx) { 25975 var data = settings.aoData; 25976 var rowData = data[row]; 25977 var i2, ien, j, jen; 25978 var loopRow, loopCells; 25979 data.splice(row, 1); 25980 for (i2 = 0, ien = data.length; i2 < ien; i2++) { 25981 loopRow = data[i2]; 25982 loopCells = loopRow.anCells; 25983 if (loopRow.nTr !== null) { 25984 loopRow.nTr._DT_RowIndex = i2; 25985 } 25986 if (loopCells !== null) { 25987 for (j = 0, jen = loopCells.length; j < jen; j++) { 25988 loopCells[j]._DT_CellIndex.row = i2; 25989 } 25990 } 25991 } 25992 _fnDeleteIndex(settings.aiDisplayMaster, row); 25993 _fnDeleteIndex(settings.aiDisplay, row); 25994 _fnDeleteIndex(that[thatIdx], row, false); 25995 if (settings._iRecordsDisplay > 0) { 25996 settings._iRecordsDisplay--; 25997 } 25998 _fnLengthOverflow(settings); 25999 var id = settings.rowIdFn(rowData._aData); 26000 if (id !== undefined2) { 26001 delete settings.aIds[id]; 26002 } 26003 }); 26004 this.iterator("table", function(settings) { 26005 for (var i2 = 0, ien = settings.aoData.length; i2 < ien; i2++) { 26006 settings.aoData[i2].idx = i2; 26007 } 26008 }); 26009 return this; 26010 }); 26011 _api_register("rows.add()", function(rows) { 26012 var newRows = this.iterator("table", function(settings) { 26013 var row, i2, ien; 26014 var out = []; 26015 for (i2 = 0, ien = rows.length; i2 < ien; i2++) { 26016 row = rows[i2]; 26017 if (row.nodeName && row.nodeName.toUpperCase() === "TR") { 26018 out.push(_fnAddTr(settings, row)[0]); 26019 } else { 26020 out.push(_fnAddData(settings, row)); 26021 } 26022 } 26023 return out; 26024 }, 1); 26025 var modRows = this.rows(-1); 26026 modRows.pop(); 26027 $3.merge(modRows, newRows); 26028 return modRows; 26029 }); 26030 _api_register("row()", function(selector, opts) { 26031 return _selector_first(this.rows(selector, opts)); 26032 }); 26033 _api_register("row().data()", function(data) { 26034 var ctx = this.context; 26035 if (data === undefined2) { 26036 return ctx.length && this.length ? ctx[0].aoData[this[0]]._aData : undefined2; 26037 } 26038 var row = ctx[0].aoData[this[0]]; 26039 row._aData = data; 26040 if (Array.isArray(data) && row.nTr && row.nTr.id) { 26041 _fnSetObjectDataFn(ctx[0].rowId)(data, row.nTr.id); 26042 } 26043 _fnInvalidate(ctx[0], this[0], "data"); 26044 return this; 26045 }); 26046 _api_register("row().node()", function() { 26047 var ctx = this.context; 26048 return ctx.length && this.length ? ctx[0].aoData[this[0]].nTr || null : null; 26049 }); 26050 _api_register("row.add()", function(row) { 26051 if (row instanceof $3 && row.length) { 26052 row = row[0]; 26053 } 26054 var rows = this.iterator("table", function(settings) { 26055 if (row.nodeName && row.nodeName.toUpperCase() === "TR") { 26056 return _fnAddTr(settings, row)[0]; 26057 } 26058 return _fnAddData(settings, row); 26059 }); 26060 return this.row(rows[0]); 26061 }); 26062 $3(document2).on("plugin-init.dt", function(e, context) { 26063 var api = new _Api(context); 26064 var namespace = "on-plugin-init"; 26065 var stateSaveParamsEvent = "stateSaveParams." + namespace; 26066 var destroyEvent = "destroy. " + namespace; 26067 api.on(stateSaveParamsEvent, function(e2, settings, d) { 26068 var idFn = settings.rowIdFn; 26069 var data = settings.aoData; 26070 var ids = []; 26071 for (var i2 = 0; i2 < data.length; i2++) { 26072 if (data[i2]._detailsShow) { 26073 ids.push("#" + idFn(data[i2]._aData)); 26074 } 26075 } 26076 d.childRows = ids; 26077 }); 26078 api.on(destroyEvent, function() { 26079 api.off(stateSaveParamsEvent + " " + destroyEvent); 26080 }); 26081 var loaded = api.state.loaded(); 26082 if (loaded && loaded.childRows) { 26083 api.rows($3.map(loaded.childRows, function(id) { 26084 return id.replace(/:/g, "\\:"); 26085 })).every(function() { 26086 _fnCallbackFire(context, null, "requestChild", [this]); 26087 }); 26088 } 26089 }); 26090 var __details_add = function(ctx, row, data, klass) { 26091 var rows = []; 26092 var addRow = function(r, k) { 26093 if (Array.isArray(r) || r instanceof $3) { 26094 for (var i2 = 0, ien = r.length; i2 < ien; i2++) { 26095 addRow(r[i2], k); 26096 } 26097 return; 26098 } 26099 if (r.nodeName && r.nodeName.toLowerCase() === "tr") { 26100 rows.push(r); 26101 } else { 26102 var created = $3("<tr><td></td></tr>").addClass(k); 26103 $3("td", created).addClass(k).html(r)[0].colSpan = _fnVisbleColumns(ctx); 26104 rows.push(created[0]); 26105 } 26106 }; 26107 addRow(data, klass); 26108 if (row._details) { 26109 row._details.detach(); 26110 } 26111 row._details = $3(rows); 26112 if (row._detailsShow) { 26113 row._details.insertAfter(row.nTr); 26114 } 26115 }; 26116 var __details_state = DataTable2.util.throttle( 26117 function(ctx) { 26118 _fnSaveState(ctx[0]); 26119 }, 26120 500 26121 ); 26122 var __details_remove = function(api, idx) { 26123 var ctx = api.context; 26124 if (ctx.length) { 26125 var row = ctx[0].aoData[idx !== undefined2 ? idx : api[0]]; 26126 if (row && row._details) { 26127 row._details.remove(); 26128 row._detailsShow = undefined2; 26129 row._details = undefined2; 26130 $3(row.nTr).removeClass("dt-hasChild"); 26131 __details_state(ctx); 26132 } 26133 } 26134 }; 26135 var __details_display = function(api, show) { 26136 var ctx = api.context; 26137 if (ctx.length && api.length) { 26138 var row = ctx[0].aoData[api[0]]; 26139 if (row._details) { 26140 row._detailsShow = show; 26141 if (show) { 26142 row._details.insertAfter(row.nTr); 26143 $3(row.nTr).addClass("dt-hasChild"); 26144 } else { 26145 row._details.detach(); 26146 $3(row.nTr).removeClass("dt-hasChild"); 26147 } 26148 _fnCallbackFire(ctx[0], null, "childRow", [show, api.row(api[0])]); 26149 __details_events(ctx[0]); 26150 __details_state(ctx); 26151 } 26152 } 26153 }; 26154 var __details_events = function(settings) { 26155 var api = new _Api(settings); 26156 var namespace = ".dt.DT_details"; 26157 var drawEvent = "draw" + namespace; 26158 var colvisEvent = "column-sizing" + namespace; 26159 var destroyEvent = "destroy" + namespace; 26160 var data = settings.aoData; 26161 api.off(drawEvent + " " + colvisEvent + " " + destroyEvent); 26162 if (_pluck(data, "_details").length > 0) { 26163 api.on(drawEvent, function(e, ctx) { 26164 if (settings !== ctx) { 26165 return; 26166 } 26167 api.rows({ page: "current" }).eq(0).each(function(idx) { 26168 var row = data[idx]; 26169 if (row._detailsShow) { 26170 row._details.insertAfter(row.nTr); 26171 } 26172 }); 26173 }); 26174 api.on(colvisEvent, function(e, ctx, idx, vis) { 26175 if (settings !== ctx) { 26176 return; 26177 } 26178 var row, visible = _fnVisbleColumns(ctx); 26179 for (var i2 = 0, ien = data.length; i2 < ien; i2++) { 26180 row = data[i2]; 26181 if (row._details) { 26182 row._details.each(function() { 26183 var el = $3(this).children("td"); 26184 if (el.length == 1) { 26185 el.attr("colspan", visible); 26186 } 26187 }); 26188 } 26189 } 26190 }); 26191 api.on(destroyEvent, function(e, ctx) { 26192 if (settings !== ctx) { 26193 return; 26194 } 26195 for (var i2 = 0, ien = data.length; i2 < ien; i2++) { 26196 if (data[i2]._details) { 26197 __details_remove(api, i2); 26198 } 26199 } 26200 }); 26201 } 26202 }; 26203 var _emp = ""; 26204 var _child_obj = _emp + "row().child"; 26205 var _child_mth = _child_obj + "()"; 26206 _api_register(_child_mth, function(data, klass) { 26207 var ctx = this.context; 26208 if (data === undefined2) { 26209 return ctx.length && this.length ? ctx[0].aoData[this[0]]._details : undefined2; 26210 } else if (data === true) { 26211 this.child.show(); 26212 } else if (data === false) { 26213 __details_remove(this); 26214 } else if (ctx.length && this.length) { 26215 __details_add(ctx[0], ctx[0].aoData[this[0]], data, klass); 26216 } 26217 return this; 26218 }); 26219 _api_register([ 26220 _child_obj + ".show()", 26221 _child_mth + ".show()" 26222 // only when `child()` was called with parameters (without 26223 ], function(show) { 26224 __details_display(this, true); 26225 return this; 26226 }); 26227 _api_register([ 26228 _child_obj + ".hide()", 26229 _child_mth + ".hide()" 26230 // only when `child()` was called with parameters (without 26231 ], function() { 26232 __details_display(this, false); 26233 return this; 26234 }); 26235 _api_register([ 26236 _child_obj + ".remove()", 26237 _child_mth + ".remove()" 26238 // only when `child()` was called with parameters (without 26239 ], function() { 26240 __details_remove(this); 26241 return this; 26242 }); 26243 _api_register(_child_obj + ".isShown()", function() { 26244 var ctx = this.context; 26245 if (ctx.length && this.length) { 26246 return ctx[0].aoData[this[0]]._detailsShow || false; 26247 } 26248 return false; 26249 }); 26250 var __re_column_selector = /^([^:]+):(name|visIdx|visible)$/; 26251 var __columnData = function(settings, column, r1, r2, rows) { 26252 var a = []; 26253 for (var row = 0, ien = rows.length; row < ien; row++) { 26254 a.push(_fnGetCellData(settings, rows[row], column)); 26255 } 26256 return a; 26257 }; 26258 var __column_selector = function(settings, selector, opts) { 26259 var columns = settings.aoColumns, names = _pluck(columns, "sName"), nodes = _pluck(columns, "nTh"); 26260 var run = function(s) { 26261 var selInt = _intVal(s); 26262 if (s === "") { 26263 return _range(columns.length); 26264 } 26265 if (selInt !== null) { 26266 return [ 26267 selInt >= 0 ? selInt : ( 26268 // Count from left 26269 columns.length + selInt 26270 ) 26271 // Count from right (+ because its a negative value) 26272 ]; 26273 } 26274 if (typeof s === "function") { 26275 var rows = _selector_row_indexes(settings, opts); 26276 return $3.map(columns, function(col, idx2) { 26277 return s( 26278 idx2, 26279 __columnData(settings, idx2, 0, 0, rows), 26280 nodes[idx2] 26281 ) ? idx2 : null; 26282 }); 26283 } 26284 var match = typeof s === "string" ? s.match(__re_column_selector) : ""; 26285 if (match) { 26286 switch (match[2]) { 26287 case "visIdx": 26288 case "visible": 26289 var idx = parseInt(match[1], 10); 26290 if (idx < 0) { 26291 var visColumns = $3.map(columns, function(col, i2) { 26292 return col.bVisible ? i2 : null; 26293 }); 26294 return [visColumns[visColumns.length + idx]]; 26295 } 26296 return [_fnVisibleToColumnIndex(settings, idx)]; 26297 case "name": 26298 return $3.map(names, function(name, i2) { 26299 return name === match[1] ? i2 : null; 26300 }); 26301 default: 26302 return []; 26303 } 26304 } 26305 if (s.nodeName && s._DT_CellIndex) { 26306 return [s._DT_CellIndex.column]; 26307 } 26308 var jqResult = $3(nodes).filter(s).map(function() { 26309 return $3.inArray(this, nodes); 26310 }).toArray(); 26311 if (jqResult.length || !s.nodeName) { 26312 return jqResult; 26313 } 26314 var host = $3(s).closest("*[data-dt-column]"); 26315 return host.length ? [host.data("dt-column")] : []; 26316 }; 26317 return _selector_run("column", selector, run, settings, opts); 26318 }; 26319 var __setColumnVis = function(settings, column, vis) { 26320 var cols = settings.aoColumns, col = cols[column], data = settings.aoData, row, cells, i2, ien, tr; 26321 if (vis === undefined2) { 26322 return col.bVisible; 26323 } 26324 if (col.bVisible === vis) { 26325 return; 26326 } 26327 if (vis) { 26328 var insertBefore = $3.inArray(true, _pluck(cols, "bVisible"), column + 1); 26329 for (i2 = 0, ien = data.length; i2 < ien; i2++) { 26330 tr = data[i2].nTr; 26331 cells = data[i2].anCells; 26332 if (tr) { 26333 tr.insertBefore(cells[column], cells[insertBefore] || null); 26334 } 26335 } 26336 } else { 26337 $3(_pluck(settings.aoData, "anCells", column)).detach(); 26338 } 26339 col.bVisible = vis; 26340 }; 26341 _api_register("columns()", function(selector, opts) { 26342 if (selector === undefined2) { 26343 selector = ""; 26344 } else if ($3.isPlainObject(selector)) { 26345 opts = selector; 26346 selector = ""; 26347 } 26348 opts = _selector_opts(opts); 26349 var inst = this.iterator("table", function(settings) { 26350 return __column_selector(settings, selector, opts); 26351 }, 1); 26352 inst.selector.cols = selector; 26353 inst.selector.opts = opts; 26354 return inst; 26355 }); 26356 _api_registerPlural("columns().header()", "column().header()", function(selector, opts) { 26357 return this.iterator("column", function(settings, column) { 26358 return settings.aoColumns[column].nTh; 26359 }, 1); 26360 }); 26361 _api_registerPlural("columns().footer()", "column().footer()", function(selector, opts) { 26362 return this.iterator("column", function(settings, column) { 26363 return settings.aoColumns[column].nTf; 26364 }, 1); 26365 }); 26366 _api_registerPlural("columns().data()", "column().data()", function() { 26367 return this.iterator("column-rows", __columnData, 1); 26368 }); 26369 _api_registerPlural("columns().dataSrc()", "column().dataSrc()", function() { 26370 return this.iterator("column", function(settings, column) { 26371 return settings.aoColumns[column].mData; 26372 }, 1); 26373 }); 26374 _api_registerPlural("columns().cache()", "column().cache()", function(type) { 26375 return this.iterator("column-rows", function(settings, column, i2, j, rows) { 26376 return _pluck_order( 26377 settings.aoData, 26378 rows, 26379 type === "search" ? "_aFilterData" : "_aSortData", 26380 column 26381 ); 26382 }, 1); 26383 }); 26384 _api_registerPlural("columns().nodes()", "column().nodes()", function() { 26385 return this.iterator("column-rows", function(settings, column, i2, j, rows) { 26386 return _pluck_order(settings.aoData, rows, "anCells", column); 26387 }, 1); 26388 }); 26389 _api_registerPlural("columns().visible()", "column().visible()", function(vis, calc) { 26390 var that = this; 26391 var ret = this.iterator("column", function(settings, column) { 26392 if (vis === undefined2) { 26393 return settings.aoColumns[column].bVisible; 26394 } 26395 __setColumnVis(settings, column, vis); 26396 }); 26397 if (vis !== undefined2) { 26398 this.iterator("table", function(settings) { 26399 _fnDrawHead(settings, settings.aoHeader); 26400 _fnDrawHead(settings, settings.aoFooter); 26401 if (!settings.aiDisplay.length) { 26402 $3(settings.nTBody).find("td[colspan]").attr("colspan", _fnVisbleColumns(settings)); 26403 } 26404 _fnSaveState(settings); 26405 that.iterator("column", function(settings2, column) { 26406 _fnCallbackFire(settings2, null, "column-visibility", [settings2, column, vis, calc]); 26407 }); 26408 if (calc === undefined2 || calc) { 26409 that.columns.adjust(); 26410 } 26411 }); 26412 } 26413 return ret; 26414 }); 26415 _api_registerPlural("columns().indexes()", "column().index()", function(type) { 26416 return this.iterator("column", function(settings, column) { 26417 return type === "visible" ? _fnColumnIndexToVisible(settings, column) : column; 26418 }, 1); 26419 }); 26420 _api_register("columns.adjust()", function() { 26421 return this.iterator("table", function(settings) { 26422 _fnAdjustColumnSizing(settings); 26423 }, 1); 26424 }); 26425 _api_register("column.index()", function(type, idx) { 26426 if (this.context.length !== 0) { 26427 var ctx = this.context[0]; 26428 if (type === "fromVisible" || type === "toData") { 26429 return _fnVisibleToColumnIndex(ctx, idx); 26430 } else if (type === "fromData" || type === "toVisible") { 26431 return _fnColumnIndexToVisible(ctx, idx); 26432 } 26433 } 26434 }); 26435 _api_register("column()", function(selector, opts) { 26436 return _selector_first(this.columns(selector, opts)); 26437 }); 26438 var __cell_selector = function(settings, selector, opts) { 26439 var data = settings.aoData; 26440 var rows = _selector_row_indexes(settings, opts); 26441 var cells = _removeEmpty(_pluck_order(data, rows, "anCells")); 26442 var allCells = $3(_flatten([], cells)); 26443 var row; 26444 var columns = settings.aoColumns.length; 26445 var a, i2, ien, j, o, host; 26446 var run = function(s) { 26447 var fnSelector = typeof s === "function"; 26448 if (s === null || s === undefined2 || fnSelector) { 26449 a = []; 26450 for (i2 = 0, ien = rows.length; i2 < ien; i2++) { 26451 row = rows[i2]; 26452 for (j = 0; j < columns; j++) { 26453 o = { 26454 row, 26455 column: j 26456 }; 26457 if (fnSelector) { 26458 host = data[row]; 26459 if (s(o, _fnGetCellData(settings, row, j), host.anCells ? host.anCells[j] : null)) { 26460 a.push(o); 26461 } 26462 } else { 26463 a.push(o); 26464 } 26465 } 26466 } 26467 return a; 26468 } 26469 if ($3.isPlainObject(s)) { 26470 return s.column !== undefined2 && s.row !== undefined2 && $3.inArray(s.row, rows) !== -1 ? [s] : []; 26471 } 26472 var jqResult = allCells.filter(s).map(function(i3, el) { 26473 return { 26474 // use a new object, in case someone changes the values 26475 row: el._DT_CellIndex.row, 26476 column: el._DT_CellIndex.column 26477 }; 26478 }).toArray(); 26479 if (jqResult.length || !s.nodeName) { 26480 return jqResult; 26481 } 26482 host = $3(s).closest("*[data-dt-row]"); 26483 return host.length ? [{ 26484 row: host.data("dt-row"), 26485 column: host.data("dt-column") 26486 }] : []; 26487 }; 26488 return _selector_run("cell", selector, run, settings, opts); 26489 }; 26490 _api_register("cells()", function(rowSelector, columnSelector, opts) { 26491 if ($3.isPlainObject(rowSelector)) { 26492 if (rowSelector.row === undefined2) { 26493 opts = rowSelector; 26494 rowSelector = null; 26495 } else { 26496 opts = columnSelector; 26497 columnSelector = null; 26498 } 26499 } 26500 if ($3.isPlainObject(columnSelector)) { 26501 opts = columnSelector; 26502 columnSelector = null; 26503 } 26504 if (columnSelector === null || columnSelector === undefined2) { 26505 return this.iterator("table", function(settings) { 26506 return __cell_selector(settings, rowSelector, _selector_opts(opts)); 26507 }); 26508 } 26509 var internalOpts = opts ? { 26510 page: opts.page, 26511 order: opts.order, 26512 search: opts.search 26513 } : {}; 26514 var columns = this.columns(columnSelector, internalOpts); 26515 var rows = this.rows(rowSelector, internalOpts); 26516 var i2, ien, j, jen; 26517 var cellsNoOpts = this.iterator("table", function(settings, idx) { 26518 var a = []; 26519 for (i2 = 0, ien = rows[idx].length; i2 < ien; i2++) { 26520 for (j = 0, jen = columns[idx].length; j < jen; j++) { 26521 a.push({ 26522 row: rows[idx][i2], 26523 column: columns[idx][j] 26524 }); 26525 } 26526 } 26527 return a; 26528 }, 1); 26529 var cells = opts && opts.selected ? this.cells(cellsNoOpts, opts) : cellsNoOpts; 26530 $3.extend(cells.selector, { 26531 cols: columnSelector, 26532 rows: rowSelector, 26533 opts 26534 }); 26535 return cells; 26536 }); 26537 _api_registerPlural("cells().nodes()", "cell().node()", function() { 26538 return this.iterator("cell", function(settings, row, column) { 26539 var data = settings.aoData[row]; 26540 return data && data.anCells ? data.anCells[column] : undefined2; 26541 }, 1); 26542 }); 26543 _api_register("cells().data()", function() { 26544 return this.iterator("cell", function(settings, row, column) { 26545 return _fnGetCellData(settings, row, column); 26546 }, 1); 26547 }); 26548 _api_registerPlural("cells().cache()", "cell().cache()", function(type) { 26549 type = type === "search" ? "_aFilterData" : "_aSortData"; 26550 return this.iterator("cell", function(settings, row, column) { 26551 return settings.aoData[row][type][column]; 26552 }, 1); 26553 }); 26554 _api_registerPlural("cells().render()", "cell().render()", function(type) { 26555 return this.iterator("cell", function(settings, row, column) { 26556 return _fnGetCellData(settings, row, column, type); 26557 }, 1); 26558 }); 26559 _api_registerPlural("cells().indexes()", "cell().index()", function() { 26560 return this.iterator("cell", function(settings, row, column) { 26561 return { 26562 row, 26563 column, 26564 columnVisible: _fnColumnIndexToVisible(settings, column) 26565 }; 26566 }, 1); 26567 }); 26568 _api_registerPlural("cells().invalidate()", "cell().invalidate()", function(src) { 26569 return this.iterator("cell", function(settings, row, column) { 26570 _fnInvalidate(settings, row, src, column); 26571 }); 26572 }); 26573 _api_register("cell()", function(rowSelector, columnSelector, opts) { 26574 return _selector_first(this.cells(rowSelector, columnSelector, opts)); 26575 }); 26576 _api_register("cell().data()", function(data) { 26577 var ctx = this.context; 26578 var cell = this[0]; 26579 if (data === undefined2) { 26580 return ctx.length && cell.length ? _fnGetCellData(ctx[0], cell[0].row, cell[0].column) : undefined2; 26581 } 26582 _fnSetCellData(ctx[0], cell[0].row, cell[0].column, data); 26583 _fnInvalidate(ctx[0], cell[0].row, "data", cell[0].column); 26584 return this; 26585 }); 26586 _api_register("order()", function(order, dir) { 26587 var ctx = this.context; 26588 if (order === undefined2) { 26589 return ctx.length !== 0 ? ctx[0].aaSorting : undefined2; 26590 } 26591 if (typeof order === "number") { 26592 order = [[order, dir]]; 26593 } else if (order.length && !Array.isArray(order[0])) { 26594 order = Array.prototype.slice.call(arguments); 26595 } 26596 return this.iterator("table", function(settings) { 26597 settings.aaSorting = order.slice(); 26598 }); 26599 }); 26600 _api_register("order.listener()", function(node, column, callback) { 26601 return this.iterator("table", function(settings) { 26602 _fnSortAttachListener(settings, node, column, callback); 26603 }); 26604 }); 26605 _api_register("order.fixed()", function(set) { 26606 if (!set) { 26607 var ctx = this.context; 26608 var fixed = ctx.length ? ctx[0].aaSortingFixed : undefined2; 26609 return Array.isArray(fixed) ? { pre: fixed } : fixed; 26610 } 26611 return this.iterator("table", function(settings) { 26612 settings.aaSortingFixed = $3.extend(true, {}, set); 26613 }); 26614 }); 26615 _api_register([ 26616 "columns().order()", 26617 "column().order()" 26618 ], function(dir) { 26619 var that = this; 26620 return this.iterator("table", function(settings, i2) { 26621 var sort = []; 26622 $3.each(that[i2], function(j, col) { 26623 sort.push([col, dir]); 26624 }); 26625 settings.aaSorting = sort; 26626 }); 26627 }); 26628 _api_register("search()", function(input, regex, smart, caseInsen) { 26629 var ctx = this.context; 26630 if (input === undefined2) { 26631 return ctx.length !== 0 ? ctx[0].oPreviousSearch.sSearch : undefined2; 26632 } 26633 return this.iterator("table", function(settings) { 26634 if (!settings.oFeatures.bFilter) { 26635 return; 26636 } 26637 _fnFilterComplete(settings, $3.extend({}, settings.oPreviousSearch, { 26638 "sSearch": input + "", 26639 "bRegex": regex === null ? false : regex, 26640 "bSmart": smart === null ? true : smart, 26641 "bCaseInsensitive": caseInsen === null ? true : caseInsen 26642 }), 1); 26643 }); 26644 }); 26645 _api_registerPlural( 26646 "columns().search()", 26647 "column().search()", 26648 function(input, regex, smart, caseInsen) { 26649 return this.iterator("column", function(settings, column) { 26650 var preSearch = settings.aoPreSearchCols; 26651 if (input === undefined2) { 26652 return preSearch[column].sSearch; 26653 } 26654 if (!settings.oFeatures.bFilter) { 26655 return; 26656 } 26657 $3.extend(preSearch[column], { 26658 "sSearch": input + "", 26659 "bRegex": regex === null ? false : regex, 26660 "bSmart": smart === null ? true : smart, 26661 "bCaseInsensitive": caseInsen === null ? true : caseInsen 26662 }); 26663 _fnFilterComplete(settings, settings.oPreviousSearch, 1); 26664 }); 26665 } 26666 ); 26667 _api_register("state()", function() { 26668 return this.context.length ? this.context[0].oSavedState : null; 26669 }); 26670 _api_register("state.clear()", function() { 26671 return this.iterator("table", function(settings) { 26672 settings.fnStateSaveCallback.call(settings.oInstance, settings, {}); 26673 }); 26674 }); 26675 _api_register("state.loaded()", function() { 26676 return this.context.length ? this.context[0].oLoadedState : null; 26677 }); 26678 _api_register("state.save()", function() { 26679 return this.iterator("table", function(settings) { 26680 _fnSaveState(settings); 26681 }); 26682 }); 26683 DataTable2.use = function(module2, type) { 26684 if (type === "lib" || module2.fn) { 26685 $3 = module2; 26686 } else if (type == "win" || module2.document) { 26687 window2 = module2; 26688 document2 = module2.document; 26689 } else if (type === "datetime" || module2.type === "DateTime") { 26690 DataTable2.DateTime = module2; 26691 } 26692 }; 26693 DataTable2.factory = function(root, jq) { 26694 var is = false; 26695 if (root && root.document) { 26696 window2 = root; 26697 document2 = root.document; 26698 } 26699 if (jq && jq.fn && jq.fn.jquery) { 26700 $3 = jq; 26701 is = true; 26702 } 26703 return is; 26704 }; 26705 DataTable2.versionCheck = DataTable2.fnVersionCheck = function(version) { 26706 var aThis = DataTable2.version.split("."); 26707 var aThat = version.split("."); 26708 var iThis, iThat; 26709 for (var i2 = 0, iLen = aThat.length; i2 < iLen; i2++) { 26710 iThis = parseInt(aThis[i2], 10) || 0; 26711 iThat = parseInt(aThat[i2], 10) || 0; 26712 if (iThis === iThat) { 26713 continue; 26714 } 26715 return iThis > iThat; 26716 } 26717 return true; 26718 }; 26719 DataTable2.isDataTable = DataTable2.fnIsDataTable = function(table) { 26720 var t2 = $3(table).get(0); 26721 var is = false; 26722 if (table instanceof DataTable2.Api) { 26723 return true; 26724 } 26725 $3.each(DataTable2.settings, function(i2, o) { 26726 var head = o.nScrollHead ? $3("table", o.nScrollHead)[0] : null; 26727 var foot = o.nScrollFoot ? $3("table", o.nScrollFoot)[0] : null; 26728 if (o.nTable === t2 || head === t2 || foot === t2) { 26729 is = true; 26730 } 26731 }); 26732 return is; 26733 }; 26734 DataTable2.tables = DataTable2.fnTables = function(visible) { 26735 var api = false; 26736 if ($3.isPlainObject(visible)) { 26737 api = visible.api; 26738 visible = visible.visible; 26739 } 26740 var a = $3.map(DataTable2.settings, function(o) { 26741 if (!visible || visible && $3(o.nTable).is(":visible")) { 26742 return o.nTable; 26743 } 26744 }); 26745 return api ? new _Api(a) : a; 26746 }; 26747 DataTable2.camelToHungarian = _fnCamelToHungarian; 26748 _api_register("$()", function(selector, opts) { 26749 var rows = this.rows(opts).nodes(), jqRows = $3(rows); 26750 return $3([].concat( 26751 jqRows.filter(selector).toArray(), 26752 jqRows.find(selector).toArray() 26753 )); 26754 }); 26755 $3.each(["on", "one", "off"], function(i2, key) { 26756 _api_register(key + "()", function() { 26757 var args = Array.prototype.slice.call(arguments); 26758 args[0] = $3.map(args[0].split(/\s/), function(e) { 26759 return !e.match(/\.dt\b/) ? e + ".dt" : e; 26760 }).join(" "); 26761 var inst = $3(this.tables().nodes()); 26762 inst[key].apply(inst, args); 26763 return this; 26764 }); 26765 }); 26766 _api_register("clear()", function() { 26767 return this.iterator("table", function(settings) { 26768 _fnClearTable(settings); 26769 }); 26770 }); 26771 _api_register("settings()", function() { 26772 return new _Api(this.context, this.context); 26773 }); 26774 _api_register("init()", function() { 26775 var ctx = this.context; 26776 return ctx.length ? ctx[0].oInit : null; 26777 }); 26778 _api_register("data()", function() { 26779 return this.iterator("table", function(settings) { 26780 return _pluck(settings.aoData, "_aData"); 26781 }).flatten(); 26782 }); 26783 _api_register("destroy()", function(remove) { 26784 remove = remove || false; 26785 return this.iterator("table", function(settings) { 26786 var classes = settings.oClasses; 26787 var table = settings.nTable; 26788 var tbody = settings.nTBody; 26789 var thead = settings.nTHead; 26790 var tfoot = settings.nTFoot; 26791 var jqTable = $3(table); 26792 var jqTbody = $3(tbody); 26793 var jqWrapper = $3(settings.nTableWrapper); 26794 var rows = $3.map(settings.aoData, function(r) { 26795 return r.nTr; 26796 }); 26797 var i2, ien; 26798 settings.bDestroying = true; 26799 _fnCallbackFire(settings, "aoDestroyCallback", "destroy", [settings]); 26800 if (!remove) { 26801 new _Api(settings).columns().visible(true); 26802 } 26803 jqWrapper.off(".DT").find(":not(tbody *)").off(".DT"); 26804 $3(window2).off(".DT-" + settings.sInstance); 26805 if (table != thead.parentNode) { 26806 jqTable.children("thead").detach(); 26807 jqTable.append(thead); 26808 } 26809 if (tfoot && table != tfoot.parentNode) { 26810 jqTable.children("tfoot").detach(); 26811 jqTable.append(tfoot); 26812 } 26813 settings.aaSorting = []; 26814 settings.aaSortingFixed = []; 26815 _fnSortingClasses(settings); 26816 $3(rows).removeClass(settings.asStripeClasses.join(" ")); 26817 $3("th, td", thead).removeClass( 26818 classes.sSortable + " " + classes.sSortableAsc + " " + classes.sSortableDesc + " " + classes.sSortableNone 26819 ); 26820 jqTbody.children().detach(); 26821 jqTbody.append(rows); 26822 var orig = settings.nTableWrapper.parentNode; 26823 var removedMethod = remove ? "remove" : "detach"; 26824 jqTable[removedMethod](); 26825 jqWrapper[removedMethod](); 26826 if (!remove && orig) { 26827 orig.insertBefore(table, settings.nTableReinsertBefore); 26828 jqTable.css("width", settings.sDestroyWidth).removeClass(classes.sTable); 26829 ien = settings.asDestroyStripes.length; 26830 if (ien) { 26831 jqTbody.children().each(function(i3) { 26832 $3(this).addClass(settings.asDestroyStripes[i3 % ien]); 26833 }); 26834 } 26835 } 26836 var idx = $3.inArray(settings, DataTable2.settings); 26837 if (idx !== -1) { 26838 DataTable2.settings.splice(idx, 1); 26839 } 26840 }); 26841 }); 26842 $3.each(["column", "row", "cell"], function(i2, type) { 26843 _api_register(type + "s().every()", function(fn) { 26844 var opts = this.selector.opts; 26845 var api = this; 26846 return this.iterator(type, function(settings, arg1, arg2, arg3, arg4) { 26847 fn.call( 26848 api[type]( 26849 arg1, 26850 type === "cell" ? arg2 : opts, 26851 type === "cell" ? opts : undefined2 26852 ), 26853 arg1, 26854 arg2, 26855 arg3, 26856 arg4 26857 ); 26858 }); 26859 }); 26860 }); 26861 _api_register("i18n()", function(token, def, plural) { 26862 var ctx = this.context[0]; 26863 var resolved = _fnGetObjectDataFn(token)(ctx.oLanguage); 26864 if (resolved === undefined2) { 26865 resolved = def; 26866 } 26867 if (plural !== undefined2 && $3.isPlainObject(resolved)) { 26868 resolved = resolved[plural] !== undefined2 ? resolved[plural] : resolved._; 26869 } 26870 return typeof resolved === "string" ? resolved.replace("%d", plural) : resolved; 26871 }); 26872 DataTable2.version = "1.13.11"; 26873 DataTable2.settings = []; 26874 DataTable2.models = {}; 26875 DataTable2.models.oSearch = { 26876 /** 26877 * Flag to indicate if the filtering should be case insensitive or not 26878 * @type boolean 26879 * @default true 26880 */ 26881 "bCaseInsensitive": true, 26882 /** 26883 * Applied search term 26884 * @type string 26885 * @default <i>Empty string</i> 26886 */ 26887 "sSearch": "", 26888 /** 26889 * Flag to indicate if the search term should be interpreted as a 26890 * regular expression (true) or not (false) and therefore and special 26891 * regex characters escaped. 26892 * @type boolean 26893 * @default false 26894 */ 26895 "bRegex": false, 26896 /** 26897 * Flag to indicate if DataTables is to use its smart filtering or not. 26898 * @type boolean 26899 * @default true 26900 */ 26901 "bSmart": true, 26902 /** 26903 * Flag to indicate if DataTables should only trigger a search when 26904 * the return key is pressed. 26905 * @type boolean 26906 * @default false 26907 */ 26908 "return": false 26909 }; 26910 DataTable2.models.oRow = { 26911 /** 26912 * TR element for the row 26913 * @type node 26914 * @default null 26915 */ 26916 "nTr": null, 26917 /** 26918 * Array of TD elements for each row. This is null until the row has been 26919 * created. 26920 * @type array nodes 26921 * @default [] 26922 */ 26923 "anCells": null, 26924 /** 26925 * Data object from the original data source for the row. This is either 26926 * an array if using the traditional form of DataTables, or an object if 26927 * using mData options. The exact type will depend on the passed in 26928 * data from the data source, or will be an array if using DOM a data 26929 * source. 26930 * @type array|object 26931 * @default [] 26932 */ 26933 "_aData": [], 26934 /** 26935 * Sorting data cache - this array is ostensibly the same length as the 26936 * number of columns (although each index is generated only as it is 26937 * needed), and holds the data that is used for sorting each column in the 26938 * row. We do this cache generation at the start of the sort in order that 26939 * the formatting of the sort data need be done only once for each cell 26940 * per sort. This array should not be read from or written to by anything 26941 * other than the master sorting methods. 26942 * @type array 26943 * @default null 26944 * @private 26945 */ 26946 "_aSortData": null, 26947 /** 26948 * Per cell filtering data cache. As per the sort data cache, used to 26949 * increase the performance of the filtering in DataTables 26950 * @type array 26951 * @default null 26952 * @private 26953 */ 26954 "_aFilterData": null, 26955 /** 26956 * Filtering data cache. This is the same as the cell filtering cache, but 26957 * in this case a string rather than an array. This is easily computed with 26958 * a join on `_aFilterData`, but is provided as a cache so the join isn't 26959 * needed on every search (memory traded for performance) 26960 * @type array 26961 * @default null 26962 * @private 26963 */ 26964 "_sFilterRow": null, 26965 /** 26966 * Cache of the class name that DataTables has applied to the row, so we 26967 * can quickly look at this variable rather than needing to do a DOM check 26968 * on className for the nTr property. 26969 * @type string 26970 * @default <i>Empty string</i> 26971 * @private 26972 */ 26973 "_sRowStripe": "", 26974 /** 26975 * Denote if the original data source was from the DOM, or the data source 26976 * object. This is used for invalidating data, so DataTables can 26977 * automatically read data from the original source, unless uninstructed 26978 * otherwise. 26979 * @type string 26980 * @default null 26981 * @private 26982 */ 26983 "src": null, 26984 /** 26985 * Index in the aoData array. This saves an indexOf lookup when we have the 26986 * object, but want to know the index 26987 * @type integer 26988 * @default -1 26989 * @private 26990 */ 26991 "idx": -1 26992 }; 26993 DataTable2.models.oColumn = { 26994 /** 26995 * Column index. This could be worked out on-the-fly with $.inArray, but it 26996 * is faster to just hold it as a variable 26997 * @type integer 26998 * @default null 26999 */ 27000 "idx": null, 27001 /** 27002 * A list of the columns that sorting should occur on when this column 27003 * is sorted. That this property is an array allows multi-column sorting 27004 * to be defined for a column (for example first name / last name columns 27005 * would benefit from this). The values are integers pointing to the 27006 * columns to be sorted on (typically it will be a single integer pointing 27007 * at itself, but that doesn't need to be the case). 27008 * @type array 27009 */ 27010 "aDataSort": null, 27011 /** 27012 * Define the sorting directions that are applied to the column, in sequence 27013 * as the column is repeatedly sorted upon - i.e. the first value is used 27014 * as the sorting direction when the column if first sorted (clicked on). 27015 * Sort it again (click again) and it will move on to the next index. 27016 * Repeat until loop. 27017 * @type array 27018 */ 27019 "asSorting": null, 27020 /** 27021 * Flag to indicate if the column is searchable, and thus should be included 27022 * in the filtering or not. 27023 * @type boolean 27024 */ 27025 "bSearchable": null, 27026 /** 27027 * Flag to indicate if the column is sortable or not. 27028 * @type boolean 27029 */ 27030 "bSortable": null, 27031 /** 27032 * Flag to indicate if the column is currently visible in the table or not 27033 * @type boolean 27034 */ 27035 "bVisible": null, 27036 /** 27037 * Store for manual type assignment using the `column.type` option. This 27038 * is held in store so we can manipulate the column's `sType` property. 27039 * @type string 27040 * @default null 27041 * @private 27042 */ 27043 "_sManualType": null, 27044 /** 27045 * Flag to indicate if HTML5 data attributes should be used as the data 27046 * source for filtering or sorting. True is either are. 27047 * @type boolean 27048 * @default false 27049 * @private 27050 */ 27051 "_bAttrSrc": false, 27052 /** 27053 * Developer definable function that is called whenever a cell is created (Ajax source, 27054 * etc) or processed for input (DOM source). This can be used as a compliment to mRender 27055 * allowing you to modify the DOM element (add background colour for example) when the 27056 * element is available. 27057 * @type function 27058 * @param {element} nTd The TD node that has been created 27059 * @param {*} sData The Data for the cell 27060 * @param {array|object} oData The data for the whole row 27061 * @param {int} iRow The row index for the aoData data store 27062 * @default null 27063 */ 27064 "fnCreatedCell": null, 27065 /** 27066 * Function to get data from a cell in a column. You should <b>never</b> 27067 * access data directly through _aData internally in DataTables - always use 27068 * the method attached to this property. It allows mData to function as 27069 * required. This function is automatically assigned by the column 27070 * initialisation method 27071 * @type function 27072 * @param {array|object} oData The data array/object for the array 27073 * (i.e. aoData[]._aData) 27074 * @param {string} sSpecific The specific data type you want to get - 27075 * 'display', 'type' 'filter' 'sort' 27076 * @returns {*} The data for the cell from the given row's data 27077 * @default null 27078 */ 27079 "fnGetData": null, 27080 /** 27081 * Function to set data for a cell in the column. You should <b>never</b> 27082 * set the data directly to _aData internally in DataTables - always use 27083 * this method. It allows mData to function as required. This function 27084 * is automatically assigned by the column initialisation method 27085 * @type function 27086 * @param {array|object} oData The data array/object for the array 27087 * (i.e. aoData[]._aData) 27088 * @param {*} sValue Value to set 27089 * @default null 27090 */ 27091 "fnSetData": null, 27092 /** 27093 * Property to read the value for the cells in the column from the data 27094 * source array / object. If null, then the default content is used, if a 27095 * function is given then the return from the function is used. 27096 * @type function|int|string|null 27097 * @default null 27098 */ 27099 "mData": null, 27100 /** 27101 * Partner property to mData which is used (only when defined) to get 27102 * the data - i.e. it is basically the same as mData, but without the 27103 * 'set' option, and also the data fed to it is the result from mData. 27104 * This is the rendering method to match the data method of mData. 27105 * @type function|int|string|null 27106 * @default null 27107 */ 27108 "mRender": null, 27109 /** 27110 * Unique header TH/TD element for this column - this is what the sorting 27111 * listener is attached to (if sorting is enabled.) 27112 * @type node 27113 * @default null 27114 */ 27115 "nTh": null, 27116 /** 27117 * Unique footer TH/TD element for this column (if there is one). Not used 27118 * in DataTables as such, but can be used for plug-ins to reference the 27119 * footer for each column. 27120 * @type node 27121 * @default null 27122 */ 27123 "nTf": null, 27124 /** 27125 * The class to apply to all TD elements in the table's TBODY for the column 27126 * @type string 27127 * @default null 27128 */ 27129 "sClass": null, 27130 /** 27131 * When DataTables calculates the column widths to assign to each column, 27132 * it finds the longest string in each column and then constructs a 27133 * temporary table and reads the widths from that. The problem with this 27134 * is that "mmm" is much wider then "iiii", but the latter is a longer 27135 * string - thus the calculation can go wrong (doing it properly and putting 27136 * it into an DOM object and measuring that is horribly(!) slow). Thus as 27137 * a "work around" we provide this option. It will append its value to the 27138 * text that is found to be the longest string for the column - i.e. padding. 27139 * @type string 27140 */ 27141 "sContentPadding": null, 27142 /** 27143 * Allows a default value to be given for a column's data, and will be used 27144 * whenever a null data source is encountered (this can be because mData 27145 * is set to null, or because the data source itself is null). 27146 * @type string 27147 * @default null 27148 */ 27149 "sDefaultContent": null, 27150 /** 27151 * Name for the column, allowing reference to the column by name as well as 27152 * by index (needs a lookup to work by name). 27153 * @type string 27154 */ 27155 "sName": null, 27156 /** 27157 * Custom sorting data type - defines which of the available plug-ins in 27158 * afnSortData the custom sorting will use - if any is defined. 27159 * @type string 27160 * @default std 27161 */ 27162 "sSortDataType": "std", 27163 /** 27164 * Class to be applied to the header element when sorting on this column 27165 * @type string 27166 * @default null 27167 */ 27168 "sSortingClass": null, 27169 /** 27170 * Class to be applied to the header element when sorting on this column - 27171 * when jQuery UI theming is used. 27172 * @type string 27173 * @default null 27174 */ 27175 "sSortingClassJUI": null, 27176 /** 27177 * Title of the column - what is seen in the TH element (nTh). 27178 * @type string 27179 */ 27180 "sTitle": null, 27181 /** 27182 * Column sorting and filtering type 27183 * @type string 27184 * @default null 27185 */ 27186 "sType": null, 27187 /** 27188 * Width of the column 27189 * @type string 27190 * @default null 27191 */ 27192 "sWidth": null, 27193 /** 27194 * Width of the column when it was first "encountered" 27195 * @type string 27196 * @default null 27197 */ 27198 "sWidthOrig": null 27199 }; 27200 DataTable2.defaults = { 27201 /** 27202 * An array of data to use for the table, passed in at initialisation which 27203 * will be used in preference to any data which is already in the DOM. This is 27204 * particularly useful for constructing tables purely in Javascript, for 27205 * example with a custom Ajax call. 27206 * @type array 27207 * @default null 27208 * 27209 * @dtopt Option 27210 * @name DataTable.defaults.data 27211 * 27212 * @example 27213 * // Using a 2D array data source 27214 * $(document).ready( function () { 27215 * $('#example').dataTable( { 27216 * "data": [ 27217 * ['Trident', 'Internet Explorer 4.0', 'Win 95+', 4, 'X'], 27218 * ['Trident', 'Internet Explorer 5.0', 'Win 95+', 5, 'C'], 27219 * ], 27220 * "columns": [ 27221 * { "title": "Engine" }, 27222 * { "title": "Browser" }, 27223 * { "title": "Platform" }, 27224 * { "title": "Version" }, 27225 * { "title": "Grade" } 27226 * ] 27227 * } ); 27228 * } ); 27229 * 27230 * @example 27231 * // Using an array of objects as a data source (`data`) 27232 * $(document).ready( function () { 27233 * $('#example').dataTable( { 27234 * "data": [ 27235 * { 27236 * "engine": "Trident", 27237 * "browser": "Internet Explorer 4.0", 27238 * "platform": "Win 95+", 27239 * "version": 4, 27240 * "grade": "X" 27241 * }, 27242 * { 27243 * "engine": "Trident", 27244 * "browser": "Internet Explorer 5.0", 27245 * "platform": "Win 95+", 27246 * "version": 5, 27247 * "grade": "C" 27248 * } 27249 * ], 27250 * "columns": [ 27251 * { "title": "Engine", "data": "engine" }, 27252 * { "title": "Browser", "data": "browser" }, 27253 * { "title": "Platform", "data": "platform" }, 27254 * { "title": "Version", "data": "version" }, 27255 * { "title": "Grade", "data": "grade" } 27256 * ] 27257 * } ); 27258 * } ); 27259 */ 27260 "aaData": null, 27261 /** 27262 * If ordering is enabled, then DataTables will perform a first pass sort on 27263 * initialisation. You can define which column(s) the sort is performed 27264 * upon, and the sorting direction, with this variable. The `sorting` array 27265 * should contain an array for each column to be sorted initially containing 27266 * the column's index and a direction string ('asc' or 'desc'). 27267 * @type array 27268 * @default [[0,'asc']] 27269 * 27270 * @dtopt Option 27271 * @name DataTable.defaults.order 27272 * 27273 * @example 27274 * // Sort by 3rd column first, and then 4th column 27275 * $(document).ready( function() { 27276 * $('#example').dataTable( { 27277 * "order": [[2,'asc'], [3,'desc']] 27278 * } ); 27279 * } ); 27280 * 27281 * // No initial sorting 27282 * $(document).ready( function() { 27283 * $('#example').dataTable( { 27284 * "order": [] 27285 * } ); 27286 * } ); 27287 */ 27288 "aaSorting": [[0, "asc"]], 27289 /** 27290 * This parameter is basically identical to the `sorting` parameter, but 27291 * cannot be overridden by user interaction with the table. What this means 27292 * is that you could have a column (visible or hidden) which the sorting 27293 * will always be forced on first - any sorting after that (from the user) 27294 * will then be performed as required. This can be useful for grouping rows 27295 * together. 27296 * @type array 27297 * @default null 27298 * 27299 * @dtopt Option 27300 * @name DataTable.defaults.orderFixed 27301 * 27302 * @example 27303 * $(document).ready( function() { 27304 * $('#example').dataTable( { 27305 * "orderFixed": [[0,'asc']] 27306 * } ); 27307 * } ) 27308 */ 27309 "aaSortingFixed": [], 27310 /** 27311 * DataTables can be instructed to load data to display in the table from a 27312 * Ajax source. This option defines how that Ajax call is made and where to. 27313 * 27314 * The `ajax` property has three different modes of operation, depending on 27315 * how it is defined. These are: 27316 * 27317 * * `string` - Set the URL from where the data should be loaded from. 27318 * * `object` - Define properties for `jQuery.ajax`. 27319 * * `function` - Custom data get function 27320 * 27321 * `string` 27322 * -------- 27323 * 27324 * As a string, the `ajax` property simply defines the URL from which 27325 * DataTables will load data. 27326 * 27327 * `object` 27328 * -------- 27329 * 27330 * As an object, the parameters in the object are passed to 27331 * [jQuery.ajax](https://api.jquery.com/jQuery.ajax/) allowing fine control 27332 * of the Ajax request. DataTables has a number of default parameters which 27333 * you can override using this option. Please refer to the jQuery 27334 * documentation for a full description of the options available, although 27335 * the following parameters provide additional options in DataTables or 27336 * require special consideration: 27337 * 27338 * * `data` - As with jQuery, `data` can be provided as an object, but it 27339 * can also be used as a function to manipulate the data DataTables sends 27340 * to the server. The function takes a single parameter, an object of 27341 * parameters with the values that DataTables has readied for sending. An 27342 * object may be returned which will be merged into the DataTables 27343 * defaults, or you can add the items to the object that was passed in and 27344 * not return anything from the function. This supersedes `fnServerParams` 27345 * from DataTables 1.9-. 27346 * 27347 * * `dataSrc` - By default DataTables will look for the property `data` (or 27348 * `aaData` for compatibility with DataTables 1.9-) when obtaining data 27349 * from an Ajax source or for server-side processing - this parameter 27350 * allows that property to be changed. You can use Javascript dotted 27351 * object notation to get a data source for multiple levels of nesting, or 27352 * it my be used as a function. As a function it takes a single parameter, 27353 * the JSON returned from the server, which can be manipulated as 27354 * required, with the returned value being that used by DataTables as the 27355 * data source for the table. This supersedes `sAjaxDataProp` from 27356 * DataTables 1.9-. 27357 * 27358 * * `success` - Should not be overridden it is used internally in 27359 * DataTables. To manipulate / transform the data returned by the server 27360 * use `ajax.dataSrc`, or use `ajax` as a function (see below). 27361 * 27362 * `function` 27363 * ---------- 27364 * 27365 * As a function, making the Ajax call is left up to yourself allowing 27366 * complete control of the Ajax request. Indeed, if desired, a method other 27367 * than Ajax could be used to obtain the required data, such as Web storage 27368 * or an AIR database. 27369 * 27370 * The function is given four parameters and no return is required. The 27371 * parameters are: 27372 * 27373 * 1. _object_ - Data to send to the server 27374 * 2. _function_ - Callback function that must be executed when the required 27375 * data has been obtained. That data should be passed into the callback 27376 * as the only parameter 27377 * 3. _object_ - DataTables settings object for the table 27378 * 27379 * Note that this supersedes `fnServerData` from DataTables 1.9-. 27380 * 27381 * @type string|object|function 27382 * @default null 27383 * 27384 * @dtopt Option 27385 * @name DataTable.defaults.ajax 27386 * @since 1.10.0 27387 * 27388 * @example 27389 * // Get JSON data from a file via Ajax. 27390 * // Note DataTables expects data in the form `{ data: [ ...data... ] }` by default). 27391 * $('#example').dataTable( { 27392 * "ajax": "data.json" 27393 * } ); 27394 * 27395 * @example 27396 * // Get JSON data from a file via Ajax, using `dataSrc` to change 27397 * // `data` to `tableData` (i.e. `{ tableData: [ ...data... ] }`) 27398 * $('#example').dataTable( { 27399 * "ajax": { 27400 * "url": "data.json", 27401 * "dataSrc": "tableData" 27402 * } 27403 * } ); 27404 * 27405 * @example 27406 * // Get JSON data from a file via Ajax, using `dataSrc` to read data 27407 * // from a plain array rather than an array in an object 27408 * $('#example').dataTable( { 27409 * "ajax": { 27410 * "url": "data.json", 27411 * "dataSrc": "" 27412 * } 27413 * } ); 27414 * 27415 * @example 27416 * // Manipulate the data returned from the server - add a link to data 27417 * // (note this can, should, be done using `render` for the column - this 27418 * // is just a simple example of how the data can be manipulated). 27419 * $('#example').dataTable( { 27420 * "ajax": { 27421 * "url": "data.json", 27422 * "dataSrc": function ( json ) { 27423 * for ( var i=0, ien=json.length ; i<ien ; i++ ) { 27424 * json[i][0] = '<a href="/message/'+json[i][0]+'>View message</a>'; 27425 * } 27426 * return json; 27427 * } 27428 * } 27429 * } ); 27430 * 27431 * @example 27432 * // Add data to the request 27433 * $('#example').dataTable( { 27434 * "ajax": { 27435 * "url": "data.json", 27436 * "data": function ( d ) { 27437 * return { 27438 * "extra_search": $('#extra').val() 27439 * }; 27440 * } 27441 * } 27442 * } ); 27443 * 27444 * @example 27445 * // Send request as POST 27446 * $('#example').dataTable( { 27447 * "ajax": { 27448 * "url": "data.json", 27449 * "type": "POST" 27450 * } 27451 * } ); 27452 * 27453 * @example 27454 * // Get the data from localStorage (could interface with a form for 27455 * // adding, editing and removing rows). 27456 * $('#example').dataTable( { 27457 * "ajax": function (data, callback, settings) { 27458 * callback( 27459 * JSON.parse( localStorage.getItem('dataTablesData') ) 27460 * ); 27461 * } 27462 * } ); 27463 */ 27464 "ajax": null, 27465 /** 27466 * This parameter allows you to readily specify the entries in the length drop 27467 * down menu that DataTables shows when pagination is enabled. It can be 27468 * either a 1D array of options which will be used for both the displayed 27469 * option and the value, or a 2D array which will use the array in the first 27470 * position as the value, and the array in the second position as the 27471 * displayed options (useful for language strings such as 'All'). 27472 * 27473 * Note that the `pageLength` property will be automatically set to the 27474 * first value given in this array, unless `pageLength` is also provided. 27475 * @type array 27476 * @default [ 10, 25, 50, 100 ] 27477 * 27478 * @dtopt Option 27479 * @name DataTable.defaults.lengthMenu 27480 * 27481 * @example 27482 * $(document).ready( function() { 27483 * $('#example').dataTable( { 27484 * "lengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]] 27485 * } ); 27486 * } ); 27487 */ 27488 "aLengthMenu": [10, 25, 50, 100], 27489 /** 27490 * The `columns` option in the initialisation parameter allows you to define 27491 * details about the way individual columns behave. For a full list of 27492 * column options that can be set, please see 27493 * {@link DataTable.defaults.column}. Note that if you use `columns` to 27494 * define your columns, you must have an entry in the array for every single 27495 * column that you have in your table (these can be null if you don't which 27496 * to specify any options). 27497 * @member 27498 * 27499 * @name DataTable.defaults.column 27500 */ 27501 "aoColumns": null, 27502 /** 27503 * Very similar to `columns`, `columnDefs` allows you to target a specific 27504 * column, multiple columns, or all columns, using the `targets` property of 27505 * each object in the array. This allows great flexibility when creating 27506 * tables, as the `columnDefs` arrays can be of any length, targeting the 27507 * columns you specifically want. `columnDefs` may use any of the column 27508 * options available: {@link DataTable.defaults.column}, but it _must_ 27509 * have `targets` defined in each object in the array. Values in the `targets` 27510 * array may be: 27511 * <ul> 27512 * <li>a string - class name will be matched on the TH for the column</li> 27513 * <li>0 or a positive integer - column index counting from the left</li> 27514 * <li>a negative integer - column index counting from the right</li> 27515 * <li>the string "_all" - all columns (i.e. assign a default)</li> 27516 * </ul> 27517 * @member 27518 * 27519 * @name DataTable.defaults.columnDefs 27520 */ 27521 "aoColumnDefs": null, 27522 /** 27523 * Basically the same as `search`, this parameter defines the individual column 27524 * filtering state at initialisation time. The array must be of the same size 27525 * as the number of columns, and each element be an object with the parameters 27526 * `search` and `escapeRegex` (the latter is optional). 'null' is also 27527 * accepted and the default will be used. 27528 * @type array 27529 * @default [] 27530 * 27531 * @dtopt Option 27532 * @name DataTable.defaults.searchCols 27533 * 27534 * @example 27535 * $(document).ready( function() { 27536 * $('#example').dataTable( { 27537 * "searchCols": [ 27538 * null, 27539 * { "search": "My filter" }, 27540 * null, 27541 * { "search": "^[0-9]", "escapeRegex": false } 27542 * ] 27543 * } ); 27544 * } ) 27545 */ 27546 "aoSearchCols": [], 27547 /** 27548 * An array of CSS classes that should be applied to displayed rows. This 27549 * array may be of any length, and DataTables will apply each class 27550 * sequentially, looping when required. 27551 * @type array 27552 * @default null <i>Will take the values determined by the `oClasses.stripe*` 27553 * options</i> 27554 * 27555 * @dtopt Option 27556 * @name DataTable.defaults.stripeClasses 27557 * 27558 * @example 27559 * $(document).ready( function() { 27560 * $('#example').dataTable( { 27561 * "stripeClasses": [ 'strip1', 'strip2', 'strip3' ] 27562 * } ); 27563 * } ) 27564 */ 27565 "asStripeClasses": null, 27566 /** 27567 * Enable or disable automatic column width calculation. This can be disabled 27568 * as an optimisation (it takes some time to calculate the widths) if the 27569 * tables widths are passed in using `columns`. 27570 * @type boolean 27571 * @default true 27572 * 27573 * @dtopt Features 27574 * @name DataTable.defaults.autoWidth 27575 * 27576 * @example 27577 * $(document).ready( function () { 27578 * $('#example').dataTable( { 27579 * "autoWidth": false 27580 * } ); 27581 * } ); 27582 */ 27583 "bAutoWidth": true, 27584 /** 27585 * Deferred rendering can provide DataTables with a huge speed boost when you 27586 * are using an Ajax or JS data source for the table. This option, when set to 27587 * true, will cause DataTables to defer the creation of the table elements for 27588 * each row until they are needed for a draw - saving a significant amount of 27589 * time. 27590 * @type boolean 27591 * @default false 27592 * 27593 * @dtopt Features 27594 * @name DataTable.defaults.deferRender 27595 * 27596 * @example 27597 * $(document).ready( function() { 27598 * $('#example').dataTable( { 27599 * "ajax": "sources/arrays.txt", 27600 * "deferRender": true 27601 * } ); 27602 * } ); 27603 */ 27604 "bDeferRender": false, 27605 /** 27606 * Replace a DataTable which matches the given selector and replace it with 27607 * one which has the properties of the new initialisation object passed. If no 27608 * table matches the selector, then the new DataTable will be constructed as 27609 * per normal. 27610 * @type boolean 27611 * @default false 27612 * 27613 * @dtopt Options 27614 * @name DataTable.defaults.destroy 27615 * 27616 * @example 27617 * $(document).ready( function() { 27618 * $('#example').dataTable( { 27619 * "srollY": "200px", 27620 * "paginate": false 27621 * } ); 27622 * 27623 * // Some time later.... 27624 * $('#example').dataTable( { 27625 * "filter": false, 27626 * "destroy": true 27627 * } ); 27628 * } ); 27629 */ 27630 "bDestroy": false, 27631 /** 27632 * Enable or disable filtering of data. Filtering in DataTables is "smart" in 27633 * that it allows the end user to input multiple words (space separated) and 27634 * will match a row containing those words, even if not in the order that was 27635 * specified (this allow matching across multiple columns). Note that if you 27636 * wish to use filtering in DataTables this must remain 'true' - to remove the 27637 * default filtering input box and retain filtering abilities, please use 27638 * {@link DataTable.defaults.dom}. 27639 * @type boolean 27640 * @default true 27641 * 27642 * @dtopt Features 27643 * @name DataTable.defaults.searching 27644 * 27645 * @example 27646 * $(document).ready( function () { 27647 * $('#example').dataTable( { 27648 * "searching": false 27649 * } ); 27650 * } ); 27651 */ 27652 "bFilter": true, 27653 /** 27654 * Enable or disable the table information display. This shows information 27655 * about the data that is currently visible on the page, including information 27656 * about filtered data if that action is being performed. 27657 * @type boolean 27658 * @default true 27659 * 27660 * @dtopt Features 27661 * @name DataTable.defaults.info 27662 * 27663 * @example 27664 * $(document).ready( function () { 27665 * $('#example').dataTable( { 27666 * "info": false 27667 * } ); 27668 * } ); 27669 */ 27670 "bInfo": true, 27671 /** 27672 * Allows the end user to select the size of a formatted page from a select 27673 * menu (sizes are 10, 25, 50 and 100). Requires pagination (`paginate`). 27674 * @type boolean 27675 * @default true 27676 * 27677 * @dtopt Features 27678 * @name DataTable.defaults.lengthChange 27679 * 27680 * @example 27681 * $(document).ready( function () { 27682 * $('#example').dataTable( { 27683 * "lengthChange": false 27684 * } ); 27685 * } ); 27686 */ 27687 "bLengthChange": true, 27688 /** 27689 * Enable or disable pagination. 27690 * @type boolean 27691 * @default true 27692 * 27693 * @dtopt Features 27694 * @name DataTable.defaults.paging 27695 * 27696 * @example 27697 * $(document).ready( function () { 27698 * $('#example').dataTable( { 27699 * "paging": false 27700 * } ); 27701 * } ); 27702 */ 27703 "bPaginate": true, 27704 /** 27705 * Enable or disable the display of a 'processing' indicator when the table is 27706 * being processed (e.g. a sort). This is particularly useful for tables with 27707 * large amounts of data where it can take a noticeable amount of time to sort 27708 * the entries. 27709 * @type boolean 27710 * @default false 27711 * 27712 * @dtopt Features 27713 * @name DataTable.defaults.processing 27714 * 27715 * @example 27716 * $(document).ready( function () { 27717 * $('#example').dataTable( { 27718 * "processing": true 27719 * } ); 27720 * } ); 27721 */ 27722 "bProcessing": false, 27723 /** 27724 * Retrieve the DataTables object for the given selector. Note that if the 27725 * table has already been initialised, this parameter will cause DataTables 27726 * to simply return the object that has already been set up - it will not take 27727 * account of any changes you might have made to the initialisation object 27728 * passed to DataTables (setting this parameter to true is an acknowledgement 27729 * that you understand this). `destroy` can be used to reinitialise a table if 27730 * you need. 27731 * @type boolean 27732 * @default false 27733 * 27734 * @dtopt Options 27735 * @name DataTable.defaults.retrieve 27736 * 27737 * @example 27738 * $(document).ready( function() { 27739 * initTable(); 27740 * tableActions(); 27741 * } ); 27742 * 27743 * function initTable () 27744 * { 27745 * return $('#example').dataTable( { 27746 * "scrollY": "200px", 27747 * "paginate": false, 27748 * "retrieve": true 27749 * } ); 27750 * } 27751 * 27752 * function tableActions () 27753 * { 27754 * var table = initTable(); 27755 * // perform API operations with oTable 27756 * } 27757 */ 27758 "bRetrieve": false, 27759 /** 27760 * When vertical (y) scrolling is enabled, DataTables will force the height of 27761 * the table's viewport to the given height at all times (useful for layout). 27762 * However, this can look odd when filtering data down to a small data set, 27763 * and the footer is left "floating" further down. This parameter (when 27764 * enabled) will cause DataTables to collapse the table's viewport down when 27765 * the result set will fit within the given Y height. 27766 * @type boolean 27767 * @default false 27768 * 27769 * @dtopt Options 27770 * @name DataTable.defaults.scrollCollapse 27771 * 27772 * @example 27773 * $(document).ready( function() { 27774 * $('#example').dataTable( { 27775 * "scrollY": "200", 27776 * "scrollCollapse": true 27777 * } ); 27778 * } ); 27779 */ 27780 "bScrollCollapse": false, 27781 /** 27782 * Configure DataTables to use server-side processing. Note that the 27783 * `ajax` parameter must also be given in order to give DataTables a 27784 * source to obtain the required data for each draw. 27785 * @type boolean 27786 * @default false 27787 * 27788 * @dtopt Features 27789 * @dtopt Server-side 27790 * @name DataTable.defaults.serverSide 27791 * 27792 * @example 27793 * $(document).ready( function () { 27794 * $('#example').dataTable( { 27795 * "serverSide": true, 27796 * "ajax": "xhr.php" 27797 * } ); 27798 * } ); 27799 */ 27800 "bServerSide": false, 27801 /** 27802 * Enable or disable sorting of columns. Sorting of individual columns can be 27803 * disabled by the `sortable` option for each column. 27804 * @type boolean 27805 * @default true 27806 * 27807 * @dtopt Features 27808 * @name DataTable.defaults.ordering 27809 * 27810 * @example 27811 * $(document).ready( function () { 27812 * $('#example').dataTable( { 27813 * "ordering": false 27814 * } ); 27815 * } ); 27816 */ 27817 "bSort": true, 27818 /** 27819 * Enable or display DataTables' ability to sort multiple columns at the 27820 * same time (activated by shift-click by the user). 27821 * @type boolean 27822 * @default true 27823 * 27824 * @dtopt Options 27825 * @name DataTable.defaults.orderMulti 27826 * 27827 * @example 27828 * // Disable multiple column sorting ability 27829 * $(document).ready( function () { 27830 * $('#example').dataTable( { 27831 * "orderMulti": false 27832 * } ); 27833 * } ); 27834 */ 27835 "bSortMulti": true, 27836 /** 27837 * Allows control over whether DataTables should use the top (true) unique 27838 * cell that is found for a single column, or the bottom (false - default). 27839 * This is useful when using complex headers. 27840 * @type boolean 27841 * @default false 27842 * 27843 * @dtopt Options 27844 * @name DataTable.defaults.orderCellsTop 27845 * 27846 * @example 27847 * $(document).ready( function() { 27848 * $('#example').dataTable( { 27849 * "orderCellsTop": true 27850 * } ); 27851 * } ); 27852 */ 27853 "bSortCellsTop": false, 27854 /** 27855 * Enable or disable the addition of the classes `sorting\_1`, `sorting\_2` and 27856 * `sorting\_3` to the columns which are currently being sorted on. This is 27857 * presented as a feature switch as it can increase processing time (while 27858 * classes are removed and added) so for large data sets you might want to 27859 * turn this off. 27860 * @type boolean 27861 * @default true 27862 * 27863 * @dtopt Features 27864 * @name DataTable.defaults.orderClasses 27865 * 27866 * @example 27867 * $(document).ready( function () { 27868 * $('#example').dataTable( { 27869 * "orderClasses": false 27870 * } ); 27871 * } ); 27872 */ 27873 "bSortClasses": true, 27874 /** 27875 * Enable or disable state saving. When enabled HTML5 `localStorage` will be 27876 * used to save table display information such as pagination information, 27877 * display length, filtering and sorting. As such when the end user reloads 27878 * the page the display display will match what thy had previously set up. 27879 * 27880 * Due to the use of `localStorage` the default state saving is not supported 27881 * in IE6 or 7. If state saving is required in those browsers, use 27882 * `stateSaveCallback` to provide a storage solution such as cookies. 27883 * @type boolean 27884 * @default false 27885 * 27886 * @dtopt Features 27887 * @name DataTable.defaults.stateSave 27888 * 27889 * @example 27890 * $(document).ready( function () { 27891 * $('#example').dataTable( { 27892 * "stateSave": true 27893 * } ); 27894 * } ); 27895 */ 27896 "bStateSave": false, 27897 /** 27898 * This function is called when a TR element is created (and all TD child 27899 * elements have been inserted), or registered if using a DOM source, allowing 27900 * manipulation of the TR element (adding classes etc). 27901 * @type function 27902 * @param {node} row "TR" element for the current row 27903 * @param {array} data Raw data array for this row 27904 * @param {int} dataIndex The index of this row in the internal aoData array 27905 * 27906 * @dtopt Callbacks 27907 * @name DataTable.defaults.createdRow 27908 * 27909 * @example 27910 * $(document).ready( function() { 27911 * $('#example').dataTable( { 27912 * "createdRow": function( row, data, dataIndex ) { 27913 * // Bold the grade for all 'A' grade browsers 27914 * if ( data[4] == "A" ) 27915 * { 27916 * $('td:eq(4)', row).html( '<b>A</b>' ); 27917 * } 27918 * } 27919 * } ); 27920 * } ); 27921 */ 27922 "fnCreatedRow": null, 27923 /** 27924 * This function is called on every 'draw' event, and allows you to 27925 * dynamically modify any aspect you want about the created DOM. 27926 * @type function 27927 * @param {object} settings DataTables settings object 27928 * 27929 * @dtopt Callbacks 27930 * @name DataTable.defaults.drawCallback 27931 * 27932 * @example 27933 * $(document).ready( function() { 27934 * $('#example').dataTable( { 27935 * "drawCallback": function( settings ) { 27936 * alert( 'DataTables has redrawn the table' ); 27937 * } 27938 * } ); 27939 * } ); 27940 */ 27941 "fnDrawCallback": null, 27942 /** 27943 * Identical to fnHeaderCallback() but for the table footer this function 27944 * allows you to modify the table footer on every 'draw' event. 27945 * @type function 27946 * @param {node} foot "TR" element for the footer 27947 * @param {array} data Full table data (as derived from the original HTML) 27948 * @param {int} start Index for the current display starting point in the 27949 * display array 27950 * @param {int} end Index for the current display ending point in the 27951 * display array 27952 * @param {array int} display Index array to translate the visual position 27953 * to the full data array 27954 * 27955 * @dtopt Callbacks 27956 * @name DataTable.defaults.footerCallback 27957 * 27958 * @example 27959 * $(document).ready( function() { 27960 * $('#example').dataTable( { 27961 * "footerCallback": function( tfoot, data, start, end, display ) { 27962 * tfoot.getElementsByTagName('th')[0].innerHTML = "Starting index is "+start; 27963 * } 27964 * } ); 27965 * } ) 27966 */ 27967 "fnFooterCallback": null, 27968 /** 27969 * When rendering large numbers in the information element for the table 27970 * (i.e. "Showing 1 to 10 of 57 entries") DataTables will render large numbers 27971 * to have a comma separator for the 'thousands' units (e.g. 1 million is 27972 * rendered as "1,000,000") to help readability for the end user. This 27973 * function will override the default method DataTables uses. 27974 * @type function 27975 * @member 27976 * @param {int} toFormat number to be formatted 27977 * @returns {string} formatted string for DataTables to show the number 27978 * 27979 * @dtopt Callbacks 27980 * @name DataTable.defaults.formatNumber 27981 * 27982 * @example 27983 * // Format a number using a single quote for the separator (note that 27984 * // this can also be done with the language.thousands option) 27985 * $(document).ready( function() { 27986 * $('#example').dataTable( { 27987 * "formatNumber": function ( toFormat ) { 27988 * return toFormat.toString().replace( 27989 * /\B(?=(\d{3})+(?!\d))/g, "'" 27990 * ); 27991 * }; 27992 * } ); 27993 * } ); 27994 */ 27995 "fnFormatNumber": function(toFormat) { 27996 return toFormat.toString().replace( 27997 /\B(?=(\d{3})+(?!\d))/g, 27998 this.oLanguage.sThousands 27999 ); 28000 }, 28001 /** 28002 * This function is called on every 'draw' event, and allows you to 28003 * dynamically modify the header row. This can be used to calculate and 28004 * display useful information about the table. 28005 * @type function 28006 * @param {node} head "TR" element for the header 28007 * @param {array} data Full table data (as derived from the original HTML) 28008 * @param {int} start Index for the current display starting point in the 28009 * display array 28010 * @param {int} end Index for the current display ending point in the 28011 * display array 28012 * @param {array int} display Index array to translate the visual position 28013 * to the full data array 28014 * 28015 * @dtopt Callbacks 28016 * @name DataTable.defaults.headerCallback 28017 * 28018 * @example 28019 * $(document).ready( function() { 28020 * $('#example').dataTable( { 28021 * "fheaderCallback": function( head, data, start, end, display ) { 28022 * head.getElementsByTagName('th')[0].innerHTML = "Displaying "+(end-start)+" records"; 28023 * } 28024 * } ); 28025 * } ) 28026 */ 28027 "fnHeaderCallback": null, 28028 /** 28029 * The information element can be used to convey information about the current 28030 * state of the table. Although the internationalisation options presented by 28031 * DataTables are quite capable of dealing with most customisations, there may 28032 * be times where you wish to customise the string further. This callback 28033 * allows you to do exactly that. 28034 * @type function 28035 * @param {object} oSettings DataTables settings object 28036 * @param {int} start Starting position in data for the draw 28037 * @param {int} end End position in data for the draw 28038 * @param {int} max Total number of rows in the table (regardless of 28039 * filtering) 28040 * @param {int} total Total number of rows in the data set, after filtering 28041 * @param {string} pre The string that DataTables has formatted using it's 28042 * own rules 28043 * @returns {string} The string to be displayed in the information element. 28044 * 28045 * @dtopt Callbacks 28046 * @name DataTable.defaults.infoCallback 28047 * 28048 * @example 28049 * $('#example').dataTable( { 28050 * "infoCallback": function( settings, start, end, max, total, pre ) { 28051 * return start +" to "+ end; 28052 * } 28053 * } ); 28054 */ 28055 "fnInfoCallback": null, 28056 /** 28057 * Called when the table has been initialised. Normally DataTables will 28058 * initialise sequentially and there will be no need for this function, 28059 * however, this does not hold true when using external language information 28060 * since that is obtained using an async XHR call. 28061 * @type function 28062 * @param {object} settings DataTables settings object 28063 * @param {object} json The JSON object request from the server - only 28064 * present if client-side Ajax sourced data is used 28065 * 28066 * @dtopt Callbacks 28067 * @name DataTable.defaults.initComplete 28068 * 28069 * @example 28070 * $(document).ready( function() { 28071 * $('#example').dataTable( { 28072 * "initComplete": function(settings, json) { 28073 * alert( 'DataTables has finished its initialisation.' ); 28074 * } 28075 * } ); 28076 * } ) 28077 */ 28078 "fnInitComplete": null, 28079 /** 28080 * Called at the very start of each table draw and can be used to cancel the 28081 * draw by returning false, any other return (including undefined) results in 28082 * the full draw occurring). 28083 * @type function 28084 * @param {object} settings DataTables settings object 28085 * @returns {boolean} False will cancel the draw, anything else (including no 28086 * return) will allow it to complete. 28087 * 28088 * @dtopt Callbacks 28089 * @name DataTable.defaults.preDrawCallback 28090 * 28091 * @example 28092 * $(document).ready( function() { 28093 * $('#example').dataTable( { 28094 * "preDrawCallback": function( settings ) { 28095 * if ( $('#test').val() == 1 ) { 28096 * return false; 28097 * } 28098 * } 28099 * } ); 28100 * } ); 28101 */ 28102 "fnPreDrawCallback": null, 28103 /** 28104 * This function allows you to 'post process' each row after it have been 28105 * generated for each table draw, but before it is rendered on screen. This 28106 * function might be used for setting the row class name etc. 28107 * @type function 28108 * @param {node} row "TR" element for the current row 28109 * @param {array} data Raw data array for this row 28110 * @param {int} displayIndex The display index for the current table draw 28111 * @param {int} displayIndexFull The index of the data in the full list of 28112 * rows (after filtering) 28113 * 28114 * @dtopt Callbacks 28115 * @name DataTable.defaults.rowCallback 28116 * 28117 * @example 28118 * $(document).ready( function() { 28119 * $('#example').dataTable( { 28120 * "rowCallback": function( row, data, displayIndex, displayIndexFull ) { 28121 * // Bold the grade for all 'A' grade browsers 28122 * if ( data[4] == "A" ) { 28123 * $('td:eq(4)', row).html( '<b>A</b>' ); 28124 * } 28125 * } 28126 * } ); 28127 * } ); 28128 */ 28129 "fnRowCallback": null, 28130 /** 28131 * __Deprecated__ The functionality provided by this parameter has now been 28132 * superseded by that provided through `ajax`, which should be used instead. 28133 * 28134 * This parameter allows you to override the default function which obtains 28135 * the data from the server so something more suitable for your application. 28136 * For example you could use POST data, or pull information from a Gears or 28137 * AIR database. 28138 * @type function 28139 * @member 28140 * @param {string} source HTTP source to obtain the data from (`ajax`) 28141 * @param {array} data A key/value pair object containing the data to send 28142 * to the server 28143 * @param {function} callback to be called on completion of the data get 28144 * process that will draw the data on the page. 28145 * @param {object} settings DataTables settings object 28146 * 28147 * @dtopt Callbacks 28148 * @dtopt Server-side 28149 * @name DataTable.defaults.serverData 28150 * 28151 * @deprecated 1.10. Please use `ajax` for this functionality now. 28152 */ 28153 "fnServerData": null, 28154 /** 28155 * __Deprecated__ The functionality provided by this parameter has now been 28156 * superseded by that provided through `ajax`, which should be used instead. 28157 * 28158 * It is often useful to send extra data to the server when making an Ajax 28159 * request - for example custom filtering information, and this callback 28160 * function makes it trivial to send extra information to the server. The 28161 * passed in parameter is the data set that has been constructed by 28162 * DataTables, and you can add to this or modify it as you require. 28163 * @type function 28164 * @param {array} data Data array (array of objects which are name/value 28165 * pairs) that has been constructed by DataTables and will be sent to the 28166 * server. In the case of Ajax sourced data with server-side processing 28167 * this will be an empty array, for server-side processing there will be a 28168 * significant number of parameters! 28169 * @returns {undefined} Ensure that you modify the data array passed in, 28170 * as this is passed by reference. 28171 * 28172 * @dtopt Callbacks 28173 * @dtopt Server-side 28174 * @name DataTable.defaults.serverParams 28175 * 28176 * @deprecated 1.10. Please use `ajax` for this functionality now. 28177 */ 28178 "fnServerParams": null, 28179 /** 28180 * Load the table state. With this function you can define from where, and how, the 28181 * state of a table is loaded. By default DataTables will load from `localStorage` 28182 * but you might wish to use a server-side database or cookies. 28183 * @type function 28184 * @member 28185 * @param {object} settings DataTables settings object 28186 * @param {object} callback Callback that can be executed when done. It 28187 * should be passed the loaded state object. 28188 * @return {object} The DataTables state object to be loaded 28189 * 28190 * @dtopt Callbacks 28191 * @name DataTable.defaults.stateLoadCallback 28192 * 28193 * @example 28194 * $(document).ready( function() { 28195 * $('#example').dataTable( { 28196 * "stateSave": true, 28197 * "stateLoadCallback": function (settings, callback) { 28198 * $.ajax( { 28199 * "url": "/state_load", 28200 * "dataType": "json", 28201 * "success": function (json) { 28202 * callback( json ); 28203 * } 28204 * } ); 28205 * } 28206 * } ); 28207 * } ); 28208 */ 28209 "fnStateLoadCallback": function(settings) { 28210 try { 28211 return JSON.parse( 28212 (settings.iStateDuration === -1 ? sessionStorage : localStorage).getItem( 28213 "DataTables_" + settings.sInstance + "_" + location.pathname 28214 ) 28215 ); 28216 } catch (e) { 28217 return {}; 28218 } 28219 }, 28220 /** 28221 * Callback which allows modification of the saved state prior to loading that state. 28222 * This callback is called when the table is loading state from the stored data, but 28223 * prior to the settings object being modified by the saved state. Note that for 28224 * plug-in authors, you should use the `stateLoadParams` event to load parameters for 28225 * a plug-in. 28226 * @type function 28227 * @param {object} settings DataTables settings object 28228 * @param {object} data The state object that is to be loaded 28229 * 28230 * @dtopt Callbacks 28231 * @name DataTable.defaults.stateLoadParams 28232 * 28233 * @example 28234 * // Remove a saved filter, so filtering is never loaded 28235 * $(document).ready( function() { 28236 * $('#example').dataTable( { 28237 * "stateSave": true, 28238 * "stateLoadParams": function (settings, data) { 28239 * data.oSearch.sSearch = ""; 28240 * } 28241 * } ); 28242 * } ); 28243 * 28244 * @example 28245 * // Disallow state loading by returning false 28246 * $(document).ready( function() { 28247 * $('#example').dataTable( { 28248 * "stateSave": true, 28249 * "stateLoadParams": function (settings, data) { 28250 * return false; 28251 * } 28252 * } ); 28253 * } ); 28254 */ 28255 "fnStateLoadParams": null, 28256 /** 28257 * Callback that is called when the state has been loaded from the state saving method 28258 * and the DataTables settings object has been modified as a result of the loaded state. 28259 * @type function 28260 * @param {object} settings DataTables settings object 28261 * @param {object} data The state object that was loaded 28262 * 28263 * @dtopt Callbacks 28264 * @name DataTable.defaults.stateLoaded 28265 * 28266 * @example 28267 * // Show an alert with the filtering value that was saved 28268 * $(document).ready( function() { 28269 * $('#example').dataTable( { 28270 * "stateSave": true, 28271 * "stateLoaded": function (settings, data) { 28272 * alert( 'Saved filter was: '+data.oSearch.sSearch ); 28273 * } 28274 * } ); 28275 * } ); 28276 */ 28277 "fnStateLoaded": null, 28278 /** 28279 * Save the table state. This function allows you to define where and how the state 28280 * information for the table is stored By default DataTables will use `localStorage` 28281 * but you might wish to use a server-side database or cookies. 28282 * @type function 28283 * @member 28284 * @param {object} settings DataTables settings object 28285 * @param {object} data The state object to be saved 28286 * 28287 * @dtopt Callbacks 28288 * @name DataTable.defaults.stateSaveCallback 28289 * 28290 * @example 28291 * $(document).ready( function() { 28292 * $('#example').dataTable( { 28293 * "stateSave": true, 28294 * "stateSaveCallback": function (settings, data) { 28295 * // Send an Ajax request to the server with the state object 28296 * $.ajax( { 28297 * "url": "/state_save", 28298 * "data": data, 28299 * "dataType": "json", 28300 * "method": "POST" 28301 * "success": function () {} 28302 * } ); 28303 * } 28304 * } ); 28305 * } ); 28306 */ 28307 "fnStateSaveCallback": function(settings, data) { 28308 try { 28309 (settings.iStateDuration === -1 ? sessionStorage : localStorage).setItem( 28310 "DataTables_" + settings.sInstance + "_" + location.pathname, 28311 JSON.stringify(data) 28312 ); 28313 } catch (e) { 28314 } 28315 }, 28316 /** 28317 * Callback which allows modification of the state to be saved. Called when the table 28318 * has changed state a new state save is required. This method allows modification of 28319 * the state saving object prior to actually doing the save, including addition or 28320 * other state properties or modification. Note that for plug-in authors, you should 28321 * use the `stateSaveParams` event to save parameters for a plug-in. 28322 * @type function 28323 * @param {object} settings DataTables settings object 28324 * @param {object} data The state object to be saved 28325 * 28326 * @dtopt Callbacks 28327 * @name DataTable.defaults.stateSaveParams 28328 * 28329 * @example 28330 * // Remove a saved filter, so filtering is never saved 28331 * $(document).ready( function() { 28332 * $('#example').dataTable( { 28333 * "stateSave": true, 28334 * "stateSaveParams": function (settings, data) { 28335 * data.oSearch.sSearch = ""; 28336 * } 28337 * } ); 28338 * } ); 28339 */ 28340 "fnStateSaveParams": null, 28341 /** 28342 * Duration for which the saved state information is considered valid. After this period 28343 * has elapsed the state will be returned to the default. 28344 * Value is given in seconds. 28345 * @type int 28346 * @default 7200 <i>(2 hours)</i> 28347 * 28348 * @dtopt Options 28349 * @name DataTable.defaults.stateDuration 28350 * 28351 * @example 28352 * $(document).ready( function() { 28353 * $('#example').dataTable( { 28354 * "stateDuration": 60*60*24; // 1 day 28355 * } ); 28356 * } ) 28357 */ 28358 "iStateDuration": 7200, 28359 /** 28360 * When enabled DataTables will not make a request to the server for the first 28361 * page draw - rather it will use the data already on the page (no sorting etc 28362 * will be applied to it), thus saving on an XHR at load time. `deferLoading` 28363 * is used to indicate that deferred loading is required, but it is also used 28364 * to tell DataTables how many records there are in the full table (allowing 28365 * the information element and pagination to be displayed correctly). In the case 28366 * where a filtering is applied to the table on initial load, this can be 28367 * indicated by giving the parameter as an array, where the first element is 28368 * the number of records available after filtering and the second element is the 28369 * number of records without filtering (allowing the table information element 28370 * to be shown correctly). 28371 * @type int | array 28372 * @default null 28373 * 28374 * @dtopt Options 28375 * @name DataTable.defaults.deferLoading 28376 * 28377 * @example 28378 * // 57 records available in the table, no filtering applied 28379 * $(document).ready( function() { 28380 * $('#example').dataTable( { 28381 * "serverSide": true, 28382 * "ajax": "scripts/server_processing.php", 28383 * "deferLoading": 57 28384 * } ); 28385 * } ); 28386 * 28387 * @example 28388 * // 57 records after filtering, 100 without filtering (an initial filter applied) 28389 * $(document).ready( function() { 28390 * $('#example').dataTable( { 28391 * "serverSide": true, 28392 * "ajax": "scripts/server_processing.php", 28393 * "deferLoading": [ 57, 100 ], 28394 * "search": { 28395 * "search": "my_filter" 28396 * } 28397 * } ); 28398 * } ); 28399 */ 28400 "iDeferLoading": null, 28401 /** 28402 * Number of rows to display on a single page when using pagination. If 28403 * feature enabled (`lengthChange`) then the end user will be able to override 28404 * this to a custom setting using a pop-up menu. 28405 * @type int 28406 * @default 10 28407 * 28408 * @dtopt Options 28409 * @name DataTable.defaults.pageLength 28410 * 28411 * @example 28412 * $(document).ready( function() { 28413 * $('#example').dataTable( { 28414 * "pageLength": 50 28415 * } ); 28416 * } ) 28417 */ 28418 "iDisplayLength": 10, 28419 /** 28420 * Define the starting point for data display when using DataTables with 28421 * pagination. Note that this parameter is the number of records, rather than 28422 * the page number, so if you have 10 records per page and want to start on 28423 * the third page, it should be "20". 28424 * @type int 28425 * @default 0 28426 * 28427 * @dtopt Options 28428 * @name DataTable.defaults.displayStart 28429 * 28430 * @example 28431 * $(document).ready( function() { 28432 * $('#example').dataTable( { 28433 * "displayStart": 20 28434 * } ); 28435 * } ) 28436 */ 28437 "iDisplayStart": 0, 28438 /** 28439 * By default DataTables allows keyboard navigation of the table (sorting, paging, 28440 * and filtering) by adding a `tabindex` attribute to the required elements. This 28441 * allows you to tab through the controls and press the enter key to activate them. 28442 * The tabindex is default 0, meaning that the tab follows the flow of the document. 28443 * You can overrule this using this parameter if you wish. Use a value of -1 to 28444 * disable built-in keyboard navigation. 28445 * @type int 28446 * @default 0 28447 * 28448 * @dtopt Options 28449 * @name DataTable.defaults.tabIndex 28450 * 28451 * @example 28452 * $(document).ready( function() { 28453 * $('#example').dataTable( { 28454 * "tabIndex": 1 28455 * } ); 28456 * } ); 28457 */ 28458 "iTabIndex": 0, 28459 /** 28460 * Classes that DataTables assigns to the various components and features 28461 * that it adds to the HTML table. This allows classes to be configured 28462 * during initialisation in addition to through the static 28463 * {@link DataTable.ext.oStdClasses} object). 28464 * @namespace 28465 * @name DataTable.defaults.classes 28466 */ 28467 "oClasses": {}, 28468 /** 28469 * All strings that DataTables uses in the user interface that it creates 28470 * are defined in this object, allowing you to modified them individually or 28471 * completely replace them all as required. 28472 * @namespace 28473 * @name DataTable.defaults.language 28474 */ 28475 "oLanguage": { 28476 /** 28477 * Strings that are used for WAI-ARIA labels and controls only (these are not 28478 * actually visible on the page, but will be read by screenreaders, and thus 28479 * must be internationalised as well). 28480 * @namespace 28481 * @name DataTable.defaults.language.aria 28482 */ 28483 "oAria": { 28484 /** 28485 * ARIA label that is added to the table headers when the column may be 28486 * sorted ascending by activing the column (click or return when focused). 28487 * Note that the column header is prefixed to this string. 28488 * @type string 28489 * @default : activate to sort column ascending 28490 * 28491 * @dtopt Language 28492 * @name DataTable.defaults.language.aria.sortAscending 28493 * 28494 * @example 28495 * $(document).ready( function() { 28496 * $('#example').dataTable( { 28497 * "language": { 28498 * "aria": { 28499 * "sortAscending": " - click/return to sort ascending" 28500 * } 28501 * } 28502 * } ); 28503 * } ); 28504 */ 28505 "sSortAscending": ": activate to sort column ascending", 28506 /** 28507 * ARIA label that is added to the table headers when the column may be 28508 * sorted descending by activing the column (click or return when focused). 28509 * Note that the column header is prefixed to this string. 28510 * @type string 28511 * @default : activate to sort column ascending 28512 * 28513 * @dtopt Language 28514 * @name DataTable.defaults.language.aria.sortDescending 28515 * 28516 * @example 28517 * $(document).ready( function() { 28518 * $('#example').dataTable( { 28519 * "language": { 28520 * "aria": { 28521 * "sortDescending": " - click/return to sort descending" 28522 * } 28523 * } 28524 * } ); 28525 * } ); 28526 */ 28527 "sSortDescending": ": activate to sort column descending" 28528 }, 28529 /** 28530 * Pagination string used by DataTables for the built-in pagination 28531 * control types. 28532 * @namespace 28533 * @name DataTable.defaults.language.paginate 28534 */ 28535 "oPaginate": { 28536 /** 28537 * Text to use when using the 'full_numbers' type of pagination for the 28538 * button to take the user to the first page. 28539 * @type string 28540 * @default First 28541 * 28542 * @dtopt Language 28543 * @name DataTable.defaults.language.paginate.first 28544 * 28545 * @example 28546 * $(document).ready( function() { 28547 * $('#example').dataTable( { 28548 * "language": { 28549 * "paginate": { 28550 * "first": "First page" 28551 * } 28552 * } 28553 * } ); 28554 * } ); 28555 */ 28556 "sFirst": "First", 28557 /** 28558 * Text to use when using the 'full_numbers' type of pagination for the 28559 * button to take the user to the last page. 28560 * @type string 28561 * @default Last 28562 * 28563 * @dtopt Language 28564 * @name DataTable.defaults.language.paginate.last 28565 * 28566 * @example 28567 * $(document).ready( function() { 28568 * $('#example').dataTable( { 28569 * "language": { 28570 * "paginate": { 28571 * "last": "Last page" 28572 * } 28573 * } 28574 * } ); 28575 * } ); 28576 */ 28577 "sLast": "Last", 28578 /** 28579 * Text to use for the 'next' pagination button (to take the user to the 28580 * next page). 28581 * @type string 28582 * @default Next 28583 * 28584 * @dtopt Language 28585 * @name DataTable.defaults.language.paginate.next 28586 * 28587 * @example 28588 * $(document).ready( function() { 28589 * $('#example').dataTable( { 28590 * "language": { 28591 * "paginate": { 28592 * "next": "Next page" 28593 * } 28594 * } 28595 * } ); 28596 * } ); 28597 */ 28598 "sNext": "Next", 28599 /** 28600 * Text to use for the 'previous' pagination button (to take the user to 28601 * the previous page). 28602 * @type string 28603 * @default Previous 28604 * 28605 * @dtopt Language 28606 * @name DataTable.defaults.language.paginate.previous 28607 * 28608 * @example 28609 * $(document).ready( function() { 28610 * $('#example').dataTable( { 28611 * "language": { 28612 * "paginate": { 28613 * "previous": "Previous page" 28614 * } 28615 * } 28616 * } ); 28617 * } ); 28618 */ 28619 "sPrevious": "Previous" 28620 }, 28621 /** 28622 * This string is shown in preference to `zeroRecords` when the table is 28623 * empty of data (regardless of filtering). Note that this is an optional 28624 * parameter - if it is not given, the value of `zeroRecords` will be used 28625 * instead (either the default or given value). 28626 * @type string 28627 * @default No data available in table 28628 * 28629 * @dtopt Language 28630 * @name DataTable.defaults.language.emptyTable 28631 * 28632 * @example 28633 * $(document).ready( function() { 28634 * $('#example').dataTable( { 28635 * "language": { 28636 * "emptyTable": "No data available in table" 28637 * } 28638 * } ); 28639 * } ); 28640 */ 28641 "sEmptyTable": "No data available in table", 28642 /** 28643 * This string gives information to the end user about the information 28644 * that is current on display on the page. The following tokens can be 28645 * used in the string and will be dynamically replaced as the table 28646 * display updates. This tokens can be placed anywhere in the string, or 28647 * removed as needed by the language requires: 28648 * 28649 * * `\_START\_` - Display index of the first record on the current page 28650 * * `\_END\_` - Display index of the last record on the current page 28651 * * `\_TOTAL\_` - Number of records in the table after filtering 28652 * * `\_MAX\_` - Number of records in the table without filtering 28653 * * `\_PAGE\_` - Current page number 28654 * * `\_PAGES\_` - Total number of pages of data in the table 28655 * 28656 * @type string 28657 * @default Showing _START_ to _END_ of _TOTAL_ entries 28658 * 28659 * @dtopt Language 28660 * @name DataTable.defaults.language.info 28661 * 28662 * @example 28663 * $(document).ready( function() { 28664 * $('#example').dataTable( { 28665 * "language": { 28666 * "info": "Showing page _PAGE_ of _PAGES_" 28667 * } 28668 * } ); 28669 * } ); 28670 */ 28671 "sInfo": "Showing _START_ to _END_ of _TOTAL_ entries", 28672 /** 28673 * Display information string for when the table is empty. Typically the 28674 * format of this string should match `info`. 28675 * @type string 28676 * @default Showing 0 to 0 of 0 entries 28677 * 28678 * @dtopt Language 28679 * @name DataTable.defaults.language.infoEmpty 28680 * 28681 * @example 28682 * $(document).ready( function() { 28683 * $('#example').dataTable( { 28684 * "language": { 28685 * "infoEmpty": "No entries to show" 28686 * } 28687 * } ); 28688 * } ); 28689 */ 28690 "sInfoEmpty": "Showing 0 to 0 of 0 entries", 28691 /** 28692 * When a user filters the information in a table, this string is appended 28693 * to the information (`info`) to give an idea of how strong the filtering 28694 * is. The variable _MAX_ is dynamically updated. 28695 * @type string 28696 * @default (filtered from _MAX_ total entries) 28697 * 28698 * @dtopt Language 28699 * @name DataTable.defaults.language.infoFiltered 28700 * 28701 * @example 28702 * $(document).ready( function() { 28703 * $('#example').dataTable( { 28704 * "language": { 28705 * "infoFiltered": " - filtering from _MAX_ records" 28706 * } 28707 * } ); 28708 * } ); 28709 */ 28710 "sInfoFiltered": "(filtered from _MAX_ total entries)", 28711 /** 28712 * If can be useful to append extra information to the info string at times, 28713 * and this variable does exactly that. This information will be appended to 28714 * the `info` (`infoEmpty` and `infoFiltered` in whatever combination they are 28715 * being used) at all times. 28716 * @type string 28717 * @default <i>Empty string</i> 28718 * 28719 * @dtopt Language 28720 * @name DataTable.defaults.language.infoPostFix 28721 * 28722 * @example 28723 * $(document).ready( function() { 28724 * $('#example').dataTable( { 28725 * "language": { 28726 * "infoPostFix": "All records shown are derived from real information." 28727 * } 28728 * } ); 28729 * } ); 28730 */ 28731 "sInfoPostFix": "", 28732 /** 28733 * This decimal place operator is a little different from the other 28734 * language options since DataTables doesn't output floating point 28735 * numbers, so it won't ever use this for display of a number. Rather, 28736 * what this parameter does is modify the sort methods of the table so 28737 * that numbers which are in a format which has a character other than 28738 * a period (`.`) as a decimal place will be sorted numerically. 28739 * 28740 * Note that numbers with different decimal places cannot be shown in 28741 * the same table and still be sortable, the table must be consistent. 28742 * However, multiple different tables on the page can use different 28743 * decimal place characters. 28744 * @type string 28745 * @default 28746 * 28747 * @dtopt Language 28748 * @name DataTable.defaults.language.decimal 28749 * 28750 * @example 28751 * $(document).ready( function() { 28752 * $('#example').dataTable( { 28753 * "language": { 28754 * "decimal": "," 28755 * "thousands": "." 28756 * } 28757 * } ); 28758 * } ); 28759 */ 28760 "sDecimal": "", 28761 /** 28762 * DataTables has a build in number formatter (`formatNumber`) which is 28763 * used to format large numbers that are used in the table information. 28764 * By default a comma is used, but this can be trivially changed to any 28765 * character you wish with this parameter. 28766 * @type string 28767 * @default , 28768 * 28769 * @dtopt Language 28770 * @name DataTable.defaults.language.thousands 28771 * 28772 * @example 28773 * $(document).ready( function() { 28774 * $('#example').dataTable( { 28775 * "language": { 28776 * "thousands": "'" 28777 * } 28778 * } ); 28779 * } ); 28780 */ 28781 "sThousands": ",", 28782 /** 28783 * Detail the action that will be taken when the drop down menu for the 28784 * pagination length option is changed. The '_MENU_' variable is replaced 28785 * with a default select list of 10, 25, 50 and 100, and can be replaced 28786 * with a custom select box if required. 28787 * @type string 28788 * @default Show _MENU_ entries 28789 * 28790 * @dtopt Language 28791 * @name DataTable.defaults.language.lengthMenu 28792 * 28793 * @example 28794 * // Language change only 28795 * $(document).ready( function() { 28796 * $('#example').dataTable( { 28797 * "language": { 28798 * "lengthMenu": "Display _MENU_ records" 28799 * } 28800 * } ); 28801 * } ); 28802 * 28803 * @example 28804 * // Language and options change 28805 * $(document).ready( function() { 28806 * $('#example').dataTable( { 28807 * "language": { 28808 * "lengthMenu": 'Display <select>'+ 28809 * '<option value="10">10</option>'+ 28810 * '<option value="20">20</option>'+ 28811 * '<option value="30">30</option>'+ 28812 * '<option value="40">40</option>'+ 28813 * '<option value="50">50</option>'+ 28814 * '<option value="-1">All</option>'+ 28815 * '</select> records' 28816 * } 28817 * } ); 28818 * } ); 28819 */ 28820 "sLengthMenu": "Show _MENU_ entries", 28821 /** 28822 * When using Ajax sourced data and during the first draw when DataTables is 28823 * gathering the data, this message is shown in an empty row in the table to 28824 * indicate to the end user the the data is being loaded. Note that this 28825 * parameter is not used when loading data by server-side processing, just 28826 * Ajax sourced data with client-side processing. 28827 * @type string 28828 * @default Loading... 28829 * 28830 * @dtopt Language 28831 * @name DataTable.defaults.language.loadingRecords 28832 * 28833 * @example 28834 * $(document).ready( function() { 28835 * $('#example').dataTable( { 28836 * "language": { 28837 * "loadingRecords": "Please wait - loading..." 28838 * } 28839 * } ); 28840 * } ); 28841 */ 28842 "sLoadingRecords": "Loading...", 28843 /** 28844 * Text which is displayed when the table is processing a user action 28845 * (usually a sort command or similar). 28846 * @type string 28847 * 28848 * @dtopt Language 28849 * @name DataTable.defaults.language.processing 28850 * 28851 * @example 28852 * $(document).ready( function() { 28853 * $('#example').dataTable( { 28854 * "language": { 28855 * "processing": "DataTables is currently busy" 28856 * } 28857 * } ); 28858 * } ); 28859 */ 28860 "sProcessing": "", 28861 /** 28862 * Details the actions that will be taken when the user types into the 28863 * filtering input text box. The variable "_INPUT_", if used in the string, 28864 * is replaced with the HTML text box for the filtering input allowing 28865 * control over where it appears in the string. If "_INPUT_" is not given 28866 * then the input box is appended to the string automatically. 28867 * @type string 28868 * @default Search: 28869 * 28870 * @dtopt Language 28871 * @name DataTable.defaults.language.search 28872 * 28873 * @example 28874 * // Input text box will be appended at the end automatically 28875 * $(document).ready( function() { 28876 * $('#example').dataTable( { 28877 * "language": { 28878 * "search": "Filter records:" 28879 * } 28880 * } ); 28881 * } ); 28882 * 28883 * @example 28884 * // Specify where the filter should appear 28885 * $(document).ready( function() { 28886 * $('#example').dataTable( { 28887 * "language": { 28888 * "search": "Apply filter _INPUT_ to table" 28889 * } 28890 * } ); 28891 * } ); 28892 */ 28893 "sSearch": "Search:", 28894 /** 28895 * Assign a `placeholder` attribute to the search `input` element 28896 * @type string 28897 * @default 28898 * 28899 * @dtopt Language 28900 * @name DataTable.defaults.language.searchPlaceholder 28901 */ 28902 "sSearchPlaceholder": "", 28903 /** 28904 * All of the language information can be stored in a file on the 28905 * server-side, which DataTables will look up if this parameter is passed. 28906 * It must store the URL of the language file, which is in a JSON format, 28907 * and the object has the same properties as the oLanguage object in the 28908 * initialiser object (i.e. the above parameters). Please refer to one of 28909 * the example language files to see how this works in action. 28910 * @type string 28911 * @default <i>Empty string - i.e. disabled</i> 28912 * 28913 * @dtopt Language 28914 * @name DataTable.defaults.language.url 28915 * 28916 * @example 28917 * $(document).ready( function() { 28918 * $('#example').dataTable( { 28919 * "language": { 28920 * "url": "https://www.sprymedia.co.uk/dataTables/lang.txt" 28921 * } 28922 * } ); 28923 * } ); 28924 */ 28925 "sUrl": "", 28926 /** 28927 * Text shown inside the table records when the is no information to be 28928 * displayed after filtering. `emptyTable` is shown when there is simply no 28929 * information in the table at all (regardless of filtering). 28930 * @type string 28931 * @default No matching records found 28932 * 28933 * @dtopt Language 28934 * @name DataTable.defaults.language.zeroRecords 28935 * 28936 * @example 28937 * $(document).ready( function() { 28938 * $('#example').dataTable( { 28939 * "language": { 28940 * "zeroRecords": "No records to display" 28941 * } 28942 * } ); 28943 * } ); 28944 */ 28945 "sZeroRecords": "No matching records found" 28946 }, 28947 /** 28948 * This parameter allows you to have define the global filtering state at 28949 * initialisation time. As an object the `search` parameter must be 28950 * defined, but all other parameters are optional. When `regex` is true, 28951 * the search string will be treated as a regular expression, when false 28952 * (default) it will be treated as a straight string. When `smart` 28953 * DataTables will use it's smart filtering methods (to word match at 28954 * any point in the data), when false this will not be done. 28955 * @namespace 28956 * @extends DataTable.models.oSearch 28957 * 28958 * @dtopt Options 28959 * @name DataTable.defaults.search 28960 * 28961 * @example 28962 * $(document).ready( function() { 28963 * $('#example').dataTable( { 28964 * "search": {"search": "Initial search"} 28965 * } ); 28966 * } ) 28967 */ 28968 "oSearch": $3.extend({}, DataTable2.models.oSearch), 28969 /** 28970 * __Deprecated__ The functionality provided by this parameter has now been 28971 * superseded by that provided through `ajax`, which should be used instead. 28972 * 28973 * By default DataTables will look for the property `data` (or `aaData` for 28974 * compatibility with DataTables 1.9-) when obtaining data from an Ajax 28975 * source or for server-side processing - this parameter allows that 28976 * property to be changed. You can use Javascript dotted object notation to 28977 * get a data source for multiple levels of nesting. 28978 * @type string 28979 * @default data 28980 * 28981 * @dtopt Options 28982 * @dtopt Server-side 28983 * @name DataTable.defaults.ajaxDataProp 28984 * 28985 * @deprecated 1.10. Please use `ajax` for this functionality now. 28986 */ 28987 "sAjaxDataProp": "data", 28988 /** 28989 * __Deprecated__ The functionality provided by this parameter has now been 28990 * superseded by that provided through `ajax`, which should be used instead. 28991 * 28992 * You can instruct DataTables to load data from an external 28993 * source using this parameter (use aData if you want to pass data in you 28994 * already have). Simply provide a url a JSON object can be obtained from. 28995 * @type string 28996 * @default null 28997 * 28998 * @dtopt Options 28999 * @dtopt Server-side 29000 * @name DataTable.defaults.ajaxSource 29001 * 29002 * @deprecated 1.10. Please use `ajax` for this functionality now. 29003 */ 29004 "sAjaxSource": null, 29005 /** 29006 * This initialisation variable allows you to specify exactly where in the 29007 * DOM you want DataTables to inject the various controls it adds to the page 29008 * (for example you might want the pagination controls at the top of the 29009 * table). DIV elements (with or without a custom class) can also be added to 29010 * aid styling. The follow syntax is used: 29011 * <ul> 29012 * <li>The following options are allowed: 29013 * <ul> 29014 * <li>'l' - Length changing</li> 29015 * <li>'f' - Filtering input</li> 29016 * <li>'t' - The table!</li> 29017 * <li>'i' - Information</li> 29018 * <li>'p' - Pagination</li> 29019 * <li>'r' - pRocessing</li> 29020 * </ul> 29021 * </li> 29022 * <li>The following constants are allowed: 29023 * <ul> 29024 * <li>'H' - jQueryUI theme "header" classes ('fg-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix')</li> 29025 * <li>'F' - jQueryUI theme "footer" classes ('fg-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix')</li> 29026 * </ul> 29027 * </li> 29028 * <li>The following syntax is expected: 29029 * <ul> 29030 * <li>'<' and '>' - div elements</li> 29031 * <li>'<"class" and '>' - div with a class</li> 29032 * <li>'<"#id" and '>' - div with an ID</li> 29033 * </ul> 29034 * </li> 29035 * <li>Examples: 29036 * <ul> 29037 * <li>'<"wrapper"flipt>'</li> 29038 * <li>'<lf<t>ip>'</li> 29039 * </ul> 29040 * </li> 29041 * </ul> 29042 * @type string 29043 * @default lfrtip <i>(when `jQueryUI` is false)</i> <b>or</b> 29044 * <"H"lfr>t<"F"ip> <i>(when `jQueryUI` is true)</i> 29045 * 29046 * @dtopt Options 29047 * @name DataTable.defaults.dom 29048 * 29049 * @example 29050 * $(document).ready( function() { 29051 * $('#example').dataTable( { 29052 * "dom": '<"top"i>rt<"bottom"flp><"clear">' 29053 * } ); 29054 * } ); 29055 */ 29056 "sDom": "lfrtip", 29057 /** 29058 * Search delay option. This will throttle full table searches that use the 29059 * DataTables provided search input element (it does not effect calls to 29060 * `dt-api search()`, providing a delay before the search is made. 29061 * @type integer 29062 * @default 0 29063 * 29064 * @dtopt Options 29065 * @name DataTable.defaults.searchDelay 29066 * 29067 * @example 29068 * $(document).ready( function() { 29069 * $('#example').dataTable( { 29070 * "searchDelay": 200 29071 * } ); 29072 * } ) 29073 */ 29074 "searchDelay": null, 29075 /** 29076 * DataTables features six different built-in options for the buttons to 29077 * display for pagination control: 29078 * 29079 * * `numbers` - Page number buttons only 29080 * * `simple` - 'Previous' and 'Next' buttons only 29081 * * 'simple_numbers` - 'Previous' and 'Next' buttons, plus page numbers 29082 * * `full` - 'First', 'Previous', 'Next' and 'Last' buttons 29083 * * `full_numbers` - 'First', 'Previous', 'Next' and 'Last' buttons, plus page numbers 29084 * * `first_last_numbers` - 'First' and 'Last' buttons, plus page numbers 29085 * 29086 * Further methods can be added using {@link DataTable.ext.oPagination}. 29087 * @type string 29088 * @default simple_numbers 29089 * 29090 * @dtopt Options 29091 * @name DataTable.defaults.pagingType 29092 * 29093 * @example 29094 * $(document).ready( function() { 29095 * $('#example').dataTable( { 29096 * "pagingType": "full_numbers" 29097 * } ); 29098 * } ) 29099 */ 29100 "sPaginationType": "simple_numbers", 29101 /** 29102 * Enable horizontal scrolling. When a table is too wide to fit into a 29103 * certain layout, or you have a large number of columns in the table, you 29104 * can enable x-scrolling to show the table in a viewport, which can be 29105 * scrolled. This property can be `true` which will allow the table to 29106 * scroll horizontally when needed, or any CSS unit, or a number (in which 29107 * case it will be treated as a pixel measurement). Setting as simply `true` 29108 * is recommended. 29109 * @type boolean|string 29110 * @default <i>blank string - i.e. disabled</i> 29111 * 29112 * @dtopt Features 29113 * @name DataTable.defaults.scrollX 29114 * 29115 * @example 29116 * $(document).ready( function() { 29117 * $('#example').dataTable( { 29118 * "scrollX": true, 29119 * "scrollCollapse": true 29120 * } ); 29121 * } ); 29122 */ 29123 "sScrollX": "", 29124 /** 29125 * This property can be used to force a DataTable to use more width than it 29126 * might otherwise do when x-scrolling is enabled. For example if you have a 29127 * table which requires to be well spaced, this parameter is useful for 29128 * "over-sizing" the table, and thus forcing scrolling. This property can by 29129 * any CSS unit, or a number (in which case it will be treated as a pixel 29130 * measurement). 29131 * @type string 29132 * @default <i>blank string - i.e. disabled</i> 29133 * 29134 * @dtopt Options 29135 * @name DataTable.defaults.scrollXInner 29136 * 29137 * @example 29138 * $(document).ready( function() { 29139 * $('#example').dataTable( { 29140 * "scrollX": "100%", 29141 * "scrollXInner": "110%" 29142 * } ); 29143 * } ); 29144 */ 29145 "sScrollXInner": "", 29146 /** 29147 * Enable vertical scrolling. Vertical scrolling will constrain the DataTable 29148 * to the given height, and enable scrolling for any data which overflows the 29149 * current viewport. This can be used as an alternative to paging to display 29150 * a lot of data in a small area (although paging and scrolling can both be 29151 * enabled at the same time). This property can be any CSS unit, or a number 29152 * (in which case it will be treated as a pixel measurement). 29153 * @type string 29154 * @default <i>blank string - i.e. disabled</i> 29155 * 29156 * @dtopt Features 29157 * @name DataTable.defaults.scrollY 29158 * 29159 * @example 29160 * $(document).ready( function() { 29161 * $('#example').dataTable( { 29162 * "scrollY": "200px", 29163 * "paginate": false 29164 * } ); 29165 * } ); 29166 */ 29167 "sScrollY": "", 29168 /** 29169 * __Deprecated__ The functionality provided by this parameter has now been 29170 * superseded by that provided through `ajax`, which should be used instead. 29171 * 29172 * Set the HTTP method that is used to make the Ajax call for server-side 29173 * processing or Ajax sourced data. 29174 * @type string 29175 * @default GET 29176 * 29177 * @dtopt Options 29178 * @dtopt Server-side 29179 * @name DataTable.defaults.serverMethod 29180 * 29181 * @deprecated 1.10. Please use `ajax` for this functionality now. 29182 */ 29183 "sServerMethod": "GET", 29184 /** 29185 * DataTables makes use of renderers when displaying HTML elements for 29186 * a table. These renderers can be added or modified by plug-ins to 29187 * generate suitable mark-up for a site. For example the Bootstrap 29188 * integration plug-in for DataTables uses a paging button renderer to 29189 * display pagination buttons in the mark-up required by Bootstrap. 29190 * 29191 * For further information about the renderers available see 29192 * DataTable.ext.renderer 29193 * @type string|object 29194 * @default null 29195 * 29196 * @name DataTable.defaults.renderer 29197 * 29198 */ 29199 "renderer": null, 29200 /** 29201 * Set the data property name that DataTables should use to get a row's id 29202 * to set as the `id` property in the node. 29203 * @type string 29204 * @default DT_RowId 29205 * 29206 * @name DataTable.defaults.rowId 29207 */ 29208 "rowId": "DT_RowId" 29209 }; 29210 _fnHungarianMap(DataTable2.defaults); 29211 DataTable2.defaults.column = { 29212 /** 29213 * Define which column(s) an order will occur on for this column. This 29214 * allows a column's ordering to take multiple columns into account when 29215 * doing a sort or use the data from a different column. For example first 29216 * name / last name columns make sense to do a multi-column sort over the 29217 * two columns. 29218 * @type array|int 29219 * @default null <i>Takes the value of the column index automatically</i> 29220 * 29221 * @name DataTable.defaults.column.orderData 29222 * @dtopt Columns 29223 * 29224 * @example 29225 * // Using `columnDefs` 29226 * $(document).ready( function() { 29227 * $('#example').dataTable( { 29228 * "columnDefs": [ 29229 * { "orderData": [ 0, 1 ], "targets": [ 0 ] }, 29230 * { "orderData": [ 1, 0 ], "targets": [ 1 ] }, 29231 * { "orderData": 2, "targets": [ 2 ] } 29232 * ] 29233 * } ); 29234 * } ); 29235 * 29236 * @example 29237 * // Using `columns` 29238 * $(document).ready( function() { 29239 * $('#example').dataTable( { 29240 * "columns": [ 29241 * { "orderData": [ 0, 1 ] }, 29242 * { "orderData": [ 1, 0 ] }, 29243 * { "orderData": 2 }, 29244 * null, 29245 * null 29246 * ] 29247 * } ); 29248 * } ); 29249 */ 29250 "aDataSort": null, 29251 "iDataSort": -1, 29252 /** 29253 * You can control the default ordering direction, and even alter the 29254 * behaviour of the sort handler (i.e. only allow ascending ordering etc) 29255 * using this parameter. 29256 * @type array 29257 * @default [ 'asc', 'desc' ] 29258 * 29259 * @name DataTable.defaults.column.orderSequence 29260 * @dtopt Columns 29261 * 29262 * @example 29263 * // Using `columnDefs` 29264 * $(document).ready( function() { 29265 * $('#example').dataTable( { 29266 * "columnDefs": [ 29267 * { "orderSequence": [ "asc" ], "targets": [ 1 ] }, 29268 * { "orderSequence": [ "desc", "asc", "asc" ], "targets": [ 2 ] }, 29269 * { "orderSequence": [ "desc" ], "targets": [ 3 ] } 29270 * ] 29271 * } ); 29272 * } ); 29273 * 29274 * @example 29275 * // Using `columns` 29276 * $(document).ready( function() { 29277 * $('#example').dataTable( { 29278 * "columns": [ 29279 * null, 29280 * { "orderSequence": [ "asc" ] }, 29281 * { "orderSequence": [ "desc", "asc", "asc" ] }, 29282 * { "orderSequence": [ "desc" ] }, 29283 * null 29284 * ] 29285 * } ); 29286 * } ); 29287 */ 29288 "asSorting": ["asc", "desc"], 29289 /** 29290 * Enable or disable filtering on the data in this column. 29291 * @type boolean 29292 * @default true 29293 * 29294 * @name DataTable.defaults.column.searchable 29295 * @dtopt Columns 29296 * 29297 * @example 29298 * // Using `columnDefs` 29299 * $(document).ready( function() { 29300 * $('#example').dataTable( { 29301 * "columnDefs": [ 29302 * { "searchable": false, "targets": [ 0 ] } 29303 * ] } ); 29304 * } ); 29305 * 29306 * @example 29307 * // Using `columns` 29308 * $(document).ready( function() { 29309 * $('#example').dataTable( { 29310 * "columns": [ 29311 * { "searchable": false }, 29312 * null, 29313 * null, 29314 * null, 29315 * null 29316 * ] } ); 29317 * } ); 29318 */ 29319 "bSearchable": true, 29320 /** 29321 * Enable or disable ordering on this column. 29322 * @type boolean 29323 * @default true 29324 * 29325 * @name DataTable.defaults.column.orderable 29326 * @dtopt Columns 29327 * 29328 * @example 29329 * // Using `columnDefs` 29330 * $(document).ready( function() { 29331 * $('#example').dataTable( { 29332 * "columnDefs": [ 29333 * { "orderable": false, "targets": [ 0 ] } 29334 * ] } ); 29335 * } ); 29336 * 29337 * @example 29338 * // Using `columns` 29339 * $(document).ready( function() { 29340 * $('#example').dataTable( { 29341 * "columns": [ 29342 * { "orderable": false }, 29343 * null, 29344 * null, 29345 * null, 29346 * null 29347 * ] } ); 29348 * } ); 29349 */ 29350 "bSortable": true, 29351 /** 29352 * Enable or disable the display of this column. 29353 * @type boolean 29354 * @default true 29355 * 29356 * @name DataTable.defaults.column.visible 29357 * @dtopt Columns 29358 * 29359 * @example 29360 * // Using `columnDefs` 29361 * $(document).ready( function() { 29362 * $('#example').dataTable( { 29363 * "columnDefs": [ 29364 * { "visible": false, "targets": [ 0 ] } 29365 * ] } ); 29366 * } ); 29367 * 29368 * @example 29369 * // Using `columns` 29370 * $(document).ready( function() { 29371 * $('#example').dataTable( { 29372 * "columns": [ 29373 * { "visible": false }, 29374 * null, 29375 * null, 29376 * null, 29377 * null 29378 * ] } ); 29379 * } ); 29380 */ 29381 "bVisible": true, 29382 /** 29383 * Developer definable function that is called whenever a cell is created (Ajax source, 29384 * etc) or processed for input (DOM source). This can be used as a compliment to mRender 29385 * allowing you to modify the DOM element (add background colour for example) when the 29386 * element is available. 29387 * @type function 29388 * @param {element} td The TD node that has been created 29389 * @param {*} cellData The Data for the cell 29390 * @param {array|object} rowData The data for the whole row 29391 * @param {int} row The row index for the aoData data store 29392 * @param {int} col The column index for aoColumns 29393 * 29394 * @name DataTable.defaults.column.createdCell 29395 * @dtopt Columns 29396 * 29397 * @example 29398 * $(document).ready( function() { 29399 * $('#example').dataTable( { 29400 * "columnDefs": [ { 29401 * "targets": [3], 29402 * "createdCell": function (td, cellData, rowData, row, col) { 29403 * if ( cellData == "1.7" ) { 29404 * $(td).css('color', 'blue') 29405 * } 29406 * } 29407 * } ] 29408 * }); 29409 * } ); 29410 */ 29411 "fnCreatedCell": null, 29412 /** 29413 * This parameter has been replaced by `data` in DataTables to ensure naming 29414 * consistency. `dataProp` can still be used, as there is backwards 29415 * compatibility in DataTables for this option, but it is strongly 29416 * recommended that you use `data` in preference to `dataProp`. 29417 * @name DataTable.defaults.column.dataProp 29418 */ 29419 /** 29420 * This property can be used to read data from any data source property, 29421 * including deeply nested objects / properties. `data` can be given in a 29422 * number of different ways which effect its behaviour: 29423 * 29424 * * `integer` - treated as an array index for the data source. This is the 29425 * default that DataTables uses (incrementally increased for each column). 29426 * * `string` - read an object property from the data source. There are 29427 * three 'special' options that can be used in the string to alter how 29428 * DataTables reads the data from the source object: 29429 * * `.` - Dotted Javascript notation. Just as you use a `.` in 29430 * Javascript to read from nested objects, so to can the options 29431 * specified in `data`. For example: `browser.version` or 29432 * `browser.name`. If your object parameter name contains a period, use 29433 * `\\` to escape it - i.e. `first\\.name`. 29434 * * `[]` - Array notation. DataTables can automatically combine data 29435 * from and array source, joining the data with the characters provided 29436 * between the two brackets. For example: `name[, ]` would provide a 29437 * comma-space separated list from the source array. If no characters 29438 * are provided between the brackets, the original array source is 29439 * returned. 29440 * * `()` - Function notation. Adding `()` to the end of a parameter will 29441 * execute a function of the name given. For example: `browser()` for a 29442 * simple function on the data source, `browser.version()` for a 29443 * function in a nested property or even `browser().version` to get an 29444 * object property if the function called returns an object. Note that 29445 * function notation is recommended for use in `render` rather than 29446 * `data` as it is much simpler to use as a renderer. 29447 * * `null` - use the original data source for the row rather than plucking 29448 * data directly from it. This action has effects on two other 29449 * initialisation options: 29450 * * `defaultContent` - When null is given as the `data` option and 29451 * `defaultContent` is specified for the column, the value defined by 29452 * `defaultContent` will be used for the cell. 29453 * * `render` - When null is used for the `data` option and the `render` 29454 * option is specified for the column, the whole data source for the 29455 * row is used for the renderer. 29456 * * `function` - the function given will be executed whenever DataTables 29457 * needs to set or get the data for a cell in the column. The function 29458 * takes three parameters: 29459 * * Parameters: 29460 * * `{array|object}` The data source for the row 29461 * * `{string}` The type call data requested - this will be 'set' when 29462 * setting data or 'filter', 'display', 'type', 'sort' or undefined 29463 * when gathering data. Note that when `undefined` is given for the 29464 * type DataTables expects to get the raw data for the object back< 29465 * * `{*}` Data to set when the second parameter is 'set'. 29466 * * Return: 29467 * * The return value from the function is not required when 'set' is 29468 * the type of call, but otherwise the return is what will be used 29469 * for the data requested. 29470 * 29471 * Note that `data` is a getter and setter option. If you just require 29472 * formatting of data for output, you will likely want to use `render` which 29473 * is simply a getter and thus simpler to use. 29474 * 29475 * Note that prior to DataTables 1.9.2 `data` was called `mDataProp`. The 29476 * name change reflects the flexibility of this property and is consistent 29477 * with the naming of mRender. If 'mDataProp' is given, then it will still 29478 * be used by DataTables, as it automatically maps the old name to the new 29479 * if required. 29480 * 29481 * @type string|int|function|null 29482 * @default null <i>Use automatically calculated column index</i> 29483 * 29484 * @name DataTable.defaults.column.data 29485 * @dtopt Columns 29486 * 29487 * @example 29488 * // Read table data from objects 29489 * // JSON structure for each row: 29490 * // { 29491 * // "engine": {value}, 29492 * // "browser": {value}, 29493 * // "platform": {value}, 29494 * // "version": {value}, 29495 * // "grade": {value} 29496 * // } 29497 * $(document).ready( function() { 29498 * $('#example').dataTable( { 29499 * "ajaxSource": "sources/objects.txt", 29500 * "columns": [ 29501 * { "data": "engine" }, 29502 * { "data": "browser" }, 29503 * { "data": "platform" }, 29504 * { "data": "version" }, 29505 * { "data": "grade" } 29506 * ] 29507 * } ); 29508 * } ); 29509 * 29510 * @example 29511 * // Read information from deeply nested objects 29512 * // JSON structure for each row: 29513 * // { 29514 * // "engine": {value}, 29515 * // "browser": {value}, 29516 * // "platform": { 29517 * // "inner": {value} 29518 * // }, 29519 * // "details": [ 29520 * // {value}, {value} 29521 * // ] 29522 * // } 29523 * $(document).ready( function() { 29524 * $('#example').dataTable( { 29525 * "ajaxSource": "sources/deep.txt", 29526 * "columns": [ 29527 * { "data": "engine" }, 29528 * { "data": "browser" }, 29529 * { "data": "platform.inner" }, 29530 * { "data": "details.0" }, 29531 * { "data": "details.1" } 29532 * ] 29533 * } ); 29534 * } ); 29535 * 29536 * @example 29537 * // Using `data` as a function to provide different information for 29538 * // sorting, filtering and display. In this case, currency (price) 29539 * $(document).ready( function() { 29540 * $('#example').dataTable( { 29541 * "columnDefs": [ { 29542 * "targets": [ 0 ], 29543 * "data": function ( source, type, val ) { 29544 * if (type === 'set') { 29545 * source.price = val; 29546 * // Store the computed display and filter values for efficiency 29547 * source.price_display = val=="" ? "" : "$"+numberFormat(val); 29548 * source.price_filter = val=="" ? "" : "$"+numberFormat(val)+" "+val; 29549 * return; 29550 * } 29551 * else if (type === 'display') { 29552 * return source.price_display; 29553 * } 29554 * else if (type === 'filter') { 29555 * return source.price_filter; 29556 * } 29557 * // 'sort', 'type' and undefined all just use the integer 29558 * return source.price; 29559 * } 29560 * } ] 29561 * } ); 29562 * } ); 29563 * 29564 * @example 29565 * // Using default content 29566 * $(document).ready( function() { 29567 * $('#example').dataTable( { 29568 * "columnDefs": [ { 29569 * "targets": [ 0 ], 29570 * "data": null, 29571 * "defaultContent": "Click to edit" 29572 * } ] 29573 * } ); 29574 * } ); 29575 * 29576 * @example 29577 * // Using array notation - outputting a list from an array 29578 * $(document).ready( function() { 29579 * $('#example').dataTable( { 29580 * "columnDefs": [ { 29581 * "targets": [ 0 ], 29582 * "data": "name[, ]" 29583 * } ] 29584 * } ); 29585 * } ); 29586 * 29587 */ 29588 "mData": null, 29589 /** 29590 * This property is the rendering partner to `data` and it is suggested that 29591 * when you want to manipulate data for display (including filtering, 29592 * sorting etc) without altering the underlying data for the table, use this 29593 * property. `render` can be considered to be the the read only companion to 29594 * `data` which is read / write (then as such more complex). Like `data` 29595 * this option can be given in a number of different ways to effect its 29596 * behaviour: 29597 * 29598 * * `integer` - treated as an array index for the data source. This is the 29599 * default that DataTables uses (incrementally increased for each column). 29600 * * `string` - read an object property from the data source. There are 29601 * three 'special' options that can be used in the string to alter how 29602 * DataTables reads the data from the source object: 29603 * * `.` - Dotted Javascript notation. Just as you use a `.` in 29604 * Javascript to read from nested objects, so to can the options 29605 * specified in `data`. For example: `browser.version` or 29606 * `browser.name`. If your object parameter name contains a period, use 29607 * `\\` to escape it - i.e. `first\\.name`. 29608 * * `[]` - Array notation. DataTables can automatically combine data 29609 * from and array source, joining the data with the characters provided 29610 * between the two brackets. For example: `name[, ]` would provide a 29611 * comma-space separated list from the source array. If no characters 29612 * are provided between the brackets, the original array source is 29613 * returned. 29614 * * `()` - Function notation. Adding `()` to the end of a parameter will 29615 * execute a function of the name given. For example: `browser()` for a 29616 * simple function on the data source, `browser.version()` for a 29617 * function in a nested property or even `browser().version` to get an 29618 * object property if the function called returns an object. 29619 * * `object` - use different data for the different data types requested by 29620 * DataTables ('filter', 'display', 'type' or 'sort'). The property names 29621 * of the object is the data type the property refers to and the value can 29622 * defined using an integer, string or function using the same rules as 29623 * `render` normally does. Note that an `_` option _must_ be specified. 29624 * This is the default value to use if you haven't specified a value for 29625 * the data type requested by DataTables. 29626 * * `function` - the function given will be executed whenever DataTables 29627 * needs to set or get the data for a cell in the column. The function 29628 * takes three parameters: 29629 * * Parameters: 29630 * * {array|object} The data source for the row (based on `data`) 29631 * * {string} The type call data requested - this will be 'filter', 29632 * 'display', 'type' or 'sort'. 29633 * * {array|object} The full data source for the row (not based on 29634 * `data`) 29635 * * Return: 29636 * * The return value from the function is what will be used for the 29637 * data requested. 29638 * 29639 * @type string|int|function|object|null 29640 * @default null Use the data source value. 29641 * 29642 * @name DataTable.defaults.column.render 29643 * @dtopt Columns 29644 * 29645 * @example 29646 * // Create a comma separated list from an array of objects 29647 * $(document).ready( function() { 29648 * $('#example').dataTable( { 29649 * "ajaxSource": "sources/deep.txt", 29650 * "columns": [ 29651 * { "data": "engine" }, 29652 * { "data": "browser" }, 29653 * { 29654 * "data": "platform", 29655 * "render": "[, ].name" 29656 * } 29657 * ] 29658 * } ); 29659 * } ); 29660 * 29661 * @example 29662 * // Execute a function to obtain data 29663 * $(document).ready( function() { 29664 * $('#example').dataTable( { 29665 * "columnDefs": [ { 29666 * "targets": [ 0 ], 29667 * "data": null, // Use the full data source object for the renderer's source 29668 * "render": "browserName()" 29669 * } ] 29670 * } ); 29671 * } ); 29672 * 29673 * @example 29674 * // As an object, extracting different data for the different types 29675 * // This would be used with a data source such as: 29676 * // { "phone": 5552368, "phone_filter": "5552368 555-2368", "phone_display": "555-2368" } 29677 * // Here the `phone` integer is used for sorting and type detection, while `phone_filter` 29678 * // (which has both forms) is used for filtering for if a user inputs either format, while 29679 * // the formatted phone number is the one that is shown in the table. 29680 * $(document).ready( function() { 29681 * $('#example').dataTable( { 29682 * "columnDefs": [ { 29683 * "targets": [ 0 ], 29684 * "data": null, // Use the full data source object for the renderer's source 29685 * "render": { 29686 * "_": "phone", 29687 * "filter": "phone_filter", 29688 * "display": "phone_display" 29689 * } 29690 * } ] 29691 * } ); 29692 * } ); 29693 * 29694 * @example 29695 * // Use as a function to create a link from the data source 29696 * $(document).ready( function() { 29697 * $('#example').dataTable( { 29698 * "columnDefs": [ { 29699 * "targets": [ 0 ], 29700 * "data": "download_link", 29701 * "render": function ( data, type, full ) { 29702 * return '<a href="'+data+'">Download</a>'; 29703 * } 29704 * } ] 29705 * } ); 29706 * } ); 29707 */ 29708 "mRender": null, 29709 /** 29710 * Change the cell type created for the column - either TD cells or TH cells. This 29711 * can be useful as TH cells have semantic meaning in the table body, allowing them 29712 * to act as a header for a row (you may wish to add scope='row' to the TH elements). 29713 * @type string 29714 * @default td 29715 * 29716 * @name DataTable.defaults.column.cellType 29717 * @dtopt Columns 29718 * 29719 * @example 29720 * // Make the first column use TH cells 29721 * $(document).ready( function() { 29722 * $('#example').dataTable( { 29723 * "columnDefs": [ { 29724 * "targets": [ 0 ], 29725 * "cellType": "th" 29726 * } ] 29727 * } ); 29728 * } ); 29729 */ 29730 "sCellType": "td", 29731 /** 29732 * Class to give to each cell in this column. 29733 * @type string 29734 * @default <i>Empty string</i> 29735 * 29736 * @name DataTable.defaults.column.class 29737 * @dtopt Columns 29738 * 29739 * @example 29740 * // Using `columnDefs` 29741 * $(document).ready( function() { 29742 * $('#example').dataTable( { 29743 * "columnDefs": [ 29744 * { "class": "my_class", "targets": [ 0 ] } 29745 * ] 29746 * } ); 29747 * } ); 29748 * 29749 * @example 29750 * // Using `columns` 29751 * $(document).ready( function() { 29752 * $('#example').dataTable( { 29753 * "columns": [ 29754 * { "class": "my_class" }, 29755 * null, 29756 * null, 29757 * null, 29758 * null 29759 * ] 29760 * } ); 29761 * } ); 29762 */ 29763 "sClass": "", 29764 /** 29765 * When DataTables calculates the column widths to assign to each column, 29766 * it finds the longest string in each column and then constructs a 29767 * temporary table and reads the widths from that. The problem with this 29768 * is that "mmm" is much wider then "iiii", but the latter is a longer 29769 * string - thus the calculation can go wrong (doing it properly and putting 29770 * it into an DOM object and measuring that is horribly(!) slow). Thus as 29771 * a "work around" we provide this option. It will append its value to the 29772 * text that is found to be the longest string for the column - i.e. padding. 29773 * Generally you shouldn't need this! 29774 * @type string 29775 * @default <i>Empty string<i> 29776 * 29777 * @name DataTable.defaults.column.contentPadding 29778 * @dtopt Columns 29779 * 29780 * @example 29781 * // Using `columns` 29782 * $(document).ready( function() { 29783 * $('#example').dataTable( { 29784 * "columns": [ 29785 * null, 29786 * null, 29787 * null, 29788 * { 29789 * "contentPadding": "mmm" 29790 * } 29791 * ] 29792 * } ); 29793 * } ); 29794 */ 29795 "sContentPadding": "", 29796 /** 29797 * Allows a default value to be given for a column's data, and will be used 29798 * whenever a null data source is encountered (this can be because `data` 29799 * is set to null, or because the data source itself is null). 29800 * @type string 29801 * @default null 29802 * 29803 * @name DataTable.defaults.column.defaultContent 29804 * @dtopt Columns 29805 * 29806 * @example 29807 * // Using `columnDefs` 29808 * $(document).ready( function() { 29809 * $('#example').dataTable( { 29810 * "columnDefs": [ 29811 * { 29812 * "data": null, 29813 * "defaultContent": "Edit", 29814 * "targets": [ -1 ] 29815 * } 29816 * ] 29817 * } ); 29818 * } ); 29819 * 29820 * @example 29821 * // Using `columns` 29822 * $(document).ready( function() { 29823 * $('#example').dataTable( { 29824 * "columns": [ 29825 * null, 29826 * null, 29827 * null, 29828 * { 29829 * "data": null, 29830 * "defaultContent": "Edit" 29831 * } 29832 * ] 29833 * } ); 29834 * } ); 29835 */ 29836 "sDefaultContent": null, 29837 /** 29838 * This parameter is only used in DataTables' server-side processing. It can 29839 * be exceptionally useful to know what columns are being displayed on the 29840 * client side, and to map these to database fields. When defined, the names 29841 * also allow DataTables to reorder information from the server if it comes 29842 * back in an unexpected order (i.e. if you switch your columns around on the 29843 * client-side, your server-side code does not also need updating). 29844 * @type string 29845 * @default <i>Empty string</i> 29846 * 29847 * @name DataTable.defaults.column.name 29848 * @dtopt Columns 29849 * 29850 * @example 29851 * // Using `columnDefs` 29852 * $(document).ready( function() { 29853 * $('#example').dataTable( { 29854 * "columnDefs": [ 29855 * { "name": "engine", "targets": [ 0 ] }, 29856 * { "name": "browser", "targets": [ 1 ] }, 29857 * { "name": "platform", "targets": [ 2 ] }, 29858 * { "name": "version", "targets": [ 3 ] }, 29859 * { "name": "grade", "targets": [ 4 ] } 29860 * ] 29861 * } ); 29862 * } ); 29863 * 29864 * @example 29865 * // Using `columns` 29866 * $(document).ready( function() { 29867 * $('#example').dataTable( { 29868 * "columns": [ 29869 * { "name": "engine" }, 29870 * { "name": "browser" }, 29871 * { "name": "platform" }, 29872 * { "name": "version" }, 29873 * { "name": "grade" } 29874 * ] 29875 * } ); 29876 * } ); 29877 */ 29878 "sName": "", 29879 /** 29880 * Defines a data source type for the ordering which can be used to read 29881 * real-time information from the table (updating the internally cached 29882 * version) prior to ordering. This allows ordering to occur on user 29883 * editable elements such as form inputs. 29884 * @type string 29885 * @default std 29886 * 29887 * @name DataTable.defaults.column.orderDataType 29888 * @dtopt Columns 29889 * 29890 * @example 29891 * // Using `columnDefs` 29892 * $(document).ready( function() { 29893 * $('#example').dataTable( { 29894 * "columnDefs": [ 29895 * { "orderDataType": "dom-text", "targets": [ 2, 3 ] }, 29896 * { "type": "numeric", "targets": [ 3 ] }, 29897 * { "orderDataType": "dom-select", "targets": [ 4 ] }, 29898 * { "orderDataType": "dom-checkbox", "targets": [ 5 ] } 29899 * ] 29900 * } ); 29901 * } ); 29902 * 29903 * @example 29904 * // Using `columns` 29905 * $(document).ready( function() { 29906 * $('#example').dataTable( { 29907 * "columns": [ 29908 * null, 29909 * null, 29910 * { "orderDataType": "dom-text" }, 29911 * { "orderDataType": "dom-text", "type": "numeric" }, 29912 * { "orderDataType": "dom-select" }, 29913 * { "orderDataType": "dom-checkbox" } 29914 * ] 29915 * } ); 29916 * } ); 29917 */ 29918 "sSortDataType": "std", 29919 /** 29920 * The title of this column. 29921 * @type string 29922 * @default null <i>Derived from the 'TH' value for this column in the 29923 * original HTML table.</i> 29924 * 29925 * @name DataTable.defaults.column.title 29926 * @dtopt Columns 29927 * 29928 * @example 29929 * // Using `columnDefs` 29930 * $(document).ready( function() { 29931 * $('#example').dataTable( { 29932 * "columnDefs": [ 29933 * { "title": "My column title", "targets": [ 0 ] } 29934 * ] 29935 * } ); 29936 * } ); 29937 * 29938 * @example 29939 * // Using `columns` 29940 * $(document).ready( function() { 29941 * $('#example').dataTable( { 29942 * "columns": [ 29943 * { "title": "My column title" }, 29944 * null, 29945 * null, 29946 * null, 29947 * null 29948 * ] 29949 * } ); 29950 * } ); 29951 */ 29952 "sTitle": null, 29953 /** 29954 * The type allows you to specify how the data for this column will be 29955 * ordered. Four types (string, numeric, date and html (which will strip 29956 * HTML tags before ordering)) are currently available. Note that only date 29957 * formats understood by Javascript's Date() object will be accepted as type 29958 * date. For example: "Mar 26, 2008 5:03 PM". May take the values: 'string', 29959 * 'numeric', 'date' or 'html' (by default). Further types can be adding 29960 * through plug-ins. 29961 * @type string 29962 * @default null <i>Auto-detected from raw data</i> 29963 * 29964 * @name DataTable.defaults.column.type 29965 * @dtopt Columns 29966 * 29967 * @example 29968 * // Using `columnDefs` 29969 * $(document).ready( function() { 29970 * $('#example').dataTable( { 29971 * "columnDefs": [ 29972 * { "type": "html", "targets": [ 0 ] } 29973 * ] 29974 * } ); 29975 * } ); 29976 * 29977 * @example 29978 * // Using `columns` 29979 * $(document).ready( function() { 29980 * $('#example').dataTable( { 29981 * "columns": [ 29982 * { "type": "html" }, 29983 * null, 29984 * null, 29985 * null, 29986 * null 29987 * ] 29988 * } ); 29989 * } ); 29990 */ 29991 "sType": null, 29992 /** 29993 * Defining the width of the column, this parameter may take any CSS value 29994 * (3em, 20px etc). DataTables applies 'smart' widths to columns which have not 29995 * been given a specific width through this interface ensuring that the table 29996 * remains readable. 29997 * @type string 29998 * @default null <i>Automatic</i> 29999 * 30000 * @name DataTable.defaults.column.width 30001 * @dtopt Columns 30002 * 30003 * @example 30004 * // Using `columnDefs` 30005 * $(document).ready( function() { 30006 * $('#example').dataTable( { 30007 * "columnDefs": [ 30008 * { "width": "20%", "targets": [ 0 ] } 30009 * ] 30010 * } ); 30011 * } ); 30012 * 30013 * @example 30014 * // Using `columns` 30015 * $(document).ready( function() { 30016 * $('#example').dataTable( { 30017 * "columns": [ 30018 * { "width": "20%" }, 30019 * null, 30020 * null, 30021 * null, 30022 * null 30023 * ] 30024 * } ); 30025 * } ); 30026 */ 30027 "sWidth": null 30028 }; 30029 _fnHungarianMap(DataTable2.defaults.column); 30030 DataTable2.models.oSettings = { 30031 /** 30032 * Primary features of DataTables and their enablement state. 30033 * @namespace 30034 */ 30035 "oFeatures": { 30036 /** 30037 * Flag to say if DataTables should automatically try to calculate the 30038 * optimum table and columns widths (true) or not (false). 30039 * Note that this parameter will be set by the initialisation routine. To 30040 * set a default use {@link DataTable.defaults}. 30041 * @type boolean 30042 */ 30043 "bAutoWidth": null, 30044 /** 30045 * Delay the creation of TR and TD elements until they are actually 30046 * needed by a driven page draw. This can give a significant speed 30047 * increase for Ajax source and Javascript source data, but makes no 30048 * difference at all for DOM and server-side processing tables. 30049 * Note that this parameter will be set by the initialisation routine. To 30050 * set a default use {@link DataTable.defaults}. 30051 * @type boolean 30052 */ 30053 "bDeferRender": null, 30054 /** 30055 * Enable filtering on the table or not. Note that if this is disabled 30056 * then there is no filtering at all on the table, including fnFilter. 30057 * To just remove the filtering input use sDom and remove the 'f' option. 30058 * Note that this parameter will be set by the initialisation routine. To 30059 * set a default use {@link DataTable.defaults}. 30060 * @type boolean 30061 */ 30062 "bFilter": null, 30063 /** 30064 * Table information element (the 'Showing x of y records' div) enable 30065 * flag. 30066 * Note that this parameter will be set by the initialisation routine. To 30067 * set a default use {@link DataTable.defaults}. 30068 * @type boolean 30069 */ 30070 "bInfo": null, 30071 /** 30072 * Present a user control allowing the end user to change the page size 30073 * when pagination is enabled. 30074 * Note that this parameter will be set by the initialisation routine. To 30075 * set a default use {@link DataTable.defaults}. 30076 * @type boolean 30077 */ 30078 "bLengthChange": null, 30079 /** 30080 * Pagination enabled or not. Note that if this is disabled then length 30081 * changing must also be disabled. 30082 * Note that this parameter will be set by the initialisation routine. To 30083 * set a default use {@link DataTable.defaults}. 30084 * @type boolean 30085 */ 30086 "bPaginate": null, 30087 /** 30088 * Processing indicator enable flag whenever DataTables is enacting a 30089 * user request - typically an Ajax request for server-side processing. 30090 * Note that this parameter will be set by the initialisation routine. To 30091 * set a default use {@link DataTable.defaults}. 30092 * @type boolean 30093 */ 30094 "bProcessing": null, 30095 /** 30096 * Server-side processing enabled flag - when enabled DataTables will 30097 * get all data from the server for every draw - there is no filtering, 30098 * sorting or paging done on the client-side. 30099 * Note that this parameter will be set by the initialisation routine. To 30100 * set a default use {@link DataTable.defaults}. 30101 * @type boolean 30102 */ 30103 "bServerSide": null, 30104 /** 30105 * Sorting enablement flag. 30106 * Note that this parameter will be set by the initialisation routine. To 30107 * set a default use {@link DataTable.defaults}. 30108 * @type boolean 30109 */ 30110 "bSort": null, 30111 /** 30112 * Multi-column sorting 30113 * Note that this parameter will be set by the initialisation routine. To 30114 * set a default use {@link DataTable.defaults}. 30115 * @type boolean 30116 */ 30117 "bSortMulti": null, 30118 /** 30119 * Apply a class to the columns which are being sorted to provide a 30120 * visual highlight or not. This can slow things down when enabled since 30121 * there is a lot of DOM interaction. 30122 * Note that this parameter will be set by the initialisation routine. To 30123 * set a default use {@link DataTable.defaults}. 30124 * @type boolean 30125 */ 30126 "bSortClasses": null, 30127 /** 30128 * State saving enablement flag. 30129 * Note that this parameter will be set by the initialisation routine. To 30130 * set a default use {@link DataTable.defaults}. 30131 * @type boolean 30132 */ 30133 "bStateSave": null 30134 }, 30135 /** 30136 * Scrolling settings for a table. 30137 * @namespace 30138 */ 30139 "oScroll": { 30140 /** 30141 * When the table is shorter in height than sScrollY, collapse the 30142 * table container down to the height of the table (when true). 30143 * Note that this parameter will be set by the initialisation routine. To 30144 * set a default use {@link DataTable.defaults}. 30145 * @type boolean 30146 */ 30147 "bCollapse": null, 30148 /** 30149 * Width of the scrollbar for the web-browser's platform. Calculated 30150 * during table initialisation. 30151 * @type int 30152 * @default 0 30153 */ 30154 "iBarWidth": 0, 30155 /** 30156 * Viewport width for horizontal scrolling. Horizontal scrolling is 30157 * disabled if an empty string. 30158 * Note that this parameter will be set by the initialisation routine. To 30159 * set a default use {@link DataTable.defaults}. 30160 * @type string 30161 */ 30162 "sX": null, 30163 /** 30164 * Width to expand the table to when using x-scrolling. Typically you 30165 * should not need to use this. 30166 * Note that this parameter will be set by the initialisation routine. To 30167 * set a default use {@link DataTable.defaults}. 30168 * @type string 30169 * @deprecated 30170 */ 30171 "sXInner": null, 30172 /** 30173 * Viewport height for vertical scrolling. Vertical scrolling is disabled 30174 * if an empty string. 30175 * Note that this parameter will be set by the initialisation routine. To 30176 * set a default use {@link DataTable.defaults}. 30177 * @type string 30178 */ 30179 "sY": null 30180 }, 30181 /** 30182 * Language information for the table. 30183 * @namespace 30184 * @extends DataTable.defaults.oLanguage 30185 */ 30186 "oLanguage": { 30187 /** 30188 * Information callback function. See 30189 * {@link DataTable.defaults.fnInfoCallback} 30190 * @type function 30191 * @default null 30192 */ 30193 "fnInfoCallback": null 30194 }, 30195 /** 30196 * Browser support parameters 30197 * @namespace 30198 */ 30199 "oBrowser": { 30200 /** 30201 * Indicate if the browser incorrectly calculates width:100% inside a 30202 * scrolling element (IE6/7) 30203 * @type boolean 30204 * @default false 30205 */ 30206 "bScrollOversize": false, 30207 /** 30208 * Determine if the vertical scrollbar is on the right or left of the 30209 * scrolling container - needed for rtl language layout, although not 30210 * all browsers move the scrollbar (Safari). 30211 * @type boolean 30212 * @default false 30213 */ 30214 "bScrollbarLeft": false, 30215 /** 30216 * Flag for if `getBoundingClientRect` is fully supported or not 30217 * @type boolean 30218 * @default false 30219 */ 30220 "bBounding": false, 30221 /** 30222 * Browser scrollbar width 30223 * @type integer 30224 * @default 0 30225 */ 30226 "barWidth": 0 30227 }, 30228 "ajax": null, 30229 /** 30230 * Array referencing the nodes which are used for the features. The 30231 * parameters of this object match what is allowed by sDom - i.e. 30232 * <ul> 30233 * <li>'l' - Length changing</li> 30234 * <li>'f' - Filtering input</li> 30235 * <li>'t' - The table!</li> 30236 * <li>'i' - Information</li> 30237 * <li>'p' - Pagination</li> 30238 * <li>'r' - pRocessing</li> 30239 * </ul> 30240 * @type array 30241 * @default [] 30242 */ 30243 "aanFeatures": [], 30244 /** 30245 * Store data information - see {@link DataTable.models.oRow} for detailed 30246 * information. 30247 * @type array 30248 * @default [] 30249 */ 30250 "aoData": [], 30251 /** 30252 * Array of indexes which are in the current display (after filtering etc) 30253 * @type array 30254 * @default [] 30255 */ 30256 "aiDisplay": [], 30257 /** 30258 * Array of indexes for display - no filtering 30259 * @type array 30260 * @default [] 30261 */ 30262 "aiDisplayMaster": [], 30263 /** 30264 * Map of row ids to data indexes 30265 * @type object 30266 * @default {} 30267 */ 30268 "aIds": {}, 30269 /** 30270 * Store information about each column that is in use 30271 * @type array 30272 * @default [] 30273 */ 30274 "aoColumns": [], 30275 /** 30276 * Store information about the table's header 30277 * @type array 30278 * @default [] 30279 */ 30280 "aoHeader": [], 30281 /** 30282 * Store information about the table's footer 30283 * @type array 30284 * @default [] 30285 */ 30286 "aoFooter": [], 30287 /** 30288 * Store the applied global search information in case we want to force a 30289 * research or compare the old search to a new one. 30290 * Note that this parameter will be set by the initialisation routine. To 30291 * set a default use {@link DataTable.defaults}. 30292 * @namespace 30293 * @extends DataTable.models.oSearch 30294 */ 30295 "oPreviousSearch": {}, 30296 /** 30297 * Store the applied search for each column - see 30298 * {@link DataTable.models.oSearch} for the format that is used for the 30299 * filtering information for each column. 30300 * @type array 30301 * @default [] 30302 */ 30303 "aoPreSearchCols": [], 30304 /** 30305 * Sorting that is applied to the table. Note that the inner arrays are 30306 * used in the following manner: 30307 * <ul> 30308 * <li>Index 0 - column number</li> 30309 * <li>Index 1 - current sorting direction</li> 30310 * </ul> 30311 * Note that this parameter will be set by the initialisation routine. To 30312 * set a default use {@link DataTable.defaults}. 30313 * @type array 30314 * @todo These inner arrays should really be objects 30315 */ 30316 "aaSorting": null, 30317 /** 30318 * Sorting that is always applied to the table (i.e. prefixed in front of 30319 * aaSorting). 30320 * Note that this parameter will be set by the initialisation routine. To 30321 * set a default use {@link DataTable.defaults}. 30322 * @type array 30323 * @default [] 30324 */ 30325 "aaSortingFixed": [], 30326 /** 30327 * Classes to use for the striping of a table. 30328 * Note that this parameter will be set by the initialisation routine. To 30329 * set a default use {@link DataTable.defaults}. 30330 * @type array 30331 * @default [] 30332 */ 30333 "asStripeClasses": null, 30334 /** 30335 * If restoring a table - we should restore its striping classes as well 30336 * @type array 30337 * @default [] 30338 */ 30339 "asDestroyStripes": [], 30340 /** 30341 * If restoring a table - we should restore its width 30342 * @type int 30343 * @default 0 30344 */ 30345 "sDestroyWidth": 0, 30346 /** 30347 * Callback functions array for every time a row is inserted (i.e. on a draw). 30348 * @type array 30349 * @default [] 30350 */ 30351 "aoRowCallback": [], 30352 /** 30353 * Callback functions for the header on each draw. 30354 * @type array 30355 * @default [] 30356 */ 30357 "aoHeaderCallback": [], 30358 /** 30359 * Callback function for the footer on each draw. 30360 * @type array 30361 * @default [] 30362 */ 30363 "aoFooterCallback": [], 30364 /** 30365 * Array of callback functions for draw callback functions 30366 * @type array 30367 * @default [] 30368 */ 30369 "aoDrawCallback": [], 30370 /** 30371 * Array of callback functions for row created function 30372 * @type array 30373 * @default [] 30374 */ 30375 "aoRowCreatedCallback": [], 30376 /** 30377 * Callback functions for just before the table is redrawn. A return of 30378 * false will be used to cancel the draw. 30379 * @type array 30380 * @default [] 30381 */ 30382 "aoPreDrawCallback": [], 30383 /** 30384 * Callback functions for when the table has been initialised. 30385 * @type array 30386 * @default [] 30387 */ 30388 "aoInitComplete": [], 30389 /** 30390 * Callbacks for modifying the settings to be stored for state saving, prior to 30391 * saving state. 30392 * @type array 30393 * @default [] 30394 */ 30395 "aoStateSaveParams": [], 30396 /** 30397 * Callbacks for modifying the settings that have been stored for state saving 30398 * prior to using the stored values to restore the state. 30399 * @type array 30400 * @default [] 30401 */ 30402 "aoStateLoadParams": [], 30403 /** 30404 * Callbacks for operating on the settings object once the saved state has been 30405 * loaded 30406 * @type array 30407 * @default [] 30408 */ 30409 "aoStateLoaded": [], 30410 /** 30411 * Cache the table ID for quick access 30412 * @type string 30413 * @default <i>Empty string</i> 30414 */ 30415 "sTableId": "", 30416 /** 30417 * The TABLE node for the main table 30418 * @type node 30419 * @default null 30420 */ 30421 "nTable": null, 30422 /** 30423 * Permanent ref to the thead element 30424 * @type node 30425 * @default null 30426 */ 30427 "nTHead": null, 30428 /** 30429 * Permanent ref to the tfoot element - if it exists 30430 * @type node 30431 * @default null 30432 */ 30433 "nTFoot": null, 30434 /** 30435 * Permanent ref to the tbody element 30436 * @type node 30437 * @default null 30438 */ 30439 "nTBody": null, 30440 /** 30441 * Cache the wrapper node (contains all DataTables controlled elements) 30442 * @type node 30443 * @default null 30444 */ 30445 "nTableWrapper": null, 30446 /** 30447 * Indicate if when using server-side processing the loading of data 30448 * should be deferred until the second draw. 30449 * Note that this parameter will be set by the initialisation routine. To 30450 * set a default use {@link DataTable.defaults}. 30451 * @type boolean 30452 * @default false 30453 */ 30454 "bDeferLoading": false, 30455 /** 30456 * Indicate if all required information has been read in 30457 * @type boolean 30458 * @default false 30459 */ 30460 "bInitialised": false, 30461 /** 30462 * Information about open rows. Each object in the array has the parameters 30463 * 'nTr' and 'nParent' 30464 * @type array 30465 * @default [] 30466 */ 30467 "aoOpenRows": [], 30468 /** 30469 * Dictate the positioning of DataTables' control elements - see 30470 * {@link DataTable.model.oInit.sDom}. 30471 * Note that this parameter will be set by the initialisation routine. To 30472 * set a default use {@link DataTable.defaults}. 30473 * @type string 30474 * @default null 30475 */ 30476 "sDom": null, 30477 /** 30478 * Search delay (in mS) 30479 * @type integer 30480 * @default null 30481 */ 30482 "searchDelay": null, 30483 /** 30484 * Which type of pagination should be used. 30485 * Note that this parameter will be set by the initialisation routine. To 30486 * set a default use {@link DataTable.defaults}. 30487 * @type string 30488 * @default two_button 30489 */ 30490 "sPaginationType": "two_button", 30491 /** 30492 * The state duration (for `stateSave`) in seconds. 30493 * Note that this parameter will be set by the initialisation routine. To 30494 * set a default use {@link DataTable.defaults}. 30495 * @type int 30496 * @default 0 30497 */ 30498 "iStateDuration": 0, 30499 /** 30500 * Array of callback functions for state saving. Each array element is an 30501 * object with the following parameters: 30502 * <ul> 30503 * <li>function:fn - function to call. Takes two parameters, oSettings 30504 * and the JSON string to save that has been thus far created. Returns 30505 * a JSON string to be inserted into a json object 30506 * (i.e. '"param": [ 0, 1, 2]')</li> 30507 * <li>string:sName - name of callback</li> 30508 * </ul> 30509 * @type array 30510 * @default [] 30511 */ 30512 "aoStateSave": [], 30513 /** 30514 * Array of callback functions for state loading. Each array element is an 30515 * object with the following parameters: 30516 * <ul> 30517 * <li>function:fn - function to call. Takes two parameters, oSettings 30518 * and the object stored. May return false to cancel state loading</li> 30519 * <li>string:sName - name of callback</li> 30520 * </ul> 30521 * @type array 30522 * @default [] 30523 */ 30524 "aoStateLoad": [], 30525 /** 30526 * State that was saved. Useful for back reference 30527 * @type object 30528 * @default null 30529 */ 30530 "oSavedState": null, 30531 /** 30532 * State that was loaded. Useful for back reference 30533 * @type object 30534 * @default null 30535 */ 30536 "oLoadedState": null, 30537 /** 30538 * Source url for AJAX data for the table. 30539 * Note that this parameter will be set by the initialisation routine. To 30540 * set a default use {@link DataTable.defaults}. 30541 * @type string 30542 * @default null 30543 */ 30544 "sAjaxSource": null, 30545 /** 30546 * Property from a given object from which to read the table data from. This 30547 * can be an empty string (when not server-side processing), in which case 30548 * it is assumed an an array is given directly. 30549 * Note that this parameter will be set by the initialisation routine. To 30550 * set a default use {@link DataTable.defaults}. 30551 * @type string 30552 */ 30553 "sAjaxDataProp": null, 30554 /** 30555 * The last jQuery XHR object that was used for server-side data gathering. 30556 * This can be used for working with the XHR information in one of the 30557 * callbacks 30558 * @type object 30559 * @default null 30560 */ 30561 "jqXHR": null, 30562 /** 30563 * JSON returned from the server in the last Ajax request 30564 * @type object 30565 * @default undefined 30566 */ 30567 "json": undefined2, 30568 /** 30569 * Data submitted as part of the last Ajax request 30570 * @type object 30571 * @default undefined 30572 */ 30573 "oAjaxData": undefined2, 30574 /** 30575 * Function to get the server-side data. 30576 * Note that this parameter will be set by the initialisation routine. To 30577 * set a default use {@link DataTable.defaults}. 30578 * @type function 30579 */ 30580 "fnServerData": null, 30581 /** 30582 * Functions which are called prior to sending an Ajax request so extra 30583 * parameters can easily be sent to the server 30584 * @type array 30585 * @default [] 30586 */ 30587 "aoServerParams": [], 30588 /** 30589 * Send the XHR HTTP method - GET or POST (could be PUT or DELETE if 30590 * required). 30591 * Note that this parameter will be set by the initialisation routine. To 30592 * set a default use {@link DataTable.defaults}. 30593 * @type string 30594 */ 30595 "sServerMethod": null, 30596 /** 30597 * Format numbers for display. 30598 * Note that this parameter will be set by the initialisation routine. To 30599 * set a default use {@link DataTable.defaults}. 30600 * @type function 30601 */ 30602 "fnFormatNumber": null, 30603 /** 30604 * List of options that can be used for the user selectable length menu. 30605 * Note that this parameter will be set by the initialisation routine. To 30606 * set a default use {@link DataTable.defaults}. 30607 * @type array 30608 * @default [] 30609 */ 30610 "aLengthMenu": null, 30611 /** 30612 * Counter for the draws that the table does. Also used as a tracker for 30613 * server-side processing 30614 * @type int 30615 * @default 0 30616 */ 30617 "iDraw": 0, 30618 /** 30619 * Indicate if a redraw is being done - useful for Ajax 30620 * @type boolean 30621 * @default false 30622 */ 30623 "bDrawing": false, 30624 /** 30625 * Draw index (iDraw) of the last error when parsing the returned data 30626 * @type int 30627 * @default -1 30628 */ 30629 "iDrawError": -1, 30630 /** 30631 * Paging display length 30632 * @type int 30633 * @default 10 30634 */ 30635 "_iDisplayLength": 10, 30636 /** 30637 * Paging start point - aiDisplay index 30638 * @type int 30639 * @default 0 30640 */ 30641 "_iDisplayStart": 0, 30642 /** 30643 * Server-side processing - number of records in the result set 30644 * (i.e. before filtering), Use fnRecordsTotal rather than 30645 * this property to get the value of the number of records, regardless of 30646 * the server-side processing setting. 30647 * @type int 30648 * @default 0 30649 * @private 30650 */ 30651 "_iRecordsTotal": 0, 30652 /** 30653 * Server-side processing - number of records in the current display set 30654 * (i.e. after filtering). Use fnRecordsDisplay rather than 30655 * this property to get the value of the number of records, regardless of 30656 * the server-side processing setting. 30657 * @type boolean 30658 * @default 0 30659 * @private 30660 */ 30661 "_iRecordsDisplay": 0, 30662 /** 30663 * The classes to use for the table 30664 * @type object 30665 * @default {} 30666 */ 30667 "oClasses": {}, 30668 /** 30669 * Flag attached to the settings object so you can check in the draw 30670 * callback if filtering has been done in the draw. Deprecated in favour of 30671 * events. 30672 * @type boolean 30673 * @default false 30674 * @deprecated 30675 */ 30676 "bFiltered": false, 30677 /** 30678 * Flag attached to the settings object so you can check in the draw 30679 * callback if sorting has been done in the draw. Deprecated in favour of 30680 * events. 30681 * @type boolean 30682 * @default false 30683 * @deprecated 30684 */ 30685 "bSorted": false, 30686 /** 30687 * Indicate that if multiple rows are in the header and there is more than 30688 * one unique cell per column, if the top one (true) or bottom one (false) 30689 * should be used for sorting / title by DataTables. 30690 * Note that this parameter will be set by the initialisation routine. To 30691 * set a default use {@link DataTable.defaults}. 30692 * @type boolean 30693 */ 30694 "bSortCellsTop": null, 30695 /** 30696 * Initialisation object that is used for the table 30697 * @type object 30698 * @default null 30699 */ 30700 "oInit": null, 30701 /** 30702 * Destroy callback functions - for plug-ins to attach themselves to the 30703 * destroy so they can clean up markup and events. 30704 * @type array 30705 * @default [] 30706 */ 30707 "aoDestroyCallback": [], 30708 /** 30709 * Get the number of records in the current record set, before filtering 30710 * @type function 30711 */ 30712 "fnRecordsTotal": function() { 30713 return _fnDataSource(this) == "ssp" ? this._iRecordsTotal * 1 : this.aiDisplayMaster.length; 30714 }, 30715 /** 30716 * Get the number of records in the current record set, after filtering 30717 * @type function 30718 */ 30719 "fnRecordsDisplay": function() { 30720 return _fnDataSource(this) == "ssp" ? this._iRecordsDisplay * 1 : this.aiDisplay.length; 30721 }, 30722 /** 30723 * Get the display end point - aiDisplay index 30724 * @type function 30725 */ 30726 "fnDisplayEnd": function() { 30727 var len = this._iDisplayLength, start = this._iDisplayStart, calc = start + len, records = this.aiDisplay.length, features = this.oFeatures, paginate = features.bPaginate; 30728 if (features.bServerSide) { 30729 return paginate === false || len === -1 ? start + records : Math.min(start + len, this._iRecordsDisplay); 30730 } else { 30731 return !paginate || calc > records || len === -1 ? records : calc; 30732 } 30733 }, 30734 /** 30735 * The DataTables object for this table 30736 * @type object 30737 * @default null 30738 */ 30739 "oInstance": null, 30740 /** 30741 * Unique identifier for each instance of the DataTables object. If there 30742 * is an ID on the table node, then it takes that value, otherwise an 30743 * incrementing internal counter is used. 30744 * @type string 30745 * @default null 30746 */ 30747 "sInstance": null, 30748 /** 30749 * tabindex attribute value that is added to DataTables control elements, allowing 30750 * keyboard navigation of the table and its controls. 30751 */ 30752 "iTabIndex": 0, 30753 /** 30754 * DIV container for the footer scrolling table if scrolling 30755 */ 30756 "nScrollHead": null, 30757 /** 30758 * DIV container for the footer scrolling table if scrolling 30759 */ 30760 "nScrollFoot": null, 30761 /** 30762 * Last applied sort 30763 * @type array 30764 * @default [] 30765 */ 30766 "aLastSort": [], 30767 /** 30768 * Stored plug-in instances 30769 * @type object 30770 * @default {} 30771 */ 30772 "oPlugins": {}, 30773 /** 30774 * Function used to get a row's id from the row's data 30775 * @type function 30776 * @default null 30777 */ 30778 "rowIdFn": null, 30779 /** 30780 * Data location where to store a row's id 30781 * @type string 30782 * @default null 30783 */ 30784 "rowId": null 30785 }; 30786 DataTable2.ext = _ext = { 30787 /** 30788 * Buttons. For use with the Buttons extension for DataTables. This is 30789 * defined here so other extensions can define buttons regardless of load 30790 * order. It is _not_ used by DataTables core. 30791 * 30792 * @type object 30793 * @default {} 30794 */ 30795 buttons: {}, 30796 /** 30797 * Element class names 30798 * 30799 * @type object 30800 * @default {} 30801 */ 30802 classes: {}, 30803 /** 30804 * DataTables build type (expanded by the download builder) 30805 * 30806 * @type string 30807 */ 30808 builder: "-source-", 30809 /** 30810 * Error reporting. 30811 * 30812 * How should DataTables report an error. Can take the value 'alert', 30813 * 'throw', 'none' or a function. 30814 * 30815 * @type string|function 30816 * @default alert 30817 */ 30818 errMode: "alert", 30819 /** 30820 * Feature plug-ins. 30821 * 30822 * This is an array of objects which describe the feature plug-ins that are 30823 * available to DataTables. These feature plug-ins are then available for 30824 * use through the `dom` initialisation option. 30825 * 30826 * Each feature plug-in is described by an object which must have the 30827 * following properties: 30828 * 30829 * * `fnInit` - function that is used to initialise the plug-in, 30830 * * `cFeature` - a character so the feature can be enabled by the `dom` 30831 * instillation option. This is case sensitive. 30832 * 30833 * The `fnInit` function has the following input parameters: 30834 * 30835 * 1. `{object}` DataTables settings object: see 30836 * {@link DataTable.models.oSettings} 30837 * 30838 * And the following return is expected: 30839 * 30840 * * {node|null} The element which contains your feature. Note that the 30841 * return may also be void if your plug-in does not require to inject any 30842 * DOM elements into DataTables control (`dom`) - for example this might 30843 * be useful when developing a plug-in which allows table control via 30844 * keyboard entry 30845 * 30846 * @type array 30847 * 30848 * @example 30849 * $.fn.dataTable.ext.features.push( { 30850 * "fnInit": function( oSettings ) { 30851 * return new TableTools( { "oDTSettings": oSettings } ); 30852 * }, 30853 * "cFeature": "T" 30854 * } ); 30855 */ 30856 feature: [], 30857 /** 30858 * Row searching. 30859 * 30860 * This method of searching is complimentary to the default type based 30861 * searching, and a lot more comprehensive as it allows you complete control 30862 * over the searching logic. Each element in this array is a function 30863 * (parameters described below) that is called for every row in the table, 30864 * and your logic decides if it should be included in the searching data set 30865 * or not. 30866 * 30867 * Searching functions have the following input parameters: 30868 * 30869 * 1. `{object}` DataTables settings object: see 30870 * {@link DataTable.models.oSettings} 30871 * 2. `{array|object}` Data for the row to be processed (same as the 30872 * original format that was passed in as the data source, or an array 30873 * from a DOM data source 30874 * 3. `{int}` Row index ({@link DataTable.models.oSettings.aoData}), which 30875 * can be useful to retrieve the `TR` element if you need DOM interaction. 30876 * 30877 * And the following return is expected: 30878 * 30879 * * {boolean} Include the row in the searched result set (true) or not 30880 * (false) 30881 * 30882 * Note that as with the main search ability in DataTables, technically this 30883 * is "filtering", since it is subtractive. However, for consistency in 30884 * naming we call it searching here. 30885 * 30886 * @type array 30887 * @default [] 30888 * 30889 * @example 30890 * // The following example shows custom search being applied to the 30891 * // fourth column (i.e. the data[3] index) based on two input values 30892 * // from the end-user, matching the data in a certain range. 30893 * $.fn.dataTable.ext.search.push( 30894 * function( settings, data, dataIndex ) { 30895 * var min = document.getElementById('min').value * 1; 30896 * var max = document.getElementById('max').value * 1; 30897 * var version = data[3] == "-" ? 0 : data[3]*1; 30898 * 30899 * if ( min == "" && max == "" ) { 30900 * return true; 30901 * } 30902 * else if ( min == "" && version < max ) { 30903 * return true; 30904 * } 30905 * else if ( min < version && "" == max ) { 30906 * return true; 30907 * } 30908 * else if ( min < version && version < max ) { 30909 * return true; 30910 * } 30911 * return false; 30912 * } 30913 * ); 30914 */ 30915 search: [], 30916 /** 30917 * Selector extensions 30918 * 30919 * The `selector` option can be used to extend the options available for the 30920 * selector modifier options (`selector-modifier` object data type) that 30921 * each of the three built in selector types offer (row, column and cell + 30922 * their plural counterparts). For example the Select extension uses this 30923 * mechanism to provide an option to select only rows, columns and cells 30924 * that have been marked as selected by the end user (`{selected: true}`), 30925 * which can be used in conjunction with the existing built in selector 30926 * options. 30927 * 30928 * Each property is an array to which functions can be pushed. The functions 30929 * take three attributes: 30930 * 30931 * * Settings object for the host table 30932 * * Options object (`selector-modifier` object type) 30933 * * Array of selected item indexes 30934 * 30935 * The return is an array of the resulting item indexes after the custom 30936 * selector has been applied. 30937 * 30938 * @type object 30939 */ 30940 selector: { 30941 cell: [], 30942 column: [], 30943 row: [] 30944 }, 30945 /** 30946 * Internal functions, exposed for used in plug-ins. 30947 * 30948 * Please note that you should not need to use the internal methods for 30949 * anything other than a plug-in (and even then, try to avoid if possible). 30950 * The internal function may change between releases. 30951 * 30952 * @type object 30953 * @default {} 30954 */ 30955 internal: {}, 30956 /** 30957 * Legacy configuration options. Enable and disable legacy options that 30958 * are available in DataTables. 30959 * 30960 * @type object 30961 */ 30962 legacy: { 30963 /** 30964 * Enable / disable DataTables 1.9 compatible server-side processing 30965 * requests 30966 * 30967 * @type boolean 30968 * @default null 30969 */ 30970 ajax: null 30971 }, 30972 /** 30973 * Pagination plug-in methods. 30974 * 30975 * Each entry in this object is a function and defines which buttons should 30976 * be shown by the pagination rendering method that is used for the table: 30977 * {@link DataTable.ext.renderer.pageButton}. The renderer addresses how the 30978 * buttons are displayed in the document, while the functions here tell it 30979 * what buttons to display. This is done by returning an array of button 30980 * descriptions (what each button will do). 30981 * 30982 * Pagination types (the four built in options and any additional plug-in 30983 * options defined here) can be used through the `paginationType` 30984 * initialisation parameter. 30985 * 30986 * The functions defined take two parameters: 30987 * 30988 * 1. `{int} page` The current page index 30989 * 2. `{int} pages` The number of pages in the table 30990 * 30991 * Each function is expected to return an array where each element of the 30992 * array can be one of: 30993 * 30994 * * `first` - Jump to first page when activated 30995 * * `last` - Jump to last page when activated 30996 * * `previous` - Show previous page when activated 30997 * * `next` - Show next page when activated 30998 * * `{int}` - Show page of the index given 30999 * * `{array}` - A nested array containing the above elements to add a 31000 * containing 'DIV' element (might be useful for styling). 31001 * 31002 * Note that DataTables v1.9- used this object slightly differently whereby 31003 * an object with two functions would be defined for each plug-in. That 31004 * ability is still supported by DataTables 1.10+ to provide backwards 31005 * compatibility, but this option of use is now decremented and no longer 31006 * documented in DataTables 1.10+. 31007 * 31008 * @type object 31009 * @default {} 31010 * 31011 * @example 31012 * // Show previous, next and current page buttons only 31013 * $.fn.dataTableExt.oPagination.current = function ( page, pages ) { 31014 * return [ 'previous', page, 'next' ]; 31015 * }; 31016 */ 31017 pager: {}, 31018 renderer: { 31019 pageButton: {}, 31020 header: {} 31021 }, 31022 /** 31023 * Ordering plug-ins - custom data source 31024 * 31025 * The extension options for ordering of data available here is complimentary 31026 * to the default type based ordering that DataTables typically uses. It 31027 * allows much greater control over the the data that is being used to 31028 * order a column, but is necessarily therefore more complex. 31029 * 31030 * This type of ordering is useful if you want to do ordering based on data 31031 * live from the DOM (for example the contents of an 'input' element) rather 31032 * than just the static string that DataTables knows of. 31033 * 31034 * The way these plug-ins work is that you create an array of the values you 31035 * wish to be ordering for the column in question and then return that 31036 * array. The data in the array much be in the index order of the rows in 31037 * the table (not the currently ordering order!). Which order data gathering 31038 * function is run here depends on the `dt-init columns.orderDataType` 31039 * parameter that is used for the column (if any). 31040 * 31041 * The functions defined take two parameters: 31042 * 31043 * 1. `{object}` DataTables settings object: see 31044 * {@link DataTable.models.oSettings} 31045 * 2. `{int}` Target column index 31046 * 31047 * Each function is expected to return an array: 31048 * 31049 * * `{array}` Data for the column to be ordering upon 31050 * 31051 * @type array 31052 * 31053 * @example 31054 * // Ordering using `input` node values 31055 * $.fn.dataTable.ext.order['dom-text'] = function ( settings, col ) 31056 * { 31057 * return this.api().column( col, {order:'index'} ).nodes().map( function ( td, i ) { 31058 * return $('input', td).val(); 31059 * } ); 31060 * } 31061 */ 31062 order: {}, 31063 /** 31064 * Type based plug-ins. 31065 * 31066 * Each column in DataTables has a type assigned to it, either by automatic 31067 * detection or by direct assignment using the `type` option for the column. 31068 * The type of a column will effect how it is ordering and search (plug-ins 31069 * can also make use of the column type if required). 31070 * 31071 * @namespace 31072 */ 31073 type: { 31074 /** 31075 * Type detection functions. 31076 * 31077 * The functions defined in this object are used to automatically detect 31078 * a column's type, making initialisation of DataTables super easy, even 31079 * when complex data is in the table. 31080 * 31081 * The functions defined take two parameters: 31082 * 31083 * 1. `{*}` Data from the column cell to be analysed 31084 * 2. `{settings}` DataTables settings object. This can be used to 31085 * perform context specific type detection - for example detection 31086 * based on language settings such as using a comma for a decimal 31087 * place. Generally speaking the options from the settings will not 31088 * be required 31089 * 31090 * Each function is expected to return: 31091 * 31092 * * `{string|null}` Data type detected, or null if unknown (and thus 31093 * pass it on to the other type detection functions. 31094 * 31095 * @type array 31096 * 31097 * @example 31098 * // Currency type detection plug-in: 31099 * $.fn.dataTable.ext.type.detect.push( 31100 * function ( data, settings ) { 31101 * // Check the numeric part 31102 * if ( ! data.substring(1).match(/[0-9]/) ) { 31103 * return null; 31104 * } 31105 * 31106 * // Check prefixed by currency 31107 * if ( data.charAt(0) == '$' || data.charAt(0) == '£' ) { 31108 * return 'currency'; 31109 * } 31110 * return null; 31111 * } 31112 * ); 31113 */ 31114 detect: [], 31115 /** 31116 * Type based search formatting. 31117 * 31118 * The type based searching functions can be used to pre-format the 31119 * data to be search on. For example, it can be used to strip HTML 31120 * tags or to de-format telephone numbers for numeric only searching. 31121 * 31122 * Note that is a search is not defined for a column of a given type, 31123 * no search formatting will be performed. 31124 * 31125 * Pre-processing of searching data plug-ins - When you assign the sType 31126 * for a column (or have it automatically detected for you by DataTables 31127 * or a type detection plug-in), you will typically be using this for 31128 * custom sorting, but it can also be used to provide custom searching 31129 * by allowing you to pre-processing the data and returning the data in 31130 * the format that should be searched upon. This is done by adding 31131 * functions this object with a parameter name which matches the sType 31132 * for that target column. This is the corollary of <i>afnSortData</i> 31133 * for searching data. 31134 * 31135 * The functions defined take a single parameter: 31136 * 31137 * 1. `{*}` Data from the column cell to be prepared for searching 31138 * 31139 * Each function is expected to return: 31140 * 31141 * * `{string|null}` Formatted string that will be used for the searching. 31142 * 31143 * @type object 31144 * @default {} 31145 * 31146 * @example 31147 * $.fn.dataTable.ext.type.search['title-numeric'] = function ( d ) { 31148 * return d.replace(/\n/g," ").replace( /<.*?>/g, "" ); 31149 * } 31150 */ 31151 search: {}, 31152 /** 31153 * Type based ordering. 31154 * 31155 * The column type tells DataTables what ordering to apply to the table 31156 * when a column is sorted upon. The order for each type that is defined, 31157 * is defined by the functions available in this object. 31158 * 31159 * Each ordering option can be described by three properties added to 31160 * this object: 31161 * 31162 * * `{type}-pre` - Pre-formatting function 31163 * * `{type}-asc` - Ascending order function 31164 * * `{type}-desc` - Descending order function 31165 * 31166 * All three can be used together, only `{type}-pre` or only 31167 * `{type}-asc` and `{type}-desc` together. It is generally recommended 31168 * that only `{type}-pre` is used, as this provides the optimal 31169 * implementation in terms of speed, although the others are provided 31170 * for compatibility with existing Javascript sort functions. 31171 * 31172 * `{type}-pre`: Functions defined take a single parameter: 31173 * 31174 * 1. `{*}` Data from the column cell to be prepared for ordering 31175 * 31176 * And return: 31177 * 31178 * * `{*}` Data to be sorted upon 31179 * 31180 * `{type}-asc` and `{type}-desc`: Functions are typical Javascript sort 31181 * functions, taking two parameters: 31182 * 31183 * 1. `{*}` Data to compare to the second parameter 31184 * 2. `{*}` Data to compare to the first parameter 31185 * 31186 * And returning: 31187 * 31188 * * `{*}` Ordering match: <0 if first parameter should be sorted lower 31189 * than the second parameter, ===0 if the two parameters are equal and 31190 * >0 if the first parameter should be sorted height than the second 31191 * parameter. 31192 * 31193 * @type object 31194 * @default {} 31195 * 31196 * @example 31197 * // Numeric ordering of formatted numbers with a pre-formatter 31198 * $.extend( $.fn.dataTable.ext.type.order, { 31199 * "string-pre": function(x) { 31200 * a = (a === "-" || a === "") ? 0 : a.replace( /[^\d\-\.]/g, "" ); 31201 * return parseFloat( a ); 31202 * } 31203 * } ); 31204 * 31205 * @example 31206 * // Case-sensitive string ordering, with no pre-formatting method 31207 * $.extend( $.fn.dataTable.ext.order, { 31208 * "string-case-asc": function(x,y) { 31209 * return ((x < y) ? -1 : ((x > y) ? 1 : 0)); 31210 * }, 31211 * "string-case-desc": function(x,y) { 31212 * return ((x < y) ? 1 : ((x > y) ? -1 : 0)); 31213 * } 31214 * } ); 31215 */ 31216 order: {} 31217 }, 31218 /** 31219 * Unique DataTables instance counter 31220 * 31221 * @type int 31222 * @private 31223 */ 31224 _unique: 0, 31225 // 31226 // Depreciated 31227 // The following properties are retained for backwards compatibility only. 31228 // The should not be used in new projects and will be removed in a future 31229 // version 31230 // 31231 /** 31232 * Version check function. 31233 * @type function 31234 * @depreciated Since 1.10 31235 */ 31236 fnVersionCheck: DataTable2.fnVersionCheck, 31237 /** 31238 * Index for what 'this' index API functions should use 31239 * @type int 31240 * @deprecated Since v1.10 31241 */ 31242 iApiIndex: 0, 31243 /** 31244 * jQuery UI class container 31245 * @type object 31246 * @deprecated Since v1.10 31247 */ 31248 oJUIClasses: {}, 31249 /** 31250 * Software version 31251 * @type string 31252 * @deprecated Since v1.10 31253 */ 31254 sVersion: DataTable2.version 31255 }; 31256 $3.extend(_ext, { 31257 afnFiltering: _ext.search, 31258 aTypes: _ext.type.detect, 31259 ofnSearch: _ext.type.search, 31260 oSort: _ext.type.order, 31261 afnSortData: _ext.order, 31262 aoFeatures: _ext.feature, 31263 oApi: _ext.internal, 31264 oStdClasses: _ext.classes, 31265 oPagination: _ext.pager 31266 }); 31267 $3.extend(DataTable2.ext.classes, { 31268 "sTable": "dataTable", 31269 "sNoFooter": "no-footer", 31270 /* Paging buttons */ 31271 "sPageButton": "paginate_button", 31272 "sPageButtonActive": "current", 31273 "sPageButtonDisabled": "disabled", 31274 /* Striping classes */ 31275 "sStripeOdd": "odd", 31276 "sStripeEven": "even", 31277 /* Empty row */ 31278 "sRowEmpty": "dataTables_empty", 31279 /* Features */ 31280 "sWrapper": "dataTables_wrapper", 31281 "sFilter": "dataTables_filter", 31282 "sInfo": "dataTables_info", 31283 "sPaging": "dataTables_paginate paging_", 31284 /* Note that the type is postfixed */ 31285 "sLength": "dataTables_length", 31286 "sProcessing": "dataTables_processing", 31287 /* Sorting */ 31288 "sSortAsc": "sorting_asc", 31289 "sSortDesc": "sorting_desc", 31290 "sSortable": "sorting", 31291 /* Sortable in both directions */ 31292 "sSortableAsc": "sorting_desc_disabled", 31293 "sSortableDesc": "sorting_asc_disabled", 31294 "sSortableNone": "sorting_disabled", 31295 "sSortColumn": "sorting_", 31296 /* Note that an int is postfixed for the sorting order */ 31297 /* Filtering */ 31298 "sFilterInput": "", 31299 /* Page length */ 31300 "sLengthSelect": "", 31301 /* Scrolling */ 31302 "sScrollWrapper": "dataTables_scroll", 31303 "sScrollHead": "dataTables_scrollHead", 31304 "sScrollHeadInner": "dataTables_scrollHeadInner", 31305 "sScrollBody": "dataTables_scrollBody", 31306 "sScrollFoot": "dataTables_scrollFoot", 31307 "sScrollFootInner": "dataTables_scrollFootInner", 31308 /* Misc */ 31309 "sHeaderTH": "", 31310 "sFooterTH": "", 31311 // Deprecated 31312 "sSortJUIAsc": "", 31313 "sSortJUIDesc": "", 31314 "sSortJUI": "", 31315 "sSortJUIAscAllowed": "", 31316 "sSortJUIDescAllowed": "", 31317 "sSortJUIWrapper": "", 31318 "sSortIcon": "", 31319 "sJUIHeader": "", 31320 "sJUIFooter": "" 31321 }); 31322 var extPagination = DataTable2.ext.pager; 31323 function _numbers(page, pages) { 31324 var numbers = [], buttons = extPagination.numbers_length, half = Math.floor(buttons / 2), i2 = 1; 31325 if (pages <= buttons) { 31326 numbers = _range(0, pages); 31327 } else if (page <= half) { 31328 numbers = _range(0, buttons - 2); 31329 numbers.push("ellipsis"); 31330 numbers.push(pages - 1); 31331 } else if (page >= pages - 1 - half) { 31332 numbers = _range(pages - (buttons - 2), pages); 31333 numbers.splice(0, 0, "ellipsis"); 31334 numbers.splice(0, 0, 0); 31335 } else { 31336 numbers = _range(page - half + 2, page + half - 1); 31337 numbers.push("ellipsis"); 31338 numbers.push(pages - 1); 31339 numbers.splice(0, 0, "ellipsis"); 31340 numbers.splice(0, 0, 0); 31341 } 31342 numbers.DT_el = "span"; 31343 return numbers; 31344 } 31345 $3.extend(extPagination, { 31346 simple: function(page, pages) { 31347 return ["previous", "next"]; 31348 }, 31349 full: function(page, pages) { 31350 return ["first", "previous", "next", "last"]; 31351 }, 31352 numbers: function(page, pages) { 31353 return [_numbers(page, pages)]; 31354 }, 31355 simple_numbers: function(page, pages) { 31356 return ["previous", _numbers(page, pages), "next"]; 31357 }, 31358 full_numbers: function(page, pages) { 31359 return ["first", "previous", _numbers(page, pages), "next", "last"]; 31360 }, 31361 first_last_numbers: function(page, pages) { 31362 return ["first", _numbers(page, pages), "last"]; 31363 }, 31364 // For testing and plug-ins to use 31365 _numbers, 31366 // Number of number buttons (including ellipsis) to show. _Must be odd!_ 31367 numbers_length: 7 31368 }); 31369 $3.extend(true, DataTable2.ext.renderer, { 31370 pageButton: { 31371 _: function(settings, host, idx, buttons, page, pages) { 31372 var classes = settings.oClasses; 31373 var lang = settings.oLanguage.oPaginate; 31374 var aria = settings.oLanguage.oAria.paginate || {}; 31375 var btnDisplay, btnClass; 31376 var attach = function(container, buttons2) { 31377 var i2, ien, node, button; 31378 var disabledClass = classes.sPageButtonDisabled; 31379 var clickHandler = function(e) { 31380 _fnPageChange(settings, e.data.action, true); 31381 }; 31382 for (i2 = 0, ien = buttons2.length; i2 < ien; i2++) { 31383 button = buttons2[i2]; 31384 if (Array.isArray(button)) { 31385 var inner = $3("<" + (button.DT_el || "div") + "/>").appendTo(container); 31386 attach(inner, button); 31387 } else { 31388 var disabled = false; 31389 btnDisplay = null; 31390 btnClass = button; 31391 switch (button) { 31392 case "ellipsis": 31393 container.append('<span class="ellipsis">…</span>'); 31394 break; 31395 case "first": 31396 btnDisplay = lang.sFirst; 31397 if (page === 0) { 31398 disabled = true; 31399 } 31400 break; 31401 case "previous": 31402 btnDisplay = lang.sPrevious; 31403 if (page === 0) { 31404 disabled = true; 31405 } 31406 break; 31407 case "next": 31408 btnDisplay = lang.sNext; 31409 if (pages === 0 || page === pages - 1) { 31410 disabled = true; 31411 } 31412 break; 31413 case "last": 31414 btnDisplay = lang.sLast; 31415 if (pages === 0 || page === pages - 1) { 31416 disabled = true; 31417 } 31418 break; 31419 default: 31420 btnDisplay = settings.fnFormatNumber(button + 1); 31421 btnClass = page === button ? classes.sPageButtonActive : ""; 31422 break; 31423 } 31424 if (btnDisplay !== null) { 31425 var tag = settings.oInit.pagingTag || "a"; 31426 if (disabled) { 31427 btnClass += " " + disabledClass; 31428 } 31429 node = $3("<" + tag + ">", { 31430 "class": classes.sPageButton + " " + btnClass, 31431 "aria-controls": settings.sTableId, 31432 "aria-disabled": disabled ? "true" : null, 31433 "aria-label": aria[button], 31434 "role": "link", 31435 "aria-current": btnClass === classes.sPageButtonActive ? "page" : null, 31436 "data-dt-idx": button, 31437 "tabindex": disabled ? -1 : settings.iTabIndex, 31438 "id": idx === 0 && typeof button === "string" ? settings.sTableId + "_" + button : null 31439 }).html(btnDisplay).appendTo(container); 31440 _fnBindAction( 31441 node, 31442 { action: button }, 31443 clickHandler 31444 ); 31445 } 31446 } 31447 } 31448 }; 31449 var activeEl; 31450 try { 31451 activeEl = $3(host).find(document2.activeElement).data("dt-idx"); 31452 } catch (e) { 31453 } 31454 attach($3(host).empty(), buttons); 31455 if (activeEl !== undefined2) { 31456 $3(host).find("[data-dt-idx=" + activeEl + "]").trigger("focus"); 31457 } 31458 } 31459 } 31460 }); 31461 $3.extend(DataTable2.ext.type.detect, [ 31462 // Plain numbers - first since V8 detects some plain numbers as dates 31463 // e.g. Date.parse('55') (but not all, e.g. Date.parse('22')...). 31464 function(d, settings) { 31465 var decimal = settings.oLanguage.sDecimal; 31466 return _isNumber(d, decimal) ? "num" + decimal : null; 31467 }, 31468 // Dates (only those recognised by the browser's Date.parse) 31469 function(d, settings) { 31470 if (d && !(d instanceof Date) && !_re_date.test(d)) { 31471 return null; 31472 } 31473 var parsed = Date.parse(d); 31474 return parsed !== null && !isNaN(parsed) || _empty(d) ? "date" : null; 31475 }, 31476 // Formatted numbers 31477 function(d, settings) { 31478 var decimal = settings.oLanguage.sDecimal; 31479 return _isNumber(d, decimal, true) ? "num-fmt" + decimal : null; 31480 }, 31481 // HTML numeric 31482 function(d, settings) { 31483 var decimal = settings.oLanguage.sDecimal; 31484 return _htmlNumeric(d, decimal) ? "html-num" + decimal : null; 31485 }, 31486 // HTML numeric, formatted 31487 function(d, settings) { 31488 var decimal = settings.oLanguage.sDecimal; 31489 return _htmlNumeric(d, decimal, true) ? "html-num-fmt" + decimal : null; 31490 }, 31491 // HTML (this is strict checking - there must be html) 31492 function(d, settings) { 31493 return _empty(d) || typeof d === "string" && d.indexOf("<") !== -1 ? "html" : null; 31494 } 31495 ]); 31496 $3.extend(DataTable2.ext.type.search, { 31497 html: function(data) { 31498 return _empty(data) ? data : typeof data === "string" ? data.replace(_re_new_lines, " ").replace(_re_html, "") : ""; 31499 }, 31500 string: function(data) { 31501 return _empty(data) ? data : typeof data === "string" ? data.replace(_re_new_lines, " ") : data; 31502 } 31503 }); 31504 var __numericReplace = function(d, decimalPlace, re1, re2) { 31505 if (d !== 0 && (!d || d === "-")) { 31506 return -Infinity; 31507 } 31508 var type = typeof d; 31509 if (type === "number" || type === "bigint") { 31510 return d; 31511 } 31512 if (decimalPlace) { 31513 d = _numToDecimal(d, decimalPlace); 31514 } 31515 if (d.replace) { 31516 if (re1) { 31517 d = d.replace(re1, ""); 31518 } 31519 if (re2) { 31520 d = d.replace(re2, ""); 31521 } 31522 } 31523 return d * 1; 31524 }; 31525 function _addNumericSort(decimalPlace) { 31526 $3.each( 31527 { 31528 // Plain numbers 31529 "num": function(d) { 31530 return __numericReplace(d, decimalPlace); 31531 }, 31532 // Formatted numbers 31533 "num-fmt": function(d) { 31534 return __numericReplace(d, decimalPlace, _re_formatted_numeric); 31535 }, 31536 // HTML numeric 31537 "html-num": function(d) { 31538 return __numericReplace(d, decimalPlace, _re_html); 31539 }, 31540 // HTML numeric, formatted 31541 "html-num-fmt": function(d) { 31542 return __numericReplace(d, decimalPlace, _re_html, _re_formatted_numeric); 31543 } 31544 }, 31545 function(key, fn) { 31546 _ext.type.order[key + decimalPlace + "-pre"] = fn; 31547 if (key.match(/^html\-/)) { 31548 _ext.type.search[key + decimalPlace] = _ext.type.search.html; 31549 } 31550 } 31551 ); 31552 } 31553 $3.extend(_ext.type.order, { 31554 // Dates 31555 "date-pre": function(d) { 31556 var ts = Date.parse(d); 31557 return isNaN(ts) ? -Infinity : ts; 31558 }, 31559 // html 31560 "html-pre": function(a) { 31561 return _empty(a) ? "" : a.replace ? a.replace(/<.*?>/g, "").toLowerCase() : a + ""; 31562 }, 31563 // string 31564 "string-pre": function(a) { 31565 return _empty(a) ? "" : typeof a === "string" ? a.toLowerCase() : !a.toString ? "" : a.toString(); 31566 }, 31567 // string-asc and -desc are retained only for compatibility with the old 31568 // sort methods 31569 "string-asc": function(x, y) { 31570 return x < y ? -1 : x > y ? 1 : 0; 31571 }, 31572 "string-desc": function(x, y) { 31573 return x < y ? 1 : x > y ? -1 : 0; 31574 } 31575 }); 31576 _addNumericSort(""); 31577 $3.extend(true, DataTable2.ext.renderer, { 31578 header: { 31579 _: function(settings, cell, column, classes) { 31580 $3(settings.nTable).on("order.dt.DT", function(e, ctx, sorting, columns) { 31581 if (settings !== ctx) { 31582 return; 31583 } 31584 var colIdx = column.idx; 31585 cell.removeClass( 31586 classes.sSortAsc + " " + classes.sSortDesc 31587 ).addClass( 31588 columns[colIdx] == "asc" ? classes.sSortAsc : columns[colIdx] == "desc" ? classes.sSortDesc : column.sSortingClass 31589 ); 31590 }); 31591 }, 31592 jqueryui: function(settings, cell, column, classes) { 31593 $3("<div/>").addClass(classes.sSortJUIWrapper).append(cell.contents()).append( 31594 $3("<span/>").addClass(classes.sSortIcon + " " + column.sSortingClassJUI) 31595 ).appendTo(cell); 31596 $3(settings.nTable).on("order.dt.DT", function(e, ctx, sorting, columns) { 31597 if (settings !== ctx) { 31598 return; 31599 } 31600 var colIdx = column.idx; 31601 cell.removeClass(classes.sSortAsc + " " + classes.sSortDesc).addClass( 31602 columns[colIdx] == "asc" ? classes.sSortAsc : columns[colIdx] == "desc" ? classes.sSortDesc : column.sSortingClass 31603 ); 31604 cell.find("span." + classes.sSortIcon).removeClass( 31605 classes.sSortJUIAsc + " " + classes.sSortJUIDesc + " " + classes.sSortJUI + " " + classes.sSortJUIAscAllowed + " " + classes.sSortJUIDescAllowed 31606 ).addClass( 31607 columns[colIdx] == "asc" ? classes.sSortJUIAsc : columns[colIdx] == "desc" ? classes.sSortJUIDesc : column.sSortingClassJUI 31608 ); 31609 }); 31610 } 31611 } 31612 }); 31613 var __htmlEscapeEntities = function(d) { 31614 if (Array.isArray(d)) { 31615 d = d.join(","); 31616 } 31617 return typeof d === "string" ? d.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """) : d; 31618 }; 31619 function __mld(dt, momentFn, luxonFn, dateFn, arg1) { 31620 if (window2.moment) { 31621 return dt[momentFn](arg1); 31622 } else if (window2.luxon) { 31623 return dt[luxonFn](arg1); 31624 } 31625 return dateFn ? dt[dateFn](arg1) : dt; 31626 } 31627 var __mlWarning = false; 31628 function __mldObj(d, format, locale) { 31629 var dt; 31630 if (window2.moment) { 31631 dt = window2.moment.utc(d, format, locale, true); 31632 if (!dt.isValid()) { 31633 return null; 31634 } 31635 } else if (window2.luxon) { 31636 dt = format && typeof d === "string" ? window2.luxon.DateTime.fromFormat(d, format) : window2.luxon.DateTime.fromISO(d); 31637 if (!dt.isValid) { 31638 return null; 31639 } 31640 dt.setLocale(locale); 31641 } else if (!format) { 31642 dt = new Date(d); 31643 } else { 31644 if (!__mlWarning) { 31645 alert("DataTables warning: Formatted date without Moment.js or Luxon - https://datatables.net/tn/17"); 31646 } 31647 __mlWarning = true; 31648 } 31649 return dt; 31650 } 31651 function __mlHelper(localeString) { 31652 return function(from, to, locale, def) { 31653 if (arguments.length === 0) { 31654 locale = "en"; 31655 to = null; 31656 from = null; 31657 } else if (arguments.length === 1) { 31658 locale = "en"; 31659 to = from; 31660 from = null; 31661 } else if (arguments.length === 2) { 31662 locale = to; 31663 to = from; 31664 from = null; 31665 } 31666 var typeName = "datetime-" + to; 31667 if (!DataTable2.ext.type.order[typeName]) { 31668 DataTable2.ext.type.detect.unshift(function(d) { 31669 return d === typeName ? typeName : false; 31670 }); 31671 DataTable2.ext.type.order[typeName + "-asc"] = function(a, b) { 31672 var x = a.valueOf(); 31673 var y = b.valueOf(); 31674 return x === y ? 0 : x < y ? -1 : 1; 31675 }; 31676 DataTable2.ext.type.order[typeName + "-desc"] = function(a, b) { 31677 var x = a.valueOf(); 31678 var y = b.valueOf(); 31679 return x === y ? 0 : x > y ? -1 : 1; 31680 }; 31681 } 31682 return function(d, type) { 31683 if (d === null || d === undefined2) { 31684 if (def === "--now") { 31685 var local = /* @__PURE__ */ new Date(); 31686 d = new Date(Date.UTC( 31687 local.getFullYear(), 31688 local.getMonth(), 31689 local.getDate(), 31690 local.getHours(), 31691 local.getMinutes(), 31692 local.getSeconds() 31693 )); 31694 } else { 31695 d = ""; 31696 } 31697 } 31698 if (type === "type") { 31699 return typeName; 31700 } 31701 if (d === "") { 31702 return type !== "sort" ? "" : __mldObj("0000-01-01 00:00:00", null, locale); 31703 } 31704 if (to !== null && from === to && type !== "sort" && type !== "type" && !(d instanceof Date)) { 31705 return d; 31706 } 31707 var dt = __mldObj(d, from, locale); 31708 if (dt === null) { 31709 return d; 31710 } 31711 if (type === "sort") { 31712 return dt; 31713 } 31714 var formatted = to === null ? __mld(dt, "toDate", "toJSDate", "")[localeString]() : __mld(dt, "format", "toFormat", "toISOString", to); 31715 return type === "display" ? __htmlEscapeEntities(formatted) : formatted; 31716 }; 31717 }; 31718 } 31719 var __thousands = ","; 31720 var __decimal = "."; 31721 if (window2.Intl !== undefined2) { 31722 try { 31723 var num = new Intl.NumberFormat().formatToParts(100000.1); 31724 for (var i = 0; i < num.length; i++) { 31725 if (num[i].type === "group") { 31726 __thousands = num[i].value; 31727 } else if (num[i].type === "decimal") { 31728 __decimal = num[i].value; 31729 } 31730 } 31731 } catch (e) { 31732 } 31733 } 31734 DataTable2.datetime = function(format, locale) { 31735 var typeName = "datetime-detect-" + format; 31736 if (!locale) { 31737 locale = "en"; 31738 } 31739 if (!DataTable2.ext.type.order[typeName]) { 31740 DataTable2.ext.type.detect.unshift(function(d) { 31741 var dt = __mldObj(d, format, locale); 31742 return d === "" || dt ? typeName : false; 31743 }); 31744 DataTable2.ext.type.order[typeName + "-pre"] = function(d) { 31745 return __mldObj(d, format, locale) || 0; 31746 }; 31747 } 31748 }; 31749 DataTable2.render = { 31750 date: __mlHelper("toLocaleDateString"), 31751 datetime: __mlHelper("toLocaleString"), 31752 time: __mlHelper("toLocaleTimeString"), 31753 number: function(thousands, decimal, precision, prefix, postfix) { 31754 if (thousands === null || thousands === undefined2) { 31755 thousands = __thousands; 31756 } 31757 if (decimal === null || decimal === undefined2) { 31758 decimal = __decimal; 31759 } 31760 return { 31761 display: function(d) { 31762 if (typeof d !== "number" && typeof d !== "string") { 31763 return d; 31764 } 31765 if (d === "" || d === null) { 31766 return d; 31767 } 31768 var negative = d < 0 ? "-" : ""; 31769 var flo = parseFloat(d); 31770 if (isNaN(flo)) { 31771 return __htmlEscapeEntities(d); 31772 } 31773 flo = flo.toFixed(precision); 31774 d = Math.abs(flo); 31775 var intPart = parseInt(d, 10); 31776 var floatPart = precision ? decimal + (d - intPart).toFixed(precision).substring(2) : ""; 31777 if (intPart === 0 && parseFloat(floatPart) === 0) { 31778 negative = ""; 31779 } 31780 return negative + (prefix || "") + intPart.toString().replace( 31781 /\B(?=(\d{3})+(?!\d))/g, 31782 thousands 31783 ) + floatPart + (postfix || ""); 31784 } 31785 }; 31786 }, 31787 text: function() { 31788 return { 31789 display: __htmlEscapeEntities, 31790 filter: __htmlEscapeEntities 31791 }; 31792 } 31793 }; 31794 function _fnExternApiFunc(fn) { 31795 return function() { 31796 var args = [_fnSettingsFromNode(this[DataTable2.ext.iApiIndex])].concat( 31797 Array.prototype.slice.call(arguments) 31798 ); 31799 return DataTable2.ext.internal[fn].apply(this, args); 31800 }; 31801 } 31802 $3.extend(DataTable2.ext.internal, { 31803 _fnExternApiFunc, 31804 _fnBuildAjax, 31805 _fnAjaxUpdate, 31806 _fnAjaxParameters, 31807 _fnAjaxUpdateDraw, 31808 _fnAjaxDataSrc, 31809 _fnAddColumn, 31810 _fnColumnOptions, 31811 _fnAdjustColumnSizing, 31812 _fnVisibleToColumnIndex, 31813 _fnColumnIndexToVisible, 31814 _fnVisbleColumns, 31815 _fnGetColumns, 31816 _fnColumnTypes, 31817 _fnApplyColumnDefs, 31818 _fnHungarianMap, 31819 _fnCamelToHungarian, 31820 _fnLanguageCompat, 31821 _fnBrowserDetect, 31822 _fnAddData, 31823 _fnAddTr, 31824 _fnNodeToDataIndex, 31825 _fnNodeToColumnIndex, 31826 _fnGetCellData, 31827 _fnSetCellData, 31828 _fnSplitObjNotation, 31829 _fnGetObjectDataFn, 31830 _fnSetObjectDataFn, 31831 _fnGetDataMaster, 31832 _fnClearTable, 31833 _fnDeleteIndex, 31834 _fnInvalidate, 31835 _fnGetRowElements, 31836 _fnCreateTr, 31837 _fnBuildHead, 31838 _fnDrawHead, 31839 _fnDraw, 31840 _fnReDraw, 31841 _fnAddOptionsHtml, 31842 _fnDetectHeader, 31843 _fnGetUniqueThs, 31844 _fnFeatureHtmlFilter, 31845 _fnFilterComplete, 31846 _fnFilterCustom, 31847 _fnFilterColumn, 31848 _fnFilter, 31849 _fnFilterCreateSearch, 31850 _fnEscapeRegex, 31851 _fnFilterData, 31852 _fnFeatureHtmlInfo, 31853 _fnUpdateInfo, 31854 _fnInfoMacros, 31855 _fnInitialise, 31856 _fnInitComplete, 31857 _fnLengthChange, 31858 _fnFeatureHtmlLength, 31859 _fnFeatureHtmlPaginate, 31860 _fnPageChange, 31861 _fnFeatureHtmlProcessing, 31862 _fnProcessingDisplay, 31863 _fnFeatureHtmlTable, 31864 _fnScrollDraw, 31865 _fnApplyToChildren, 31866 _fnCalculateColumnWidths, 31867 _fnThrottle, 31868 _fnConvertToWidth, 31869 _fnGetWidestNode, 31870 _fnGetMaxLenString, 31871 _fnStringToCss, 31872 _fnSortFlatten, 31873 _fnSort, 31874 _fnSortAria, 31875 _fnSortListener, 31876 _fnSortAttachListener, 31877 _fnSortingClasses, 31878 _fnSortData, 31879 _fnSaveState, 31880 _fnLoadState, 31881 _fnImplementState, 31882 _fnSettingsFromNode, 31883 _fnLog, 31884 _fnMap, 31885 _fnBindAction, 31886 _fnCallbackReg, 31887 _fnCallbackFire, 31888 _fnLengthOverflow, 31889 _fnRenderer, 31890 _fnDataSource, 31891 _fnRowAttributes, 31892 _fnExtend, 31893 _fnCalculateEnd: function() { 31894 } 31895 // Used by a lot of plug-ins, but redundant 31896 // in 1.10, so this dead-end function is 31897 // added to prevent errors 31898 }); 31899 $3.fn.dataTable = DataTable2; 31900 DataTable2.$ = $3; 31901 $3.fn.dataTableSettings = DataTable2.settings; 31902 $3.fn.dataTableExt = DataTable2.ext; 31903 $3.fn.DataTable = function(opts) { 31904 return $3(this).dataTable(opts).api(); 31905 }; 31906 $3.each(DataTable2, function(prop, val) { 31907 $3.fn.DataTable[prop] = val; 31908 }); 31909 return DataTable2; 31910 }); 31911 } 31912 }); 31913 31914
31914// apps/base/assets/javascripts/vendor/intro.js 31915 var require_intro = __commonJS({ 31916 "apps/base/assets/javascripts/vendor/intro.js"(exports, module) { 31917 "use strict"; 31918 init_esbuild_shims(); 31919 !(function(t2, e) { 31920 "object" == typeof exports && "undefined" != typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define(e) : (t2 = "undefined" != typeof globalThis ? globalThis : t2 || self).introJs = e(); 31921 })(exports, (function() { 31922 "use strict"; 31923 function t2(e2) { 31924 return t2 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t3) { 31925 return typeof t3; 31926 } : function(t3) { 31927 return t3 && "function" == typeof Symbol && t3.constructor === Symbol && t3 !== Symbol.prototype ? "symbol" : typeof t3; 31928 }, t2(e2); 31929 } 31930 var e = /* @__PURE__ */ (function() { 31931 var t3 = {}; 31932 return function(e2) { 31933 var n2 = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "introjs-stamp"; 31934 return t3[n2] = t3[n2] || 0, void 0 === e2[n2] && (e2[n2] = t3[n2]++), e2[n2]; 31935 }; 31936 })(); 31937 function n(t3, e2, n2) { 31938 if (t3) for (var i2 = 0, o2 = t3.length; i2 < o2; i2++) e2(t3[i2], i2); 31939 "function" == typeof n2 && n2(); 31940 } 31941 var i = new function() { 31942 var t3 = "introjs_event"; 31943 this._id = function(t4, n2, i2, o2) { 31944 return n2 + e(i2) + (o2 ? "_".concat(e(o2)) : ""); 31945 }, this.on = function(e2, n2, i2, o2, r2) { 31946 var a2 = this._id.apply(this, arguments), l2 = function(t4) { 31947 return i2.call(o2 || e2, t4 || window.event); 31948 }; 31949 "addEventListener" in e2 ? e2.addEventListener(n2, l2, r2) : "attachEvent" in e2 && e2.attachEvent("on".concat(n2), l2), e2[t3] = e2[t3] || {}, e2[t3][a2] = l2; 31950 }, this.off = function(e2, n2, i2, o2, r2) { 31951 var a2 = this._id.apply(this, arguments), l2 = e2[t3] && e2[t3][a2]; 31952 l2 && ("removeEventListener" in e2 ? e2.removeEventListener(n2, l2, r2) : "detachEvent" in e2 && e2.detachEvent("on".concat(n2), l2), e2[t3][a2] = null); 31953 }; 31954 }(), o = "undefined" != typeof globalThis ? globalThis : "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : {}; 31955 function r(t3, e2) { 31956 return t3(e2 = { exports: {} }, e2.exports), e2.exports; 31957 } 31958 var a, l, s = function(t3) { 31959 return t3 && t3.Math == Math && t3; 31960 }, c = s("object" == typeof globalThis && globalThis) || s("object" == typeof window && window) || s("object" == typeof self && self) || s("object" == typeof o && o) || /* @__PURE__ */ (function() { 31961 return this; 31962 })() || Function("return this")(), u = function(t3) { 31963 try { 31964 return !!t3(); 31965 } catch (t4) { 31966 return true; 31967 } 31968 }, h = !u((function() { 31969 return 7 != Object.defineProperty({}, 1, { get: function() { 31970 return 7; 31971 } })[1]; 31972 })), f = Function.prototype.call, p = f.bind ? f.bind(f) : function() { 31973 return f.apply(f, arguments); 31974 }, d = {}.propertyIsEnumerable, g = Object.getOwnPropertyDescriptor, v = { f: g && !d.call({ 1: 2 }, 1) ? function(t3) { 31975 var e2 = g(this, t3); 31976 return !!e2 && e2.enumerable; 31977 } : d }, m = function(t3, e2) { 31978 return { enumerable: !(1 & t3), configurable: !(2 & t3), writable: !(4 & t3), value: e2 }; 31979 }, b = Function.prototype, y = b.bind, w = b.call, _ = y && y.bind(w), x = y ? function(t3) { 31980 return t3 && _(w, t3); 31981 } : function(t3) { 31982 return t3 && function() { 31983 return w.apply(t3, arguments); 31984 }; 31985 }, S = x({}.toString), j = x("".slice), C = function(t3) { 31986 return j(S(t3), 8, -1); 31987 }, k = c.Object, A = x("".split), E = u((function() { 31988 return !k("z").propertyIsEnumerable(0); 31989 })) ? function(t3) { 31990 return "String" == C(t3) ? A(t3, "") : k(t3); 31991 } : k, I = c.TypeError, T = function(t3) { 31992 if (null == t3) throw I("Can't call method on " + t3); 31993 return t3; 31994 }, N = function(t3) { 31995 return E(T(t3)); 31996 }, O = function(t3) { 31997 return "function" == typeof t3; 31998 }, P = function(t3) { 31999 return "object" == typeof t3 ? null !== t3 : O(t3); 32000 }, L = function(t3) { 32001 return O(t3) ? t3 : void 0; 32002 }, R = function(t3, e2) { 32003 return arguments.length < 2 ? L(c[t3]) : c[t3] && c[t3][e2]; 32004 }, q = x({}.isPrototypeOf), B = R("navigator", "userAgent") || "", M = c.process, H = c.Deno, F = M && M.versions || H && H.version, $3 = F && F.v8; 32005 $3 && (l = (a = $3.split("."))[0] > 0 && a[0] < 4 ? 1 : +(a[0] + a[1])), !l && B && (!(a = B.match(/Edge\/(\d+)/)) || a[1] >= 74) && (a = B.match(/Chrome\/(\d+)/)) && (l = +a[1]); 32006 var D = l, z = !!Object.getOwnPropertySymbols && !u((function() { 32007 var t3 = /* @__PURE__ */ Symbol(); 32008 return !String(t3) || !(Object(t3) instanceof Symbol) || !Symbol.sham && D && D < 41; 32009 })), G = z && !Symbol.sham && "symbol" == typeof Symbol.iterator, U = c.Object, W = G ? function(t3) { 32010 return "symbol" == typeof t3; 32011 } : function(t3) { 32012 var e2 = R("Symbol"); 32013 return O(e2) && q(e2.prototype, U(t3)); 32014 }, V = c.String, Y = function(t3) { 32015 try { 32016 return V(t3); 32017 } catch (t4) { 32018 return "Object"; 32019 } 32020 }, K = c.TypeError, X = function(t3) { 32021 if (O(t3)) return t3; 32022 throw K(Y(t3) + " is not a function"); 32023 }, J = function(t3, e2) { 32024 var n2 = t3[e2]; 32025 return null == n2 ? void 0 : X(n2); 32026 }, Q = c.TypeError, Z = Object.defineProperty, tt = function(t3, e2) { 32027 try { 32028 Z(c, t3, { value: e2, configurable: true, writable: true }); 32029 } catch (n2) { 32030 c[t3] = e2; 32031 } 32032 return e2; 32033 }, et = "__core-js_shared__", nt = c[et] || tt(et, {}), it = r((function(t3) { 32034 (t3.exports = function(t4, e2) { 32035 return nt[t4] || (nt[t4] = void 0 !== e2 ? e2 : {}); 32036 })("versions", []).push({ version: "3.19.1", mode: "global", copyright: "\xA9 2021 Denis Pushkarev (zloirock.ru)" }); 32037 })), ot = c.Object, rt = function(t3) { 32038 return ot(T(t3)); 32039 }, at = x({}.hasOwnProperty), lt = Object.hasOwn || function(t3, e2) { 32040 return at(rt(t3), e2); 32041 }, st = 0, ct = Math.random(), ut = x(1 .toString), ht = function(t3) { 32042 return "Symbol(" + (void 0 === t3 ? "" : t3) + ")_" + ut(++st + ct, 36); 32043 }, ft = it("wks"), pt = c.Symbol, dt = pt && pt.for, gt = G ? pt : pt && pt.withoutSetter || ht, vt = function(t3) { 32044 if (!lt(ft, t3) || !z && "string" != typeof ft[t3]) { 32045 var e2 = "Symbol." + t3; 32046 z && lt(pt, t3) ? ft[t3] = pt[t3] : ft[t3] = G && dt ? dt(e2) : gt(e2); 32047 } 32048 return ft[t3]; 32049 }, mt = c.TypeError, bt = vt("toPrimitive"), yt = function(t3, e2) { 32050 if (!P(t3) || W(t3)) return t3; 32051 var n2, i2 = J(t3, bt); 32052 if (i2) { 32053 if (void 0 === e2 && (e2 = "default"), n2 = p(i2, t3, e2), !P(n2) || W(n2)) return n2; 32054 throw mt("Can't convert object to primitive value"); 32055 } 32056 return void 0 === e2 && (e2 = "number"), (function(t4, e3) { 32057 var n3, i3; 32058 if ("string" === e3 && O(n3 = t4.toString) && !P(i3 = p(n3, t4))) return i3; 32059 if (O(n3 = t4.valueOf) && !P(i3 = p(n3, t4))) return i3; 32060 if ("string" !== e3 && O(n3 = t4.toString) && !P(i3 = p(n3, t4))) return i3; 32061 throw Q("Can't convert object to primitive value"); 32062 })(t3, e2); 32063 }, wt = function(t3) { 32064 var e2 = yt(t3, "string"); 32065 return W(e2) ? e2 : e2 + ""; 32066 }, _t = c.document, xt = P(_t) && P(_t.createElement), St = function(t3) { 32067 return xt ? _t.createElement(t3) : {}; 32068 }, jt = !h && !u((function() { 32069 return 7 != Object.defineProperty(St("div"), "a", { get: function() { 32070 return 7; 32071 } }).a; 32072 })), Ct = Object.getOwnPropertyDescriptor, kt = { f: h ? Ct : function(t3, e2) { 32073 if (t3 = N(t3), e2 = wt(e2), jt) try { 32074 return Ct(t3, e2); 32075 } catch (t4) { 32076 } 32077 if (lt(t3, e2)) return m(!p(v.f, t3, e2), t3[e2]); 32078 } }, At = c.String, Et = c.TypeError, It = function(t3) { 32079 if (P(t3)) return t3; 32080 throw Et(At(t3) + " is not an object"); 32081 }, Tt = c.TypeError, Nt = Object.defineProperty, Ot = { f: h ? Nt : function(t3, e2, n2) { 32082 if (It(t3), e2 = wt(e2), It(n2), jt) try { 32083 return Nt(t3, e2, n2); 32084 } catch (t4) { 32085 }
32086 if ("get" in n2 || "set" in n2) throw Tt("Accessors not supported"); 32087 return "value" in n2 && (t3[e2] = n2.value), t3; 32088 } }, Pt = h ? function(t3, e2, n2) { 32089 return Ot.f(t3, e2, m(1, n2)); 32090 } : function(t3, e2, n2) { 32091 return t3[e2] = n2, t3; 32092 }, Lt = x(Function.toString); 32093 O(nt.inspectSource) || (nt.inspectSource = function(t3) { 32094 return Lt(t3); 32095 }); 32096 var Rt, qt, Bt, Mt = nt.inspectSource, Ht = c.WeakMap, Ft = O(Ht) && /native code/.test(Mt(Ht)), $t = it("keys"), Dt = function(t3) { 32097 return $t[t3] || ($t[t3] = ht(t3)); 32098 }, zt = {}, Gt = "Object already initialized", Ut = c.TypeError, Wt = c.WeakMap; 32099 if (Ft || nt.state) { 32100 var Vt = nt.state || (nt.state = new Wt()), Yt = x(Vt.get), Kt = x(Vt.has), Xt = x(Vt.set); 32101 Rt = function(t3, e2) { 32102 if (Kt(Vt, t3)) throw new Ut(Gt); 32103 return e2.facade = t3, Xt(Vt, t3, e2), e2; 32104 }, qt = function(t3) { 32105 return Yt(Vt, t3) || {}; 32106 }, Bt = function(t3) { 32107 return Kt(Vt, t3); 32108 }; 32109 } else { 32110 var Jt = Dt("state"); 32111 zt[Jt] = true, Rt = function(t3, e2) { 32112 if (lt(t3, Jt)) throw new Ut(Gt); 32113 return e2.facade = t3, Pt(t3, Jt, e2), e2; 32114 }, qt = function(t3) { 32115 return lt(t3, Jt) ? t3[Jt] : {}; 32116 }, Bt = function(t3) { 32117 return lt(t3, Jt); 32118 }; 32119 } 32120 var Qt = { set: Rt, get: qt, has: Bt, enforce: function(t3) { 32121 return Bt(t3) ? qt(t3) : Rt(t3, {}); 32122 }, getterFor: function(t3) { 32123 return function(e2) { 32124 var n2; 32125 if (!P(e2) || (n2 = qt(e2)).type !== t3) throw Ut("Incompatible receiver, " + t3 + " required"); 32126 return n2; 32127 }; 32128 } }, Zt = Function.prototype, te = h && Object.getOwnPropertyDescriptor, ee = lt(Zt, "name"), ne = { EXISTS: ee, PROPER: ee && "something" === function() { 32129 }.name, CONFIGURABLE: ee && (!h || h && te(Zt, "name").configurable) }, ie = r((function(t3) { 32130 var e2 = ne.CONFIGURABLE, n2 = Qt.get, i2 = Qt.enforce, o2 = String(String).split("String"); 32131 (t3.exports = function(t4, n3, r2, a2) { 32132 var l2, s2 = !!a2 && !!a2.unsafe, u2 = !!a2 && !!a2.enumerable, h2 = !!a2 && !!a2.noTargetGet, f2 = a2 && void 0 !== a2.name ? a2.name : n3; 32133 O(r2) && ("Symbol(" === String(f2).slice(0, 7) && (f2 = "[" + String(f2).replace(/^Symbol\(([^)]*)\)/, "$1") + "]"), (!lt(r2, "name") || e2 && r2.name !== f2) && Pt(r2, "name", f2), (l2 = i2(r2)).source || (l2.source = o2.join("string" == typeof f2 ? f2 : ""))), t4 !== c ? (s2 ? !h2 && t4[n3] && (u2 = true) : delete t4[n3], u2 ? t4[n3] = r2 : Pt(t4, n3, r2)) : u2 ? t4[n3] = r2 : tt(n3, r2); 32134 })(Function.prototype, "toString", (function() { 32135 return O(this) && n2(this).source || Mt(this); 32136 })); 32137 })), oe = Math.ceil, re = Math.floor, ae = function(t3) { 32138 var e2 = +t3; 32139 return e2 != e2 || 0 === e2 ? 0 : (e2 > 0 ? re : oe)(e2); 32140 }, le = Math.max, se = Math.min, ce = function(t3, e2) { 32141 var n2 = ae(t3); 32142 return n2 < 0 ? le(n2 + e2, 0) : se(n2, e2); 32143 }, ue = Math.min, he = function(t3) { 32144 return t3 > 0 ? ue(ae(t3), 9007199254740991) : 0; 32145 }, fe = function(t3) { 32146 return he(t3.length); 32147 }, pe = function(t3) { 32148 return function(e2, n2, i2) { 32149 var o2, r2 = N(e2), a2 = fe(r2), l2 = ce(i2, a2); 32150 if (t3 && n2 != n2) { 32151 for (; a2 > l2; ) if ((o2 = r2[l2++]) != o2) return true; 32152 } else for (; a2 > l2; l2++) if ((t3 || l2 in r2) && r2[l2] === n2) return t3 || l2 || 0; 32153 return !t3 && -1; 32154 }; 32155 }, de = { includes: pe(true), indexOf: pe(false) }, ge = de.indexOf, ve = x([].push), me = function(t3, e2) { 32156 var n2, i2 = N(t3), o2 = 0, r2 = []; 32157 for (n2 in i2) !lt(zt, n2) && lt(i2, n2) && ve(r2, n2); 32158 for (; e2.length > o2; ) lt(i2, n2 = e2[o2++]) && (~ge(r2, n2) || ve(r2, n2)); 32159 return r2; 32160 }, be = ["constructor", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "toLocaleStr
32160ing", "toString", "valueOf"], ye = be.concat("length", "prototype"), we = { f: Object.getOwnPropertyNames || function(t3) { 32161 return me(t3, ye); 32162 } }, _e = { f: Object.getOwnPropertySymbols }, xe = x([].concat), Se = R("Reflect", "ownKeys") || function(t3) { 32163 var e2 = we.f(It(t3)), n2 = _e.f; 32164 return n2 ? xe(e2, n2(t3)) : e2; 32165 }, je = function(t3, e2) { 32166 for (var n2 = Se(e2), i2 = Ot.f, o2 = kt.f, r2 = 0; r2 < n2.length; r2++) { 32167 var a2 = n2[r2]; 32168 lt(t3, a2) || i2(t3, a2, o2(e2, a2)); 32169 } 32170 }, Ce = /#|\.prototype\./, ke = function(t3, e2) { 32171 var n2 = Ee[Ae(t3)]; 32172 return n2 == Te || n2 != Ie && (O(e2) ? u(e2) : !!e2); 32173 }, Ae = ke.normalize = function(t3) { 32174 return String(t3).replace(Ce, ".").toLowerCase(); 32175 }, Ee = ke.data = {}, Ie = ke.NATIVE = "N", Te = ke.POLYFILL = "P", Ne = ke, Oe = kt.f, Pe = function(t3, e2) { 32176 var n2, i2, o2, r2, a2, l2 = t3.target, s2 = t3.global, u2 = t3.stat; 32177 if (n2 = s2 ? c : u2 ? c[l2] || tt(l2, {}) : (c[l2] || {}).prototype) for (i2 in e2) { 32178 if (r2 = e2[i2], o2 = t3.noTargetGet ? (a2 = Oe(n2, i2)) && a2.value : n2[i2], !Ne(s2 ? i2 : l2 + (u2 ? "." : "#") + i2, t3.forced) && void 0 !== o2) { 32179 if (typeof r2 == typeof o2) continue; 32180 je(r2, o2); 32181 } 32182 (t3.sham || o2 && o2.sham) && Pt(r2, "sham", true), ie(n2, i2, r2, t3); 32183 } 32184 }, Le = {}; 32185 Le[vt("toStringTag")] = "z"; 32186 var Re, qe = "[object z]" === String(Le), Be = vt("toStringTag"), Me = c.Object, He = "Arguments" == C(/* @__PURE__ */ (function() { 32187 return arguments; 32188 })()), Fe = qe ? C : function(t3) { 32189 var e2, n2, i2; 32190 return void 0 === t3 ? "Undefined" : null === t3 ? "Null" : "string" == typeof (n2 = (function(t4, e3) { 32191 try { 32192 return t4[e3]; 32193 } catch (t5) { 32194 } 32195 })(e2 = Me(t3), Be)) ? n2 : He ? C(e2) : "Object" == (i2 = C(e2)) && O(e2.callee) ? "Arguments" : i2; 32196 }, $e = c.String, De = function(t3) { 32197 if ("Symbol" === Fe(t3)) throw TypeError("Cannot convert a Symbol value to a string"); 32198 return $e(t3); 32199 }, ze = function() { 32200 var t3 = It(this), e2 = ""; 32201 return t3.global && (e2 += "g"), t3.ignoreCase && (e2 += "i"), t3.multiline && (e2 += "m"), t3.dotAll && (e2 += "s"), t3.unicode && (e2 += "u"), t3.sticky && (e2 += "y"), e2; 32202 }, Ge = c.RegExp, Ue = { UNSUPPORTED_Y: u((function() { 32203 var t3 = Ge("a", "y"); 32204 return t3.lastIndex = 2, null != t3.exec("abcd"); 32205 })), BROKEN_CARET: u((function() { 32206 var t3 = Ge("^r", "gy"); 32207 return t3.lastIndex = 2, null != t3.exec("str"); 32208 })) }, We = Object.keys || function(t3) { 32209 return me(t3, be); 32210 }, Ve = h ? Object.defineProperties : function(t3, e2) { 32211 It(t3); 32212 for (var n2, i2 = N(e2), o2 = We(e2), r2 = o2.length, a2 = 0; r2 > a2; ) Ot.f(t3, n2 = o2[a2++], i2[n2]); 32213 return t3; 32214 }, Ye = R("document", "documentElement"), Ke = Dt("IE_PROTO"), Xe = function() { 32215 }, Je = function(t3) { 32216 return "<script>" + t3 + "<\/script>"; 32217 }, Qe = function(t3) { 32218 t3.write(Je("")), t3.close(); 32219 var e2 = t3.parentWindow.Object; 32220 return t3 = null, e2; 32221 }, Ze = function() { 32222 try { 32223 Re = new ActiveXObject("htmlfile"); 32224 } catch (t4) { 32225 } 32226 var t3, e2; 32227 Ze = "undefined" != typeof document ? document.domain && Re ? Qe(Re) : ((e2 = St("iframe")).style.display = "none", Ye.appendChild(e2), e2.src = String("javascript:"), (t3 = e2.contentWindow.document).open(), t3.write(Je("document.F=Object")), t3.close(), t3.F) : Qe(Re); 32228 for (var n2 = be.length; n2--; ) delete Ze.prototype[be[n2]]; 32229 return Ze(); 32230 }; 32231 zt[Ke] = true; 32232 var tn, en, nn = Object.create || function(t3, e2) { 32233 var n2; 32234 return null !== t3 ? (Xe.prototype = It(t3), n2 = new Xe(), Xe.prototype = null, n2[Ke] = t3) : n2 = Ze(), void 0 === e2 ? n2 : Ve(n2, e2); 32235 }, on = c.RegExp, rn = u((function() { 32236 var t3 = on(".", "s"); 32237 return !(t3.dotAll && t3.exec("\n") && "s" === t3.flags); 32238 })), an = c.RegExp, ln = u((function() { 32239 var t3 = an("(?<a>b)", "g"); 32240 return "b" !== t3.exec("b").groups.a || "bc" !== "b".replace(t3, "$<a>c"); 32241 })), sn = Qt.get, cn = it("native-string-replace", String.prototype.replace), un = RegExp.prototype.exec, hn = un, fn = x("".charAt), pn = x("".indexOf), dn = x("".replace), gn = x("".slice), vn = (en = /b*/g, p(un, tn = /a/, "a"), p(u
32241n, en, "a"), 0 !== tn.lastIndex || 0 !== en.lastIndex), mn = Ue.UNSUPPORTED_Y || Ue.BROKEN_CARET, bn = void 0 !== /()??/.exec("")[1]; 32242 (vn || bn || mn || rn || ln) && (hn = function(t3) { 32243 var e2, n2, i2, o2, r2, a2, l2, s2 = this, c2 = sn(s2), u2 = De(t3), h2 = c2.raw; 32244 if (h2) return h2.lastIndex = s2.lastIndex, e2 = p(hn, h2, u2), s2.lastIndex = h2.lastIndex, e2; 32245 var f2 = c2.groups, d2 = mn && s2.sticky, g2 = p(ze, s2), v2 = s2.source, m2 = 0, b2 = u2; 32246 if (d2 && (g2 = dn(g2, "y", ""), -1 === pn(g2, "g") && (g2 += "g"), b2 = gn(u2, s2.lastIndex), s2.lastIndex > 0 && (!s2.multiline || s2.multiline && "\n" !== fn(u2, s2.lastIndex - 1)) && (v2 = "(?: " + v2 + ")", b2 = " " + b2, m2++), n2 = new RegExp("^(?:" + v2 + ")", g2)), bn && (n2 = new RegExp("^" + v2 + "$(?!\\s)", g2)), vn && (i2 = s2.lastIndex), o2 = p(un, d2 ? n2 : s2, b2), d2 ? o2 ? (o2.input = gn(o2.input, m2), o2[0] = gn(o2[0], m2), o2.index = s2.lastIndex, s2.lastIndex += o2[0].length) : s2.lastIndex = 0 : vn && o2 && (s2.lastIndex = s2.global ? o2.index + o2[0].length : i2), bn && o2 && o2.length > 1 && p(cn, o2[0], n2, (function() { 32247 for (r2 = 1; r2 < arguments.length - 2; r2++) void 0 === arguments[r2] && (o2[r2] = void 0); 32248 })), o2 && f2) for (o2.groups = a2 = nn(null), r2 = 0; r2 < f2.length; r2++) a2[(l2 = f2[r2])[0]] = o2[l2[1]]; 32249 return o2; 32250 }); 32251 var yn = hn; 32252 Pe({ target: "RegExp", proto: true, forced: /./.exec !== yn }, { exec: yn }); 32253 var wn = vt("species"), _n = RegExp.prototype, xn = function(t3, e2, n2, i2) { 32254 var o2 = vt(t3), r2 = !u((function() { 32255 var e3 = {}; 32256 return e3[o2] = function() { 32257 return 7; 32258 }, 7 != ""[t3](e3); 32259 })), a2 = r2 && !u((function() { 32260 var e3 = false, n3 = /a/; 32261 return "split" === t3 && ((n3 = {}).constructor = {}, n3.constructor[wn] = function() { 32262 return n3; 32263 }, n3.flags = "", n3[o2] = /./[o2]), n3.exec = function() { 32264 return e3 = true, null; 32265 }, n3[o2](""), !e3; 32266 })); 32267 if (!r2 || !a2 || n2) { 32268 var l2 = x(/./[o2]), s2 = e2(o2, ""[t3], (function(t4, e3, n3, i3, o3) { 32269 var a3 = x(t4), s3 = e3.exec; 32270 return s3 === yn || s3 === _n.exec ? r2 && !o3 ? { done: true, value: l2(e3, n3, i3) } : { done: true, value: a3(n3, e3, i3) } : { done: false }; 32271 })); 32272 ie(String.prototype, t3, s2[0]), ie(_n, o2, s2[1]); 32273 } 32274 i2 && Pt(_n[o2], "sham", true); 32275 }, Sn = x("".charAt), jn = x("".charCodeAt), Cn = x("".slice), kn = function(t3) { 32276 return function(e2, n2) { 32277 var i2, o2, r2 = De(T(e2)), a2 = ae(n2), l2 = r2.length; 32278 return a2 < 0 || a2 >= l2 ? t3 ? "" : void 0 : (i2 = jn(r2, a2)) < 55296 || i2 > 56319 || a2 + 1 === l2 || (o2 = jn(r2, a2 + 1)) < 56320 || o2 > 57343 ? t3 ? Sn(r2, a2) : i2 : t3 ? Cn(r2, a2, a2 + 2) : o2 - 56320 + (i2 - 55296 << 10) + 65536; 32279 }; 32280 }, An = { codeAt: kn(false), charAt: kn(true) }.charAt, En = function(t3, e2, n2) { 32281 return e2 + (n2 ? An(t3, e2).length : 1); 32282 }, In = c.TypeError, Tn = function(t3, e2) { 32283 var n2 = t3.exec; 32284 if (O(n2)) { 32285 var i2 = p(n2, t3, e2); 32286 return null !== i2 && It(i2), i2; 32287 } 32288 if ("RegExp" === C(t3)) return p(yn, t3, e2); 32289 throw In("RegExp#exec called on incompatible receiver"); 32290 }; 32291 xn("match", (function(t3, e2, n2) { 32292 return [function(e3) { 32293 var n3 = T(this), i2 = null == e3 ? void 0 : J(e3, t3); 32294 return i2 ? p(i2, e3, n3) : new RegExp(e3)[t3](De(n3)); 32295 }, function(t4) { 32296 var i2 = It(this), o2 = De(t4), r2 = n2(e2, i2, o2); 32297 if (r2.done) return r2.value; 32298 if (!i2.global) return Tn(i2, o2); 32299 var a2 = i2.unicode; 32300 i2.lastIndex = 0; 32301 for (var l2, s2 = [], c2 = 0; null !== (l2 = Tn(i2, o2)); ) { 32302 var u2 = De(l2[0]); 32303 s2[c2] = u2, "" === u2 && (i2.lastIndex = En(o2, he(i2.lastIndex), a2)), c2++; 32304 } 32305 return 0 === c2 ? null : s2; 32306 }]; 32307 })); 32308 var Nn = Array.isArray || function(t3) { 32309 return "Array" == C(t3); 32310 }, On = function(t3, e2, n2) { 32311 var i2 = wt(e2); 32312 i2 in t3 ? Ot.f(t3, i2, m(0, n2)) : t3[i2] = n2; 32313 }, Pn = function() { 32314 }, Ln = [], Rn = R("Reflect", "construct"), qn = /^\s*(?:class|function)\b/, Bn = x(qn.exec), Mn = !qn.exec(Pn), Hn = function(t3) { 32315 if (!O(t3)) return false;
32316 try { 32317 return Rn(Pn, Ln, t3), true; 32318 } catch (t4) { 32319 return false; 32320 } 32321 }, Fn = !Rn || u((function() { 32322 var t3; 32323 return Hn(Hn.call) || !Hn(Object) || !Hn((function() { 32324 t3 = true; 32325 })) || t3; 32326 })) ? function(t3) { 32327 if (!O(t3)) return false; 32328 switch (Fe(t3)) { 32329 case "AsyncFunction": 32330 case "GeneratorFunction": 32331 case "AsyncGeneratorFunction": 32332 return false; 32333 } 32334 return Mn || !!Bn(qn, Mt(t3)); 32335 } : Hn, $n = vt("species"), Dn = c.Array, zn = function(t3, e2) { 32336 return new ((function(t4) { 32337 var e3; 32338 return Nn(t4) && (e3 = t4.constructor, (Fn(e3) && (e3 === Dn || Nn(e3.prototype)) || P(e3) && null === (e3 = e3[$n])) && (e3 = void 0)), void 0 === e3 ? Dn : e3; 32339 })(t3))(0 === e2 ? 0 : e2); 32340 }, Gn = vt("species"), Un = function(t3) { 32341 return D >= 51 || !u((function() { 32342 var e2 = []; 32343 return (e2.constructor = {})[Gn] = function() { 32344 return { foo: 1 }; 32345 }, 1 !== e2[t3](Boolean).foo; 32346 })); 32347 }, Wn = vt("isConcatSpreadable"), Vn = 9007199254740991, Yn = "Maximum allowed index exceeded", Kn = c.TypeError, Xn = D >= 51 || !u((function() { 32348 var t3 = []; 32349 return t3[Wn] = false, t3.concat()[0] !== t3; 32350 })), Jn = Un("concat"), Qn = function(t3) { 32351 if (!P(t3)) return false; 32352 var e2 = t3[Wn]; 32353 return void 0 !== e2 ? !!e2 : Nn(t3); 32354 }; 32355 Pe({ target: "Array", proto: true, forced: !Xn || !Jn }, { concat: function(t3) { 32356 var e2, n2, i2, o2, r2, a2 = rt(this), l2 = zn(a2, 0), s2 = 0; 32357 for (e2 = -1, i2 = arguments.length; e2 < i2; e2++) if (Qn(r2 = -1 === e2 ? a2 : arguments[e2])) { 32358 if (s2 + (o2 = fe(r2)) > Vn) throw Kn(Yn); 32359 for (n2 = 0; n2 < o2; n2++, s2++) n2 in r2 && On(l2, s2, r2[n2]); 32360 } else { 32361 if (s2 >= Vn) throw Kn(Yn); 32362 On(l2, s2++, r2); 32363 } 32364 return l2.length = s2, l2; 32365 } }); 32366 var Zn = qe ? {}.toString : function() { 32367 return "[object " + Fe(this) + "]"; 32368 }; 32369 qe || ie(Object.prototype, "toString", Zn, { unsafe: true }); 32370 var ti = ne.PROPER, ei = "toString", ni = RegExp.prototype, ii = ni.toString, oi = x(ze), ri = u((function() { 32371 return "/a/b" != ii.call({ source: "a", flags: "b" }); 32372 })), ai = ti && ii.name != ei; 32373 (ri || ai) && ie(RegExp.prototype, ei, (function() { 32374 var t3 = It(this), e2 = De(t3.source), n2 = t3.flags; 32375 return "/" + e2 + "/" + De(void 0 === n2 && q(ni, t3) && !("flags" in ni) ? oi(t3) : n2); 32376 }), { unsafe: true }); 32377 var li = Function.prototype, si = li.apply, ci = li.bind, ui = li.call, hi = "object" == typeof Reflect && Reflect.apply || (ci ? ui.bind(si) : function() { 32378 return ui.apply(si, arguments); 32379 }), fi = vt("match"), pi = function(t3) { 32380 var e2; 32381 return P(t3) && (void 0 !== (e2 = t3[fi]) ? !!e2 : "RegExp" == C(t3)); 32382 }, di = c.TypeError, gi = vt("species"), vi = function(t3, e2) { 32383 var n2, i2 = It(t3).constructor; 32384 return void 0 === i2 || null == (n2 = It(i2)[gi]) ? e2 : (function(t4) { 32385 if (Fn(t4)) return t4; 32386 throw di(Y(t4) + " is not a constructor"); 32387 })(n2); 32388 }, mi = x([].slice), bi = Ue.UNSUPPORTED_Y, yi = 4294967295, wi = Math.min, _i = [].push, xi = x(/./.exec), Si = x(_i), ji = x("".slice), Ci = !u((function() { 32389 var t3 = /(?:)/, e2 = t3.exec; 32390 t3.exec = function() { 32391 return e2.apply(this, arguments); 32392 }; 32393 var n2 = "ab".split(t3); 32394 return 2 !== n2.length || "a" !== n2[0] || "b" !== n2[1]; 32395 })); 32396 function ki(t3, e2) { 32397 if (t3 instanceof SVGElement) { 32398 var i2 = t3.getAttribute("class") || ""; 32399 i2.match(e2) || t3.setAttribute("class", "".concat(i2, " ").concat(e2)); 32400 } else { 32401 if (void 0 !== t3.classList) n(e2.split(" "), (function(e3) { 32402 t3.classList.add(e3); 32403 })); 32404 else t3.className.match(e2) || (t3.className += " ".concat(e2)); 32405 } 32406 } 32407 function Ai(t3, e2) { 32408 var n2 = ""; 32409 return t3.currentStyle ? n2 = t3.currentStyle[e2] : document.defaultView && document.defaultView.getComputedStyle && (n2 = document.defaultView.getComputedStyle(t3, null).getPropertyValue(e2)), n2 && n2.toLowerCase ? n2.toLowerCase() : n2; 32410 } 32411 function Ei(t3) { 32412 var e2 = t3.element; 32413 if (this._options.scrollToElement) { 32414 var n2 = (function(t4) { 32415 var e3 = window.getComputedStyle(t4), n3 = "absolute" === e3.position, i2 = /(auto|scroll)/; 32416 if ("fixed" === e3.position) return document.body; 32417 for (var o2 = t4; o2 = o2.parentElement; ) if (e3 = window.getComputedStyle(o2), (!n3 || "static" !== e3.position) && i2.test(e3.overflow + e3.overflowY + e3.overflowX)) return o2; 32418 return document.body; 32419 })(e2); 32420 n2 !== document.body && (n2.scrollTop = e2.offsetTop - n2.offsetTop); 32421 } 32422 } 32423 function Ii() { 32424 if (void 0 !== window.innerWidth) return { width: window.innerWidth, height: window.innerHeight }; 32425 var t3 = document.documentElement; 32426 return { width: t3.clientWidth, height: t3.clientHeight }; 32427 } 32428 function Ti(t3, e2, n2) { 32429 var i2, o2 = e2.element;
32430 if ("off" !== t3 && (this._options.scrollToElement && (i2 = "tooltip" === t3 ? n2.getBoundingClientRect() : o2.getBoundingClientRect(), !(function(t4) { 32431 var e3 = t4.getBoundingClientRect(); 32432 return e3.top >= 0 && e3.left >= 0 && e3.bottom + 80 <= window.innerHeight && e3.right <= window.innerWidth; 32433 })(o2)))) { 32434 var r2 = Ii().height; 32435 i2.bottom - (i2.bottom - i2.top) < 0 || o2.clientHeight > r2 ? window.scrollBy(0, i2.top - (r2 / 2 - i2.height / 2) - this._options.scrollPadding) : window.scrollBy(0, i2.top - (r2 / 2 - i2.height / 2) + this._options.scrollPadding); 32436 } 32437 } 32438 function Ni(t3) { 32439 t3.setAttribute("role", "button"), t3.tabIndex = 0; 32440 } 32441 xn("split", (function(t3, e2, n2) { 32442 var i2; 32443 return i2 = "c" == "abbc".split(/(b)*/)[1] || 4 != "test".split(/(?:)/, -1).length || 2 != "ab".split(/(?:ab)*/).length || 4 != ".".split(/(.?)(.?)/).length || ".".split(/()()/).length > 1 || "".split(/.?/).length ? function(t4, n3) { 32444 var i3 = De(T(this)), o2 = void 0 === n3 ? yi : n3 >>> 0; 32445 if (0 === o2) return []; 32446 if (void 0 === t4) return [i3]; 32447 if (!pi(t4)) return p(e2, i3, t4, o2); 32448 for (var r2, a2, l2, s2 = [], c2 = (t4.ignoreCase ? "i" : "") + (t4.multiline ? "m" : "") + (t4.unicode ? "u" : "") + (t4.sticky ? "y" : ""), u2 = 0, h2 = new RegExp(t4.source, c2 + "g"); (r2 = p(yn, h2, i3)) && !((a2 = h2.lastIndex) > u2 && (Si(s2, ji(i3, u2, r2.index)), r2.length > 1 && r2.index < i3.length && hi(_i, s2, mi(r2, 1)), l2 = r2[0].length, u2 = a2, s2.length >= o2)); ) h2.lastIndex === r2.index && h2.lastIndex++; 32449 return u2 === i3.length ? !l2 && xi(h2, "") || Si(s2, "") : Si(s2, ji(i3, u2)), s2.length > o2 ? mi(s2, 0, o2) : s2; 32450 } : "0".split(void 0, 0).length ? function(t4, n3) { 32451 return void 0 === t4 && 0 === n3 ? [] : p(e2, this, t4, n3); 32452 } : e2, [function(e3, n3) { 32453 var o2 = T(this), r2 = null == e3 ? void 0 : J(e3, t3); 32454 return r2 ? p(r2, e3, o2, n3) : p(i2, De(o2), e3, n3); 32455 }, function(t4, o2) { 32456 var r2 = It(this), a2 = De(t4), l2 = n2(i2, r2, a2, o2, i2 !== e2); 32457 if (l2.done) return l2.value; 32458 var s2 = vi(r2, RegExp), c2 = r2.unicode, u2 = (r2.ignoreCase ? "i" : "") + (r2.multiline ? "m" : "") + (r2.unicode ? "u" : "") + (bi ? "g" : "y"), h2 = new s2(bi ? "^(?:" + r2.source + ")" : r2, u2), f2 = void 0 === o2 ? yi : o2 >>> 0; 32459 if (0 === f2) return []; 32460 if (0 === a2.length) return null === Tn(h2, a2) ? [a2] : []; 32461 for (var p2 = 0, d2 = 0, g2 = []; d2 < a2.length; ) { 32462 h2.lastIndex = bi ? 0 : d2; 32463 var v2, m2 = Tn(h2, bi ? ji(a2, d2) : a2); 32464 if (null === m2 || (v2 = wi(he(h2.lastIndex + (bi ? d2 : 0)), a2.length)) === p2) d2 = En(a2, d2, c2); 32465 else { 32466 if (Si(g2, ji(a2, p2, d2)), g2.length === f2) return g2; 32467 for (var b2 = 1; b2 <= m2.length - 1; b2++) if (Si(g2, m2[b2]), g2.length === f2) return g2; 32468 d2 = p2 = v2; 32469 } 32470 } 32471 return Si(g2, ji(a2, p2)), g2; 32472 }]; 32473 }), !Ci, bi); 32474 var Oi = Object.assign, Pi = Object.defineProperty, Li = x([].concat), Ri = !Oi || u((function() { 32475 if (h && 1 !== Oi({ b: 1 }, Oi(Pi({}, "a", { enumerable: true, get: function() { 32476 Pi(this, "b", { value: 3, enumerable: false }); 32477 } }), { b: 2 })).b) return true; 32478 var t3 = {}, e2 = {}, n2 = /* @__PURE__ */ Symbol(), i2 = "abcdefghijklmnopqrst"; 32479 return t3[n2] = 7, i2.split("").forEach((function(t4) { 32480 e2[t4] = t4; 32481 })), 7 != Oi({}, t3)[n2] || We(Oi({}, e2)).join("") != i2; 32482 })) ? function(t3, e2) { 32483 for (var n2 = rt(t3), i2 = arguments.length, o2 = 1, r2 = _e.f, a2 = v.f; i2 > o2; ) for (var l2, s2 = E(arguments[o2++]), c2 = r2 ? Li(We(s2), r2(s2)) : We(s2), u2 = c2.length, f2 = 0; u2 > f2; ) l2 = c2[f2++], h && !p(a2, s2, l2) || (n2[l2] = s2[l2]); 32484 return n2; 32485 } : Oi; 32486 function qi(t3) { 32487 var e2 = t3.parentNode; 32488 return !(!e2 || "HTML" === e2.nodeName) && ("fixed" === Ai(t3, "position") || qi(e2)); 32489 } 32490 function Bi(t3, e2) { 32491 var n2 = document.body, i2 = document.documentElement, o2 = window.pageYOffset || i2.
32491scrollTop || n2.scrollTop, r2 = window.pageXOffset || i2.scrollLeft || n2.scrollLeft; 32492 e2 = e2 || n2; 32493 var a2 = t3.getBoundingClientRect(), l2 = e2.getBoundingClientRect(), s2 = Ai(e2, "position"), c2 = { width: a2.width, height: a2.height }; 32494 return "body" !== e2.tagName.toLowerCase() && "relative" === s2 || "sticky" === s2 ? Object.assign(c2, { top: a2.top - l2.top, left: a2.left - l2.left }) : qi(t3) ? Object.assign(c2, { top: a2.top, left: a2.left }) : Object.assign(c2, { top: a2.top + o2, left: a2.left + r2 }); 32495 } 32496 Pe({ target: "Object", stat: true, forced: Object.assign !== Ri }, { assign: Ri }); 32497 var Mi = Math.floor, Hi = x("".charAt), Fi = x("".replace), $i = x("".slice), Di = /\$([$&'`]|\d{1,2}|<[^>]*>)/g, zi = /\$([$&'`]|\d{1,2})/g, Gi = function(t3, e2, n2, i2, o2, r2) { 32498 var a2 = n2 + t3.length, l2 = i2.length, s2 = zi; 32499 return void 0 !== o2 && (o2 = rt(o2), s2 = Di), Fi(r2, s2, (function(r3, s3) { 32500 var c2; 32501 switch (Hi(s3, 0)) { 32502 case "$": 32503 return "$"; 32504 case "&": 32505 return t3; 32506 case "`": 32507 return $i(e2, 0, n2); 32508 case "'": 32509 return $i(e2, a2); 32510 case "<": 32511 c2 = o2[$i(s3, 1, -1)]; 32512 break; 32513 default: 32514 var u2 = +s3; 32515 if (0 === u2) return r3; 32516 if (u2 > l2) { 32517 var h2 = Mi(u2 / 10); 32518 return 0 === h2 ? r3 : h2 <= l2 ? void 0 === i2[h2 - 1] ? Hi(s3, 1) : i2[h2 - 1] + Hi(s3, 1) : r3; 32519 } 32520 c2 = i2[u2 - 1]; 32521 } 32522 return void 0 === c2 ? "" : c2; 32523 })); 32524 }, Ui = vt("replace"), Wi = Math.max, Vi = Math.min, Yi = x([].concat), Ki = x([].push), Xi = x("".indexOf), Ji = x("".slice), Qi = "$0" === "a".replace(/./, "$0"), Zi = !!/./[Ui] && "" === /./[Ui]("a", "$0"); 32525 function to(t3, e2) { 32526 if (t3 instanceof SVGElement) { 32527 var n2 = t3.getAttribute("class") || ""; 32528 t3.setAttribute("class", n2.replace(e2, "").replace(/^\s+|\s+$/g, "")); 32529 } else t3.className = t3.className.replace(e2, "").replace(/^\s+|\s+$/g, ""); 32530 } 32531 function eo(t3, e2) { 32532 var n2 = ""; 32533 if (t3.style.cssText && (n2 += t3.style.cssText), "string" == typeof e2) n2 += e2; 32534 else for (var i2 in e2) n2 += "".concat(i2, ":").concat(e2[i2], ";"); 32535 t3.style.cssText = n2; 32536 } 32537 function no(t3) { 32538 if (t3) { 32539 if (!this._introItems[this._currentStep]) return; 32540 var e2 = this._introItems[this._currentStep], n2 = Bi(e2.element, this._targetElement), i2 = this._options.helperElementPadding; 32541 qi(e2.element) ? ki(t3, "introjs-fixedTooltip") : to(t3, "introjs-fixedTooltip"), "floating" === e2.position && (i2 = 0), eo(t3, { width: "".concat(n2.width + i2, "px"), height: "".concat(n2.height + i2, "px"), top: "".concat(n2.top - i2 / 2, "px"), left: "".concat(n2.left - i2 / 2, "px") }); 32542 } 32543 } 32544 xn("replace", (function(t3, e2, n2) { 32545 var i2 = Zi ? "$" : "$0"; 32546 return [function(t4, n3) { 32547 var i3 = T(this), o2 = null == t4 ? void 0 : J(t4, Ui); 32548 return o2 ? p(o2, t4, i3, n3) : p(e2, De(i3), t4, n3); 32549 }, function(t4, o2) { 32550 var r2 = It(this), a2 = De(t4); 32551 if ("string" == typeof o2 && -1 === Xi(o2, i2) && -1 === Xi(o2, "$<")) { 32552 var l2 = n2(e2, r2, a2, o2); 32553 if (l2.done) return l2.value; 32554 } 32555 var s2 = O(o2); 32556 s2 || (o2 = De(o2)); 32557 var c2 = r2.global; 32558 if (c2) { 32559 var u2 = r2.unicode; 32560 r2.lastIndex = 0; 32561 } 32562 for (var h2 = []; ; ) { 32563 var f2 = Tn(r2, a2); 32564 if (null === f2) break; 32565 if (Ki(h2, f2), !c2) break; 32566 "" === De(f2[0]) && (r2.lastIndex = En(a2, he(r2.lastIndex), u2)); 32567 } 32568 for (var p2, d2 = "", g2 = 0, v2 = 0; v2 < h2.length; v2++) { 32569 for (var m2 = De((f2 = h2[v2])[0]), b2 = Wi(Vi(ae(f2.index), a2.length), 0), y2 = [], w2 = 1; w2 < f2.length; w2++) Ki(y2, void 0 === (p2 = f2[w2]) ? p2 : String(p2)); 32570 var _2 = f2.groups; 32571 if (s2) { 32572 var x2 = Yi([m2], y2, b2, a2); 32573 void 0 !== _2 && Ki(x2, _2); 32574 var S2 = De(hi(o2, void 0, x2)); 32575 } else S2 = Gi(m2, a2, b2, y2, _2, o2); 32576 b2 >= g2 && (d2 += Ji(a2, g2, b2) + S2, g2 = b2 + m2.length); 32577 } 32578 return d2 + Ji(a2, g2); 32579 }]; 32580 }), !!u((function() { 32581 var t3 = /./; 32582 return t3.exec = function() { 32583 var t4 = []; 32584 return t4.groups = { a: "7" }, t4; 32585 }, "7" !== "".replace(t3, "$<a>"); 32586 })) || !Qi || Zi); 32587 var io = vt("unscopables"), oo = Array.prototype; 32588 null == oo[io] && Ot.f(oo, io, { configurable: true, value: nn(null) }); 32589 var ro, ao = de.includes; 32590 Pe({ target: "Array", proto: true }, { includes: function(t3) { 32591 return ao(this, t3, arguments.length > 1 ? arguments[1] : void 0); 32592 } }), ro = "includes", oo[io][ro] = true; 32593 var lo = Un("slice"), so = vt("species"), co = c.Array, uo = Math.max; 32594 Pe({ target: "Array", proto: true, forced: !lo }, { slice: function(t3, e2) { 32595 var n2, i2, o2, r2 = N(this), a2 = fe(r2), l2 = ce(t3, a2), s2 = ce(void 0 === e2 ? a2 : e2, a2); 32596 if (Nn(r2) && (n2 = r2.constructor, (Fn(n2) && (n2 === co || Nn(n2.prototype)) || P(n2) && null === (n2 = n2[so])) && (n2 = void 0), n2 === co || void 0 === n2)) return mi(r2, l2, s2); 32597 for (i2 = new (void 0 === n2 ? co : n2)(uo(s2 - l2, 0)), o2 = 0; l2 < s2; l2++, o2++) l2 in r2 && On(i2, o2, r2[l2]); 32598 return i2.length = o2, i2; 32599 } }); 32600 var ho = c.TypeError, fo = function(t3) { 32601 if (pi(t3)) throw ho("The method doesn't accept regular expressions"); 32602 return t3; 32603 }, po = vt("match"), go = x("".indexOf); 32604 Pe({ target: "String", proto: true, forced: !(function(t3) { 32605 var e2 = /./; 32606 try { 32607 "/./"[t3](e2); 32608 } catch (n2) { 32609 try { 32610 return e2[po] = false, "/./"[t3](e2); 32611 } catch (t4) { 32612 } 32613 } 32614 return false;
32615 })("includes") }, { includes: function(t3) { 32616 return !!~go(De(T(this)), De(fo(t3)), arguments.length > 1 ? arguments[1] : void 0); 32617 } }); 32618 var vo = function(t3, e2) { 32619 var n2 = [][t3]; 32620 return !!n2 && u((function() { 32621 n2.call(null, e2 || function() { 32622 throw 1; 32623 }, 1); 32624 })); 32625 }, mo = x([].join), bo = E != Object, yo = vo("join", ","); 32626 Pe({ target: "Array", proto: true, forced: bo || !yo }, { join: function(t3) { 32627 return mo(N(this), void 0 === t3 ? "," : t3); 32628 } }); 32629 var wo = x(x.bind), _o = x([].push), xo = function(t3) { 32630 var e2 = 1 == t3, n2 = 2 == t3, i2 = 3 == t3, o2 = 4 == t3, r2 = 6 == t3, a2 = 7 == t3, l2 = 5 == t3 || r2; 32631 return function(s2, c2, u2, h2) { 32632 for (var f2, p2, d2 = rt(s2), g2 = E(d2), v2 = (function(t4, e3) { 32633 return X(t4), void 0 === e3 ? t4 : wo ? wo(t4, e3) : function() { 32634 return t4.apply(e3, arguments); 32635 }; 32636 })(c2, u2), m2 = fe(g2), b2 = 0, y2 = h2 || zn, w2 = e2 ? y2(s2, m2) : n2 || a2 ? y2(s2, 0) : void 0; m2 > b2; b2++) if ((l2 || b2 in g2) && (p2 = v2(f2 = g2[b2], b2, d2), t3)) if (e2) w2[b2] = p2; 32637 else if (p2) switch (t3) { 32638 case 3: 32639 return true; 32640 case 5: 32641 return f2; 32642 case 6: 32643 return b2; 32644 case 2: 32645 _o(w2, f2); 32646 } 32647 else switch (t3) { 32648 case 4: 32649 return false; 32650 case 7: 32651 _o(w2, f2); 32652 } 32653 return r2 ? -1 : i2 || o2 ? o2 : w2; 32654 }; 32655 }, So = { forEach: xo(0), map: xo(1), filter: xo(2), some: xo(3), every: xo(4), find: xo(5), findIndex: xo(6), filterReject: xo(7) }.filter; 32656 function jo(t3, e2, n2, i2, o2) { 32657 return t3.left + e2 + n2.width > i2.width ? (o2.style.left = "".concat(i2.width - n2.width - t3.left, "px"), false) : (o2.style.left = "".concat(e2, "px"), true); 32658 } 32659 function Co(t3, e2, n2, i2) { 32660 return t3.left + t3.width - e2 - n2.width < 0 ? (i2.style.left = "".concat(-t3.left, "px"), false) : (i2.style.right = "".concat(e2, "px"), true); 32661 } 32662 Pe({ target: "Array", proto: true, forced: !Un("filter") }, { filter: function(t3) { 32663 return So(this, t3, arguments.length > 1 ? arguments[1] : void 0); 32664 } }); 32665 var ko = Un("splice"), Ao = c.TypeError, Eo = Math.max, Io = Math.min, To = 9007199254740991, No = "Maximum allowed length exceeded"; 32666 function Oo(t3, e2) { 32667 t3.includes(e2) && t3.splice(t3.indexOf(e2), 1); 32668 } 32669 function Po(t3, e2, n2) { 32670 var i2 = this._options.positionPrecedence.slice(), o2 = Ii(), r2 = Bi(e2).height + 10, a2 = Bi(e2).width + 20, l2 = t3.getBoundingClientRect(), s2 = "floating"; 32671 l2.bottom + r2 > o2.height && Oo(i2, "bottom"), l2.top - r2 < 0 && Oo(i2, "top"), l2.right + a2 > o2.width && Oo(i2, "right"), l2.left - a2 < 0 && Oo(i2, "left"); 32672 var c2, u2, h2 = -1 !== (u2 = (c2 = n2 || "").indexOf("-")) ? c2.substr(u2) : ""; 32673 return n2 && (n2 = n2.split("-")[0]), i2.length && (s2 = i2.includes(n2) ? n2 : i2[0]), ["top", "bottom"].includes(s2) && (s2 += (function(t4, e3, n3, i3) { 32674 var o3 = n3.width, r3 = e3 / 2, a3 = Math.min(o3, window.screen.width), l3 = ["-left-aligned", "-middle-aligned", "-right-aligned"]; 32675 return a3 - t4 < e3 && Oo(l3, "-left-aligned"), (t4 < r3 || a3 - t4 < r3) && Oo(l3, "-middle-aligned"), t4 < e3 && Oo(l3, "-right-aligned"), l3.length ? l3.includes(i3) ? i3 : l3[0] : "-middle-aligned"; 32676 })(l2.left, a2, o2, h2)), s2; 32677 } 32678 function Lo(t3, e2, n2, i2) { 32679 var o2, r2, a2, l2, s2, c2 = ""; 32680 if (i2 = i2 || false, e2.style.top = null, e2.style.right = null, e2.style.bottom = null, e2.style.left = null, e2.style.marginLeft = null, e2.style.marginTop = null, n2.style.display = "inherit", this._introItems[this._currentStep]) switch (c2 = "string" == typeof (o2 = this._introItems[this._currentStep]).tooltipClass ? o2.tooltipClass : this._options.tooltipClass, e2.className = ["introjs-tooltip", c2].filter(
32680Boolean).join(" "), e2.setAttribute("role", "dialog"), "floating" !== (s2 = this._introItems[this._currentStep].position) && this._options.autoPosition && (s2 = Po.call(this, t3, e2, s2)), a2 = Bi(t3), r2 = Bi(e2), l2 = Ii(), ki(e2, "introjs-".concat(s2)), s2) { 32681 case "top-right-aligned": 32682 n2.className = "introjs-arrow bottom-right"; 32683 var u2 = 0; 32684 Co(a2, u2, r2, e2), e2.style.bottom = "".concat(a2.height + 20, "px"); 32685 break; 32686 case "top-middle-aligned": 32687 n2.className = "introjs-arrow bottom-middle"; 32688 var h2 = a2.width / 2 - r2.width / 2; 32689 i2 && (h2 += 5), Co(a2, h2, r2, e2) && (e2.style.right = null, jo(a2, h2, r2, l2, e2)), e2.style.bottom = "".concat(a2.height + 20, "px"); 32690 break; 32691 case "top-left-aligned": 32692 case "top": 32693 n2.className = "introjs-arrow bottom", jo(a2, i2 ? 0 : 15, r2, l2, e2), e2.style.bottom = "".concat(a2.height + 20, "px"); 32694 break; 32695 case "right": 32696 e2.style.left = "".concat(a2.width + 20, "px"), a2.top + r2.height > l2.height ? (n2.className = "introjs-arrow left-bottom", e2.style.top = "-".concat(r2.height - a2.height - 20, "px")) : n2.className = "introjs-arrow left"; 32697 break; 32698 case "left": 32699 i2 || true !== this._options.showStepNumbers || (e2.style.top = "15px"), a2.top + r2.height > l2.height ? (e2.style.top = "-".concat(r2.height - a2.height - 20, "px"), n2.className = "introjs-arrow right-bottom") : n2.className = "introjs-arrow right", e2.style.right = "".concat(a2.width + 20, "px"); 32700 break; 32701 case "floating": 32702 n2.style.display = "none", e2.style.left = "50%", e2.style.top = "50%", e2.style.marginLeft = "-".concat(r2.width / 2, "px"), e2.style.marginTop = "-".concat(r2.height / 2, "px"); 32703 break; 32704 case "bottom-right-aligned": 32705 n2.className = "introjs-arrow top-right", Co(a2, u2 = 0, r2, e2), e2.style.top = "".concat(a2.height + 20, "px"); 32706 break; 32707 case "bottom-middle-aligned": 32708 n2.className = "introjs-arrow top-middle", h2 = a2.width / 2 - r2.width / 2, i2 && (h2 += 5), Co(a2, h2, r2, e2) && (e2.style.right = null, jo(a2, h2, r2, l2, e2)), e2.style.top = "".concat(a2.height + 20, "px"); 32709 break; 32710 default: 32711 n2.className = "introjs-arrow top", jo(a2, 0, r2, l2, e2), e2.style.top = "".concat(a2.height + 20, "px"); 32712 } 32713 } 32714 function Ro() { 32715 n(document.querySelectorAll(".introjs-showElement"), (function(t3) { 32716 to(t3, /introjs-[a-zA-Z]+/g); 32717 })); 32718 } 32719 function qo(t3, e2) { 32720 var n2 = document.createElement(t3); 32721 e2 = e2 || {}; 32722 var i2 = /^(?:role|data-|aria-)/; 32723 for (var o2 in e2) { 32724 var r2 = e2[o2]; 32725 "style" === o2 ? eo(n2, r2) : o2.match(i2) ? n2.setAttribute(o2, r2) : n2[o2] = r2; 32726 } 32727 return n2; 32728 } 32729 function Bo(t3, e2, n2) { 32730 if (n2) { 32731 var i2 = e2.style.opacity || "1"; 32732 eo(e2, { opacity: "0" }), window.setTimeout((function() { 32733 eo(e2, { opacity: i2 }); 32734 }), 10); 32735 } 32736 t3.appendChild(e2); 32737 } 32738 function Mo() { 32739 return parseInt(this._currentStep + 1, 10) / this._introItems.length * 100; 32740 } 32741 function Ho() { 32742 var t3 = document.querySelector(".introjs-disableInteraction"); 32743 null === t3 && (t3 = qo("div", { className: "introjs-disableInteraction" }), this._targetElement.appendChild(t3)), no.call(this, t3); 32744 } 32745 function Fo(t3) { 32746 var e2 = this, i2 = qo("div", { className: "introjs-bullets" }); 32747 false === this._options.showBullets && (i2.style.display = "none"); 32748 var o2 = qo("ul"); 32749 o2.setAttribute("role", "tablist"); 32750 var r2 = function() { 32751 e2.goToStep(this.getAttribute("data-stepnumber")); 32752 }; 32753 return n(this._introItems, (function(e3, n2) { 32754 var i3 = e3.step, a2 = qo("li"), l2 = qo("a"); 32755 a2.setAttribute("role", "presentation"), l2.setAttribute("role", "tab"), l2.onclick = r2, n2 === t3.step - 1 && (l2.className = "active"), Ni(l2), l2.innerHTML = " ", l2.setAttribute("data-stepnumber", i3), a2.appendChild(l2), o2.appendChild(a2); 32756 })), i2.appendChild(o2), i2; 32757 } 32758 function $o(t3, e2) { 32759 if (this._options.showBullets) { 32760 var n2 = document.querySelector(".introjs-bullets"); 32761 n2.parentNode.replaceChild(Fo.call(this, e2), n2); 32762 } 32763 } 32764 function Do(t3, e2) { 32765 this._options.showBullets && (t3.querySelector(".introjs-bullets li > a.active").className = "", t3.querySelector('.introjs-bullets li > a[data-stepnumber="'.concat(e2.step, '"]')).className = "active"); 32766 } 32767 function zo() { 32768 var t3 = qo("div"); 32769 t3.className = "introjs-progress", false === this._options.showProgress && (t3.style.display = "none"); 32770 var e2 = qo("div", { className: "introjs-progressbar" }); 32771 return this._options.progressBarAdditionalClass && (e2.className += " " + this._options.progressBarAdditionalClass), e2.setAttribute("role", "progress"), e2.setAttribute("aria-valuemin", 0), e2.setAttribute("aria-valuemax", 100), e2.setAttribute("aria-valuenow", Mo.call(this)), e2.style.cssText = "width:".concat(Mo.call(this), "%;"), t3.appendChild(e2), t3; 32772 } 32773 function Go(t3) { 32774 t3.querySelector(".introjs-progress .introjs-progressbar").style.cssText = "width:".concat(Mo.call(this), "%;"), t3.querySelector(".introjs-progress .introjs-progressbar").setAttribute("aria-valuenow", Mo.call(this)); 32775 } 32776 function Uo(t3) { 32777 var e2 = this; 32778 void 0 !== this._introChangeCallback && this._introChangeCallback.call(this, t3.element); 32779 var n2, i2, o2, r2 = this, a2 = document.querySelector(".introjs-helperLayer"), l2 = document.querySelector(".introjs-tooltipReferenceLayer"), s2 = "introjs-helperLayer"; 32780 if ("string" == typeof t3.highlightClass && (s2 += " ".concat(t3.highlightClass)), "string" == typeof this._options.highlightClass && (s2 += " ".concat(this._options.highlightClass)), null !== a2 && null !== l2) {
32781 var c2 = l2.querySelector(".introjs-helperNumberLayer"), u2 = l2.querySelector(".introjs-tooltiptext"), h2 = l2.querySelector(".introjs-tooltip-title"), f2 = l2.querySelector(".introjs-arrow"), p2 = l2.querySelector(".introjs-tooltip"); 32782 o2 = l2.querySelector(".introjs-skipbutton"), i2 = l2.querySelector(".introjs-prevbutton"), n2 = l2.querySelector(".introjs-nextbutton"), a2.className = s2, p2.style.opacity = 0, p2.style.display = "none", Ei.call(r2, t3), no.call(r2, a2), no.call(r2, l2), Ro(), r2._lastShowElementTimer && window.clearTimeout(r2._lastShowElementTimer), r2._lastShowElementTimer = window.setTimeout((function() { 32783 null !== c2 && (c2.innerHTML = "".concat(t3.step, " of ").concat(e2._introItems.length)), u2.innerHTML = t3.intro, h2.innerHTML = t3.title, p2.style.display = "block", Lo.call(r2, t3.element, p2, f2), Do.call(r2, l2, t3), Go.call(r2, l2), p2.style.opacity = 1, (null != n2 && /introjs-donebutton/gi.test(n2.className) || null != n2) && n2.focus(), Ti.call(r2, t3.scrollTo, t3, u2); 32784 }), 350); 32785 } else { 32786 var d2 = qo("div", { className: s2 }), g2 = qo("div", { className: "introjs-tooltipReferenceLayer" }), v2 = qo("div", { className: "introjs-arrow" }), m2 = qo("div", { className: "introjs-tooltip" }), b2 = qo("div", { className: "introjs-tooltiptext" }), y2 = qo("div", { className: "introjs-tooltip-header" }), w2 = qo("h1", { className: "introjs-tooltip-title" }), _2 = qo("div"); 32787 eo(d2, { "box-shadow": "0 0 1px 2px rgba(33, 33, 33, 0.8), rgba(33, 33, 33, ".concat(r2._options.overlayOpacity.toString(), ") 0 0 0 5000px") }), Ei.call(r2, t3), no.call(r2, d2), no.call(r2, g2), Bo(this._targetElement, d2, true), Bo(this._targetElement, g2), b2.innerHTML = t3.intro, w2.innerHTML = t3.title, _2.className = "introjs-tooltipbuttons", false === this._options.showButtons && (_2.style.display = "none"), y2.appendChild(w2), m2.appendChild(y2), m2.appendChild(b2), m2.appendChild(Fo.call(this, t3)), m2.appendChild(zo.call(this)); 32788 var x2 = qo("div"); 32789 true === this._options.showStepNumbers && (x2.className = "introjs-helperNumberLayer", x2.innerHTML = "".concat(t3.step, " of ").concat(this._introItems.length), m2.appendChild(x2)), m2.appendChild(v2), g2.appendChild(m2), (n2 = qo("a")).onclick = function() { 32790 r2._introItems.length - 1 !== r2._currentStep ? Yo.call(r2) : /introjs-donebutton/gi.test(n2.className) && ("function" == typeof r2._introCompleteCallback && r2._introCompleteCallback.call(r2, r2._currentStep, "done"), Pr.call(r2, r2._targetElement)); 32791 }
32791, Ni(n2), n2.innerHTML = this._options.nextLabel, (i2 = qo("a")).onclick = function() { 32792 0 !== r2._currentStep && Ko.call(r2); 32793 }, Ni(i2), i2.innerHTML = this._options.prevLabel, Ni(o2 = qo("a", { className: "introjs-skipbutton" })), o2.innerHTML = this._options.skipLabel, o2.onclick = function() { 32794 r2._introItems.length - 1 === r2._currentStep && "function" == typeof r2._introCompleteCallback && r2._introCompleteCallback.call(r2, r2._currentStep, "skip"), "function" == typeof r2._introSkipCallback && r2._introSkipCallback.call(r2), Pr.call(r2, r2._targetElement); 32795 }, y2.appendChild(o2), this._introItems.length > 1 && _2.appendChild(i2), _2.appendChild(n2), m2.appendChild(_2), Lo.call(r2, t3.element, m2, v2), Ti.call(this, t3.scrollTo, t3, m2); 32796 } 32797 var S2 = r2._targetElement.querySelector(".introjs-disableInteraction"); 32798 S2 && S2.parentNode.removeChild(S2), t3.disableInteraction && Ho.call(r2), 0 === this._currentStep && this._introItems.length > 1 ? (null != n2 && (n2.className = "".concat(this._options.buttonClass, " introjs-nextbutton"), n2.innerHTML = this._options.nextLabel), true === this._options.hidePrev ? (null != i2 && (i2.className = "".concat(this._options.buttonClass, " introjs-prevbutton introjs-hidden")), null != n2 && ki(n2, "introjs-fullbutton")) : null != i2 && (i2.className = "".concat(this._options.buttonClass, " introjs-prevbutton introjs-disabled"))) : this._introItems.length - 1 === this._currentStep || 1 === this._introItems.length ? (null != i2 && (i2.className = "".concat(this._options.buttonClass, " introjs-prevbutton")), true === this._options.hideNext ? (null != n2 && (n2.className = "".concat(this._options.buttonClass, " introjs-nextbutton introjs-hidden")), null != i2 && ki(i2, "introjs-fullbutton")) : null != n2 && (true === this._options.nextToDone ? (n2.innerHTML = this._options.doneLabel, ki(n2, "".concat(this._options.buttonClass, " introjs-nextbutton introjs-donebutton"))) : n2.className = "".concat(this._options.buttonClass, " introjs-nextbutton introjs-disabled"))) : (null != i2 && (i2.className = "".concat(this._options.buttonClass, " introjs-prevbutton")), null != n2 && (n2.className = "".concat(this._options.buttonClass, " introjs-nextbutton"), n2.innerHTML = this._options.nextLabel)), null != i2 && i2.setAttribute("role", "button"), null != n2 && n2.setAttribute("role", "button"), null != o2 && o2.setAttribute("role", "button"), null != n2 && n2.focus(), (function(t4) { 32799 var e3 = t4.element; 32800 ki(e3, "introjs-showElement"); 32801 var n3 = Ai(e3, "position"); 32802 "absolute" !== n3 && "relative" !== n3 && "sticky" !== n3 && "fixed" !== n3 && ki(e3, "introjs-relativePosition"); 32803 })(t3), void 0 !== this._introAfterChangeCallback && this._introAfterChangeCallback.call(this, t3.element); 32804 } 32805 function Wo(t3) { 32806 this._currentStep = t3 - 2, void 0 !== this._introItems && Yo.call(this); 32807 } 32808 function Vo(t3) { 32809 this._currentStepNumber = t3, void 0 !== this._introItems && Yo.call(this); 32810 } 32811 function Yo() { 32812 var t3 = this; 32813 this._direction = "forward", void 0 !== this._currentStepNumber && n(this._introItems, (function(e3, n2) { 32814 e3.step === t3._currentStepNumber && (t3._currentStep = n2 - 1, t3._currentStepNumber = void 0); 32815 })), void 0 === this._currentStep ? this._currentStep = 0 : ++this._currentStep; 32816 var e2 = this._introItems[this._currentStep], i2 = true; 32817 return void 0 !== this._introBeforeChangeCallback && (i2 = this._introBeforeChangeCallback.call(this, e2 && e2.element)), false === i2 ? (--this._currentStep, false) : this._introItems.length <= this._currentStep ? ("function" == typeof this._introCompleteCallback && this._introCompleteCallback.call(this, this._currentStep, "end"), void Pr.call(this, this._targetElement)) : void Uo.call(this, e2); 32818 } 32819 function Ko() { 32820 if (this._direction = "backward", 0 === this._currentStep) return false;
32821 --this._currentStep; 32822 var t3 = this._introItems[this._currentStep], e2 = true; 32823 if (void 0 !== this._introBeforeChangeCallback && (e2 = this._introBeforeChangeCallback.call(this, t3 && t3.element)), false === e2) return ++this._currentStep, false; 32824 Uo.call(this, t3); 32825 } 32826 function Xo() { 32827 return this._currentStep; 32828 } 32829 function Jo(t3) { 32830 var e2 = void 0 === t3.code ? t3.which : t3.code; 32831 if (null === e2 && (e2 = null === t3.charCode ? t3.keyCode : t3.charCode), "Escape" !== e2 && 27 !== e2 || true !== this._options.exitOnEsc) { 32832 if ("ArrowLeft" === e2 || 37 === e2) Ko.call(this); 32833 else if ("ArrowRight" === e2 || 39 === e2) Yo.call(this); 32834 else if ("Enter" === e2 || "NumpadEnter" === e2 || 13 === e2) { 32835 var n2 = t3.target || t3.srcElement; 32836 n2 && n2.className.match("introjs-prevbutton") ? Ko.call(this) : n2 && n2.className.match("introjs-skipbutton") ? (this._introItems.length - 1 === this._currentStep && "function" == typeof this._introCompleteCallback && this._introCompleteCallback.call(this, this._currentStep, "skip"), Pr.call(this, this._targetElement)) : n2 && n2.getAttribute("data-stepnumber") ? n2.click() : Yo.call(this), t3.preventDefault ? t3.preventDefault() : t3.returnValue = false; 32837 } 32838 } else Pr.call(this, this._targetElement); 32839 } 32840 function Qo(e2) { 32841 if (null === e2 || "object" !== t2(e2) || void 0 !== e2.nodeType) return e2; 32842 var n2 = {}; 32843 for (var i2 in e2) void 0 !== window.jQuery && e2[i2] instanceof window.jQuery ? n2[i2] = e2[i2] : n2[i2] = Qo(e2[i2]); 32844 return n2; 32845 } 32846 function Zo(t3) { 32847 var e2 = document.querySelector(".introjs-hints"); 32848 return e2 ? e2.querySelectorAll(t3) : []; 32849 } 32850 function tr(t3) { 32851 var e2 = Zo('.introjs-hint[data-step="'.concat(t3, '"]'))[0]; 32852 cr.call(this), e2 && ki(e2, "introjs-hidehint"), void 0 !== this._hintCloseCallback && this._hintCloseCallback.call(this, t3); 32853 } 32854 function er() { 32855 var t3 = this; 32856 n(Zo(".introjs-hint"), (function(e2) { 32857 tr.call(t3, e2.getAttribute("data-step")); 32858 })); 32859 } 32860 function nr() { 32861 var t3 = this, e2 = Zo(".introjs-hint"); 32862 e2 && e2.length ? n(e2, (function(e3) { 32863 ir.call(t3, e3.getAttribute("data-step")); 32864 })) : ur.call(this, this._targetElement); 32865 } 32866 function ir(t3) { 32867 var e2 = Zo('.introjs-hint[data-step="'.concat(t3, '"]'))[0]; 32868 e2 && to(e2, /introjs-hidehint/g); 32869 } 32870 function or() { 32871 var t3 = this; 32872 n(Zo(".introjs-hint"), (function(e2) { 32873 rr.call(t3, e2.getAttribute("data-step")); 32874 })), i.off(document, "click", cr, this, false), i.off(window, "resize", hr, this, true), this._hintsAutoRefreshFunction && i.off(window, "scroll", this._hintsAutoRefreshFunction, this, true); 32875 } 32876 function rr(t3) { 32877 var e2 = Zo('.introjs-hint[data-step="'.concat(t3, '"]'))[0]; 32878 e2 && e2.parentNode.removeChild(e2); 32879 } 32880 function ar() { 32881 var t3 = this, e2 = this, o2 = document.querySelector(".introjs-hints"); 32882 null === o2 && (o2 = qo("div", { className: "introjs-hints" })); 32883 n(this._introItems, (function(n2, i2) { 32884 if (!document.querySelector('.introjs-hint[data-step="'.concat(i2, '"]'))) { 32885 var r2 = qo("a", { className: "introjs-hint" }); 32886 Ni(r2), r2.onclick = /* @__PURE__ */ (function(t4) { 32887 return function(n3) { 32888 var i3 = n3 || window.event; 32889 i3.stopPropagation && i3.stopPropagation(), null !== i3.cancelBubble && (i3.cancelBubble = true), sr.call(e2, t4); 32890 }; 32891 })(i2), n2.hintAnimation || ki(r2, "introjs-hint-no-anim"), qi(n2.element) && ki(r2, "introjs-fixedhint"); 32892 var a2 = qo("div", { className: "introjs-hint-dot" }), l2 = qo("div", { className: "introjs-hint-pulse" }); 32893 r2.appendChild(a2), r2.appendChild(l2), r2.setAttribute("data-step", i2), n2.targetElement = n2.element, n2.element = r2, lr.call(t3, n2.hintPosition, r2, n2.targetElement), o2.appendChild(r2); 32894 } 32895 })), document.body.appendChild(o2), void 0 !== this._hintsAddedCallback && this._hintsAddedCallback.call(this), this._options.hintAutoRefreshInterval >= 0 && (this._hintsAutoRefreshFunction = /* @__PURE__ */ (function(t4, e3) { 32896 var n2, i2 = this; 32897 return function() { 32898 for (var o3 = arguments.length, r2 = new Array(o3), a2 = 0; a2 < o3; a2++) r2[a2] = arguments[a2]; 32899 clearTimeout(n2), n2 = setTimeout((function() { 32900 t4.apply(i2, r2); 32901 }), e3); 32902 }; 32903 })((function() { 32904 return hr.call(t3); 32905 }), this._options.hintAutoRefreshInterval), i.on(window, "scroll", this._hintsAutoRefreshFunction, this, true)); 32906 } 32907 function lr(t3, e2, n2) { 32908 var i2 = e2.style, o2 = Bi.call(this, n2), r2 = 20, a2 = 20; 32909 switch (t3) { 32910 default: 32911 i2.left = "".concat(o2.left, "px"), i2.top = "".concat(o2.top, "px"); 32912 break; 32913 case "top-right": 32914 i2.left = "".concat(o2.left + o2.width - r2, "px"), i2.top = "".concat(o2.top, "px"); 32915 break; 32916 case "bottom-left": 32917 i2.left = "".concat(o2.left, "px"), i2.top = "".concat(o2.top + o2.height - a2, "px"); 32918 break; 32919 case "bottom-right": 32920 i2.left = "".concat(o2.left + o2.width - r2, "px"), i2.top = "".concat(o2.top + o2.height - a2, "px"); 32921 break; 32922 case "middle-left": 32923 i2.left = "".concat(o2.left, "px"), i2.top = "".concat(o2.top + (o2.height - a2) / 2, "px"); 32924 break; 32925 case "middle-right": 32926 i2.left = "".concat(o2.left + o2.width - r2, "px"), i2.top = "".concat(o2.top + (o2.height - a2) / 2, "px"); 32927 break; 32928 case "middle-middle": 32929 i2.left = "".concat(o2.left + (o2.width - r2) / 2, "px"), i2.top = "".concat(o2.top + (o2.height - a2) / 2, "px"); 32930 break; 32931 case "bottom-middle": 32932 i2.left = "".concat(o2.left + (o2.width - r2) / 2, "px"), i2.top = "".concat(o2.top + o2.height - a2, "px"); 32933 break; 32934 case "top-middle": 32935 i2.left = "".concat(o2.left + (o2.width - r2) / 2, "px"), i2.top = "".concat(o2.top, "px"); 32936 } 32937 } 32938 function sr(t3) { 32939 var e2 = document.querySelector('.introjs-hint[data-step="'.concat(t3, '"]')), n2 = this._introItems[t3]; 32940 void 0 !== this._hintClickCallback && this._hintClickCallback.call(this, e2, n2, t3); 32941 var i2 = cr.call(this); 32942 if (parseInt(i2, 10) !== t3) { 32943 var o2 = qo("div", { className: "introjs-tooltip" }), r2 = qo("div"), a2 = qo("div"), l2 = qo("div"); 32944 o2.onclick = function(t4) { 32945 t4.stopPropagation ? t4.stopPropagation() : t4.cancelBubble = true; 32946 }, r2.className = "introjs-tooltiptext"; 32947 var s2 = qo("p"); 32948 if (s2.innerHTML = n2.hint, r2.appendChild(s2), this._options.hintShowButton) { 32949 var c2 = qo("a"); 32950 c2.className = this._options.buttonClass, c2.setAttribute("role", "button"), c2.innerHTML = this._options.hintButtonLabel, c2.onclick = tr.bind(this, t3), r2.appendChild(c2); 32951 } 32952 a2.className = "introjs-arrow", o2.appendChild(a2), o2.appendChild(r2), this._currentStep = e2.getAttribute("data-step"), l2.className = "introjs-tooltipReferenceLayer introjs-hintReference", l2.setAttribute("data-step", e2.getAttribute("data-step")), no.call(this, l2), l2.appendChild(o2), document.body.appendChild(l2), Lo.call(this, e2, o2, a2, true); 32953 } 32954 } 32955 function cr() { 32956 var t3 = document.querySelector(".introjs-hintReference"); 32957 if (t3) { 32958 var e2 = t3.getAttribute("data-step"); 32959 return t3.parentNode.removeChild(t3), e2; 32960 } 32961 } 32962 function ur(t3) { 32963 var e2 = this; 32964 if (this._introItems = [], this._options.hints) n(this._options.hints, (function(t4) { 32965 var n2 = Qo(t4); 32966 "string" == typeof n2.element && (n2.element = document.querySelector(n2.element)), n2.hintPosition = n2.hintPosition || e2._options.hintPosition, n2.hintAnimation = n2.hintAnimation || e2._options.hintAnimation, null !== n2.element && e2._introItems.push(n2); 32967 })); 32968 else { 32969 var o2 = t3.querySelectorAll("*[data-hint]"); 32970 if (!o2 || !o2.length) return false;
32971 n(o2, (function(t4) { 32972 var n2 = t4.getAttribute("data-hintanimation"); 32973 n2 = n2 ? "true" === n2 : e2._options.hintAnimation, e2._introItems.push({ element: t4, hint: t4.getAttribute("data-hint"), hintPosition: t4.getAttribute("data-hintposition") || e2._options.hintPosition, hintAnimation: n2, tooltipClass: t4.getAttribute("data-tooltipclass"), position: t4.getAttribute("data-position") || e2._options.tooltipPosition }); 32974 })); 32975 } 32976 ar.call(this), i.on(document, "click", cr, this, false), i.on(window, "resize", hr, this, true); 32977 } 32978 function hr() { 32979 var t3 = this; 32980 n(this._introItems, (function(e2) { 32981 var n2 = e2.targetElement, i2 = e2.hintPosition, o2 = e2.element; 32982 void 0 !== n2 && lr.call(t3, i2, o2, n2); 32983 })); 32984 } 32985 Pe({ target: "Array", proto: true, forced: !ko }, { splice: function(t3, e2) { 32986 var n2, i2, o2, r2, a2, l2, s2 = rt(this), c2 = fe(s2), u2 = ce(t3, c2), h2 = arguments.length; 32987 if (0 === h2 ? n2 = i2 = 0 : 1 === h2 ? (n2 = 0, i2 = c2 - u2) : (n2 = h2 - 2, i2 = Io(Eo(ae(e2), 0), c2 - u2)), c2 + n2 - i2 > To) throw Ao(No); 32988 for (o2 = zn(s2, i2), r2 = 0; r2 < i2; r2++) (a2 = u2 + r2) in s2 && On(o2, r2, s2[a2]); 32989 if (o2.length = i2, n2 < i2) { 32990 for (r2 = u2; r2 < c2 - i2; r2++) l2 = r2 + n2, (a2 = r2 + i2) in s2 ? s2[l2] = s2[a2] : delete s2[l2]; 32991 for (r2 = c2; r2 > c2 - i2 + n2; r2--) delete s2[r2 - 1]; 32992 } else if (n2 > i2) for (r2 = c2 - i2; r2 > u2; r2--) l2 = r2 + n2 - 1, (a2 = r2 + i2 - 1) in s2 ? s2[l2] = s2[a2] : delete s2[l2]; 32993 for (r2 = 0; r2 < n2; r2++) s2[r2 + u2] = arguments[r2 + 2]; 32994 return s2.length = c2 - i2 + n2, o2; 32995 } }); 32996 var fr = Math.floor, pr = function(t3, e2) { 32997 var n2 = t3.length, i2 = fr(n2 / 2); 32998 return n2 < 8 ? dr(t3, e2) : gr(t3, pr(mi(t3, 0, i2), e2), pr(mi(t3, i2), e2), e2); 32999 }, dr = function(t3, e2) { 33000 for (var n2, i2, o2 = t3.length, r2 = 1; r2 < o2; ) { 33001 for (i2 = r2, n2 = t3[r2]; i2 && e2(t3[i2 - 1], n2) > 0; ) t3[i2] = t3[--i2]; 33002 i2 !== r2++ && (t3[i2] = n2); 33003 } 33004 return t3; 33005 }, gr = function(t3, e2, n2, i2) { 33006 for (var o2 = e2.length, r2 = n2.length, a2 = 0, l2 = 0; a2 < o2 || l2 < r2; ) t3[a2 + l2] = a2 < o2 && l2 < r2 ? i2(e2[a2], n2[l2]) <= 0 ? e2[a2++] : n2[l2++] : a2 < o2 ? e2[a2++] : n2[l2++]; 33007 return t3; 33008 }, vr = pr, mr = B.match(/firefox\/(\d+)/i), br = !!mr && +mr[1], yr = /MSIE|Trident/.test(B), wr = B.match(/AppleWebKit\/(\d+)\./), _r = !!wr && +wr[1], xr = [], Sr = x(xr.sort), jr = x(xr.push), Cr = u((function() { 33009 xr.sort(void 0); 33010 })), kr = u((function() { 33011 xr.sort(null); 33012 })), Ar = vo("sort"), Er = !u((function() { 33013 if (D) return D < 70; 33014 if (!(br && br > 3)) { 33015 if (yr) return true; 33016 if (_r) return _r < 603; 33017 var t3, e2, n2, i2, o2 = ""; 33018 for (t3 = 65; t3 < 76; t3++) { 33019 switch (e2 = String.fromCharCode(t3), t3) { 33020 case 66: 33021 case 69: 33022 case 70: 33023 case 72: 33024 n2 = 3; 33025 break; 33026 case 68: 33027 case 71: 33028 n2 = 4; 33029 break; 33030 default: 33031 n2 = 2; 33032 } 33033 for (i2 = 0; i2 < 47; i2++) xr.push({ k: e2 + i2, v: n2 }); 33034 } 33035 for (xr.sort((function(t4, e3) { 33036 return e3.v - t4.v; 33037 })), i2 = 0; i2 < xr.length; i2++) e2 = xr[i2].k.charAt(0), o2.charAt(o2.length - 1) !== e2 && (o2 += e2); 33038 return "DGBEFHACIJK" !== o2; 33039 } 33040 })); 33041 function Ir(t3) { 33042 var e2 = this, i2 = t3.querySelectorAll("*[data-intro]"), o2 = []; 33043 if (this._options.steps) n(this._options.steps, (function(t4) { 33044 var n2 = Qo(t4); 33045 if (n2.step = o2.length + 1, n2.title = n2.title || "", "string" == typeof n2.element && (n2.element = document.querySelector(n2.element)), void 0 === n2.element || null === n2.element) { 33046 var i3 = document.querySelector(".introjsFloatingElement"); 33047 null === i3 && (i3 = qo("div", { className: "introjsFloatingElement" }), document.body.appendChild(i3)), n2.element = i3, n2.position = "floating"; 33048 } 33049 n2.position = n2.position || e2._options.tooltipPosition, n2.
33049scrollTo = n2.scrollTo || e2._options.scrollTo, void 0 === n2.disableInteraction && (n2.disableInteraction = e2._options.disableInteraction), null !== n2.element && o2.push(n2); 33050 })); 33051 else { 33052 var r2; 33053 if (i2.length < 1) return []; 33054 n(i2, (function(t4) { 33055 if ((!e2._options.group || t4.getAttribute("data-intro-group") === e2._options.group) && "none" !== t4.style.display) { 33056 var n2 = parseInt(t4.getAttribute("data-step"), 10); 33057 r2 = t4.hasAttribute("data-disable-interaction") ? !!t4.getAttribute("data-disable-interaction") : e2._options.disableInteraction, n2 > 0 && (o2[n2 - 1] = { element: t4, title: t4.getAttribute("data-title") || "", intro: t4.getAttribute("data-intro"), step: parseInt(t4.getAttribute("data-step"), 10), tooltipClass: t4.getAttribute("data-tooltipclass"), highlightClass: t4.getAttribute("data-highlightclass"), position: t4.getAttribute("data-position") || e2._options.tooltipPosition, scrollTo: t4.getAttribute("data-scrollto") || e2._options.scrollTo, disableInteraction: r2 }); 33058 } 33059 })); 33060 var a2 = 0; 33061 n(i2, (function(t4) { 33062 if ((!e2._options.group || t4.getAttribute("data-intro-group") === e2._options.group) && null === t4.getAttribute("data-step")) { 33063 for (; void 0 !== o2[a2]; ) a2++; 33064 r2 = t4.hasAttribute("data-disable-interaction") ? !!t4.getAttribute("data-disable-interaction") : e2._options.disableInteraction, o2[a2] = { element: t4, title: t4.getAttribute("data-title") || "", intro: t4.getAttribute("data-intro"), step: a2 + 1, tooltipClass: t4.getAttribute("data-tooltipclass"), highlightClass: t4.getAttribute("data-highlightclass"), position: t4.getAttribute("data-position") || e2._options.tooltipPosition, scrollTo: t4.getAttribute("data-scrollto") || e2._options.scrollTo, disableInteraction: r2 }; 33065 } 33066 })); 33067 } 33068 for (var l2 = [], s2 = 0; s2 < o2.length; s2++) o2[s2] && l2.push(o2[s2]); 33069 return (o2 = l2).sort((function(t4, e3) { 33070 return t4.step - e3.step; 33071 })), o2; 33072 } 33073 function Tr(t3) { 33074 var e2 = document.querySelector(".introjs-tooltipReferenceLayer"), n2 = document.querySelector(".introjs-helperLayer"), i2 = document.querySelector(".introjs-disableInteraction"); 33075 if (no.call(this, n2), no.call(this, e2), no.call(this, i2), t3 && (this._introItems = Ir.call(this, this._targetElement), $o.call(this, e2, this._introItems[this._currentStep]), Go.call(this, e2)), void 0 !== this._currentStep && null !== this._currentStep) { 33076 var o2 = document.querySelector(".introjs-arrow"), r2 = document.querySelector(".introjs-tooltip"); 33077 r2 && o2 && Lo.call(this, this._introItems[this._currentStep].element, r2, o2); 33078 } 33079 return hr.call(this), this; 33080 } 33081 function Nr() { 33082 Tr.call(this); 33083 } 33084 function Or(t3, e2) { 33085 if (t3 && t3.parentElement) { 33086 var n2 = t3.parentElement; 33087 e2 ? (eo(t3, { opacity: "0" }), window.setTimeout((function() { 33088 try { 33089 n2.removeChild(t3); 33090 } catch (t4) { 33091 } 33092 }), 500)) : n2.removeChild(t3); 33093 } 33094 } 33095 function Pr(t3, e2) { 33096 var o2 = true; 33097 if (void 0 !== this._introBeforeExitCallback && (o2 = this._introBeforeExitCallback.call(this)), e2 || false !== o2) { 33098 var r2 = t3.querySelectorAll(".introjs-overlay"); 33099 r2 && r2.length && n(r2, (function(t4) { 33100 return Or(t4); 33101 })), Or(t3.querySelector(".introjs-helperLayer"), true), Or(t3.querySelector(".introjs-tooltipReferenceLayer")), Or(t3.querySelector(".introjs-disableInteraction")), Or(document.querySelector(".introjsFloatingElement")), Ro(), i.off(window, "keydown", Jo, this, true), i.off(window, "resize", Nr, this, true), void 0 !== this._introExitCallback && this._introExitCallback.call(this), this._currentStep = void 0; 33102 } 33103 } 33104 function Lr(t3) { 33105 var e2 = this, n2 = qo("div", { className: "introjs-overlay" }); 33106 return eo(n2, { top: 0, bottom: 0, left: 0, right: 0, position: "fixed" }), t3.appendChild(n2), true === this._options.exitOnOverlayClick && (eo(n2, { cursor: "pointer" }), n2.onclick = function() { 33107 Pr.call(e2, t3); 33108 }), true; 33109 } 33110 function Rr(t3) { 33111 void 0 !== this._introStartCallback && this._introStartCallback.call(this, t3); 33112 var e2 = Ir.call(this, t3); 33113 return 0 === e2.length || (this._introItems = e2, Lr.call(this, t3) && (Yo.call(this), this._options.keyboardNavigation && i.on(window, "keydown", Jo, this, true), i.on(window, "resize", Nr, this, true))), false; 33114 } 33115 Pe({ target: "Array", proto: true, forced: Cr || !kr || !Ar || !Er }, { sort: function(t3) { 33116 void 0 !== t3 && X(t3); 33117 var e2 = rt(this); 33118 if (Er) return void 0 === t3 ? Sr(e2) : Sr(e2, t3); 33119 var n2, i2, o2 = [], r2 = fe(e2); 33120 for (i2 = 0; i2 < r2; i2++) i2 in e2 && jr(o2, e2[i2]);
33121 for (vr(o2, /* @__PURE__ */ (function(t4) { 33122 return function(e3, n3) { 33123 return void 0 === n3 ? -1 : void 0 === e3 ? 1 : void 0 !== t4 ? +t4(e3, n3) || 0 : De(e3) > De(n3) ? 1 : -1; 33124 }; 33125 })(t3)), n2 = o2.length, i2 = 0; i2 < n2; ) e2[i2] = o2[i2++]; 33126 for (; i2 < r2; ) delete e2[i2++]; 33127 return e2; 33128 } }); 33129 function qr(t3) { 33130 this._targetElement = t3, this._introItems = [], this._options = { nextLabel: "Next", prevLabel: "Back", skipLabel: "\xD7", doneLabel: "Done", hidePrev: false, hideNext: false, nextToDone: true, tooltipPosition: "bottom", tooltipClass: "", group: "", highlightClass: "", exitOnEsc: true, exitOnOverlayClick: true, showStepNumbers: false, keyboardNavigation: true, showButtons: true, showBullets: true, showProgress: false, scrollToElement: true, scrollTo: "element", scrollPadding: 30, overlayOpacity: 0.5, autoPosition: true, positionPrecedence: ["bottom", "top", "right", "left"], disableInteraction: false, helperElementPadding: 10, hintPosition: "top-middle", hintButtonLabel: "Got it", hintShowButton: true, hintAutoRefreshInterval: 10, hintAnimation: true, buttonClass: "introjs-button", progressBarAdditionalClass: false }; 33131 } 33132 var Br = function n2(i2) { 33133 var o2; 33134 if ("object" === t2(i2)) o2 = new qr(i2); 33135 else if ("string" == typeof i2) { 33136 var r2 = document.querySelector(i2); 33137 if (!r2) throw new Error("There is no element with given selector."); 33138 o2 = new qr(r2); 33139 } else o2 = new qr(document.body); 33140 return n2.instances[e(o2, "introjs-instance")] = o2, o2; 33141 }; 33142 return Br.version = "4.3.0", Br.instances = {}, Br.fn = qr.prototype = { clone: function() { 33143 return new qr(this); 33144 }, setOption: function(t3, e2) { 33145 return this._options[t3] = e2, this; 33146 }, setOptions: function(t3) { 33147 return this._options = (function(t4, e2) { 33148 var n2, i2 = {}; 33149 for (n2 in t4) i2[n2] = t4[n2]; 33150 for (n2 in e2) i2[n2] = e2[n2]; 33151 return i2; 33152 })(this._options, t3), this; 33153 }, start: function() { 33154 return Rr.call(this, this._targetElement), this; 33155 }, goToStep: function(t3) { 33156 return Wo.call(this, t3), this; 33157 }, addStep: function(t3) { 33158 return this._options.steps || (this._options.steps = []), this._options.steps.push(t3), this; 33159 }, addSteps: function(t3) { 33160 if (t3.length) { 33161 for (var e2 = 0; e2 < t3.length; e2++) this.addStep(t3[e2]); 33162 return this; 33163 } 33164 }, goToStepNumber: function(t3) { 33165 return Vo.call(this, t3), this; 33166 }, nextStep: function() { 33167 return Yo.call(this), this; 33168 }, previousStep: function() { 33169 return Ko.call(this), this; 33170 }, currentStep: function() { 33171 return Xo.call(this); 33172 }, exit: function(t3) { 33173 return Pr.call(this, this._targetElement, t3), this; 33174 }, refresh: function(t3) { 33175 return Tr.call(this, t3), this; 33176 }, onbeforechange: function(t3) { 33177 if ("function" != typeof t3) throw new Error("Provided callback for onbeforechange was not a function"); 33178 return this._introBeforeChangeCallback = t3, this; 33179 }, onchange: function(t3) { 33180 if ("function" != typeof t3) throw new Error("Provided callback for onchange was not a function."); 33181 return this._introChangeCallback = t3, this; 33182 }, onafterchange: function(t3) { 33183 if ("function" != typeof t3) throw new Error("Provided callback for onafterchange was not a function"); 33184 return this._introAfterChangeCallback = t3, this; 33185 }, oncomplete: function(t3) { 33186 if ("function" != typeof t3) throw new Error("Provided callback for oncomplete was not a function."); 33187 return this._introCompleteCallback = t3, this; 33188 }, onhintsadded: function(t3) { 33189 if ("function" != typeof t3) throw new Error("Provided callback for onhintsadded was not a function."); 33190 return this._hintsAddedCallback = t3, this; 33191 }, onhintclick: function(t3) { 33192 if ("function" != typeof t3) throw new Error("Provided callback for onhintclick was not a function."); 33193 return this._hintClickCallback = t3, this; 33194 }, onhintclose: function(t3) { 33195 if ("function" != typeof t3) throw new Error("Provided callback for onhintclose was not a function."); 33196 return this._hintCloseCallback = t3, this; 33197 }, onstart: function(t3) { 33198 if ("function" != typeof t3) throw new Error("Provided callback for onstart was not a function."); 33199 return this._introStartCallback = t3, this; 33200 }, onexit: function(t3) { 33201 if ("function" != typeof t3) throw new Error("Provided callback for onexit was not a function."); 33202 return this._introExitCallback = t3, this; 33203 }, onskip: function(t3) { 33204 if ("function" != typeof t3) throw new Error("Provided callback for onskip was not a function."); 33205 return this._introSkipCallback = t3, this; 33206 }, onbeforeexit: function(t3) { 33207 if ("function" != typeof t3) throw new Error("Provided callback for onbeforeexit was not a function."); 33208 return this._introBeforeExitCallback = t3, this; 33209 }, addHints: function() { 33210 return ur.call(this, this._targetElement), this; 33211 }, hideHint: function(t3) { 33212 return tr.call(this, t3), this; 33213 }, hideHints: function() { 33214 return er.call(this), this; 33215 }, showHint: function(t3) { 33216 return ir.call(this, t3), this; 33217 }, showHints: function() { 33218 return nr.call(this), this; 33219 }, removeHints: function() { 33220 return or.call(this), this; 33221 }, removeHint: function(t3) { 33222 return rr().call(this, t3), this; 33223 }, showHintDialog: function(t3) { 33224 return sr.call(this, t3), this; 33225 } }, Br; 33226 })); 33227 } 33228 }); 33229 33230
33230// apps/base/assets/javascripts/vendor/underscore.js 33231 var require_underscore = __commonJS({ 33232 "apps/base/assets/javascripts/vendor/underscore.js"(exports, module) { 33233 "use strict"; 33234 init_esbuild_shims(); 33235 (function() { 33236 var root = this; 33237 var previousUnderscore = root._; 33238 var breaker = {}; 33239 var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype; 33240 var push = ArrayProto.push, slice = ArrayProto.slice, concat = ArrayProto.concat, toString = ObjProto.toString, hasOwnProperty = ObjProto.hasOwnProperty; 33241 var nativeForEach = ArrayProto.forEach, nativeMap = ArrayProto.map, nativeReduce = ArrayProto.reduce, nativeReduceRight = ArrayProto.reduceRight, nativeFilter = ArrayProto.filter, nativeEvery = ArrayProto.every, nativeSome = ArrayProto.some, nativeIndexOf = ArrayProto.indexOf, nativeLastIndexOf = ArrayProto.lastIndexOf, nativeIsArray = Array.isArray, nativeKeys = Object.keys, nativeBind = FuncProto.bind; 33242 var _ = function(obj) { 33243 if (obj instanceof _) return obj; 33244 if (!(this instanceof _)) return new _(obj); 33245 this._wrapped = obj; 33246 }; 33247 if (typeof exports !== "undefined") { 33248 if (typeof module !== "undefined" && module.exports) { 33249 exports = module.exports = _; 33250 } 33251 exports._ = _; 33252 } else { 33253 root._ = _; 33254 } 33255 _.VERSION = "1.6.0"; 33256 var each = _.each = _.forEach = function(obj, iterator, context) { 33257 if (obj == null) return obj; 33258 if (nativeForEach && obj.forEach === nativeForEach) { 33259 obj.forEach(iterator, context); 33260 } else if (obj.length === +obj.length) { 33261 for (var i = 0, length = obj.length; i < length; i++) { 33262 if (iterator.call(context, obj[i], i, obj) === breaker) return; 33263 } 33264 } else { 33265 var keys = _.keys(obj); 33266 for (var i = 0, length = keys.length; i < length; i++) { 33267 if (iterator.call(context, obj[keys[i]], keys[i], obj) === breaker) return; 33268 } 33269 } 33270 return obj; 33271 }; 33272 _.map = _.collect = function(obj, iterator, context) { 33273 var results = []; 33274 if (obj == null) return results; 33275 if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context); 33276 each(obj, function(value, index, list) { 33277 results.push(iterator.call(context, value, index, list)); 33278 }); 33279 return results; 33280 }; 33281 var reduceError = "Reduce of empty array with no initial value"; 33282 _.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) { 33283 var initial = arguments.length > 2; 33284 if (obj == null) obj = []; 33285 if (nativeReduce && obj.reduce === nativeReduce) { 33286 if (context) iterator = _.bind(iterator, context); 33287 return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator); 33288 } 33289 each(obj, function(value, index, list) { 33290 if (!initial) { 33291 memo = value; 33292 initial = true; 33293 } else { 33294 memo = iterator.call(context, memo, value, index, list); 33295 } 33296 }); 33297 if (!initial) throw new TypeError(reduceError); 33298 return memo; 33299 }; 33300 _.reduceRight = _.foldr = function(obj, iterator, memo, context) { 33301 var initial = arguments.length > 2; 33302 if (obj == null) obj = []; 33303 if (nativeReduceRight && obj.reduceRight === nativeReduceRight) { 33304 if (context) iterator = _.bind(iterator, context); 33305 return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator); 33306 } 33307 var length = obj.length; 33308 if (length !== +length) { 33309 var keys = _.keys(obj); 33310 length = keys.length; 33311 } 33312 each(obj, function(value, index, list) { 33313 index = keys ? keys[--length] : --length; 33314 if (!initial) { 33315 memo = obj[index]; 33316 initial = true; 33317 } else { 33318 memo = iterator.call(context, memo, obj[index], index, list); 33319 } 33320 }); 33321 if (!initial) throw new TypeError(reduceError); 33322 return memo; 33323 }; 33324 _.find = _.detect = function(obj, predicate, context) { 33325 var result2; 33326 any(obj, function(value, index, list) { 33327 if (predicate.call(context, value, index, list)) { 33328 result2 = value; 33329 return true; 33330 } 33331 }); 33332 return result2; 33333 }; 33334 _.filter = _.select = function(obj, predicate, context) { 33335 var results = []; 33336 if (obj == null) return results; 33337 if (nativeFilter && obj.filter === nativeFilter) return obj.filter(predicate, context); 33338 each(obj, function(value, index, list) { 33339 if (predicate.call(context, value, index, list)) results.push(value); 33340 }); 33341 return results; 33342 }; 33343 _.reject = function(obj, predicate, context) { 33344 return _.filter(obj, _.negate(predicate), context); 33345 }; 33346 _.every = _.all = function(obj, predicate, context) { 33347 predicate || (predicate = _.identity); 33348 var result2 = true; 33349 if (obj == null) return result2; 33350 if (nativeEvery && obj.every === nativeEvery) return obj.every(predicate, context); 33351 each(obj, function(value, index, list) { 33352 if (!(result2 = result2 && predicate.call(context, value, index, list))) return breaker; 33353 }); 33354 return !!result2; 33355 }; 33356 var any = _.some = _.any = function(obj, predicate, context) { 33357 predicate || (predicate = _.identity); 33358 var result2 = false;
33359 if (obj == null) return result2; 33360 if (nativeSome && obj.some === nativeSome) return obj.some(predicate, context); 33361 each(obj, function(value, index, list) { 33362 if (result2 || (result2 = predicate.call(context, value, index, list))) return breaker; 33363 }); 33364 return !!result2; 33365 }; 33366 _.contains = _.include = function(obj, target) { 33367 if (obj == null) return false; 33368 if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1; 33369 return any(obj, function(value) { 33370 return value === target; 33371 }); 33372 }; 33373 _.invoke = function(obj, method) { 33374 var args = slice.call(arguments, 2); 33375 var isFunc = _.isFunction(method); 33376 return _.map(obj, function(value) { 33377 return (isFunc ? method : value[method]).apply(value, args); 33378 }); 33379 }; 33380 _.pluck = function(obj, key) { 33381 return _.map(obj, _.property(key)); 33382 }; 33383 _.where = function(obj, attrs) { 33384 return _.filter(obj, _.matches(attrs)); 33385 }; 33386 _.findWhere = function(obj, attrs) { 33387 return _.find(obj, _.matches(attrs)); 33388 }; 33389 _.max = function(obj, iterator, context) { 33390 var result2 = -Infinity, lastComputed = -Infinity, value, computed; 33391 if (!iterator && _.isArray(obj)) { 33392 for (var i = 0, length = obj.length; i < length; i++) { 33393 value = obj[i]; 33394 if (value > result2) { 33395 result2 = value; 33396 } 33397 } 33398 } else { 33399 each(obj, function(value2, index, list) { 33400 computed = iterator ? iterator.call(context, value2, index, list) : value2; 33401 if (computed > lastComputed) { 33402 result2 = value2; 33403 lastComputed = computed; 33404 } 33405 }); 33406 } 33407 return result2; 33408 }; 33409 _.min = function(obj, iterator, context) { 33410 var result2 = Infinity, lastComputed = Infinity, value, computed; 33411 if (!iterator && _.isArray(obj)) { 33412 for (var i = 0, length = obj.length; i < length; i++) { 33413 value = obj[i]; 33414 if (value < result2) { 33415 result2 = value; 33416 } 33417 } 33418 } else { 33419 each(obj, function(value2, index, list) { 33420 computed = iterator ? iterator.call(context, value2, index, list) : value2; 33421 if (computed < lastComputed) { 33422 result2 = value2; 33423 lastComputed = computed; 33424 } 33425 }); 33426 } 33427 return result2; 33428 }; 33429 _.shuffle = function(obj) { 33430 var rand; 33431 var index = 0; 33432 var shuffled = []; 33433 each(obj, function(value) { 33434 rand = _.random(index++); 33435 shuffled[index - 1] = shuffled[rand]; 33436 shuffled[rand] = value; 33437 }); 33438 return shuffled; 33439 }; 33440 _.sample = function(obj, n, guard) { 33441 if (n == null || guard) { 33442 if (obj.length !== +obj.length) obj = _.values(obj); 33443 return obj[_.random(obj.length - 1)]; 33444 } 33445 return _.shuffle(obj).slice(0, Math.max(0, n)); 33446 }; 33447 var lookupIterator = function(value) { 33448 if (value == null) return _.identity; 33449 if (_.isFunction(value)) return value; 33450 return _.property(value); 33451 }; 33452 _.sortBy = function(obj, iterator, context) { 33453 iterator = lookupIterator(iterator); 33454 return _.pluck(_.map(obj, function(value, index, list) { 33455 return { 33456 value, 33457 index, 33458 criteria: iterator.call(context, value, index, list) 33459 }; 33460 }).sort(function(left, right) { 33461 var a = left.criteria; 33462 var b = right.criteria; 33463 if (a !== b) { 33464 if (a > b || a === void 0) return 1; 33465 if (a < b || b === void 0) return -1; 33466 } 33467 return left.index - right.index; 33468 }), "value"); 33469 }; 33470 var group = function(behavior) { 33471 return function(obj, iterator, context) { 33472 var result2 = {}; 33473 iterator = lookupIterator(iterator); 33474 each(obj, function(value, index) { 33475 var key = iterator.call(context, value, index, obj); 33476 behavior(result2, key, value); 33477 }); 33478 return result2; 33479 }; 33480 }; 33481 _.groupBy = group(function(result2, key, value) { 33482 _.has(result2, key) ? result2[key].push(value) : result2[key] = [value]; 33483 }); 33484 _.indexBy = group(function(result2, key, value) { 33485 result2[key] = value; 33486 }); 33487 _.countBy = group(function(result2, key) { 33488 _.has(result2, key) ? result2[key]++ : result2[key] = 1; 33489 }); 33490 _.sortedIndex = function(array, obj, iterator, context) { 33491 iterator = lookupIterator(iterator); 33492 var value = iterator.call(context, obj); 33493 var low = 0, high = array.length; 33494 while (low < high) { 33495 var mid = low + high >>> 1; 33496 iterator.call(context, array[mid]) < value ? low = mid + 1 : high = mid; 33497 } 33498 return low; 33499 }; 33500 _.toArray = function(obj) { 33501 if (!obj) return []; 33502 if (_.isArray(obj)) return slice.call(obj); 33503 if (obj.length === +obj.length) return _.map(obj, _.identity); 33504 return _.values(obj); 33505 }; 33506 _.size = function(obj) { 33507 if (obj == null) return 0; 33508 return obj.length === +obj.length ? obj.length : _.keys(obj).length; 33509 }; 33510 _.first = _.head = _.take = function(array, n, guard) { 33511 if (array == null) return void 0; 33512 if (n == null || guard) return array[0]; 33513 if (n < 0) return []; 33514 return slice.call(array, 0, n); 33515 }; 33516 _.initial = function(array, n, guard) { 33517 return slice.call(array, 0, array.length - (n == null || guard ? 1 : n)); 33518 }; 33519 _.last = function(array, n, guard) { 33520 if (array == null) return void 0; 33521 if (n == null || guard) return array[array.length - 1]; 33522 return slice.call(array, Math.max(array.length - n, 0)); 33523 }; 33524 _.rest = _.tail = _.drop = function(array, n, guard) { 33525 return slice.call(array, n == null || guard ? 1 : n); 33526 }; 33527 _.compact = function(array) { 33528 return _.filter(array, _.identity); 33529 }; 33530 var flatten = function(input, shallow, strict, output) { 33531 if (shallow && _.every(input, _.isArray)) { 33532 return concat.apply(output, input); 33533 } 33534 for (var i = 0, length = input.length; i < length; i++) {
33535 var value = input[i]; 33536 if (!_.isArray(value) && !_.isArguments(value)) { 33537 if (!strict) output.push(value); 33538 } else if (shallow) { 33539 push.apply(output, value); 33540 } else { 33541 flatten(value, shallow, strict, output); 33542 } 33543 } 33544 return output; 33545 }; 33546 _.flatten = function(array, shallow) { 33547 return flatten(array, shallow, false, []); 33548 }; 33549 _.without = function(array) { 33550 return _.difference(array, slice.call(arguments, 1)); 33551 }; 33552 _.partition = function(obj, predicate, context) { 33553 predicate = lookupIterator(predicate); 33554 var pass = [], fail = []; 33555 each(obj, function(elem) { 33556 (predicate.call(context, elem) ? pass : fail).push(elem); 33557 }); 33558 return [pass, fail]; 33559 }; 33560 _.uniq = _.unique = function(array, isSorted, iterator, context) { 33561 if (array == null) return []; 33562 if (_.isFunction(isSorted)) { 33563 context = iterator; 33564 iterator = isSorted; 33565 isSorted = false; 33566 } 33567 var result2 = []; 33568 var seen = []; 33569 for (var i = 0, length = array.length; i < length; i++) { 33570 var value = array[i]; 33571 if (iterator) value = iterator.call(context, value, i, array); 33572 if (isSorted ? !i || seen !== value : !_.contains(seen, value)) { 33573 if (isSorted) seen = value; 33574 else seen.push(value); 33575 result2.push(array[i]); 33576 } 33577 } 33578 return result2; 33579 }; 33580 _.union = function() { 33581 return _.uniq(flatten(arguments, true, true, [])); 33582 }; 33583 _.intersection = function(array) { 33584 var rest = slice.call(arguments, 1); 33585 return _.filter(_.uniq(array), function(item) { 33586 return _.every(rest, function(other) { 33587 return _.contains(other, item); 33588 }); 33589 }); 33590 }; 33591 _.difference = function(array) { 33592 var rest = flatten(slice.call(arguments, 1), true, true, []); 33593 return _.filter(array, function(value) { 33594 return !_.contains(rest, value); 33595 }); 33596 }; 33597 _.zip = function() { 33598 var length = _.max(_.pluck(arguments, "length").concat(0)); 33599 var results = new Array(length); 33600 for (var i = 0; i < length; i++) { 33601 results[i] = _.pluck(arguments, "" + i); 33602 } 33603 return results; 33604 }; 33605 _.object = function(list, values) { 33606 if (list == null) return {}; 33607 var result2 = {}; 33608 for (var i = 0, length = list.length; i < length; i++) { 33609 if (values) { 33610 result2[list[i]] = values[i]; 33611 } else { 33612 result2[list[i][0]] = list[i][1]; 33613 } 33614 } 33615 return result2; 33616 }; 33617 _.indexOf = function(array, item, isSorted) { 33618 if (array == null) return -1; 33619 var i = 0, length = array.length; 33620 if (isSorted) { 33621 if (typeof isSorted == "number") { 33622 i = isSorted < 0 ? Math.max(0, length + isSorted) : isSorted; 33623 } else { 33624 i = _.sortedIndex(array, item); 33625 return array[i] === item ? i : -1; 33626 } 33627 } 33628 if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item, isSorted); 33629 for (; i < length; i++) if (array[i] === item) return i; 33630 return -1; 33631 }; 33632 _.lastIndexOf = function(array, item, from) { 33633 if (array == null) return -1; 33634 var hasIndex = from != null; 33635 if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) { 33636 return hasIndex ? array.lastIndexOf(item, from) : array.lastIndexOf(item); 33637 } 33638 var i = hasIndex ? from : array.length; 33639 while (i--) if (array[i] === item) return i; 33640 return -1; 33641 }; 33642 _.range = function(start, stop, step) { 33643 if (arguments.length <= 1) { 33644 stop = start || 0; 33645 start = 0; 33646 } 33647 step = arguments[2] || 1; 33648 var length = Math.max(Math.ceil((stop - start) / step), 0); 33649 var idx = 0; 33650 var range = new Array(length); 33651 while (idx < length) { 33652 range[idx++] = start; 33653 start += step; 33654 } 33655 return range; 33656 }; 33657 var ctor = function() { 33658 }; 33659 _.bind = function(func, context) { 33660 var args, bound; 33661 if (nativeBind && func.bind === nativeBind) return nativeBind.apply(func, slice.call(arguments, 1)); 33662 if (!_.isFunction(func)) throw new TypeError(); 33663 args = slice.call(arguments, 2); 33664 return bound = function() { 33665 if (!(this instanceof bound)) return func.apply(context, args.concat(slice.call(arguments))); 33666 ctor.prototype = func.prototype; 33667 var self2 = new ctor(); 33668 ctor.prototype = null; 33669 var result2 = func.apply(self2, args.concat(slice.call(arguments))); 33670 if (Object(result2) === result2) return result2; 33671 return self2; 33672 }; 33673 }; 33674 _.partial = function(func) { 33675 var boundArgs = slice.call(arguments, 1); 33676 return function() { 33677 var position = 0; 33678 var args = boundArgs.slice(); 33679 for (var i = 0, length = args.length; i < length; i++) { 33680 if (args[i] === _) args[i] = arguments[position++]; 33681 } 33682 while (position < arguments.length) args.push(arguments[position++]); 33683 return func.apply(this, args); 33684 }; 33685 }; 33686 _.bindAll = function(obj) { 33687 var funcs = slice.call(arguments, 1); 33688 if (funcs.length === 0) throw new Error("bindAll must be passed function names"); 33689 each(funcs, function(f) { 33690 obj[f] = _.bind(obj[f], obj); 33691 }); 33692 return obj; 33693 }; 33694 _.memoize = function(func, hasher) { 33695 var memo = {}; 33696 hasher || (hasher = _.identity); 33697 return function() { 33698 var key = hasher.apply(this, arguments); 33699 return _.has(memo, key) ? memo[key] : memo[key] = func.apply(this, arguments); 33700 }; 33701 }; 33702 _.delay = function(func, wait) { 33703 var args = slice.call(arguments, 2); 33704 return setTimeout(function() {
33705 return func.apply(null, args); 33706 }, wait); 33707 }; 33708 _.defer = function(func) { 33709 return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1))); 33710 }; 33711 _.throttle = function(func, wait, options) { 33712 var context, args, result2; 33713 var timeout = null; 33714 var previous = 0; 33715 options || (options = {}); 33716 var later = function() { 33717 previous = options.leading === false ? 0 : _.now(); 33718 timeout = null; 33719 result2 = func.apply(context, args); 33720 context = args = null; 33721 }; 33722 return function() { 33723 var now = _.now(); 33724 if (!previous && options.leading === false) previous = now; 33725 var remaining = wait - (now - previous); 33726 context = this; 33727 args = arguments; 33728 if (remaining <= 0 || remaining > wait) { 33729 clearTimeout(timeout); 33730 timeout = null; 33731 previous = now; 33732 result2 = func.apply(context, args); 33733 context = args = null; 33734 } else if (!timeout && options.trailing !== false) { 33735 timeout = setTimeout(later, remaining); 33736 } 33737 return result2; 33738 }; 33739 }; 33740 _.debounce = function(func, wait, immediate) { 33741 var timeout, args, context, timestamp, result2; 33742 var later = function() { 33743 var last = _.now() - timestamp; 33744 if (last < wait && last > 0) { 33745 timeout = setTimeout(later, wait - last); 33746 } else { 33747 timeout = null; 33748 if (!immediate) { 33749 result2 = func.apply(context, args); 33750 context = args = null; 33751 } 33752 } 33753 }; 33754 return function() { 33755 context = this; 33756 args = arguments; 33757 timestamp = _.now(); 33758 var callNow = immediate && !timeout; 33759 if (!timeout) { 33760 timeout = setTimeout(later, wait); 33761 } 33762 if (callNow) { 33763 result2 = func.apply(context, args); 33764 context = args = null; 33765 } 33766 return result2; 33767 }; 33768 }; 33769 _.once = function(func) { 33770 var ran = false, memo; 33771 return function() { 33772 if (ran) return memo; 33773 ran = true; 33774 memo = func.apply(this, arguments); 33775 func = null; 33776 return memo; 33777 }; 33778 }; 33779 _.wrap = function(func, wrapper) { 33780 return _.partial(wrapper, func); 33781 }; 33782 _.negate = function(predicate) { 33783 return function() { 33784 return !predicate.apply(this, arguments); 33785 }; 33786 }; 33787 _.compose = function() { 33788 var funcs = arguments; 33789 return function() { 33790 var args = arguments; 33791 for (var i = funcs.length - 1; i >= 0; i--) { 33792 args = [funcs[i].apply(this, args)]; 33793 } 33794 return args[0]; 33795 }; 33796 }; 33797 _.after = function(times, func) { 33798 return function() { 33799 if (--times < 1) { 33800 return func.apply(this, arguments); 33801 } 33802 }; 33803 }; 33804 _.keys = function(obj) { 33805 if (!_.isObject(obj)) return []; 33806 if (nativeKeys) return nativeKeys(obj); 33807 var keys = []; 33808 for (var key in obj) if (_.has(obj, key)) keys.push(key); 33809 return keys; 33810 }; 33811 _.values = function(obj) { 33812 var keys = _.keys(obj); 33813 var length = keys.length; 33814 var values = new Array(length); 33815 for (var i = 0; i < length; i++) { 33816 values[i] = obj[keys[i]]; 33817 } 33818 return values; 33819 }; 33820 _.pairs = function(obj) { 33821 var keys = _.keys(obj); 33822 var length = keys.length; 33823 var pairs = new Array(length); 33824 for (var i = 0; i < length; i++) { 33825 pairs[i] = [keys[i], obj[keys[i]]]; 33826 } 33827 return pairs; 33828 }; 33829 _.invert = function(obj) { 33830 var result2 = {}; 33831 var keys = _.keys(obj); 33832 for (var i = 0, length = keys.length; i < length; i++) { 33833 result2[obj[keys[i]]] = keys[i]; 33834 } 33835 return result2; 33836 }; 33837 _.functions = _.methods = function(obj) { 33838 var names = []; 33839 for (var key in obj) { 33840 if (_.isFunction(obj[key])) names.push(key); 33841 } 33842 return names.sort(); 33843 }; 33844 _.extend = function(obj) { 33845 each(slice.call(arguments, 1), function(source) { 33846 if (source) { 33847 for (var prop in source) { 33848 obj[prop] = source[prop]; 33849 } 33850 } 33851 }); 33852 return obj; 33853 }; 33854 _.pick = function(obj, iterator, context) { 33855 var result2 = {}; 33856 if (_.isFunction(iterator)) { 33857 for (var key in obj) { 33858 var value = obj[key]; 33859 if (iterator.call(context, value, key, obj)) result2[key] = value; 33860 } 33861 } else { 33862 var keys = concat.apply(ArrayProto, slice.call(arguments, 1)); 33863 for (var i = 0, length = keys.length; i < length; i++) { 33864 var key = keys[i]; 33865 if (key in obj) result2[key] = obj[key]; 33866 } 33867 } 33868 return result2; 33869 }; 33870 _.omit = function(obj, iterator, context) { 33871 var keys; 33872 if (_.isFunction(iterator)) { 33873 iterator = _.negate(iterator); 33874 } else { 33875 keys = concat.apply(ArrayProto, slice.call(arguments, 1)); 33876 iterator = function(value, key) { 33877 return !_.contains(keys, key); 33878 }; 33879 } 33880 return _.pick(obj, iterator, context); 33881 }; 33882 _.defaults = function(obj) { 33883 each(slice.call(arguments, 1), function(source) { 33884 if (source) { 33885 for (var prop in source) { 33886 if (obj[prop] === void 0) obj[prop] = source[prop]; 33887 } 33888 } 33889 }); 33890 return obj; 33891 }; 33892 _.clone = function(obj) { 33893 if (!_.isObject(obj)) return obj; 33894 return _.isArray(obj) ? obj.slice() : _.extend({}, obj); 33895 }; 33896 _.tap = function(obj, interceptor) { 33897 interceptor(obj); 33898 return obj; 33899 }; 33900 var eq = function(a, b, aStack, bStack) { 33901 if (a === b) return a !== 0 || 1 / a == 1 / b; 33902 if (a == null || b == null) return a === b; 33903 if (a instanceof _) a = a._wrapped; 33904 if (b instanceof _) b = b._wrapped; 33905 var className = toString.call(a); 33906 if (className != toString.call(b)) return false;
33907 switch (className) { 33908 // Strings, numbers, dates, and booleans are compared by value. 33909 case "[object String]": 33910 return a == String(b); 33911 case "[object Number]": 33912 return a != +a ? b != +b : a == 0 ? 1 / a == 1 / b : a == +b; 33913 case "[object Date]": 33914 case "[object Boolean]": 33915 return +a == +b; 33916 // RegExps are compared by their source patterns and flags. 33917 case "[object RegExp]": 33918 return a.source == b.source && a.global == b.global && a.multiline == b.multiline && a.ignoreCase == b.ignoreCase; 33919 } 33920 if (typeof a != "object" || typeof b != "object") return false; 33921 var length = aStack.length; 33922 while (length--) { 33923 if (aStack[length] == a) return bStack[length] == b; 33924 } 33925 var aCtor = a.constructor, bCtor = b.constructor; 33926 if (aCtor !== bCtor && !(_.isFunction(aCtor) && aCtor instanceof aCtor && _.isFunction(bCtor) && bCtor instanceof bCtor) && ("constructor" in a && "constructor" in b)) { 33927 return false; 33928 } 33929 aStack.push(a); 33930 bStack.push(b); 33931 var size = 0, result2 = true; 33932 if (className == "[object Array]") { 33933 size = a.length; 33934 result2 = size == b.length; 33935 if (result2) { 33936 while (size--) { 33937 if (!(result2 = eq(a[size], b[size], aStack, bStack))) break; 33938 } 33939 } 33940 } else { 33941 for (var key in a) { 33942 if (_.has(a, key)) { 33943 size++; 33944 if (!(result2 = _.has(b, key) && eq(a[key], b[key], aStack, bStack))) break; 33945 } 33946 } 33947 if (result2) { 33948 for (key in b) { 33949 if (_.has(b, key) && !size--) break; 33950 } 33951 result2 = !size; 33952 } 33953 } 33954 aStack.pop(); 33955 bStack.pop(); 33956 return result2; 33957 }; 33958 _.isEqual = function(a, b) { 33959 return eq(a, b, [], []); 33960 }; 33961 _.isEmpty = function(obj) { 33962 if (obj == null) return true; 33963 if (_.isArray(obj) || _.isString(obj)) return obj.length === 0; 33964 for (var key in obj) if (_.has(obj, key)) return false; 33965 return true; 33966 }; 33967 _.isElement = function(obj) { 33968 return !!(obj && obj.nodeType === 1); 33969 }; 33970 _.isArray = nativeIsArray || function(obj) { 33971 return toString.call(obj) == "[object Array]"; 33972 }; 33973 _.isObject = function(obj) { 33974 return obj === Object(obj); 33975 }; 33976 each(["Arguments", "Function", "String", "Number", "Date", "RegExp"], function(name) { 33977 _["is" + name] = function(obj) { 33978 return toString.call(obj) == "[object " + name + "]"; 33979 }; 33980 }); 33981 if (!_.isArguments(arguments)) { 33982 _.isArguments = function(obj) { 33983 return !!(obj && _.has(obj, "callee")); 33984 }; 33985 } 33986 if (typeof /./ !== "function") { 33987 _.isFunction = function(obj) { 33988 return typeof obj === "function"; 33989 }; 33990 } 33991 _.isFinite = function(obj) { 33992 return isFinite(obj) && !isNaN(parseFloat(obj)); 33993 }; 33994 _.isNaN = function(obj) { 33995 return _.isNumber(obj) && obj != +obj; 33996 }; 33997 _.isBoolean = function(obj) { 33998 return obj === true || obj === false || toString.call(obj) == "[object Boolean]"; 33999 }; 34000 _.isNull = function(obj) { 34001 return obj === null; 34002 }; 34003 _.isUndefined = function(obj) { 34004 return obj === void 0; 34005 }; 34006 _.has = function(obj, key) { 34007 return hasOwnProperty.call(obj, key); 34008 }; 34009 _.noConflict = function() { 34010 root._ = previousUnderscore; 34011 return this; 34012 }; 34013 _.identity = function(value) { 34014 return value; 34015 }; 34016 _.constant = function(value) { 34017 return function() { 34018 return value; 34019 }; 34020 }; 34021 _.noop = function() { 34022 }; 34023 _.property = function(key) { 34024 return function(obj) { 34025 return obj[key]; 34026 }; 34027 }; 34028 _.matches = function(attrs) { 34029 return function(obj) { 34030 if (obj === attrs) return true; 34031 for (var key in attrs) { 34032 if (attrs[key] !== obj[key]) 34033 return false;
34034 } 34035 return true; 34036 }; 34037 }; 34038 _.times = function(n, iterator, context) { 34039 var accum = Array(Math.max(0, n)); 34040 for (var i = 0; i < n; i++) accum[i] = iterator.call(context, i); 34041 return accum; 34042 }; 34043 _.random = function(min, max) { 34044 if (max == null) { 34045 max = min; 34046 min = 0; 34047 } 34048 return min + Math.floor(Math.random() * (max - min + 1)); 34049 }; 34050 _.now = Date.now || function() { 34051 return (/* @__PURE__ */ new Date()).getTime(); 34052 }; 34053 var entityMap = { 34054 escape: { 34055 "&": "&", 34056 "<": "<", 34057 ">": ">", 34058 '"': """, 34059 "'": "'" 34060 } 34061 }; 34062 entityMap.unescape = _.invert(entityMap.escape); 34063 var entityRegexes = { 34064 escape: new RegExp("[" + _.keys(entityMap.escape).join("") + "]", "g"), 34065 unescape: new RegExp("(" + _.keys(entityMap.unescape).join("|") + ")", "g") 34066 }; 34067 _.each(["escape", "unescape"], function(method) { 34068 _[method] = function(string) { 34069 if (string == null) return ""; 34070 return ("" + string).replace(entityRegexes[method], function(match) { 34071 return entityMap[method][match]; 34072 }); 34073 }; 34074 }); 34075 _.result = function(object, property) { 34076 if (object == null) return void 0; 34077 var value = object[property]; 34078 return _.isFunction(value) ? value.call(object) : value; 34079 }; 34080 _.mixin = function(obj) { 34081 each(_.functions(obj), function(name) { 34082 var func = _[name] = obj[name]; 34083 _.prototype[name] = function() { 34084 var args = [this._wrapped]; 34085 push.apply(args, arguments); 34086 return result.call(this, func.apply(_, args)); 34087 }; 34088 }); 34089 }; 34090 var idCounter = 0; 34091 _.uniqueId = function(prefix) { 34092 var id = ++idCounter + ""; 34093 return prefix ? prefix + id : id; 34094 }; 34095 _.templateSettings = { 34096 evaluate: /<%([\s\S]+?)%>/g, 34097 interpolate: /<%=([\s\S]+?)%>/g, 34098 escape: /<%-([\s\S]+?)%>/g 34099 }; 34100 var noMatch = /(.)^/; 34101 var escapes = { 34102 "'": "'", 34103 "\\": "\\", 34104 "\r": "r", 34105 "\n": "n", 34106 " ": "t", 34107 "\u2028": "u2028", 34108 "\u2029": "u2029" 34109 }; 34110 var escaper = /\\|'|\r|\n|\t|\u2028|\u2029/g; 34111 _.template = function(text, data, settings) { 34112 var render; 34113 settings = _.defaults({}, settings, _.templateSettings); 34114 var matcher = new RegExp([ 34115 (settings.escape || noMatch).source, 34116 (settings.interpolate || noMatch).source, 34117 (settings.evaluate || noMatch).source 34118 ].join("|") + "|$", "g"); 34119 var index = 0; 34120 var source = "__p+='"; 34121 text.replace(matcher, function(match, escape2, interpolate, evaluate, offset) { 34122 source += text.slice(index, offset).replace(escaper, function(match2) { 34123 return "\\" + escapes[match2]; 34124 }); 34125 if (escape2) { 34126 source += "'+\n((__t=(" + escape2 + "))==null?'':_.escape(__t))+\n'"; 34127 } 34128 if (interpolate) { 34129 source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; 34130 } 34131 if (evaluate) { 34132 source += "';\n" + evaluate + "\n__p+='"; 34133 } 34134 index = offset + match.length; 34135 return match; 34136 }); 34137 source += "';\n"; 34138 if (!settings.variable) source = "with(obj||{}){\n" + source + "}\n"; 34139 source = "var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n" + source + "return __p;\n"; 34140 try { 34141 render = new Function(settings.variable || "obj", "_", source); 34142 } catch (e) { 34143 e.source = source; 34144 throw e; 34145 } 34146 if (data) return render(data, _); 34147 var template = function(data2) { 34148 return render.call(this, data2, _); 34149 }; 34150 template.source = "function(" + (settings.variable || "obj") + "){\n" + source + "}"; 34151 return template; 34152 }; 34153 _.chain = function(obj) { 34154 return _(obj).chain(); 34155 }; 34156 var result = function(obj) { 34157 return this._chain ? _(obj).chain() : obj; 34158 }; 34159 _.mixin(_); 34160 each(["pop", "push", "reverse", "shift", "sort", "splice", "unshift"], function(name) { 34161 var method = ArrayProto[name]; 34162 _.prototype[name] = function() { 34163 var obj = this._wrapped; 34164 method.apply(obj, arguments); 34165 if ((name == "shift" || name == "splice") && obj.length === 0) delete obj[0]; 34166 return result.call(this, obj); 34167 }; 34168 }); 34169 each(["concat", "join", "slice"], function(name) { 34170 var method = ArrayProto[name]; 34171 _.prototype[name] = function() { 34172 return result.call(this, method.apply(this._wrapped, arguments)); 34173 }; 34174 }); 34175 _.extend(_.prototype, { 34176 // Start chaining a wrapped Underscore object. 34177 chain: function() { 34178 this._chain = true; 34179 return this; 34180 }, 34181 // Extracts the result from a wrapped and chained object. 34182 value: function() { 34183 return this._wrapped; 34184 } 34185 }); 34186 if (typeof define === "function" && define.amd) { 34187 define("underscore", [], function() { 34188 return _; 34189 }); 34190 } 34191 }).call(exports); 34192 } 34193 }); 34194 34195
vendor: 2,256 bytes, lines 34195-34258
34195// apps/base/assets/javascripts/vendor/array.from.polyfill.js 34196 var require_array_from_polyfill = __commonJS({ 34197 "apps/base/assets/javascripts/vendor/array.from.polyfill.js"() { 34198 "use strict"; 34199 init_esbuild_shims(); 34200 if (!Array.from) { 34201 Array.from = (function() { 34202 var toStr = Object.prototype.toString; 34203 var isCallable = function(fn) { 34204 return typeof fn === "function" || toStr.call(fn) === "[object Function]"; 34205 }; 34206 var toInteger = function(value) { 34207 var number = Number(value); 34208 if (isNaN(number)) { 34209 return 0; 34210 } 34211 if (number === 0 || !isFinite(number)) { 34212 return number; 34213 } 34214 return (number > 0 ? 1 : -1) * Math.floor(Math.abs(number)); 34215 }; 34216 var maxSafeInteger = Math.pow(2, 53) - 1; 34217 var toLength = function(value) { 34218 var len = toInteger(value); 34219 return Math.min(Math.max(len, 0), maxSafeInteger); 34220 }; 34221 return function from(arrayLike) { 34222 var C = this; 34223 var items = Object(arrayLike); 34224 if (arrayLike == null) { 34225 throw new TypeError("Array.from requires an array-like object - not null or undefined"); 34226 } 34227 var mapFn = arguments.length > 1 ? arguments[1] : void 0; 34228 var T; 34229 if (typeof mapFn !== "undefined") { 34230 if (!isCallable(mapFn)) { 34231 throw new TypeError("Array.from: when provided, the second argument must be a function"); 34232 } 34233 if (arguments.length > 2) { 34234 T = arguments[2]; 34235 } 34236 } 34237 var len = toLength(items.length); 34238 var A = isCallable(C) ? Object(new C(len)) : new Array(len); 34239 var k = 0; 34240 var kValue; 34241 while (k < len) { 34242 kValue = items[k]; 34243 if (mapFn) { 34244 A[k] = typeof T === "undefined" ? mapFn(kValue, k) : mapFn.call(T, kValue, k); 34245 } else { 34246 A[k] = kValue; 34247 } 34248 k += 1; 34249 } 34250 A.length = len; 34251 return A; 34252 }; 34253 })(); 34254 } 34255 } 34256 }); 34257 34258
vendor: 69,251 bytes, lines 34258-35933
34258// apps/base/assets/javascripts/vendor/bootstrap-datepicker.js 34259 var require_bootstrap_datepicker = __commonJS({ 34260 "apps/base/assets/javascripts/vendor/bootstrap-datepicker.js"(exports) { 34261 "use strict"; 34262 init_esbuild_shims(); 34263 (function(factory) { 34264 if (typeof define === "function" && define.amd) { 34265 define(["jquery"], factory); 34266 } else if (typeof exports === "object") { 34267 factory(require_jquery()); 34268 } else { 34269 factory(jQuery); 34270 } 34271 })(function($3, undefined2) { 34272 function UTCDate() { 34273 return new Date(Date.UTC.apply(Date, arguments)); 34274 } 34275 function UTCToday() { 34276 var today = /* @__PURE__ */ new Date(); 34277 return UTCDate(today.getFullYear(), today.getMonth(), today.getDate()); 34278 } 34279 function isUTCEquals(date1, date2) { 34280 return date1.getUTCFullYear() === date2.getUTCFullYear() && date1.getUTCMonth() === date2.getUTCMonth() && date1.getUTCDate() === date2.getUTCDate(); 34281 } 34282 function alias(method, deprecationMsg) { 34283 return function() { 34284 if (deprecationMsg !== undefined2) { 34285 $3.fn.datepicker.deprecated(deprecationMsg); 34286 } 34287 return this[method].apply(this, arguments); 34288 }; 34289 } 34290 function isValidDate(d) { 34291 return d && !isNaN(d.getTime()); 34292 } 34293 var DateArray = /* @__PURE__ */ (function() { 34294 var extras = { 34295 get: function(i) { 34296 return this.slice(i)[0]; 34297 }, 34298 contains: function(d) { 34299 var val = d && d.valueOf(); 34300 for (var i = 0, l = this.length; i < l; i++) 34301 if (0 <= this[i].valueOf() - val && this[i].valueOf() - val < 1e3 * 60 * 60 * 24) 34302 return i; 34303 return -1; 34304 }, 34305 remove: function(i) { 34306 this.splice(i, 1); 34307 }, 34308 replace: function(new_array) { 34309 if (!new_array) return; 34310 if (!Array.isArray(new_array)) new_array = [new_array]; 34311 this.clear(); 34312 this.push.apply(this, new_array); 34313 }, 34314 clear: function() { 34315 this.length = 0; 34316 }, 34317 copy: function() { 34318 var a = new DateArray(); 34319 a.replace(this); 34320 return a; 34321 } 34322 }; 34323 return function() { 34324 var a = []; 34325 a.push.apply(a, arguments); 34326 $3.extend(a, extras); 34327 return a; 34328 }; 34329 })(); 34330 var Datepicker = function(element, options) { 34331 $3.data(element, "datepicker", this); 34332 this._events = []; 34333 this._secondaryEvents = []; 34334 this._process_options(options); 34335 this.dates = new DateArray(); 34336 this.viewDate = this.o.defaultViewDate; 34337 this.focusDate = null; 34338 this.element = $3(element); 34339 this.isInput = this.element.is("input"); 34340 this.inputField = this.isInput ? this.element : this.element.find("input"); 34341 this.component = this.element.hasClass("date") ? this.element.find( 34342 ".add-on, .input-group-addon, .input-group-append, .input-group-prepend, .btn" 34343 ) : false; 34344 if (this.component && this.component.length === 0) { 34345 this.component = false; 34346 } 34347 if (this.o.isInline === null) { 34348 this.isInline = !this.component && !this.isInput; 34349 } else { 34350 this.isInline = this.o.isInline; 34351 } 34352 this.picker = $3(DPGlobal.template); 34353 if (this._check_template(this.o.templates.leftArrow)) { 34354 this.picker.find(".prev").html(this.o.templates.leftArrow); 34355 } 34356 if (this._check_template(this.o.templates.rightArrow)) { 34357 this.picker.find(".next").html(this.o.templates.rightArrow); 34358 } 34359 this._buildEvents(); 34360 this._attachEvents(); 34361 if (this.isInline) { 34362 this.picker.addClass("datepicker-inline").appendTo(this.element); 34363 } else { 34364 this.picker.addClass("datepicker-dropdown dropdown-menu"); 34365 } 34366 if (this.o.rtl) { 34367 this.picker.addClass("datepicker-rtl"); 34368 } 34369 if (this.o.calendarWeeks) { 34370 this.picker.find( 34371 ".datepicker-days .datepicker-switch, thead .datepicker-title, tfoot .today, tfoot .clear" 34372 ).attr("colspan", function(i, val) { 34373 return Number(val) + 1; 34374 }); 34375 } 34376 this._process_options({ 34377 startDate: this._o.startDate, 34378 endDate: this._o.endDate, 34379 daysOfWeekDisabled: this.o.daysOfWeekDisabled, 34380 daysOfWeekHighlighted: this.o.daysOfWeekHighlighted, 34381 datesDisabled: this.o.datesDisabled 34382 }); 34383 this._allow_update = false; 34384 this.setViewMode(this.o.startView); 34385 this._allow_update = true; 34386 this.fillDow(); 34387 this.fillMonths(); 34388 this.update(); 34389 if (this.isInline) { 34390 this.show(); 34391 } 34392 }; 34393 Datepicker.prototype = { 34394 constructor: Datepicker, 34395 _resolveViewName: function(view) { 34396 $3.each(DPGlobal.viewModes, function(i, viewMode) { 34397 if (view === i || $3.inArray(view, viewMode.names) !== -1) { 34398 view = i; 34399 return false; 34400 } 34401 }); 34402 return view; 34403 }, 34404 _resolveDaysOfWeek: function(daysOfWeek) { 34405 if (!Array.isArray(daysOfWeek)) daysOfWeek = daysOfWeek.split(/[,\s]*/); 34406 return $3.map(daysOfWeek, Number); 34407 }, 34408 _check_template: function(tmp) { 34409 try { 34410 if (tmp === undefined2 || tmp === "") { 34411 return false; 34412 } 34413 if ((tmp.match(/[<>]/g) || []).length <= 0) { 34414 return true; 34415 } 34416 var jDom = $3(tmp); 34417 return jDom.length > 0; 34418 } catch (ex) { 34419 return false; 34420 } 34421 }, 34422 _process_options: function(opts) { 34423 this._o = $3.extend({}, this._o, opts); 34424 var o = this.o = $3.extend({}, this._o); 34425 var lang = o.language; 34426 if (!dates[lang]) { 34427 lang = lang.split("-")[0]; 34428 if (!dates[lang]) lang = defaults.language; 34429 } 34430 o.language = lang; 34431 o.startView = this._resolveViewName(o.startView); 34432 o.minViewMode = this._resolveViewName(o.minViewMode); 34433 o.maxViewMode = this._resolveViewName(o.maxViewMode); 34434 o.startView = Math.max( 34435 this.o.minViewMode, 34436 Math.min(this.o.maxViewMode, o.startView) 34437 ); 34438 if (o.multidate !== true) { 34439 o.multidate = Number(o.multidate) || false; 34440 if (o.multidate !== false) o.multidate = Math.max(0, o.multidate); 34441 } 34442 o.multidateSeparator = String(o.multidateSeparator); 34443 o.weekStart %= 7; 34444 o.weekEnd = (o.weekStart + 6) % 7; 34445 var format = DPGlobal.parseFormat(o.format); 34446 if (o.startDate !== -Infinity) { 34447 if (!!o.startDate) { 34448 if (o.startDate instanceof Date) 34449 o.startDate = this._local_to_utc(this._zero_time(o.startDate)); 34450 else 34451 o.startDate = DPGlobal.parseDate( 34452 o.startDate, 34453 format, 34454 o.language, 34455 o.assumeNearbyYear 34456 ); 34457 } else { 34458 o.startDate = -Infinity; 34459 } 34460 } 34461 if (o.endDate !== Infinity) { 34462 if (!!o.endDate) { 34463 if (o.endDate instanceof Date) 34464 o.endDate = this._local_to_utc(this._zero_time(o.endDate)); 34465 else 34466 o.endDate = DPGlobal.parseDate( 34467 o.endDate, 34468 format, 34469 o.language, 34470 o.assumeNearbyYear 34471 ); 34472 } else { 34473 o.endDate = Infinity; 34474 } 34475 } 34476 o.daysOfWeekDisabled = this._resolveDaysOfWeek(o.daysOfWeekDisabled || []); 34477 o.daysOfWeekHighlighted = this._resolveDaysOfWeek( 34478 o.daysOfWeekHighlighted || [] 34479 ); 34480 o.datesDisabled = o.datesDisabled || []; 34481 if (!Array.isArray(o.datesDisabled)) { 34482 o.datesDisabled = o.datesDisabled.split(","); 34483 } 34484 o.datesDisabled = $3.map(o.datesDisabled, function(d) { 34485 return DPGlobal.parseDate(d, format, o.language, o.assumeNearbyYear); 34486 }); 34487 var plc = String(o.orientation).toLowerCase().split(/\s+/g), _plc = o.orientation.toLowerCase(); 34488 plc = $3.grep(plc, function(word) { 34489 return /^auto|left|right|top|bottom$/.test(word); 34490 }); 34491 o.orientation = { x: "auto", y: "auto" }; 34492 if (!_plc || _plc === "auto") ; 34493 else if (plc.length === 1) { 34494 switch (plc[0]) { 34495 case "top": 34496 case "bottom": 34497 o.orientation.y = plc[0]; 34498 break; 34499 case "left": 34500 case "right": 34501 o.orientation.x = plc[0]; 34502 break; 34503 } 34504 } else { 34505 _plc = $3.grep(plc, function(word) { 34506 return /^left|right$/.test(word); 34507 }); 34508 o.orientation.x = _plc[0] || "auto"; 34509 _plc = $3.grep(plc, function(word) { 34510 return /^top|bottom$/.test(word); 34511 }); 34512 o.orientation.y = _plc[0] || "auto"; 34513 } 34514 if (o.defaultViewDate instanceof Date || typeof o.defaultViewDate === "string") { 34515 o.defaultViewDate = DPGlobal.parseDate( 34516 o.defaultViewDate, 34517 format, 34518 o.language, 34519 o.assumeNearbyYear 34520 ); 34521 } else if (o.defaultViewDate) { 34522 var year = o.defaultViewDate.year || (/* @__PURE__ */ new Date()).getFullYear(); 34523 var month = o.defaultViewDate.month || 0; 34524 var day = o.defaultViewDate.day || 1; 34525 o.defaultViewDate = UTCDate(year, month, day); 34526 } else { 34527 o.defaultViewDate = UTCToday(); 34528 } 34529 }, 34530 _applyEvents: function(evs) { 34531 for (var i = 0, el, ch, ev; i < evs.length; i++) { 34532 el = evs[i][0]; 34533 if (evs[i].length === 2) { 34534 ch = undefined2; 34535 ev = evs[i][1]; 34536 } else if (evs[i].length === 3) { 34537 ch = evs[i][1]; 34538 ev = evs[i][2]; 34539 } 34540 el.on(ev, ch); 34541 } 34542 }, 34543 _unapplyEvents: function(evs) { 34544 for (var i = 0, el, ev, ch; i < evs.length; i++) { 34545 el = evs[i][0]; 34546 if (evs[i].length === 2) { 34547 ch = undefined2; 34548 ev = evs[i][1]; 34549 } else if (evs[i].length === 3) { 34550 ch = evs[i][1]; 34551 ev = evs[i][2]; 34552 } 34553 el.off(ev, ch); 34554 } 34555 }, 34556 _buildEvents: function() { 34557 var events = { 34558 keyup: $3.proxy(function(e) { 34559 if ($3.inArray(e.keyCode, [27, 37, 39, 38, 40, 32, 13, 9]) === -1) 34560 this.update(); 34561 }, this), 34562 keydown: $3.proxy(this.keydown, this), 34563 paste: $3.proxy(this.paste, this) 34564 }; 34565 if (this.o.showOnFocus === true) { 34566 events.focus = $3.proxy(this.show, this); 34567 } 34568 if (this.isInput) { 34569 this._events = [[this.element, events]]; 34570 } else if (this.component && this.inputField.length) { 34571 this._events = [ 34572 // For components that are not readonly, allow keyboard nav 34573 [this.inputField, events], 34574 [ 34575 this.component, 34576 { 34577 click: $3.proxy(this.show, this) 34578 } 34579 ] 34580 ]; 34581 } else { 34582 this._events = [ 34583 [ 34584 this.element, 34585 { 34586 click: $3.proxy(this.show, this), 34587 keydown: $3.proxy(this.keydown, this) 34588 } 34589 ] 34590 ]; 34591 } 34592 this._events.push( 34593 // Component: listen for blur on element descendants 34594 [ 34595 this.element, 34596 "*", 34597 { 34598 blur: $3.proxy(function(e) { 34599 this._focused_from = e.target; 34600 }, this) 34601 } 34602 ], 34603 // Input: listen for blur on element 34604 [ 34605 this.element, 34606 { 34607 blur: $3.proxy(function(e) { 34608 this._focused_from = e.target; 34609 }, this) 34610 } 34611 ] 34612 ); 34613 if (this.o.immediateUpdates) { 34614 this._events.push([ 34615 this.element, 34616 { 34617 "changeYear changeMonth": $3.proxy(function(e) { 34618 this.update(e.date); 34619 }, this) 34620 } 34621 ]); 34622 } 34623 this._secondaryEvents = [ 34624 [ 34625 this.picker, 34626 { 34627 click: $3.proxy(this.click, this) 34628 } 34629 ], 34630 [ 34631 this.picker, 34632 ".prev, .next", 34633 { 34634 click: $3.proxy(this.navArrowsClick, this) 34635 } 34636 ], 34637 [ 34638 this.picker, 34639 ".day:not(.disabled)", 34640 { 34641 click: $3.proxy(this.dayCellClick, this) 34642 } 34643 ], 34644 [ 34645 $3(window), 34646 { 34647 resize: $3.proxy(this.place, this) 34648 } 34649 ], 34650 [ 34651 $3(document), 34652 { 34653 "mousedown touchstart": $3.proxy(function(e) { 34654 if (!(this.element.is(e.target) || this.element.find(e.target).length || this.picker.is(e.target) || this.picker.find(e.target).length || this.isInline)) { 34655 this.hide(); 34656 } 34657 }, this) 34658 } 34659 ] 34660 ]; 34661 }, 34662 _attachEvents: function() { 34663 this._detachEvents(); 34664 this._applyEvents(this._events); 34665 }, 34666 _detachEvents: function() { 34667 this._unapplyEvents(this._events); 34668 }, 34669 _attachSecondaryEvents: function() { 34670 this._detachSecondaryEvents(); 34671 this._applyEvents(this._secondaryEvents); 34672 }, 34673 _detachSecondaryEvents: function() { 34674 this._unapplyEvents(this._secondaryEvents); 34675 }, 34676 _trigger: function(event2, altdate) { 34677 var date = altdate || this.dates.get(-1), local_date = this._utc_to_local(date); 34678 this.element.trigger({ 34679 type: event2, 34680 date: local_date, 34681 viewMode: this.viewMode, 34682 dates: $3.map(this.dates, this._utc_to_local), 34683 format: $3.proxy(function(ix, format) { 34684 if (arguments.length === 0) { 34685 ix = this.dates.length - 1; 34686 format = this.o.format; 34687 } else if (typeof ix === "string") { 34688 format = ix; 34689 ix = this.dates.length - 1; 34690 } 34691 format = format || this.o.format; 34692 var date2 = this.dates.get(ix); 34693 return DPGlobal.formatDate(date2, format, this.o.language); 34694 }, this) 34695 }); 34696 }, 34697 show: function() { 34698 if (this.inputField.is(":disabled") || this.inputField.prop("readonly") && this.o.enableOnReadonly === false) 34699 return; 34700 if (!this.isInline) this.picker.appendTo(this.o.container); 34701 this.place(); 34702 this.picker.show(); 34703 this._attachSecondaryEvents(); 34704 this._trigger("show"); 34705 if ((window.navigator.msMaxTouchPoints || "ontouchstart" in document) && this.o.disableTouchKeyboard) { 34706 $3(this.element).blur(); 34707 } 34708 return this; 34709 }, 34710 hide: function() { 34711 if (this.isInline || !this.picker.is(":visible")) return this; 34712 this.focusDate = null; 34713 this.picker.hide().detach(); 34714 this._detachSecondaryEvents(); 34715 this.setViewMode(this.o.startView); 34716 if (this.o.forceParse && this.inputField.val()) this.setValue(); 34717 this._trigger("hide"); 34718 return this; 34719 }, 34720 destroy: function() { 34721 this.hide(); 34722 this._detachEvents(); 34723 this._detachSecondaryEvents(); 34724 this.picker.remove(); 34725 delete this.element.data().datepicker; 34726 if (!this.isInput) { 34727 delete this.element.data().date; 34728 } 34729 return this; 34730 }, 34731 paste: function(e) { 34732 var dateString; 34733 if (e.originalEvent.clipboardData && e.originalEvent.clipboardData.types && $3.inArray("text/plain", e.originalEvent.clipboardData.types) !== -1) { 34734 dateString = e.originalEvent.clipboardData.getData("text/plain"); 34735 } else if (window.clipboardData) { 34736 dateString = window.clipboardData.getData("Text"); 34737 } else { 34738 return; 34739 } 34740 this.setDate(dateString); 34741 this.update(); 34742 e.preventDefault(); 34743 }, 34744 _utc_to_local: function(utc) { 34745 if (!utc) { 34746 return utc; 34747 } 34748 var local = new Date(utc.getTime() + utc.getTimezoneOffset() * 6e4); 34749 if (local.getTimezoneOffset() !== utc.getTimezoneOffset()) { 34750 local = new Date(utc.getTime() + local.getTimezoneOffset() * 6e4); 34751 } 34752 return local; 34753 }, 34754 _local_to_utc: function(local) { 34755 return local && new Date(local.getTime() - local.getTimezoneOffset() * 6e4); 34756 }, 34757 _zero_time: function(local) { 34758 return local && new Date(local.getFullYear(), local.getMonth(), local.getDate()); 34759 }, 34760 _zero_utc_time: function(utc) { 34761 return utc && UTCDate(utc.getUTCFullYear(), utc.getUTCMonth(), utc.getUTCDate()); 34762 }, 34763 getDates: function() { 34764 return $3.map(this.dates, this._utc_to_local); 34765 }, 34766 getUTCDates: function() { 34767 return $3.map(this.dates, function(d) { 34768 return new Date(d); 34769 }); 34770 }, 34771 getDate: function() { 34772 return this._utc_to_local(this.getUTCDate()); 34773 }, 34774 getUTCDate: function() { 34775 var selected_date = this.dates.get(-1); 34776 if (selected_date !== undefined2) { 34777 return new Date(selected_date); 34778 } else { 34779 return null; 34780 } 34781 }, 34782 clearDates: function() { 34783 this.inputField.val(""); 34784 this._trigger("changeDate"); 34785 this.update(); 34786 if (this.o.autoclose) { 34787 this.hide(); 34788 } 34789 }, 34790 setDates: function() { 34791 var args = Array.isArray(arguments[0]) ? arguments[0] : arguments; 34792 this.update.apply(this, args); 34793 this._trigger("changeDate"); 34794 this.setValue(); 34795 return this; 34796 }, 34797 setUTCDates: function() { 34798 var args = Array.isArray(arguments[0]) ? arguments[0] : arguments; 34799 this.setDates.apply(this, $3.map(args, this._utc_to_local)); 34800 return this; 34801 }, 34802 setDate: alias("setDates"), 34803 setUTCDate: alias("setUTCDates"), 34804 remove: alias( 34805 "destroy", 34806 "Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead" 34807 ), 34808 setValue: function() { 34809 var formatted = this.getFormattedDate(); 34810 this.inputField.val(formatted); 34811 return this; 34812 }, 34813 getFormattedDate: function(format) { 34814 if (format === undefined2) format = this.o.format; 34815 var lang = this.o.language; 34816 return $3.map(this.dates, function(d) { 34817 return DPGlobal.formatDate(d, format, lang); 34818 }).join(this.o.multidateSeparator); 34819 }, 34820 getStartDate: function() { 34821 return this.o.startDate; 34822 }, 34823 setStartDate: function(startDate) { 34824 this._process_options({ startDate }); 34825 this.update(); 34826 this.updateNavArrows(); 34827 return this; 34828 }, 34829 getEndDate: function() { 34830 return this.o.endDate; 34831 }, 34832 setEndDate: function(endDate) { 34833 this._process_options({ endDate }); 34834 this.update(); 34835 this.updateNavArrows(); 34836 return this; 34837 }, 34838 setDaysOfWeekDisabled: function(daysOfWeekDisabled) { 34839 this._process_options({ daysOfWeekDisabled }); 34840 this.update(); 34841 return this; 34842 }, 34843 setDaysOfWeekHighlighted: function(daysOfWeekHighlighted) { 34844 this._process_options({ daysOfWeekHighlighted }); 34845 this.update(); 34846 return this; 34847 }, 34848 setDatesDisabled: function(datesDisabled) { 34849 this._process_options({ datesDisabled }); 34850 this.update(); 34851 return this; 34852 }, 34853 place: function() { 34854 if (this.isInline) return this; 34855 var calendarWidth = this.picker.outerWidth(), calendarHeight = this.picker.outerHeight(), visualPadding = 10, container = $3(this.o.container), windowWidth = container.width(), scrollTop = this.o.container === "body" ? $3(document).scrollTop() : container.scrollTop(), appendOffset = container.offset(); 34856 var parentsZindex = [0]; 34857 this.element.parents().each(function() { 34858 var itemZIndex = $3(this).css("z-index"); 34859 if (itemZIndex !== "auto" && Number(itemZIndex) !== 0) 34860 parentsZindex.push(Number(itemZIndex)); 34861 }); 34862 var zIndex = Math.max.apply(Math, parentsZindex) + this.o.zIndexOffset; 34863 var offset = this.component ? this.component.parent().offset() : this.element.offset(); 34864 var height = this.component ? this.component.outerHeight(true) : this.element.outerHeight(false); 34865 var width = this.component ? this.component.outerWidth(true) : this.element.outerWidth(false); 34866 var left = offset.left - appendOffset.left; 34867 var top = offset.top - appendOffset.top; 34868 if (this.o.container !== "body") { 34869 top += scrollTop; 34870 } 34871 this.picker.removeClass( 34872 "datepicker-orient-top datepicker-orient-bottom datepicker-orient-right datepicker-orient-left" 34873 ); 34874 if (this.o.orientation.x !== "auto") { 34875 this.picker.addClass("datepicker-orient-" + this.o.orientation.x); 34876 if (this.o.orientation.x === "right") left -= calendarWidth - width; 34877 } else { 34878 if (offset.left < 0) { 34879 this.picker.addClass("datepicker-orient-left"); 34880 left -= offset.left - visualPadding; 34881 } else if (left + calendarWidth > windowWidth) { 34882 this.picker.addClass("datepicker-orient-right"); 34883 left += width - calendarWidth; 34884 } else { 34885 if (this.o.rtl) { 34886 this.picker.addClass("datepicker-orient-right"); 34887 } else { 34888 this.picker.addClass("datepicker-orient-left"); 34889 } 34890 } 34891 } 34892 var yorient = this.o.orientation.y, top_overflow; 34893 if (yorient === "auto") { 34894 top_overflow = -scrollTop + top - calendarHeight; 34895 yorient = top_overflow < 0 ? "bottom" : "top"; 34896 } 34897 this.picker.addClass("datepicker-orient-" + yorient); 34898 if (yorient === "top") 34899 top -= calendarHeight + parseInt(this.picker.css("padding-top")); 34900 else top += height; 34901 if (this.o.rtl) { 34902 var right = windowWidth - (left + width); 34903 this.picker.css({ 34904 top, 34905 right, 34906 zIndex 34907 }); 34908 } else { 34909 this.picker.css({ 34910 top, 34911 left, 34912 zIndex 34913 }); 34914 } 34915 return this; 34916 }, 34917 _allow_update: true, 34918 update: function() { 34919 if (!this._allow_update) return this; 34920 var oldDates = this.dates.copy(), dates2 = [], fromArgs = false; 34921 if (arguments.length) { 34922 $3.each( 34923 arguments, 34924 $3.proxy(function(i, date) { 34925 if (date instanceof Date) date = this._local_to_utc(date); 34926 dates2.push(date); 34927 }, this) 34928 ); 34929 fromArgs = true; 34930 } else { 34931 dates2 = this.isInput ? this.element.val() : this.element.data("date") || this.inputField.val(); 34932 if (dates2 && this.o.multidate) 34933 dates2 = dates2.split(this.o.multidateSeparator); 34934 else dates2 = [dates2]; 34935 delete this.element.data().date; 34936 } 34937 dates2 = $3.map( 34938 dates2, 34939 $3.proxy(function(date) { 34940 return DPGlobal.parseDate( 34941 date, 34942 this.o.format, 34943 this.o.language, 34944 this.o.assumeNearbyYear 34945 ); 34946 }, this) 34947 ); 34948 dates2 = $3.grep( 34949 dates2, 34950 $3.proxy(function(date) { 34951 return !this.dateWithinRange(date) || !date; 34952 }, this), 34953 true 34954 ); 34955 this.dates.replace(dates2); 34956 if (this.o.updateViewDate) { 34957 if (this.dates.length) this.viewDate = new Date(this.dates.get(-1)); 34958 else if (this.viewDate < this.o.startDate) 34959 this.viewDate = new Date(this.o.startDate); 34960 else if (this.viewDate > this.o.endDate) 34961 this.viewDate = new Date(this.o.endDate); 34962 else this.viewDate = this.o.defaultViewDate; 34963 } 34964 if (fromArgs) { 34965 this.setValue(); 34966 this.element.change(); 34967 } else if (this.dates.length) { 34968 if (String(oldDates) !== String(this.dates) && fromArgs) { 34969 this._trigger("changeDate"); 34970 this.element.change(); 34971 } 34972 } 34973 if (!this.dates.length && oldDates.length) { 34974 this._trigger("clearDate"); 34975 this.element.change(); 34976 } 34977 this.fill(); 34978 return this; 34979 }, 34980 fillDow: function() { 34981 if (this.o.showWeekDays) { 34982 var dowCnt = this.o.weekStart, html = "<tr>"; 34983 if (this.o.calendarWeeks) { 34984 html += '<th class="cw"> </th>'; 34985 } 34986 while (dowCnt < this.o.weekStart + 7) { 34987 html += '<th class="dow'; 34988 if ($3.inArray(dowCnt, this.o.daysOfWeekDisabled) !== -1) 34989 html += " disabled"; 34990 html += '">' + dates[this.o.language].daysMin[dowCnt++ % 7] + "</th>"; 34991 } 34992 html += "</tr>"; 34993 this.picker.find(".datepicker-days thead").append(html); 34994 } 34995 }, 34996 fillMonths: function() { 34997 var localDate = this._utc_to_local(this.viewDate); 34998 var html = ""; 34999 var focused; 35000 for (var i = 0; i < 12; i++) { 35001 focused = localDate && localDate.getMonth() === i ? " focused" : ""; 35002 html += '<span class="month' + focused + '">' + dates[this.o.language].monthsShort[i] + "</span>"; 35003 } 35004 this.picker.find(".datepicker-months td").html(html); 35005 }, 35006 setRange: function(range) { 35007 if (!range || !range.length) delete this.range; 35008 else 35009 this.range = $3.map(range, function(d) { 35010 return d.valueOf(); 35011 }); 35012 this.fill(); 35013 }, 35014 getClassNames: function(date) { 35015 var cls = [], year = this.viewDate.getUTCFullYear(), month = this.viewDate.getUTCMonth(), today = UTCToday(); 35016 if (date.getUTCFullYear() < year || date.getUTCFullYear() === year && date.getUTCMonth() < month) { 35017 cls.push("old"); 35018 } else if (date.getUTCFullYear() > year || date.getUTCFullYear() === year && date.getUTCMonth() > month) { 35019 cls.push("new"); 35020 } 35021 if (this.focusDate && date.valueOf() === this.focusDate.valueOf()) 35022 cls.push("focused"); 35023 if (this.o.todayHighlight && isUTCEquals(date, today)) { 35024 cls.push("today"); 35025 } 35026 if (this.dates.contains(date) !== -1) cls.push("active"); 35027 if (!this.dateWithinRange(date)) { 35028 cls.push("disabled"); 35029 } 35030 if (this.dateIsDisabled(date)) { 35031 cls.push("disabled", "disabled-date"); 35032 } 35033 if ($3.inArray(date.getUTCDay(), this.o.daysOfWeekHighlighted) !== -1) { 35034 cls.push("highlighted"); 35035 } 35036 if (this.range) { 35037 if (date > this.range[0] && date < this.range[this.range.length - 1]) { 35038 cls.push("range"); 35039 } 35040 if ($3.inArray(date.valueOf(), this.range) !== -1) { 35041 cls.push("selected"); 35042 } 35043 if (date.valueOf() === this.range[0]) { 35044 cls.push("range-start"); 35045 } 35046 if (date.valueOf() === this.range[this.range.length - 1]) { 35047 cls.push("range-end"); 35048 } 35049 } 35050 return cls; 35051 }, 35052 _fill_yearsView: function(selector, cssClass, factor, year, startYear, endYear, beforeFn) { 35053 var html = ""; 35054 var step = factor / 10; 35055 var view = this.picker.find(selector); 35056 var startVal = Math.floor(year / factor) * factor; 35057 var endVal = startVal + step * 9; 35058 var focusedVal = Math.floor(this.viewDate.getFullYear() / step) * step; 35059 var selected = $3.map(this.dates, function(d) { 35060 return Math.floor(d.getUTCFullYear() / step) * step; 35061 }); 35062 var classes, tooltip, before; 35063 for (var currVal = startVal - step; currVal <= endVal + step; currVal += step) { 35064 classes = [cssClass]; 35065 tooltip = null; 35066 if (currVal === startVal - step) { 35067 classes.push("old"); 35068 } else if (currVal === endVal + step) { 35069 classes.push("new"); 35070 } 35071 if ($3.inArray(currVal, selected) !== -1) { 35072 classes.push("active"); 35073 } 35074 if (currVal < startYear || currVal > endYear) { 35075 classes.push("disabled"); 35076 } 35077 if (currVal === focusedVal) { 35078 classes.push("focused"); 35079 } 35080 if (beforeFn !== $3.noop) { 35081 before = beforeFn(new Date(currVal, 0, 1)); 35082 if (before === undefined2) { 35083 before = {}; 35084 } else if (typeof before === "boolean") { 35085 before = { enabled: before }; 35086 } else if (typeof before === "string") { 35087 before = { classes: before }; 35088 } 35089 if (before.enabled === false) { 35090 classes.push("disabled"); 35091 } 35092 if (before.classes) { 35093 classes = classes.concat(before.classes.split(/\s+/)); 35094 } 35095 if (before.tooltip) { 35096 tooltip = before.tooltip; 35097 } 35098 } 35099 html += '<span class="' + classes.join(" ") + '"' + (tooltip ? ' title="' + tooltip + '"' : "") + ">" + currVal + "</span>"; 35100 } 35101 view.find(".datepicker-switch").text(startVal + "-" + endVal); 35102 view.find("td").html(html); 35103 }, 35104 fill: function() { 35105 var d = new Date(this.viewDate), year = d.getUTCFullYear(), month = d.getUTCMonth(), startYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity, startMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity, endYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity, endMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity, todaytxt = dates[this.o.language].today || dates["en"].today || "", cleartxt = dates[this.o.language].clear || dates["en"].clear || "", titleFormat = dates[this.o.language].titleFormat || dates["en"].titleFormat, todayDate = UTCToday(), titleBtnVisible = (this.o.todayBtn === true || this.o.todayBtn === "linked") && todayDate >= this.o.startDate && todayDate <= this.o.endDate && !this.weekOfDateIsDisabled(todayDate), tooltip, before; 35106 if (isNaN(year) || isNaN(month)) return; 35107 this.picker.find(".datepicker-days .datepicker-switch").text(DPGlobal.formatDate(d, titleFormat, this.o.language)); 35108 this.picker.find("tfoot .today").text(todaytxt).css("display", titleBtnVisible ? "table-cell" : "none"); 35109 this.picker.find("tfoot .clear").text(cleartxt).css("display", this.o.clearBtn === true ? "table-cell" : "none"); 35110 this.picker.find("thead .datepicker-title").text(this.o.title).css( 35111 "display", 35112 typeof this.o.title === "string" && this.o.title !== "" ? "table-cell" : "none" 35113 ); 35114 this.updateNavArrows(); 35115 this.fillMonths(); 35116 var prevMonth = UTCDate(year, month, 0), day = prevMonth.getUTCDate(); 35117 prevMonth.setUTCDate( 35118 day - (prevMonth.getUTCDay() - this.o.weekStart + 7) % 7 35119 ); 35120 var nextMonth = new Date(prevMonth); 35121 if (prevMonth.getUTCFullYear() < 100) { 35122 nextMonth.setUTCFullYear(prevMonth.getUTCFullYear()); 35123 } 35124 nextMonth.setUTCDate(nextMonth.getUTCDate() + 42); 35125 nextMonth = nextMonth.valueOf(); 35126 var html = []; 35127 var weekDay, clsName; 35128 while (prevMonth.valueOf() < nextMonth) { 35129 weekDay = prevMonth.getUTCDay(); 35130 if (weekDay === this.o.weekStart) { 35131 html.push("<tr>"); 35132 if (this.o.calendarWeeks) { 35133 var ws = new Date( 35134 +prevMonth + (this.o.weekStart - weekDay - 7) % 7 * 864e5 35135 ), th = new Date( 35136 Number(ws) + (7 + 4 - ws.getUTCDay()) % 7 * 864e5 35137 ), yth = new Date( 35138 Number(yth = UTCDate(th.getUTCFullYear(), 0, 1)) + (7 + 4 - yth.getUTCDay()) % 7 * 864e5 35139 ), calWeek = (th - yth) / 864e5 / 7 + 1; 35140 html.push('<td class="cw">' + calWeek + "</td>"); 35141 } 35142 } 35143 clsName = this.getClassNames(prevMonth); 35144 clsName.push("day"); 35145 var content = prevMonth.getUTCDate(); 35146 if (this.o.beforeShowDay !== $3.noop) { 35147 before = this.o.beforeShowDay(this._utc_to_local(prevMonth)); 35148 if (before === undefined2) before = {}; 35149 else if (typeof before === "boolean") before = { enabled: before }; 35150 else if (typeof before === "string") before = { classes: before }; 35151 if (before.enabled === false) clsName.push("disabled"); 35152 if (before.classes) 35153 clsName = clsName.concat(before.classes.split(/\s+/)); 35154 if (before.tooltip) tooltip = before.tooltip; 35155 if (before.content) content = before.content; 35156 } 35157 if (typeof $3.uniqueSort === "function") { 35158 clsName = $3.uniqueSort(clsName); 35159 } else { 35160 clsName = $3.unique(clsName); 35161 } 35162 html.push( 35163 '<td class="' + clsName.join(" ") + '"' + (tooltip ? ' title="' + tooltip + '"' : "") + ' data-date="' + prevMonth.getTime().toString() + '">' + content + "</td>" 35164 ); 35165 tooltip = null; 35166 if (weekDay === this.o.weekEnd) { 35167 html.push("</tr>"); 35168 } 35169 prevMonth.setUTCDate(prevMonth.getUTCDate() + 1); 35170 } 35171 this.picker.find(".datepicker-days tbody").html(html.join("")); 35172 var monthsTitle = dates[this.o.language].monthsTitle || dates["en"].monthsTitle || "Months"; 35173 var months = this.picker.find(".datepicker-months").find(".datepicker-switch").text(this.o.maxViewMode < 2 ? monthsTitle : year).end().find("tbody span").removeClass("active"); 35174 $3.each(this.dates, function(i, d2) { 35175 if (d2.getUTCFullYear() === year) 35176 months.eq(d2.getUTCMonth()).addClass("active"); 35177 }); 35178 if (year < startYear || year > endYear) { 35179 months.addClass("disabled"); 35180 } 35181 if (year === startYear) { 35182 months.slice(0, startMonth).addClass("disabled"); 35183 } 35184 if (year === endYear) { 35185 months.slice(endMonth + 1).addClass("disabled"); 35186 } 35187 if (this.o.beforeShowMonth !== $3.noop) { 35188 var that = this; 35189 $3.each(months, function(i, month2) { 35190 var moDate = new Date(year, i, 1); 35191 var before2 = that.o.beforeShowMonth(moDate); 35192 if (before2 === undefined2) before2 = {}; 35193 else if (typeof before2 === "boolean") before2 = { enabled: before2 }; 35194 else if (typeof before2 === "string") before2 = { classes: before2 }; 35195 if (before2.enabled === false && !$3(month2).hasClass("disabled")) 35196 $3(month2).addClass("disabled"); 35197 if (before2.classes) $3(month2).addClass(before2.classes); 35198 if (before2.tooltip) $3(month2).prop("title", before2.tooltip); 35199 }); 35200 } 35201 this._fill_yearsView( 35202 ".datepicker-years", 35203 "year", 35204 10, 35205 year, 35206 startYear, 35207 endYear, 35208 this.o.beforeShowYear 35209 ); 35210 this._fill_yearsView( 35211 ".datepicker-decades", 35212 "decade", 35213 100, 35214 year, 35215 startYear, 35216 endYear, 35217 this.o.beforeShowDecade 35218 ); 35219 this._fill_yearsView( 35220 ".datepicker-centuries", 35221 "century", 35222 1e3, 35223 year, 35224 startYear, 35225 endYear, 35226 this.o.beforeShowCentury 35227 ); 35228 }, 35229 updateNavArrows: function() { 35230 if (!this._allow_update) return; 35231 var d = new Date(this.viewDate), year = d.getUTCFullYear(), month = d.getUTCMonth(), startYear = this.o.startDate !== -Infinity ? this.o.startDate.getUTCFullYear() : -Infinity, startMonth = this.o.startDate !== -Infinity ? this.o.startDate.getUTCMonth() : -Infinity, endYear = this.o.endDate !== Infinity ? this.o.endDate.getUTCFullYear() : Infinity, endMonth = this.o.endDate !== Infinity ? this.o.endDate.getUTCMonth() : Infinity, prevIsDisabled, nextIsDisabled, factor = 1; 35232 switch (this.viewMode) { 35233 case 4: 35234 factor *= 10; 35235 /* falls through */ 35236 case 3: 35237 factor *= 10; 35238 /* falls through */ 35239 case 2: 35240 factor *= 10; 35241 /* falls through */ 35242 case 1: 35243 prevIsDisabled = Math.floor(year / factor) * factor <= startYear; 35244 nextIsDisabled = Math.floor(year / factor) * factor + factor > endYear; 35245 break; 35246 case 0: 35247 prevIsDisabled = year <= startYear && month <= startMonth; 35248 nextIsDisabled = year >= endYear && month >= endMonth; 35249 break; 35250 } 35251 this.picker.find(".prev").toggleClass("disabled", prevIsDisabled); 35252 this.picker.find(".next").toggleClass("disabled", nextIsDisabled); 35253 }, 35254 click: function(e) { 35255 e.preventDefault(); 35256 e.stopPropagation(); 35257 var target, dir, day, year, month; 35258 target = $3(e.target); 35259 if (target.hasClass("datepicker-switch") && this.viewMode !== this.o.maxViewMode) { 35260 this.setViewMode(this.viewMode + 1); 35261 } 35262 if (target.hasClass("today") && !target.hasClass("day")) { 35263 this.setViewMode(0); 35264 this._setDate(UTCToday(), this.o.todayBtn === "linked" ? null : "view"); 35265 } 35266 if (target.hasClass("clear")) { 35267 this.clearDates(); 35268 } 35269 if (!target.hasClass("disabled")) { 35270 if (target.hasClass("month") || target.hasClass("year") || target.hasClass("decade") || target.hasClass("century")) { 35271 this.viewDate.setUTCDate(1); 35272 day = 1; 35273 if (this.viewMode === 1) { 35274 month = target.parent().find("span").index(target); 35275 year = this.viewDate.getUTCFullYear(); 35276 this.viewDate.setUTCMonth(month); 35277 } else { 35278 month = 0; 35279 year = Number(target.text()); 35280 this.viewDate.setUTCFullYear(year); 35281 } 35282 this._trigger(DPGlobal.viewModes[this.viewMode - 1].e, this.viewDate); 35283 if (this.viewMode === this.o.minViewMode) { 35284 this._setDate(UTCDate(year, month, day)); 35285 } else { 35286 this.setViewMode(this.viewMode - 1); 35287 this.fill(); 35288 } 35289 } 35290 } 35291 if (this.picker.is(":visible") && this._focused_from) { 35292 this._focused_from.focus(); 35293 } 35294 delete this._focused_from; 35295 }, 35296 dayCellClick: function(e) { 35297 var $target = $3(e.currentTarget); 35298 var timestamp = $target.data("date"); 35299 var date = new Date(timestamp); 35300 if (this.o.updateViewDate) { 35301 if (date.getUTCFullYear() !== this.viewDate.getUTCFullYear()) { 35302 this._trigger("changeYear", this.viewDate); 35303 } 35304 if (date.getUTCMonth() !== this.viewDate.getUTCMonth()) { 35305 this._trigger("changeMonth", this.viewDate); 35306 } 35307 } 35308 this._setDate(date); 35309 }, 35310 // Clicked on prev or next 35311 navArrowsClick: function(e) { 35312 var $target = $3(e.currentTarget); 35313 var dir = $target.hasClass("prev") ? -1 : 1; 35314 if (this.viewMode !== 0) { 35315 dir *= DPGlobal.viewModes[this.viewMode].navStep * 12; 35316 } 35317 this.viewDate = this.moveMonth(this.viewDate, dir); 35318 this._trigger(DPGlobal.viewModes[this.viewMode].e, this.viewDate); 35319 this.fill(); 35320 }, 35321 _toggle_multidate: function(date) { 35322 var ix = this.dates.contains(date); 35323 if (!date) { 35324 this.dates.clear(); 35325 } 35326 if (ix !== -1) { 35327 if (this.o.multidate === true || this.o.multidate > 1 || this.o.toggleActive) { 35328 this.dates.remove(ix); 35329 } 35330 } else if (this.o.multidate === false) { 35331 this.dates.clear(); 35332 this.dates.push(date); 35333 } else { 35334 this.dates.push(date); 35335 } 35336 if (typeof this.o.multidate === "number") 35337 while (this.dates.length > this.o.multidate) this.dates.remove(0); 35338 }, 35339 _setDate: function(date, which) { 35340 if (!which || which === "date") 35341 this._toggle_multidate(date && new Date(date)); 35342 if (!which && this.o.updateViewDate || which === "view") 35343 this.viewDate = date && new Date(date); 35344 this.fill(); 35345 this.setValue(); 35346 if (!which || which !== "view") { 35347 this._trigger("changeDate"); 35348 } 35349 this.inputField.trigger("change"); 35350 if (this.o.autoclose && (!which || which === "date")) { 35351 this.hide(); 35352 } 35353 }, 35354 moveDay: function(date, dir) { 35355 var newDate = new Date(date); 35356 newDate.setUTCDate(date.getUTCDate() + dir); 35357 return newDate; 35358 }, 35359 moveWeek: function(date, dir) { 35360 return this.moveDay(date, dir * 7); 35361 }, 35362 moveMonth: function(date, dir) { 35363 if (!isValidDate(date)) return this.o.defaultViewDate; 35364 if (!dir) return date; 35365 var new_date = new Date(date.valueOf()), day = new_date.getUTCDate(), month = new_date.getUTCMonth(), mag = Math.abs(dir), new_month, test; 35366 dir = dir > 0 ? 1 : -1; 35367 if (mag === 1) { 35368 test = dir === -1 ? ( 35369 // If going back one month, make sure month is not current month 35370 // (eg, Mar 31 -> Feb 31 == Feb 28, not Mar 02) 35371 function() { 35372 return new_date.getUTCMonth() === month; 35373 } 35374 ) : ( 35375 // If going forward one month, make sure month is as expected 35376 // (eg, Jan 31 -> Feb 31 == Feb 28, not Mar 02) 35377 function() { 35378 return new_date.getUTCMonth() !== new_month; 35379 } 35380 ); 35381 new_month = month + dir; 35382 new_date.setUTCMonth(new_month); 35383 new_month = (new_month + 12) % 12; 35384 } else { 35385 for (var i = 0; i < mag; i++) 35386 new_date = this.moveMonth(new_date, dir); 35387 new_month = new_date.getUTCMonth(); 35388 new_date.setUTCDate(day); 35389 test = function() { 35390 return new_month !== new_date.getUTCMonth(); 35391 }; 35392 } 35393 while (test()) { 35394 new_date.setUTCDate(--day); 35395 new_date.setUTCMonth(new_month); 35396 } 35397 return new_date; 35398 }, 35399 moveYear: function(date, dir) { 35400 return this.moveMonth(date, dir * 12); 35401 }, 35402 moveAvailableDate: function(date, dir, fn) { 35403 do { 35404 date = this[fn](date, dir); 35405 if (!this.dateWithinRange(date)) return false; 35406 fn = "moveDay"; 35407 } while (this.dateIsDisabled(date)); 35408 return date; 35409 }, 35410 weekOfDateIsDisabled: function(date) { 35411 return $3.inArray(date.getUTCDay(), this.o.daysOfWeekDisabled) !== -1; 35412 }, 35413 dateIsDisabled: function(date) { 35414 return this.weekOfDateIsDisabled(date) || $3.grep(this.o.datesDisabled, function(d) { 35415 return isUTCEquals(date, d); 35416 }).length > 0; 35417 }, 35418 dateWithinRange: function(date) { 35419 return date >= this.o.startDate && date <= this.o.endDate; 35420 }, 35421 keydown: function(e) { 35422 if (!this.picker.is(":visible")) { 35423 if (e.keyCode === 40 || e.keyCode === 27) { 35424 this.show(); 35425 e.stopPropagation(); 35426 } 35427 return; 35428 } 35429 var dateChanged = false, dir, newViewDate, focusDate = this.focusDate || this.viewDate; 35430 switch (e.keyCode) { 35431 case 27: 35432 if (this.focusDate) { 35433 this.focusDate = null; 35434 this.viewDate = this.dates.get(-1) || this.viewDate; 35435 this.fill(); 35436 } else this.hide(); 35437 e.preventDefault(); 35438 e.stopPropagation(); 35439 break; 35440 case 37: 35441 // left 35442 case 38: 35443 // up 35444 case 39: 35445 // right 35446 case 40: 35447 if (!this.o.keyboardNavigation || this.o.daysOfWeekDisabled.length === 7) 35448 break; 35449 dir = e.keyCode === 37 || e.keyCode === 38 ? -1 : 1; 35450 if (this.viewMode === 0) { 35451 if (e.ctrlKey) { 35452 newViewDate = this.moveAvailableDate(focusDate, dir, "moveYear"); 35453 if (newViewDate) this._trigger("changeYear", this.viewDate); 35454 } else if (e.shiftKey) { 35455 newViewDate = this.moveAvailableDate(focusDate, dir, "moveMonth"); 35456 if (newViewDate) this._trigger("changeMonth", this.viewDate); 35457 } else if (e.keyCode === 37 || e.keyCode === 39) { 35458 newViewDate = this.moveAvailableDate(focusDate, dir, "moveDay"); 35459 } else if (!this.weekOfDateIsDisabled(focusDate)) { 35460 newViewDate = this.moveAvailableDate(focusDate, dir, "moveWeek"); 35461 } 35462 } else if (this.viewMode === 1) { 35463 if (e.keyCode === 38 || e.keyCode === 40) { 35464 dir = dir * 4; 35465 } 35466 newViewDate = this.moveAvailableDate(focusDate, dir, "moveMonth"); 35467 } else if (this.viewMode === 2) { 35468 if (e.keyCode === 38 || e.keyCode === 40) { 35469 dir = dir * 4; 35470 } 35471 newViewDate = this.moveAvailableDate(focusDate, dir, "moveYear"); 35472 } 35473 if (newViewDate) { 35474 this.focusDate = this.viewDate = newViewDate; 35475 this.setValue(); 35476 this.fill(); 35477 e.preventDefault(); 35478 } 35479 break; 35480 case 13: 35481 if (!this.o.forceParse) break; 35482 focusDate = this.focusDate || this.dates.get(-1) || this.viewDate; 35483 if (this.o.keyboardNavigation) { 35484 this._toggle_multidate(focusDate); 35485 dateChanged = true; 35486 } 35487 this.focusDate = null; 35488 this.viewDate = this.dates.get(-1) || this.viewDate; 35489 this.setValue(); 35490 this.fill(); 35491 if (this.picker.is(":visible")) { 35492 e.preventDefault(); 35493 e.stopPropagation(); 35494 if (this.o.autoclose) this.hide(); 35495 } 35496 break; 35497 case 9: 35498 this.focusDate = null; 35499 this.viewDate = this.dates.get(-1) || this.viewDate; 35500 this.fill(); 35501 this.hide(); 35502 break; 35503 } 35504 if (dateChanged) { 35505 if (this.dates.length) this._trigger("changeDate"); 35506 else this._trigger("clearDate"); 35507 this.inputField.trigger("change"); 35508 } 35509 }, 35510 setViewMode: function(viewMode) { 35511 this.viewMode = viewMode; 35512 this.picker.children("div").hide().filter(".datepicker-" + DPGlobal.viewModes[this.viewMode].clsName).show(); 35513 this.updateNavArrows(); 35514 this._trigger("changeViewMode", new Date(this.viewDate)); 35515 } 35516 }; 35517 var DateRangePicker = function(element, options) { 35518 $3.data(element, "datepicker", this); 35519 this.element = $3(element); 35520 this.inputs = $3.map(options.inputs, function(i) { 35521 return i.jquery ? i[0] : i; 35522 }); 35523 delete options.inputs; 35524 this.keepEmptyValues = options.keepEmptyValues; 35525 delete options.keepEmptyValues; 35526 datepickerPlugin.call($3(this.inputs), options).on("changeDate", $3.proxy(this.dateUpdated, this)); 35527 this.pickers = $3.map(this.inputs, function(i) { 35528 return $3.data(i, "datepicker"); 35529 }); 35530 this.updateDates(); 35531 }; 35532 DateRangePicker.prototype = { 35533 updateDates: function() { 35534 this.dates = $3.map(this.pickers, function(i) { 35535 return i.getUTCDate(); 35536 }); 35537 this.updateRanges(); 35538 }, 35539 updateRanges: function() { 35540 var range = $3.map(this.dates, function(d) { 35541 return d.valueOf(); 35542 }); 35543 $3.each(this.pickers, function(i, p) { 35544 p.setRange(range); 35545 }); 35546 }, 35547 clearDates: function() { 35548 $3.each(this.pickers, function(i, p) { 35549 p.clearDates(); 35550 }); 35551 }, 35552 dateUpdated: function(e) { 35553 if (this.updating) return; 35554 this.updating = true; 35555 var dp = $3.data(e.target, "datepicker"); 35556 if (dp === undefined2) { 35557 return; 35558 } 35559 var new_date = dp.getUTCDate(), keep_empty_values = this.keepEmptyValues, i = $3.inArray(e.target, this.inputs), j = i - 1, k = i + 1, l = this.inputs.length; 35560 if (i === -1) return; 35561 $3.each(this.pickers, function(i2, p) { 35562 if (!p.getUTCDate() && (p === dp || !keep_empty_values)) 35563 p.setUTCDate(new_date); 35564 }); 35565 if (new_date < this.dates[j]) { 35566 while (j >= 0 && new_date < this.dates[j] && (this.pickers[j].element.val() || "").length > 0) { 35567 this.pickers[j--].setUTCDate(new_date); 35568 } 35569 } else if (new_date > this.dates[k]) { 35570 while (k < l && new_date > this.dates[k] && (this.pickers[k].element.val() || "").length > 0) { 35571 this.pickers[k++].setUTCDate(new_date); 35572 } 35573 } 35574 this.updateDates(); 35575 delete this.updating; 35576 }, 35577 destroy: function() { 35578 $3.map(this.pickers, function(p) { 35579 p.destroy(); 35580 }); 35581 $3(this.inputs).off("changeDate", this.dateUpdated); 35582 delete this.element.data().datepicker; 35583 }, 35584 remove: alias( 35585 "destroy", 35586 "Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead" 35587 ) 35588 }; 35589 function opts_from_el(el, prefix) { 35590 var data = $3(el).data(), out = {}, inkey, replace = new RegExp("^" + prefix.toLowerCase() + "([A-Z])"); 35591 prefix = new RegExp("^" + prefix.toLowerCase()); 35592 function re_lower(_, a) { 35593 return a.toLowerCase(); 35594 } 35595 for (var key in data) 35596 if (prefix.test(key)) { 35597 inkey = key.replace(replace, re_lower); 35598 out[inkey] = data[key]; 35599 } 35600 return out; 35601 } 35602 function opts_from_locale(lang) { 35603 var out = {}; 35604 if (!dates[lang]) { 35605 lang = lang.split("-")[0]; 35606 if (!dates[lang]) return; 35607 } 35608 var d = dates[lang]; 35609 $3.each(locale_opts, function(i, k) { 35610 if (k in d) out[k] = d[k]; 35611 }); 35612 return out; 35613 } 35614 var old = $3.fn.datepicker; 35615 var datepickerPlugin = function(option) { 35616 var args = Array.apply(null, arguments); 35617 args.shift(); 35618 var internal_return; 35619 this.each(function() { 35620 var $this = $3(this), data = $this.data("datepicker"), options = typeof option === "object" && option; 35621 if (!data) { 35622 var elopts = opts_from_el(this, "date"), xopts = $3.extend({}, defaults, elopts, options), locopts = opts_from_locale(xopts.language), opts = $3.extend({}, defaults, locopts, elopts, options); 35623 if ($this.hasClass("input-daterange") || opts.inputs) { 35624 $3.extend(opts, { 35625 inputs: opts.inputs || $this.find("input").toArray() 35626 }); 35627 data = new DateRangePicker(this, opts); 35628 } else { 35629 data = new Datepicker(this, opts); 35630 } 35631 $this.data("datepicker", data); 35632 } 35633 if (typeof option === "string" && typeof data[option] === "function") { 35634 internal_return = data[option].apply(data, args); 35635 } 35636 }); 35637 if (internal_return === undefined2 || internal_return instanceof Datepicker || internal_return instanceof DateRangePicker) 35638 return this; 35639 if (this.length > 1) 35640 throw new Error( 35641 "Using only allowed for the collection of a single element (" + option + " function)" 35642 ); 35643 else return internal_return; 35644 }; 35645 $3.fn.datepicker = datepickerPlugin; 35646 var defaults = $3.fn.datepicker.defaults = { 35647 assumeNearbyYear: false, 35648 autoclose: false, 35649 beforeShowDay: $3.noop, 35650 beforeShowMonth: $3.noop, 35651 beforeShowYear: $3.noop, 35652 beforeShowDecade: $3.noop, 35653 beforeShowCentury: $3.noop, 35654 calendarWeeks: false, 35655 clearBtn: false, 35656 toggleActive: false, 35657 daysOfWeekDisabled: [], 35658 daysOfWeekHighlighted: [], 35659 datesDisabled: [], 35660 endDate: Infinity, 35661 forceParse: true, 35662 format: "mm/dd/yyyy", 35663 isInline: null, 35664 keepEmptyValues: false, 35665 keyboardNavigation: true, 35666 language: "en", 35667 minViewMode: 0, 35668 maxViewMode: 4, 35669 multidate: false, 35670 multidateSeparator: ",", 35671 orientation: "auto", 35672 rtl: false, 35673 startDate: -Infinity, 35674 startView: 0, 35675 todayBtn: false, 35676 todayHighlight: false, 35677 updateViewDate: true, 35678 weekStart: 0, 35679 disableTouchKeyboard: false, 35680 enableOnReadonly: true, 35681 showOnFocus: true, 35682 zIndexOffset: 10, 35683 container: "body", 35684 immediateUpdates: false, 35685 title: "", 35686 templates: { 35687 leftArrow: "«", 35688 rightArrow: "»" 35689 }, 35690 showWeekDays: true 35691 }; 35692 var locale_opts = $3.fn.datepicker.locale_opts = [ 35693 "format", 35694 "rtl", 35695 "weekStart" 35696 ]; 35697 $3.fn.datepicker.Constructor = Datepicker; 35698 var dates = $3.fn.datepicker.dates = { 35699 en: { 35700 days: [ 35701 "Sunday", 35702 "Monday", 35703 "Tuesday", 35704 "Wednesday", 35705 "Thursday", 35706 "Friday", 35707 "Saturday" 35708 ], 35709 daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], 35710 daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"], 35711 months: [ 35712 "January", 35713 "February", 35714 "March", 35715 "April", 35716 "May", 35717 "June", 35718 "July", 35719 "August", 35720 "September", 35721 "October", 35722 "November", 35723 "December" 35724 ], 35725 monthsShort: [ 35726 "Jan", 35727 "Feb", 35728 "Mar", 35729 "Apr", 35730 "May", 35731 "Jun", 35732 "Jul", 35733 "Aug", 35734 "Sep", 35735 "Oct", 35736 "Nov", 35737 "Dec" 35738 ], 35739 today: "Today", 35740 clear: "Clear", 35741 titleFormat: "MM yyyy" 35742 } 35743 }; 35744 var DPGlobal = { 35745 viewModes: [ 35746 { 35747 names: ["days", "month"], 35748 clsName: "days", 35749 e: "changeMonth" 35750 }, 35751 { 35752 names: ["months", "year"], 35753 clsName: "months", 35754 e: "changeYear", 35755 navStep: 1 35756 }, 35757 { 35758 names: ["years", "decade"], 35759 clsName: "years", 35760 e: "changeDecade", 35761 navStep: 10 35762 }, 35763 { 35764 names: ["decades", "century"], 35765 clsName: "decades", 35766 e: "changeCentury", 35767 navStep: 100 35768 }, 35769 { 35770 names: ["centuries", "millennium"], 35771 clsName: "centuries", 35772 e: "changeMillennium", 35773 navStep: 1e3 35774 } 35775 ], 35776 validParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g, 35777 nonpunctuation: /[^ -\/:-@\u5e74\u6708\u65e5\[-`{-~\t\n\r]+/g, 35778 parseFormat: function(format) { 35779 if (typeof format.toValue === "function" && typeof format.toDisplay === "function") 35780 return format; 35781 var separators = format.replace(this.validParts, "\0").split("\0"), parts = format.match(this.validParts); 35782 if (!separators || !separators.length || !parts || parts.length === 0) { 35783 throw new Error("Invalid date format."); 35784 } 35785 return { separators, parts }; 35786 }, 35787 parseDate: function(date, format, language, assumeNearby) { 35788 if (!date) return undefined2; 35789 if (date instanceof Date) return date; 35790 if (typeof format === "string") format = DPGlobal.parseFormat(format); 35791 if (format.toValue) return format.toValue(date, format, language); 35792 var fn_map = { 35793 d: "moveDay", 35794 m: "moveMonth", 35795 w: "moveWeek", 35796 y: "moveYear" 35797 }, dateAliases = { 35798 yesterday: "-1d", 35799 today: "+0d", 35800 tomorrow: "+1d" 35801 }, parts, part, dir, i, fn; 35802 if (date in dateAliases) { 35803 date = dateAliases[date]; 35804 } 35805 if (/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/i.test(date)) { 35806 parts = date.match(/([\-+]\d+)([dmwy])/gi); 35807 date = /* @__PURE__ */ new Date(); 35808 for (i = 0; i < parts.length; i++) { 35809 part = parts[i].match(/([\-+]\d+)([dmwy])/i); 35810 dir = Number(part[1]); 35811 fn = fn_map[part[2].toLowerCase()]; 35812 date = Datepicker.prototype[fn](date, dir); 35813 } 35814 return Datepicker.prototype._zero_utc_time(date); 35815 } 35816 parts = date && date.match(this.nonpunctuation) || []; 35817 function applyNearbyYear(year, threshold) { 35818 if (threshold === true) threshold = 10; 35819 if (year < 100) { 35820 year += 2e3; 35821 if (year > (/* @__PURE__ */ new Date()).getFullYear() + threshold) { 35822 year -= 100; 35823 } 35824 } 35825 return year; 35826 } 35827 var parsed = {}, setters_order = ["yyyy", "yy", "M", "MM", "m", "mm", "d", "dd"], setters_map = { 35828 yyyy: function(d, v) { 35829 return d.setUTCFullYear( 35830 assumeNearby ? applyNearbyYear(v, assumeNearby) : v 35831 ); 35832 }, 35833 m: function(d, v) { 35834 if (isNaN(d)) return d; 35835 v -= 1; 35836 while (v < 0) v += 12; 35837 v %= 12; 35838 d.setUTCMonth(v); 35839 while (d.getUTCMonth() !== v) d.setUTCDate(d.getUTCDate() - 1); 35840 return d; 35841 }, 35842 d: function(d, v) { 35843 return d.setUTCDate(v); 35844 } 35845 }, val, filtered; 35846 setters_map["yy"] = setters_map["yyyy"]; 35847 setters_map["M"] = setters_map["MM"] = setters_map["mm"] = setters_map["m"]; 35848 setters_map["dd"] = setters_map["d"]; 35849 date = UTCToday(); 35850 var fparts = format.parts.slice(); 35851 if (parts.length !== fparts.length) { 35852 fparts = $3(fparts).filter(function(i2, p) { 35853 return $3.inArray(p, setters_order) !== -1; 35854 }).toArray(); 35855 } 35856 function match_part() { 35857 var m = this.slice(0, parts[i].length), p = parts[i].slice(0, m.length); 35858 return m.toLowerCase() === p.toLowerCase(); 35859 } 35860 if (parts.length === fparts.length) { 35861 var cnt; 35862 for (i = 0, cnt = fparts.length; i < cnt; i++) { 35863 val = parseInt(parts[i], 10); 35864 part = fparts[i]; 35865 if (isNaN(val)) { 35866 switch (part) { 35867 case "MM": 35868 filtered = $3(dates[language].months).filter(match_part); 35869 val = $3.inArray(filtered[0], dates[language].months) + 1; 35870 break; 35871 case "M": 35872 filtered = $3(dates[language].monthsShort).filter(match_part); 35873 val = $3.inArray(filtered[0], dates[language].monthsShort) + 1; 35874 break; 35875 } 35876 } 35877 parsed[part] = val; 35878 } 35879 var _date, s; 35880 for (i = 0; i < setters_order.length; i++) { 35881 s = setters_order[i]; 35882 if (s in parsed && !isNaN(parsed[s])) { 35883 _date = new Date(date); 35884 setters_map[s](_date, parsed[s]); 35885 if (!isNaN(_date)) date = _date; 35886 } 35887 } 35888 } 35889 return date; 35890 }, 35891 formatDate: function(date, format, language) { 35892 if (!date) return ""; 35893 if (typeof format === "string") format = DPGlobal.parseFormat(format); 35894 if (format.toDisplay) return format.toDisplay(date, format, language); 35895 var val = { 35896 d: date.getUTCDate(), 35897 D: dates[language].daysShort[date.getUTCDay()], 35898 DD: dates[language].days[date.getUTCDay()], 35899 m: date.getUTCMonth() + 1, 35900 M: dates[language].monthsShort[date.getUTCMonth()], 35901 MM: dates[language].months[date.getUTCMonth()], 35902 yy: date.getUTCFullYear().toString().substring(2), 35903 yyyy: date.getUTCFullYear() 35904 }; 35905 val.dd = (val.d < 10 ? "0" : "") + val.d; 35906 val.mm = (val.m < 10 ? "0" : "") + val.m; 35907 date = []; 35908 var seps = $3.extend([], format.separators); 35909 for (var i = 0, cnt = format.parts.length; i <= cnt; i++) { 35910 if (seps.length) date.push(seps.shift()); 35911 date.push(val[format.parts[i]]); 35912 } 35913 return date.join(""); 35914 }, 35915 headTemplate: '<thead><tr><th colspan="7" class="datepicker-title"></th></tr><tr><th class="prev">' + defaults.templates.leftArrow + '</th><th colspan="5" class="datepicker-switch"></th><th class="next">' + defaults.templates.rightArrow + "</th></tr></thead>", 35916 contTemplate: '<tbody><tr><td colspan="7"></td></tr></tbody>', 35917 footTemplate: '<tfoot><tr><th colspan="7" class="today"></th></tr><tr><th colspan="7" class="clear"></th></tr></tfoot>' 35918 }; 35919 DPGlobal.template = '<div class="datepicker"><div class="datepicker-days"><table class="table-condensed">' + DPGlobal.headTemplate + "<tbody></tbody>" + DPGlobal.footTemplate + '</table></div><div class="datepicker-months"><table class="table-condensed">' + DPGlobal.headTemplate + DPGlobal.contTemplate + DPGlobal.footTemplate + '</table></div><div class="datepicker-years"><table class="table-condensed">' + DPGlobal.headTemplate + DPGlobal.contTemplate + DPGlobal.footTemplate + '</table></div><div class="datepicker-decades"><table class="table-condensed">' + DPGlobal.headTemplate + DPGlobal.contTemplate + DPGlobal.footTemplate + '</table></div><div class="datepicker-centuries"><table class="table-condensed">' + DPGlobal.headTemplate + DPGlobal.contTemplate + DPGlobal.footTemplate + "</table></div></div>"; 35920 $3.fn.datepicker.DPGlobal = DPGlobal; 35921 $3.fn.datepicker.noConflict = function() { 35922 $3.fn.datepicker = old; 35923 return this; 35924 }; 35925 $3.fn.datepicker.version = "1.10.0"; 35926 $3.fn.datepicker.deprecated = function(msg) { 35927 var console2 = window.console; 35928 if (console2 && console2.warn) { 35929 console2.warn("DEPRECATED: " + msg); 35930 } 35931 }; 35932 $3(document).on( 35933 "focus.datepicker.data-api click.datepicker.data-api",
35934 '[data-provide="datepicker"]', 35935 function(e) { 35936 var $this = $3(this); 35937 if ($this.data("datepicker")) return; 35938 e.preventDefault(); 35939 datepickerPlugin.call($this, "show"); 35940 } 35941 ); 35942 $3(function() { 35943 datepickerPlugin.call($3('[data-provide="datepicker-inline"]')); 35944 }); 35945 }); 35946 } 35947 }); 35948 35949
vendor: 4,230 bytes, lines 35949-36065
35949// apps/base/assets/javascripts/vendor/balancetext.js 35950 var require_balancetext = __commonJS({ 35951 "apps/base/assets/javascripts/vendor/balancetext.js"(exports, module) { 35952 "use strict"; 35953 init_esbuild_shims(); 35954 (function(root, factory) { 35955 if (typeof define === "function" && define.amd) { 35956 define([], factory); 35957 } else if (typeof module === "object" && module.exports) { 35958 module.exports = factory(); 35959 } else { 35960 root.balanceText = factory(); 35961 } 35962 })(exports, () => { 35963 let breakMatches, wsnwMatches, wsnwOffset; 35964 const watching = { 35965 sel: [], 35966 // default class to watch 35967 el: [] 35968 }; 35969 let handlersInitialized = false; 35970 let polyfilled = false; 35971 function noop() { 35972 } 35973 function forEach(elements, callback) { 35974 Array.prototype.forEach.call(elements, callback); 35975 } 35976 function ready(fn) { 35977 if (document.readyState !== "loading") { 35978 fn(); 35979 } else if (document.addEventListener) { 35980 document.addEventListener("DOMContentLoaded", fn); 35981 } else { 35982 document.attachEvent("onreadystatechange", () => { 35983 if (document.readyState !== "loading") { 35984 fn(); 35985 } 35986 }); 35987 } 35988 } 35989 function debounce(func, threshold, execAsap, ...args) { 35990 let timeout; 35991 return function() { 35992 const obj = this; 35993 function delayed() { 35994 if (!execAsap) { 35995 func.apply(obj, args); 35996 } 35997 timeout = null; 35998 } 35999 if (timeout) { 36000 clearTimeout(timeout); 36001 } else if (execAsap) { 36002 func.apply(obj, args); 36003 } 36004 timeout = setTimeout(delayed, threshold || 100); 36005 }; 36006 } 36007 function hasTextWrap() { 36008 if (typeof window === "undefined") { 36009 return false; 36010 } 36011 const { style } = document.documentElement; 36012 return style.textWrap || style.WebkitTextWrap || style.MozTextWrap || style.MsTextWrap; 36013 } 36014 function NextWS_params() { 36015 this.reset(); 36016 } 36017 NextWS_params.prototype.reset = function() { 36018 this.index = 0; 36019 this.width = 0; 36020 }; 36021 function isWhiteSpaceNoWrap(index) { 36022 return wsnwMatches.some((range) => range.start < index && index < range.end); 36023 } 36024 function recursiveCalcNoWrapOffsetsForLine(el, includeTag) { 36025 if (el.nodeType === el.ELEMENT_NODE) { 36026 const style = window.getComputedStyle(el); 36027 if (style.whiteSpace === "nowrap") { 36028 const len = el.outerHTML.length; 36029 wsnwMatches.push({ start: wsnwOffset, end: wsnwOffset + len }); 36030 wsnwOffset += len; 36031 } else { 36032 forEach(el.childNodes, (child) => { 36033 recursiveCalcNoWrapOffsetsForLine(child, true); 36034 }); 36035 if (includeTag) { 36036 wsnwOffset += el.outerHTML.length - el.innerHTML.length; 36037 } 36038 } 36039 } else if (el.nodeType === el.COMMENT_NODE) { 36040 wsnwOffset += el.length + 7; 36041 } else if (el.nodeType === el.PROCESSING_INSTRUCTION_NODE) { 36042 wsnwOffset += el.length + 2; 36043 } else { 36044 wsnwOffset += el.length; 36045 } 36046 } 36047 function calcNoWrapOffsetsForLine(el, oldWS, lineCharOffset) { 36048 if (lineCharOffset === 0) { 36049 el.style.whiteSpace = oldWS; 36050 wsnwOffset = 0; 36051 wsnwMatches = []; 36052 recursiveCalcNoWrapOffsetsForLine(el, false); 36053 el.style.whiteSpace = "nowrap"; 36054 } else { 36055 const newMatches = []; 36056 wsnwMatches.forEach((match) => { 36057 if (match.start > lineCharOffset) { 36058 newMatches.push({ start: match.start - lineCharOffset, end: match.end - lineCharOffset }); 36059 } 36060 }); 36061 wsnwMatches = newMatches; 36062 } 36063 } 36064 function removeTags(el) { 36065 let brs = el.querySelectorAll('br[data-owner="balance-text-hyphen"]');
36066 forEach(brs, (br) => { 36067 br.outerHTML = ""; 36068 }); 36069 brs = el.querySelectorAll('br[data-owner="balance-text"]'); 36070 forEach(brs, (br) => { 36071 br.outerHTML = " "; 36072 }); 36073 let spans = el.querySelectorAll('span[data-owner="balance-text-softhyphen"]'); 36074 if (spans.length > 0) { 36075 forEach(spans, (span) => { 36076 const textNode = document.createTextNode("\xAD"); 36077 span.parentNode.insertBefore(textNode, span); 36078 span.parentNode.removeChild(span); 36079 }); 36080 } 36081 spans = el.querySelectorAll('span[data-owner="balance-text-justify"]'); 36082 if (spans.length > 0) { 36083 let txt = ""; 36084 forEach(spans, (span) => { 36085 txt += span.textContent; 36086 span.parentNode.removeChild(span); 36087 }); 36088 el.innerHTML = txt; 36089 } 36090 } 36091 const isJustified = function(el) { 36092 const style = el.currentStyle || window.getComputedStyle(el, null); 36093 return style.textAlign === "justify"; 36094 }; 36095 function justify(el, txt, conWidth) { 36096 txt = txt.trim(); 36097 const words = txt.split(" ").length; 36098 txt = `${txt} `; 36099 if (words < 2) { 36100 return txt; 36101 } 36102 const tmp = document.createElement("span"); 36103 tmp.innerHTML = txt; 36104 el.appendChild(tmp); 36105 const size = tmp.offsetWidth; 36106 tmp.parentNode.removeChild(tmp); 36107 const wordSpacing = Math.floor((conWidth - size) / (words - 1)); 36108 tmp.style.wordSpacing = `${wordSpacing}px`; 36109 tmp.setAttribute("data-owner", "balance-text-justify"); 36110 const div = document.createElement("div"); 36111 div.appendChild(tmp); 36112 return div.innerHTML; 36113 } 36114 function isBreakChar(txt, index) { 36115 const re = /([^\S\u00a0]|-|\u2014|\u2013|\u00ad)(?![^<]*>)/g; 36116 let match; 36117 if (!breakMatches) { 36118 breakMatches = []; 36119 match = re.exec(txt); 36120 while (match !== null) { 36121 if (!isWhiteSpaceNoWrap(match.index)) { 36122 breakMatches.push(match.index); 36123 } 36124 match = re.exec(txt); 36125 } 36126 } 36127 return breakMatches.indexOf(index) !== -1; 36128 } 36129 function isBreakOpportunity(txt, index) { 36130 return index === 0 || index === txt.length || isBreakChar(txt, index - 1) && !isBreakChar(txt, index); 36131 } 36132 function findBreakOpportunity(el, txt, conWidth, desWidth, dir, c, ret) { 36133 let w; 36134 if (txt && typeof txt === "string") { 36135 for (; ; ) { 36136 while (!isBreakOpportunity(txt, c)) { 36137 c += dir; 36138 } 36139 el.innerHTML = txt.substr(0, c); 36140 w = el.offsetWidth; 36141 if (dir < 0) { 36142 if (w <= desWidth || w <= 0 || c === 0) { 36143 break; 36144 } 36145 } else if (desWidth <= w || conWidth <= w || c === txt.length) { 36146 break; 36147 } 36148 c += dir; 36149 } 36150 } 36151 ret.index = c; 36152 ret.width = w; 36153 } 36154 function getSpaceWidth(el, h) { 36155 const container = document.createElement("div"); 36156 container.style.display = "block"; 36157 container.style.position = "absolute"; 36158 container.style.bottom = 0; 36159 container.style.right = 0; 36160 container.style.width = 0; 36161 container.style.height = 0; 36162 container.style.margin = 0; 36163 container.style.padding = 0; 36164 container.style.visibility = "hidden"; 36165 container.style.overflow = "hidden"; 36166 const space = document.createElement("span"); 36167 space.style.fontSize = "2000px"; 36168 space.innerHTML = " "; 36169 container.appendChild(space); 36170 el.appendChild(container); 36171 const dims = space.getBoundingClientRect(); 36172 container.parentNode.removeChild(container); 36173 const spaceRatio = dims.height / dims.width; 36174 return h / spaceRatio; 36175 } 36176 function getElementsList(elements) { 36177 if (!elements) { 36178 return []; 36179 } 36180 if (typeof elements === "string") { 36181 return document.querySelectorAll(elements); 36182 } 36183 if (elements.tagName && elements.querySelectorAll) { 36184 return [elements]; 36185 } 36186 return elements; 36187 } 36188 function balanceText(elements) {
vendor: 1,914 bytes, lines 36189-36224
36189 forEach(getElementsList(elements), (el) => { 36190 const maxTextWidth = 5e3; 36191 removeTags(el); 36192 const oldWS = el.style.whiteSpace; 36193 const oldFloat = el.style.float; 36194 const oldDisplay = el.style.display; 36195 const oldPosition = el.style.position; 36196 const oldLH = el.style.lineHeight; 36197 el.style.lineHeight = "normal"; 36198 const containerWidth = el.offsetWidth; 36199 const containerHeight = el.offsetHeight; 36200 el.style.whiteSpace = "nowrap"; 36201 el.style.float = "none"; 36202 el.style.display = "inline"; 36203 el.style.position = "static"; 36204 let nowrapWidth = el.offsetWidth; 36205 const nowrapHeight = el.offsetHeight; 36206 const spaceWidth = oldWS === "pre-wrap" ? 0 : getSpaceWidth(el, nowrapHeight); 36207 if (containerWidth > 0 && // prevent divide by zero 36208 nowrapWidth > containerWidth && // text is more than 1 line 36209 nowrapWidth < maxTextWidth) { 36210 let remainingText = el.innerHTML; 36211 let newText = ""; 36212 let lineText = ""; 36213 const shouldJustify = isJustified(el); 36214 const totLines = Math.round(containerHeight / nowrapHeight); 36215 let remLines = totLines; 36216 let lineCharOffset = 0; 36217 let desiredWidth, guessIndex, le, ge, splitIndex, isHyphen, isSoftHyphen; 36218 while (remLines > 1) { 36219 breakMatches = null; 36220 calcNoWrapOffsetsForLine(el, oldWS, lineCharOffset); 36221 desiredWidth = Math.round((nowrapWidth + spaceWidth) / remLines - spaceWidth); 36222 guessIndex = Math.round((remainingText.length + 1) / remLines) - 1; 36223 le = new NextWS_params(); 36224 findBreakOpportunity(el, remainingText, containerWidth, desiredWidth, -1, guessIndex, le);
36225 ge = new NextWS_params(); 36226 guessIndex = le.index; 36227 findBreakOpportunity(el, remainingText, containerWidth, desiredWidth, 1, guessIndex, ge); 36228 le.reset(); 36229 guessIndex = ge.index; 36230 findBreakOpportunity(el, remainingText, containerWidth, desiredWidth, -1, guessIndex, le); 36231 if (le.index === 0) { 36232 splitIndex = ge.index; 36233 } else if (containerWidth < ge.width || le.index === ge.index) { 36234 splitIndex = le.index; 36235 } else { 36236 splitIndex = Math.abs(desiredWidth - le.width) < Math.abs(ge.width - desiredWidth) ? le.index : ge.index; 36237 } 36238 lineText = remainingText.substr(0, splitIndex).replace(/\s$/, ""); 36239 isSoftHyphen = Boolean(lineText.match(/\u00ad$/)); 36240 if (isSoftHyphen) { 36241 lineText = lineText.replace(/\u00ad$/, '<span data-owner="balance-text-softhyphen">-</span>'); 36242 } 36243 if (shouldJustify) { 36244 newText += justify(el, lineText, containerWidth); 36245 } else { 36246 newText += lineText; 36247 isHyphen = isSoftHyphen || Boolean(lineText.match(/(-|\u2014|\u2013)$/)); 36248 newText += isHyphen ? '<br data-owner="balance-text-hyphen" />' : '<br data-owner="balance-text" aria-hidden="true" />'; 36249 } 36250 remainingText = remainingText.substr(splitIndex); 36251 lineCharOffset = splitIndex; 36252 remLines--; 36253 el.innerHTML = remainingText; 36254 nowrapWidth = el.offsetWidth; 36255 } 36256 if (shouldJustify) { 36257 el.innerHTML = newText + justify(el, remainingText, containerWidth); 36258 } else { 36259 el.innerHTML = newText + remainingText; 36260 } 36261 } 36262 el.style.whiteSpace = oldWS; 36263 el.style.float = oldFloat; 36264 el.style.display = oldDisplay; 36265 el.style.position = oldPosition; 36266 el.style.lineHeight = oldLH; 36267 }); 36268 } 36269 function updateWatched() { 36270 const selectors = watching.sel.join(","); 36271 const selectedElements = getElementsList(selectors); 36272 const elements = Array.prototype.concat.apply(watching.el, selectedElements); 36273 balanceText(elements); 36274 } 36275 function initHandlers() { 36276 if (handlersInitialized) { 36277 return; 36278 } 36279 ready(updateWatched); 36280 window.addEventListener("load", updateWatched); 36281 window.addEventListener("resize", debounce(updateWatched)); 36282 handlersInitialized = true; 36283 } 36284 function balanceTextAndWatch(elements) { 36285 if (typeof elements === "string") { 36286 watching.sel.push(elements); 36287 } else { 36288 forEach(getElementsList(elements), (el) => { 36289 watching.el.push(el); 36290 }); 36291 } 36292 initHandlers(); 36293 updateWatched(); 36294 } 36295 function unwatch(elements) { 36296 if (typeof elements === "string") { 36297 watching.sel = watching.sel.filter((el) => el !== elements); 36298 } else { 36299 elements = getElementsList(elements); 36300 watching.el = watching.el.filter((el) => elements.indexOf(el) === -1); 36301 } 36302 } 36303 function polyfill() { 36304 if (polyfilled) { 36305 return; 36306 } 36307 watching.sel.push(".balance-text"); 36308 initHandlers(); 36309 polyfilled = true; 36310 } 36311 function publicInterface(elements, options) { 36312 if (!elements) { 36313 polyfill(); 36314 } else if (options && options.watch === true) { 36315 balanceTextAndWatch(elements); 36316 } else if (options && options.watch === false) { 36317 unwatch(elements); 36318 } else { 36319 balanceText(elements); 36320 } 36321 } 36322 publicInterface.updateWatched = updateWatched; 36323 if (hasTextWrap()) { 36324 noop.updateWatched = noop; 36325 return noop; 36326 } 36327 return publicInterface; 36328 }); 36329 } 36330 }); 36331 36332
36332// apps/base/assets/javascripts/vendor/email_address_decoder.js 36333 var require_email_address_decoder = __commonJS({ 36334 "apps/base/assets/javascripts/vendor/email_address_decoder.js"() { 36335 "use strict"; 36336 init_esbuild_shims(); 36337 jQuery(window).on("load", function() { 36338 jQuery(":contains('(at)'), [href*='(at)']").each(function(index, element) { 36339 var $element = jQuery(element); 36340 var dup = $element.clone(); 36341 dup.children().remove(); 36342 if (dup.text().search(/\(at\)/g) != -1) { 36343 $element.html($element.html().replace(/\(at\)/g, "@")); 36344 } 36345 if ($element.attr("href") && $element.attr("href").search(/\(at\)/g) != -1) { 36346 $element.attr("href", $element.attr("href").replace(/\(at\)/g, "@")); 36347 } 36348 }); 36349 }); 36350 } 36351 }); 36352 36353
36353// apps/base/assets/javascripts/vendor/hamlcoffee.js 36354 var require_hamlcoffee = __commonJS({ 36355 "apps/base/assets/javascripts/vendor/hamlcoffee.js"() { 36356 "use strict"; 36357 init_esbuild_shims(); 36358 var require2 = function(file, cwd) { 36359 var resolved = require2.resolve(file, cwd || "/"); 36360 var mod = require2.modules[resolved]; 36361 if (!mod) throw new Error( 36362 "Failed to resolve module " + file + ", tried " + resolved 36363 ); 36364 var cached = require2.cache[resolved]; 36365 var res = cached ? cached.exports : mod(); 36366 return res; 36367 }; 36368 require2.paths = []; 36369 require2.modules = {}; 36370 require2.cache = {}; 36371 require2.extensions = [".js", ".coffee", ".json"]; 36372 require2._core = { 36373 "assert": true, 36374 "events": true, 36375 "fs": true, 36376 "path": true, 36377 "vm": true 36378 }; 36379 require2.resolve = /* @__PURE__ */ (function() { 36380 return function(x, cwd) { 36381 if (!cwd) cwd = "/"; 36382 if (require2._core[x]) return x; 36383 var path = require2.modules.path(); 36384 cwd = path.resolve("/", cwd); 36385 var y = cwd || "/"; 36386 if (x.match(/^(?:\.\.?\/|\/)/)) { 36387 var m = loadAsFileSync(path.resolve(y, x)) || loadAsDirectorySync(path.resolve(y, x)); 36388 if (m) return m; 36389 } 36390 var n = loadNodeModulesSync(x, y); 36391 if (n) return n; 36392 throw new Error("Cannot find module '" + x + "'"); 36393 function loadAsFileSync(x2) { 36394 x2 = path.normalize(x2); 36395 if (require2.modules[x2]) { 36396 return x2; 36397 } 36398 for (var i = 0; i < require2.extensions.length; i++) { 36399 var ext = require2.extensions[i]; 36400 if (require2.modules[x2 + ext]) return x2 + ext; 36401 } 36402 } 36403 function loadAsDirectorySync(x2) { 36404 x2 = x2.replace(/\/+$/, ""); 36405 var pkgfile = path.normalize(x2 + "/package.json"); 36406 if (require2.modules[pkgfile]) { 36407 var pkg = require2.modules[pkgfile](); 36408 var b = pkg.browserify; 36409 if (typeof b === "object" && b.main) { 36410 var m2 = loadAsFileSync(path.resolve(x2, b.main)); 36411 if (m2) return m2; 36412 } else if (typeof b === "string") { 36413 var m2 = loadAsFileSync(path.resolve(x2, b)); 36414 if (m2) return m2; 36415 } else if (pkg.main) { 36416 var m2 = loadAsFileSync(path.resolve(x2, pkg.main)); 36417 if (m2) return m2; 36418 } 36419 } 36420 return loadAsFileSync(x2 + "/index"); 36421 } 36422 function loadNodeModulesSync(x2, start) { 36423 var dirs = nodeModulesPathsSync(start); 36424 for (var i = 0; i < dirs.length; i++) { 36425 var dir = dirs[i]; 36426 var m2 = loadAsFileSync(dir + "/" + x2); 36427 if (m2) return m2; 36428 var n2 = loadAsDirectorySync(dir + "/" + x2); 36429 if (n2) return n2; 36430 } 36431 var m2 = loadAsFileSync(x2); 36432 if (m2) return m2; 36433 } 36434 function nodeModulesPathsSync(start) { 36435 var parts; 36436 if (start === "/") parts = [""]; 36437 else parts = path.normalize(start).split("/"); 36438 var dirs = []; 36439 for (var i = parts.length - 1; i >= 0; i--) { 36440 if (parts[i] === "node_modules") continue; 36441 var dir = parts.slice(0, i + 1).join("/") + "/node_modules"; 36442 dirs.push(dir); 36443 } 36444 return dirs; 36445 } 36446 }; 36447 })(); 36448 require2.alias = function(from, to) { 36449 var path = require2.modules.path(); 36450 var res = null; 36451 try { 36452 res = require2.resolve(from + "/package.json", "/"); 36453 } catch (err) { 36454 res = require2.resolve(from, "/"); 36455 } 36456 var basedir = path.dirname(res); 36457 var keys = (Object.keys || function(obj) { 36458 var res2 = []; 36459 for (var key2 in obj) res2.push(key2); 36460 return res2; 36461 })(require2.modules); 36462 for (var i = 0; i < keys.length; i++) { 36463 var key = keys[i]; 36464 if (key.slice(0, basedir.length + 1) === basedir + "/") { 36465 var f = key.slice(basedir.length); 36466 require2.modules[to + f] = require2.modules[basedir + f]; 36467 } else if (key === basedir) { 36468 require2.modules[to] = require2.modules[basedir]; 36469 } 36470 } 36471 }; 36472 (function() { 36473 var process = {}; 36474 var global2 = typeof window !== "undefined" ? window : {}; 36475 var definedProcess = false;
36476 require2.define = function(filename, fn) { 36477 if (!definedProcess && require2.modules.__browserify_process) { 36478 process = require2.modules.__browserify_process(); 36479 definedProcess = true; 36480 } 36481 var dirname = require2._core[filename] ? "" : require2.modules.path().dirname(filename); 36482 var require_ = function(file) { 36483 var requiredModule = require2(file, dirname); 36484 var cached = require2.cache[require2.resolve(file, dirname)]; 36485 if (cached && cached.parent === null) { 36486 cached.parent = module_; 36487 } 36488 return requiredModule; 36489 }; 36490 require_.resolve = function(name) { 36491 return require2.resolve(name, dirname); 36492 }; 36493 require_.modules = require2.modules; 36494 require_.define = require2.define; 36495 require_.cache = require2.cache; 36496 var module_ = { 36497 id: filename, 36498 filename, 36499 exports: {}, 36500 loaded: false, 36501 parent: null 36502 }; 36503 require2.modules[filename] = function() { 36504 require2.cache[filename] = module_; 36505 fn.call( 36506 module_.exports, 36507 require_, 36508 module_, 36509 module_.exports, 36510 dirname, 36511 filename, 36512 process, 36513 global2 36514 ); 36515 module_.loaded = true; 36516 return module_.exports; 36517 }; 36518 }; 36519 })(); 36520 require2.define("path", function(require3, module2, exports2, __dirname, __filename, process, global2) { 36521 function filter(xs, fn) { 36522 var res = []; 36523 for (var i = 0; i < xs.length; i++) { 36524 if (fn(xs[i], i, xs)) res.push(xs[i]); 36525 } 36526 return res; 36527 } 36528 function normalizeArray(parts, allowAboveRoot) { 36529 var up = 0; 36530 for (var i = parts.length; i >= 0; i--) { 36531 var last = parts[i]; 36532 if (last == ".") { 36533 parts.splice(i, 1); 36534 } else if (last === "..") { 36535 parts.splice(i, 1); 36536 up++; 36537 } else if (up) { 36538 parts.splice(i, 1); 36539 up--; 36540 } 36541 } 36542 if (allowAboveRoot) { 36543 for (; up--; up) { 36544 parts.unshift(".."); 36545 } 36546 } 36547 return parts; 36548 } 36549 var splitPathRe = /^(.+\/(?!$)|\/)?((?:.+?)?(\.[^.]*)?)$/; 36550 exports2.resolve = function() { 36551 var resolvedPath = "", resolvedAbsolute = false; 36552 for (var i = arguments.length; i >= -1 && !resolvedAbsolute; i--) { 36553 var path = i >= 0 ? arguments[i] : process.cwd(); 36554 if (typeof path !== "string" || !path) { 36555 continue; 36556 } 36557 resolvedPath = path + "/" + resolvedPath; 36558 resolvedAbsolute = path.charAt(0) === "/"; 36559 } 36560 resolvedPath = normalizeArray(filter(resolvedPath.split("/"), function(p) { 36561 return !!p; 36562 }), !resolvedAbsolute).join("/"); 36563 return (resolvedAbsolute ? "/" : "") + resolvedPath || "."; 36564 }; 36565 exports2.normalize = function(path) { 36566 var isAbsolute = path.charAt(0) === "/", trailingSlash = path.slice(-1) === "/"; 36567 path = normalizeArray(filter(path.split("/"), function(p) { 36568 return !!p; 36569 }), !isAbsolute).join("/"); 36570 if (!path && !isAbsolute) { 36571 path = "."; 36572 } 36573 if (path && trailingSlash) { 36574 path += "/"; 36575 } 36576 return (isAbsolute ? "/" : "") + path; 36577 }; 36578 exports2.join = function() { 36579 var paths = Array.prototype.slice.call(arguments, 0); 36580 return exports2.normalize(filter(paths, function(p, index) { 36581 return p && typeof p === "string"; 36582 }).join("/")); 36583 }; 36584 exports2.dirname = function(path) { 36585 var dir = splitPathRe.exec(path)[1] || ""; 36586 var isWindows = false; 36587 if (!dir) { 36588 return "."; 36589 } else if (dir.length === 1 || isWindows && dir.length <= 3 && dir.charAt(1) === ":") { 36590 return dir; 36591 } else { 36592 return dir.substring(0, dir.length - 1); 36593 } 36594 }; 36595 exports2.basename = function(path, ext) { 36596 var f = splitPathRe.exec(path)[2] || ""; 36597 if (ext && f.substr(-1 * ext.length) === ext) { 36598 f = f.substr(0, f.length - ext.length); 36599 } 36600 return f; 36601 }; 36602 exports2.extname = function(path) { 36603 return splitPathRe.exec(path)[3] || ""; 36604 }; 36605 exports2.relative = function(from, to) { 36606 from = exports2.resolve(from).substr(1); 36607 to = exports2.resolve(to).substr(1); 36608 function trim(arr) { 36609 var start = 0; 36610 for (; start < arr.length; start++) { 36611 if (arr[start] !== "") break; 36612 } 36613 var end = arr.length - 1; 36614 for (; end >= 0; end--) { 36615 if (arr[end] !== "") break; 36616 } 36617 if (start > end) return [];
36618 return arr.slice(start, end - start + 1); 36619 } 36620 var fromParts = trim(from.split("/")); 36621 var toParts = trim(to.split("/")); 36622 var length = Math.min(fromParts.length, toParts.length); 36623 var samePartsLength = length; 36624 for (var i = 0; i < length; i++) { 36625 if (fromParts[i] !== toParts[i]) { 36626 samePartsLength = i; 36627 break; 36628 } 36629 } 36630 var outputParts = []; 36631 for (var i = samePartsLength; i < fromParts.length; i++) { 36632 outputParts.push(".."); 36633 } 36634 outputParts = outputParts.concat(toParts.slice(samePartsLength)); 36635 return outputParts.join("/"); 36636 }; 36637 }); 36638 require2.define("__browserify_process", function(require3, module2, exports2, __dirname, __filename, process, global2) { 36639 var process = module2.exports = {}; 36640 process.nextTick = (function() { 36641 var canSetImmediate = typeof window !== "undefined" && window.setImmediate; 36642 var canPost = typeof window !== "undefined" && window.postMessage && window.addEventListener; 36643 if (canSetImmediate) { 36644 return function(f) { 36645 return window.setImmediate(f); 36646 }; 36647 } 36648 if (canPost) { 36649 var queue = []; 36650 window.addEventListener("message", function(ev) { 36651 if (ev.source === window && ev.data === "browserify-tick") { 36652 ev.stopPropagation(); 36653 if (queue.length > 0) { 36654 var fn = queue.shift(); 36655 fn(); 36656 } 36657 } 36658 }, true); 36659 return function nextTick(fn) { 36660 queue.push(fn); 36661 window.postMessage("browserify-tick", "*"); 36662 }; 36663 } 36664 return function nextTick(fn) { 36665 setTimeout(fn, 0); 36666 }; 36667 })(); 36668 process.title = "browser"; 36669 process.browser = true; 36670 process.env = {}; 36671 process.argv = []; 36672 process.binding = function(name) { 36673 if (name === "evals") return require3("vm"); 36674 else throw new Error("No such module. (Possibly not yet loaded)"); 36675 }; 36676 (function() { 36677 var cwd = "/"; 36678 var path; 36679 process.cwd = function() { 36680 return cwd; 36681 }; 36682 process.chdir = function(dir) { 36683 if (!path) path = require3("path"); 36684 cwd = path.resolve(dir, cwd); 36685 }; 36686 })(); 36687 }); 36688 require2.define("/haml-coffee.coffee", function(require3, module2, exports2, __dirname, __filename, process, global2) { 36689 (function() { 36690 var Code, Comment, Directive, Filter, Haml, HamlCoffee, Node, Text, indent, whitespace; 36691 Node = require3("./nodes/node"); 36692 Text = require3("./nodes/text"); 36693 Haml = require3("./nodes/haml"); 36694 Code = require3("./nodes/code"); 36695 Comment = require3("./nodes/comment"); 36696 Filter = require3("./nodes/filter"); 36697 Directive = require3("./nodes/directive"); 36698 whitespace = require3("./util/text").whitespace; 36699 indent = require3("./util/text").indent; 36700 module2.exports = HamlCoffee = (function() { 36701 HamlCoffee2.VERSION = "1.13.6"; 36702 function HamlCoffee2(options) { 36703 var segment, segments, _base, _base1, _base10, _base11, _base12, _base13, _base2, _base3, _base4, _base5, _base6, _base7, _base8, _base9, _i, _len; 36704 this.options = options != null ? options : {}; 36705 if ((_base = this.options).placement == null) { 36706 _base.placement = "global"; 36707 } 36708 if ((_base1 = this.options).dependencies == null) { 36709 _base1.dependencies = { 36710 hc: "hamlcoffee" 36711 }; 36712 } 36713 if ((_base2 = this.options).escapeHtml == null) { 36714 _base2.escapeHtml = true; 36715 } 36716 if ((_base3 = this.options).escapeAttributes == null) { 36717 _base3.escapeAttributes = true; 36718 } 36719 if ((_base4 = this.options).cleanValue == null) { 36720 _base4.cleanValue = true; 36721 } 36722 if ((_base5 = this.options).uglify == null) { 36723 _base5.uglify = false;
36724 } 36725 if ((_base6 = this.options).basename == null) { 36726 _base6.basename = false; 36727 } 36728 if ((_base7 = this.options).extendScope == null) { 36729 _base7.extendScope = false; 36730 } 36731 if ((_base8 = this.options).format == null) { 36732 _base8.format = "html5"; 36733 } 36734 if ((_base9 = this.options).hyphenateDataAttrs == null) { 36735 _base9.hyphenateDataAttrs = true; 36736 } 36737 if ((_base10 = this.options).preserveTags == null) { 36738 _base10.preserveTags = "pre,textarea"; 36739 } 36740 if ((_base11 = this.options).selfCloseTags == null) { 36741 _base11.selfCloseTags = "meta,img,link,br,hr,input,area,param,col,base"; 36742 } 36743 if (this.options.placement === "global") { 36744 if ((_base12 = this.options).name == null) { 36745 _base12.name = "test"; 36746 } 36747 if ((_base13 = this.options).namespace == null) { 36748 _base13.namespace = "window.HAML"; 36749 } 36750 segments = ("" + this.options.namespace + "." + this.options.name).replace(/(\s|-)+/g, "_").split(/\./); 36751 this.options.name = this.options.basename ? segments.pop().split(/\/|\\/).pop() : segments.pop(); 36752 this.options.namespace = segments.shift(); 36753 this.intro = ""; 36754 if (segments.length !== 0) { 36755 for (_i = 0, _len = segments.length; _i < _len; _i++) { 36756 segment = segments[_i]; 36757 this.options.namespace += "." + segment; 36758 this.intro += "" + this.options.namespace + " ?= {}\n"; 36759 } 36760 } else { 36761 this.intro += "" + this.options.namespace + " ?= {}\n"; 36762 } 36763 } 36764 } 36765 HamlCoffee2.prototype.indentChanged = function() { 36766 return this.currentIndent !== this.previousIndent; 36767 }; 36768 HamlCoffee2.prototype.isIndent = function() { 36769 return this.currentIndent > this.previousIndent; 36770 }; 36771 HamlCoffee2.prototype.updateTabSize = function() { 36772 if (this.tabSize === 0) { 36773 return this.tabSize = this.currentIndent - this.previousIndent; 36774 } 36775 }; 36776 HamlCoffee2.prototype.updateBlockLevel = function() { 36777 this.currentBlockLevel = this.currentIndent / this.tabSize; 36778 if (!this.node.isCommented()) { 36779 if (this.currentBlockLevel - Math.floor(this.currentBlockLevel) > 0) { 36780 throw "Indentation error in line " + this.lineNumber; 36781 } 36782 if ((this.currentIndent - this.previousIndent) / this.tabSize > 1) { 36783 throw "Block level too deep in line " + this.lineNumber; 36784 } 36785 } 36786 return this.delta = this.previousBlockLevel - this.currentBlockLevel; 36787 }; 36788 HamlCoffee2.prototype.updateCodeBlockLevel = function(node) { 36789 if (node instanceof Code) { 36790 return this.currentCodeBlockLevel = node.codeBlockLevel + 1; 36791 } else { 36792 return this.currentCodeBlockLevel = node.codeBlockLevel; 36793 } 36794 }; 36795 HamlCoffee2.prototype.updateParent = function() { 36796 if (this.isIndent()) { 36797 return this.pushParent(); 36798 } else { 36799 return this.popParent(); 36800 } 36801 }; 36802 HamlCoffee2.prototype.pushParent = function() { 36803 this.stack.push(this.parentNode); 36804 return this.parentNode = this.node; 36805 }; 36806 HamlCoffee2.prototype.popParent = function() { 36807 var i, _i, _ref, _results; 36808 _results = []; 36809 for (i = _i = 0, _ref = this.delta - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) { 36810 _results.push(this.parentNode = this.stack.pop()); 36811 } 36812 return _results; 36813 }; 36814 HamlCoffee2.prototype.getNodeOptions = function(override) { 36815 if (override == null) { 36816 override = {}; 36817 } 36818 return { 36819 parentNode: override.parentNode || this.parentNode, 36820 blockLevel: override.blockLevel || this.currentBlockLevel, 36821 codeBlockLevel: override.codeBlockLevel || this.currentCodeBlockLevel, 36822 escapeHtml: override.escapeHtml || this.options.escapeHtml, 36823 escapeAttributes: override.escapeAttributes || this.options.escapeAttributes, 36824 cleanValue: override.cleanValue || this.options.cleanValue, 36825 format: override.format || this.options.format, 36826 hyphenateDataAttrs: override.hyphenateDataAttrs || this.options.format, 36827 preserveTags: override.preserveTags || this.options.preserveTags, 36828 selfCloseTags: override.selfCloseTags || this.options.selfCloseTags, 36829 uglify: override.uglify || this.options.uglify, 36830 placement: override.placement || this.options.placement, 36831 namespace: override.namespace || this.options.namespace, 36832 name: override.name || this.options.name 36833 }; 36834 }; 36835 HamlCoffee2.prototype.nodeFactory = function(expression) { 36836 var node, options, _ref; 36837 if (expression == null) { 36838 expression = ""; 36839 } 36840 options = this.getNodeOptions(); 36841 if (expression.match(/^:(escaped|preserve|css|javascript|plain|cdata|coffeescript)/)) { 36842 node = new Filter(expression, options); 36843 } else if (expression.match(/^(\/|-#)(.*)/)) { 36844 node = new Comment(expression, options); 36845 } else if (expression.match(/^(-#|-|=|!=|\&=|~)\s*(.*)/)) { 36846 node = new Code(expression, options); 36847 } else if (expression.match(/^(%|#[^{]|\.|\!)(.*)/)) { 36848 node = new Haml(expression, options); 36849 } else if (expression.match(/^\+(.*)/)) { 36850 node = new Directive(expression, options); 36851 } else { 36852 node = new Text(expression, options); 36853 } 36854 if ((_ref = options.parentNode) != null) { 36855 _ref.addChild(node); 36856 } 36857 return node; 36858 }; 36859 HamlCoffee2.prototype.parse = function(source) { 36860 var attributes, expression, line, lines, range, result, tabsize, text, ws, _i, _j, _len, _ref, _ref1, _results; 36861 if (source == null) { 36862 source = ""; 36863 } 36864 this.lineNumber = this.previousIndent = this.tabSize = this.currentBlockLevel = this.previousBlockLevel = 0; 36865 this.currentCodeBlockLevel = this.previousCodeBlockLevel = 0; 36866 this.node = null; 36867 this.stack = []; 36868 this.root = this.parentNode = new Node("", this.getNodeOptions()); 36869 lines = source.replace(/\r/g, "").split("\n"); 36870 while ((line = lines.shift()) !== void 0) { 36871 if (this.node instanceof Filter && !this.exitFilter) { 36872 if (/^(\s)*$/.test(line)) { 36873 this.node.addChild(new Text("", this.getNodeOptions({ 36874 parentNode: this.node 36875 }))); 36876 } else { 36877 result = line.match(/^(\s*)(.*)/); 36878 ws = result[1]; 36879 expression = result[2]; 36880 if (this.node.blockLevel >= ws.length / 2) { 36881 this.exitFilter = true; 36882 lines.unshift(line); 36883 continue; 36884 } 36885 range = this.tabSize > 2 ? (function() { 36886 _results = []; 36887 for (var _i2 = _ref = this.tabSize; _ref <= 1 ? _i2 <= 1 : _i2 >= 1; _ref <= 1 ? _i2++ : _i2--) { 36888 _results.push(_i2); 36889 } 36890 return _results; 36891 }).apply(this) : [2, 1]; 36892 for (_j = 0, _len = range.length; _j < _len; _j++) { 36893 tabsize = range[_j]; 36894 text = line.match(RegExp("^\\s{" + (this.node.blockLevel * tabsize + tabsize) + "}(.*)")); 36895 if (text) { 36896 this.node.addChild(new Text(text[1], this.getNodeOptions({ 36897 parentNode: this.node 36898 }))); 36899 break; 36900 } 36901 } 36902 } 36903 } else { 36904 this.exitFilter = false;
36905 result = line.match(/^(\s*)(.*)/); 36906 ws = result[1]; 36907 expression = result[2]; 36908 this.currentIndent = ws.length; 36909 if (/^\s*$/.test(line)) { 36910 continue; 36911 } 36912 while (/^[%.#].*[{(]/.test(expression) && RegExp("^\\s{" + (this.previousIndent + (this.tabSize || 2)) + "}").test(lines[0]) && !/^(\s*)[-=&!~.%#</]/.test(lines[0]) && /([-\w]+[\w:-]*\w?)\s*=|('\w+[\w:-]*\w?')\s*=|("\w+[\w:-]*\w?")\s*=|(\w+[\w:-]*\w?):|('[-\w]+[\w:-]*\w?'):|("[-\w]+[\w:-]*\w?"):|:(\w+[\w:-]*\w?)\s*=>|:?'([-\w]+[\w:-]*\w?)'\s*=>|:?"([-\w]+[\w:-]*\w?)"\s*=>/.test(lines[0]) && !/;\s*$/.test(lines[0])) { 36913 attributes = lines.shift(); 36914 expression = expression.replace(/(\s)+\|\s*$/, ""); 36915 expression += " " + attributes.match(/^\s*(.*?)(\s+\|\s*)?$/)[1]; 36916 this.lineNumber++; 36917 } 36918 while (/^-#/.test(expression) && RegExp("^\\s{" + (this.currentIndent + (this.tabSize || 2)) + "}").test(lines[0]) && lines.length > 0) { 36919 lines.shift(); 36920 this.lineNumber++; 36921 } 36922 if (expression.match(/(\s)+\|\s*$/)) { 36923 expression = expression.replace(/(\s)+\|\s*$/, " "); 36924 while ((_ref1 = lines[0]) != null ? _ref1.match(/(\s)+\|$/) : void 0) { 36925 expression += lines.shift().match(/^(\s*)(.*)/)[2].replace(/(\s)+\|\s*$/, ""); 36926 this.lineNumber++; 36927 } 36928 } 36929 if (this.indentChanged()) { 36930 this.updateTabSize(); 36931 this.updateBlockLevel(); 36932 this.updateParent(); 36933 this.updateCodeBlockLevel(this.parentNode); 36934 } 36935 this.node = this.nodeFactory(expression); 36936 this.previousBlockLevel = this.currentBlockLevel; 36937 this.previousIndent = this.currentIndent; 36938 } 36939 this.lineNumber++; 36940 } 36941 return this.evaluate(this.root); 36942 }; 36943 HamlCoffee2.prototype.evaluate = function(node) { 36944 var child, _i, _len, _ref; 36945 _ref = node.children; 36946 for (_i = 0, _len = _ref.length; _i < _len; _i++) { 36947 child = _ref[_i]; 36948 this.evaluate(child); 36949 } 36950 return node.evaluate(); 36951 }; 36952 HamlCoffee2.prototype.render = function() { 36953 switch (this.options.placement) { 36954 case "amd": 36955 return this.renderAmd(); 36956 case "standalone": 36957 return this.renderStandalone(); 36958 default: 36959 return this.renderGlobal(); 36960 } 36961 }; 36962 HamlCoffee2.prototype.renderStandalone = function() { 36963 var template; 36964 return template = "return (context) ->\n (->\n" + indent(this.precompile(), 2) + "\n ).call(context)"; 36965 }; 36966 HamlCoffee2.prototype.renderAmd = function() { 36967 var m, module3, modules, param, params, template, _ref, _ref1; 36968 if (/^hamlcoffee/.test(this.options.dependencies["hc"])) { 36969 this.options.customHtmlEscape = "hc.escape"; 36970 this.options.customCleanValue = "hc.cleanValue"; 36971 this.options.customPreserve = "hc.preserve"; 36972 this.options.customFindAndPreserve = "hc.findAndPreserve"; 36973 this.options.customSurround = "hc.surround"; 36974 this.options.customSucceed = "hc.succeed"; 36975 this.options.customPrecede = "hc.precede"; 36976 this.options.customReference = "hc.reference"; 36977 } 36978 modules = []; 36979 params = []; 36980 _ref = this.options.dependencies; 36981 for (param in _ref) { 36982 module3 = _ref[param]; 36983 modules.push(module3); 36984 params.push(param); 36985 }
36986 template = indent(this.precompile(), 4); 36987 _ref1 = this.findDependencies(template); 36988 for (param in _ref1) { 36989 module3 = _ref1[param]; 36990 modules.push(module3); 36991 params.push(param); 36992 } 36993 if (modules.length !== 0) { 36994 modules = (function() { 36995 var _i, _len, _results; 36996 _results = []; 36997 for (_i = 0, _len = modules.length; _i < _len; _i++) { 36998 m = modules[_i]; 36999 _results.push("'" + m + "'"); 37000 } 37001 return _results; 37002 })(); 37003 modules = "[" + modules + "], (" + params.join(", ") + ")"; 37004 } else { 37005 modules = ""; 37006 } 37007 return "define " + modules + " ->\n (context) ->\n render = ->\n \n" + template + "\n render.call(context)"; 37008 }; 37009 HamlCoffee2.prototype.renderGlobal = function() { 37010 var template; 37011 template = this.intro; 37012 if (this.options.extendScope) { 37013 template += "" + this.options.namespace + "['" + this.options.name + "'] = (context) -> ( ->\n"; 37014 template += " `with (context || {}) {`\n"; 37015 template += "" + indent(this.precompile(), 1); 37016 template += "`}`\n"; 37017 template += ").call(context)"; 37018 } else { 37019 template += "" + this.options.namespace + "['" + this.options.name + "'] = (context) -> ( ->\n"; 37020 template += "" + indent(this.precompile(), 1); 37021 template += ").call(context)"; 37022 } 37023 return template; 37024 }; 37025 HamlCoffee2.prototype.precompile = function() { 37026 var code, fn; 37027 fn = ""; 37028 code = this.createCode(); 37029 if (code.indexOf("$e") !== -1) { 37030 if (this.options.customHtmlEscape) { 37031 fn += "$e = " + this.options.customHtmlEscape + "\n"; 37032 } else { 37033 fn += `$e = (text, escape) -> 37034 "#{ text }" 37035 .replace(/&/g, '&') 37036 .replace(/</g, '<') 37037 .replace(/>/g, '>') 37038 .replace(/'/g, ''') 37039 .replace(/\\//g, '/') 37040 .replace(/"/g, '"') 37041`; 37042 } 37043 } 37044 if (code.indexOf("$c") !== -1) { 37045 if (this.options.customCleanValue) { 37046 fn += "$c = " + this.options.customCleanValue + "\n"; 37047 } else { 37048 fn += "$c = (text) ->\n"; 37049 fn += " switch text\n"; 37050 fn += " when null, undefined then ''\n"; 37051 fn += " when true, false then '\x93' + text\n"; 37052 fn += " else text\n"; 37053 } 37054 } 37055 if (code.indexOf("$p") !== -1 || code.indexOf("$fp") !== -1) { 37056 if (this.options.customPreserve) { 37057 fn += "$p = " + this.options.customPreserve + "\n"; 37058 } else { 37059 fn += "$p = (text) -> text.replace /\\n/g, '
'\n"; 37060 } 37061 } 37062 if (code.indexOf("$fp") !== -1) { 37063 if (this.options.customFindAndPreserve) { 37064 fn += "$fp = " + this.options.customFindAndPreserve + "\n"; 37065 } else { 37066 fn += "$fp = (text) ->\n text.replace /<(" + this.options.preserveTags.split(",").join("|") + ')>([^]*?)<\\/\\1>/g, (str, tag, content) ->\n "<#{ tag }>#{ $p content }</#{ tag }>"\n'; 37067 } 37068 } 37069 if (code.indexOf("surround") !== -1) { 37070 if (this.options.customSurround) { 37071 fn += "surround = (start, end, fn) => " + this.options.customSurround + ".call(@, start, end, fn)\n"; 37072 } else { 37073 fn += "surround = (start, end, fn) => start + fn.call(@)?.replace(/^\\s+|\\s+$/g, '') + end\n"; 37074 } 37075 } 37076 if (code.indexOf("succeed") !== -1) { 37077 if (this.options.customSucceed) { 37078 fn += "succeed = (start, end, fn) => " + this.options.customSucceed + ".call(@, start, end, fn)\n"; 37079 } else { 37080 fn += "succeed = (end, fn) => fn.call(@)?.replace(/s+$/g, '') + end\n"; 37081 } 37082 } 37083 if (code.indexOf("precede") !== -1) { 37084 if (this.options.customPrecede) { 37085 fn += "precede = (start, end, fn) => " + this.options.customPrecede + ".call(@, start, end, fn)\n"; 37086 } else {
37087 fn += "precede = (start, fn) => start + fn.call(@)?.replace(/^s+/g, '')\n"; 37088 } 37089 } 37090 if (code.indexOf("$r") !== -1) { 37091 if (this.options.customReference) { 37092 fn += "$r = " + this.options.customReference + "\n"; 37093 } else { 37094 fn += `$r = (object, prefix) -> 37095 name = if prefix then prefix + '_' else '' 37096 37097 if typeof(object.hamlObjectRef) is 'function' 37098 name += object.hamlObjectRef() 37099 else 37100 name += (object.constructor?.name || 'object').replace(/W+/g, '_').replace(/([a-zd])([A-Z])/g, '$1_$2').toLowerCase() 37101 37102 id = if typeof(object.to_key) is 'function' 37103 object.to_key() 37104 else if typeof(object.id) is 'function' 37105 object.id() 37106 else if object.id 37107 object.id 37108 else 37109 object 37110 37111 result = "class='#{ name }'" 37112 result += " id='#{ name }_#{ id }'" if id 37113`; 37114 } 37115 } 37116 fn += "$o = []\n"; 37117 fn += "" + code + "\n"; 37118 return fn += 'return $o.join("\\n")' + this.convertBooleans(code) + this.removeEmptyIDAndClass(code) + this.cleanupWhitespace(code) + "\n"; 37119 }; 37120 HamlCoffee2.prototype.createCode = function() { 37121 var child, code, line, processors, _i, _j, _len, _len1, _ref, _ref1; 37122 code = []; 37123 this.lines = []; 37124 _ref = this.root.children; 37125 for (_i = 0, _len = _ref.length; _i < _len; _i++) { 37126 child = _ref[_i]; 37127 this.lines = this.lines.concat(child.render()); 37128 } 37129 this.lines = this.combineText(this.lines); 37130 this.blockLevel = 0; 37131 _ref1 = this.lines; 37132 for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { 37133 line = _ref1[_j]; 37134 if (line !== null) { 37135 switch (line.type) { 37136 case "text": 37137 code.push("" + whitespace(line.cw) + this.getBuffer(this.blockLevel) + '.push "' + whitespace(line.hw) + line.text + '"'); 37138 break; 37139 case "run": 37140 if (line.block !== "end") { 37141 code.push("" + whitespace(line.cw) + line.code); 37142 } else { 37143 code.push("" + whitespace(line.cw) + line.code.replace("$buffer", this.getBuffer(this.blockLevel))); 37144 this.blockLevel -= 1; 37145 } 37146 break; 37147 case "insert": 37148 processors = ""; 37149 if (line.findAndPreserve) { 37150 processors += "$fp "; 37151 } 37152 if (line.preserve) { 37153 processors += "$p "; 37154 } 37155 if (line.escape) { 37156 processors += "$e "; 37157 } 37158 if (this.options.cleanValue) { 37159 processors += "$c "; 37160 } 37161 code.push("" + whitespace(line.cw) + this.getBuffer(this.blockLevel) + '.push "' + whitespace(line.hw) + '" + ' + processors + line.code); 37162 if (line.block === "start") { 37163 this.blockLevel += 1; 37164 code.push("" + whitespace(line.cw + 1) + this.getBuffer(this.blockLevel) + " = []"); 37165 } 37166 } 37167 } 37168 } 37169 return code.join("\n"); 37170 }; 37171 HamlCoffee2.prototype.getBuffer = function(level) { 37172 if (level > 0) { 37173 return "$o" + level; 37174 } else { 37175 return "$o"; 37176 } 37177 }; 37178 HamlCoffee2.prototype.combineText = function(lines) { 37179 var combined, line, nextLine; 37180 combined = []; 37181 while ((line = lines.shift()) !== void 0) { 37182 if (line.type === "text") { 37183 while (lines[0] && lines[0].type === "text" && line.cw === lines[0].cw) { 37184 nextLine = lines.shift(); 37185 line.text += "\\n" + whitespace(nextLine.hw) + nextLine.text; 37186 } 37187 } 37188 combined.push(line); 37189 } 37190 return combined; 37191 }; 37192 HamlCoffee2.prototype.convertBooleans = function(code) { 37193 if (code.indexOf("$c") !== -1) { 37194 if (this.options.format === "xhtml") { 37195 return `.replace(/\\s([\\w-]+)='\x93true'/mg, " $1='$1'").replace(/\\s([\\w-]+)='\x93false'/mg, '')`; 37196 } else { 37197 return ".replace(/\\s([\\w-]+)='\x93true'/mg, ' $1').replace(/\\s([\\w-]+)='\x93false'/mg, '')"; 37198 } 37199 } else { 37200 return ""; 37201 } 37202 }; 37203 HamlCoffee2.prototype.removeEmptyIDAndClass = function(code) { 37204 if (code.indexOf("id=") !== -1 || code.indexOf("class=") !== -1) { 37205 return `.replace(/\\s(?:id|class)=(['"])(\\1)/mg, "")`; 37206 } else { 37207 return ""; 37208 } 37209 }; 37210 HamlCoffee2.prototype.cleanupWhitespace = function(code) { 37211 if (/\u0091|\u0092/.test(code)) { 37212 return ".replace(/[\\s\\n]*\\u0091/mg, '').replace(/\\u0092[\\s\\n]*/mg, '')"; 37213 } else { 37214 return ""; 37215 } 37216 }; 37217 HamlCoffee2.prototype.findDependencies = function(code) { 37218 var dependencies, match, module3, name, requireRegexp; 37219 requireRegexp = /require(?:\s+|\()(['"])(.+?)(\1)\)?/gm; 37220 dependencies = {}; 37221 while (match = requireRegexp.exec(code)) { 37222 module3 = match[2]; 37223 name = module3.split("/").pop(); 37224 dependencies[name] = module3; 37225 }
37226 return dependencies; 37227 }; 37228 return HamlCoffee2; 37229 })(); 37230 }).call(this); 37231 }); 37232 require2.define("/nodes/node.coffee", function(require3, module2, exports2, __dirname, __filename, process, global2) { 37233 (function() { 37234 var Node, escapeHTML; 37235 escapeHTML = require3("../util/text").escapeHTML; 37236 module2.exports = Node = (function() { 37237 Node2.CLEAR_WHITESPACE_LEFT = "\x91"; 37238 Node2.CLEAR_WHITESPACE_RIGHT = "\x92"; 37239 function Node2(expression, options) { 37240 this.expression = expression != null ? expression : ""; 37241 if (options == null) { 37242 options = {}; 37243 } 37244 this.parentNode = options.parentNode; 37245 this.children = []; 37246 this.opener = this.closer = null; 37247 this.silent = false; 37248 this.preserveTags = options.preserveTags.split(","); 37249 this.preserve = false; 37250 this.wsRemoval = { 37251 around: false, 37252 inside: false 37253 }; 37254 this.escapeHtml = options.escapeHtml; 37255 this.escapeAttributes = options.escapeAttributes; 37256 this.cleanValue = options.cleanValue; 37257 this.format = options.format; 37258 this.hyphenateDataAttrs = options.hyphenateDataAttrs; 37259 this.selfCloseTags = options.selfCloseTags.split(","); 37260 this.uglify = options.uglify; 37261 this.codeBlockLevel = options.codeBlockLevel; 37262 this.blockLevel = options.blockLevel; 37263 this.placement = options.placement; 37264 this.namespace = options.namespace; 37265 this.name = options.name; 37266 } 37267 Node2.prototype.addChild = function(child) { 37268 this.children.push(child); 37269 return this; 37270 }; 37271 Node2.prototype.getOpener = function() { 37272 if (this.wsRemoval.around && this.opener.text) { 37273 this.opener.text = Node2.CLEAR_WHITESPACE_LEFT + this.opener.text; 37274 } 37275 if (this.wsRemoval.inside && this.opener.text) { 37276 this.opener.text += Node2.CLEAR_WHITESPACE_RIGHT; 37277 } 37278 return this.opener; 37279 }; 37280 Node2.prototype.getCloser = function() { 37281 if (this.wsRemoval.inside && this.closer.text) { 37282 this.closer.text = Node2.CLEAR_WHITESPACE_LEFT + this.closer.text; 37283 } 37284 if (this.wsRemoval.around && this.closer.text) { 37285 this.closer.text += Node2.CLEAR_WHITESPACE_RIGHT; 37286 } 37287 return this.closer; 37288 }; 37289 Node2.prototype.isPreserved = function() { 37290 if (this.preserve) { 37291 return true; 37292 } 37293 if (this.parentNode) { 37294 return this.parentNode.isPreserved(); 37295 } else { 37296 return false; 37297 } 37298 }; 37299 Node2.prototype.isCommented = function() { 37300 if (this.constructor.name === "Comment") { 37301 return true; 37302 } 37303 if (this.parentNode) { 37304 return this.parentNode.isCommented(); 37305 } else { 37306 return false; 37307 } 37308 }; 37309 Node2.prototype.markText = function(text, escape2) { 37310 if (escape2 == null) { 37311 escape2 = false; 37312 } 37313 return { 37314 type: "text", 37315 cw: this.codeBlockLevel, 37316 hw: this.uglify ? 0 : this.blockLevel - this.codeBlockLevel, 37317 text: escape2 ? escapeHTML(text) : text 37318 }; 37319 }; 37320 Node2.prototype.markRunningCode = function(code) { 37321 return { 37322 type: "run", 37323 cw: this.codeBlockLevel, 37324 code 37325 }; 37326 }; 37327 Node2.prototype.markInsertingCode = function(code, escape2, preserve, findAndPreserve) { 37328 if (escape2 == null) { 37329 escape2 = false;
37330 } 37331 if (preserve == null) { 37332 preserve = false; 37333 } 37334 if (findAndPreserve == null) { 37335 findAndPreserve = false; 37336 } 37337 return { 37338 type: "insert", 37339 cw: this.codeBlockLevel, 37340 hw: this.uglify ? 0 : this.blockLevel - this.codeBlockLevel, 37341 escape: escape2, 37342 preserve, 37343 findAndPreserve, 37344 code 37345 }; 37346 }; 37347 Node2.prototype.evaluate = function() { 37348 }; 37349 Node2.prototype.render = function() { 37350 var child, output, rendered, tag, _i, _j, _k, _l, _len, _len1, _len2, _len3, _len4, _m, _ref, _ref1, _ref2, _ref3, _ref4; 37351 output = []; 37352 if (this.silent) { 37353 return output; 37354 } 37355 if (this.children.length === 0) { 37356 if (this.opener && this.closer) { 37357 tag = this.getOpener(); 37358 tag.text += this.getCloser().text; 37359 output.push(tag); 37360 } else { 37361 if (!this.preserve && this.isPreserved()) { 37362 output.push(this.getOpener()); 37363 } else { 37364 output.push(this.getOpener()); 37365 } 37366 } 37367 } else { 37368 if (this.opener && this.closer) { 37369 if (this.preserve) { 37370 this.wsRemoval.inside = true; 37371 output.push(this.getOpener()); 37372 _ref = this.children; 37373 for (_i = 0, _len = _ref.length; _i < _len; _i++) { 37374 child = _ref[_i]; 37375 _ref1 = child.render(); 37376 for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { 37377 rendered = _ref1[_j]; 37378 rendered.hw = this.blockLevel; 37379 output.push(rendered); 37380 } 37381 } 37382 output.push(this.getCloser()); 37383 } else { 37384 output.push(this.getOpener()); 37385 _ref2 = this.children; 37386 for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) { 37387 child = _ref2[_k]; 37388 output = output.concat(child.render()); 37389 } 37390 output.push(this.getCloser()); 37391 } 37392 } else if (this.opener) { 37393 output.push(this.getOpener()); 37394 _ref3 = this.children; 37395 for (_l = 0, _len3 = _ref3.length; _l < _len3; _l++) { 37396 child = _ref3[_l]; 37397 output = output.concat(child.render()); 37398 } 37399 } else { 37400 _ref4 = this.children; 37401 for (_m = 0, _len4 = _ref4.length; _m < _len4; _m++) { 37402 child = _ref4[_m]; 37403 output.push(this.markText(child.render().text)); 37404 } 37405 } 37406 } 37407 return output; 37408 }; 37409 return Node2; 37410 })(); 37411 }).call(this); 37412 }); 37413 require2.define("/util/text.coffee", function(require3, module2, exports2, __dirname, __filename, process, global2) { 37414 (function() { 37415 module2.exports = { 37416 whitespace: function(n) { 37417 var a; 37418 n = n * 2; 37419 a = []; 37420 while (a.length < n) { 37421 a.push(" "); 37422 } 37423 return a.join(""); 37424 }, 37425 escapeQuotes: function(text) { 37426 if (!text) { 37427 return ""; 37428 } 37429 return text.replace(/"/g, '\\"').replace(/\\\\\"/g, '\\"'); 37430 }, 37431 unescapeQuotes: function(text) { 37432 if (!text) { 37433 return ""; 37434 } 37435 return text.replace(/\\"/g, '"'); 37436 }, 37437 escapeHTML: function(text) { 37438 if (!text) { 37439 return ""; 37440 } 37441 return text.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/\"/g, """); 37442 }, 37443 preserve: function(code) { 37444 if (code) { 37445 code.replace(/\r/g, ""); 37446 return code.replace(/<(pre|textarea)>(.*?)<\/\1>/g, function(text) { 37447 return text.replace("\\n", "
"); 37448 }); 37449 } 37450 }, 37451 indent: function(text, spaces) { 37452 return text.replace(/^(.*)$/mg, module2.exports.whitespace(spaces) + "$1"); 37453 } 37454 }; 37455 }).call(this); 37456 }); 37457 require2.define("/nodes/text.coffee", function(require3, module2, exports2, __dirname, __filename, process, global2) { 37458 (function() { 37459 var Node, Text, escapeQuotes, _ref, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { 37460 for (var key in parent) { 37461 if (__hasProp.call(parent, key)) child[key] = parent[key]; 37462 } 37463 function ctor() { 37464 this.constructor = child; 37465 } 37466 ctor.prototype = parent.prototype; 37467 child.prototype = new ctor(); 37468 child.__super__ = parent.prototype; 37469 return child; 37470 }; 37471 Node = require3("./node"); 37472 escapeQuotes = require3("../util/text").escapeQuotes; 37473 module2.exports = Text = (function(_super) { 37474 __extends(Text2, _super); 37475 function Text2() { 37476 _ref = Text2.__super__.constructor.apply(this, arguments); 37477 return _ref; 37478 } 37479 Text2.prototype.evaluate = function() { 37480 return this.opener = this.markText(escapeQuotes(this.expression)); 37481 }; 37482 return Text2; 37483 })(Node); 37484 }).call(this); 37485 }); 37486 require2.define("/nodes/haml.coffee", function(require3, module2, exports2, __dirname, __filename, process, global2) { 37487 (function() { 37488 var Haml, Node, escapeQuotes, _ref, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { 37489 for (var key in parent) { 37490 if (__hasProp.call(parent, key)) child[key] = parent[key]; 37491 } 37492 function ctor() { 37493 this.constructor = child; 37494 } 37495 ctor.prototype = parent.prototype; 37496 child.prototype = new ctor(); 37497 child.__super__ = parent.prototype; 37498 return child; 37499 }; 37500 Node = require3("./node"); 37501 escapeQuotes = require3("../util/text").escapeQuotes; 37502 module2.exports = Haml = (function(_super) { 37503 __extends(Haml2, _super); 37504 function Haml2() { 37505 _ref = Haml2.__super__.constructor.apply(this, arguments); 37506 return _ref; 37507 } 37508 Haml2.prototype.evaluate = function() { 37509 var assignment, code, identifier, match, prefix, tokens; 37510 tokens = this.parseExpression(this.expression); 37511 if (tokens.doctype) { 37512 return this.opener = this.markText("" + escapeQuotes(this.buildDocType(tokens.doctype))); 37513 } else { 37514 if (this.isNotSelfClosing(tokens.tag)) { 37515 prefix = this.buildHtmlTagPrefix(tokens); 37516 if (tokens.assignment) { 37517 match = tokens.assignment.match(/^(=|!=|&=|~)\s*(.*)$/); 37518 identifier = match[1]; 37519 assignment = match[2]; 37520 if (identifier === "~") { 37521 code = "#{$fp " + assignment + " }"; 37522 } else if (identifier === "&=" || identifier === "=" && this.escapeHtml) { 37523 if (this.preserve) { 37524 if (this.cleanValue) { 37525 code = "#{ $p($e($c(" + assignment + "))) }"; 37526 } else { 37527 code = "#{ $p($e(" + assignment + ")) }"; 37528 } 37529 } else { 37530 if (this.cleanValue) {
37531 code = "#{ $e($c(" + assignment + ")) }"; 37532 } else { 37533 code = "#{ $e(" + assignment + ") }"; 37534 } 37535 } 37536 } else if (identifier === "!=" || identifier === "=" && !this.escapeHtml) { 37537 if (this.preserve) { 37538 if (this.cleanValue) { 37539 code = "#{ $p($c(" + assignment + ")) }"; 37540 } else { 37541 code = "#{ $p(" + assignment + ") }"; 37542 } 37543 } else { 37544 if (this.cleanValue) { 37545 code = "#{ $c(" + assignment + ") }"; 37546 } else { 37547 code = "#{ " + assignment + " }"; 37548 } 37549 } 37550 } 37551 this.opener = this.markText("" + prefix + ">" + code); 37552 return this.closer = this.markText("</" + tokens.tag + ">"); 37553 } else if (tokens.text) { 37554 this.opener = this.markText("" + prefix + ">" + tokens.text); 37555 return this.closer = this.markText("</" + tokens.tag + ">"); 37556 } else { 37557 this.opener = this.markText(prefix + ">"); 37558 return this.closer = this.markText("</" + tokens.tag + ">"); 37559 } 37560 } else { 37561 tokens.tag = tokens.tag.replace(/\/$/, ""); 37562 prefix = this.buildHtmlTagPrefix(tokens); 37563 if (tokens.text) { 37564 this.opener = this.markText("" + prefix + ">" + tokens.text); 37565 return this.closer = this.markText("</" + tokens.tag + ">"); 37566 } else { 37567 return this.opener = this.markText("" + prefix + (this.format === "xhtml" ? " /" : "") + ">" + tokens.text); 37568 } 37569 } 37570 } 37571 }; 37572 Haml2.prototype.parseExpression = function(exp) { 37573 var attributes, classes, id, key, tag, value, _ref1, _ref2; 37574 tag = this.parseTag(exp); 37575 if (this.preserveTags.indexOf(tag.tag) !== -1) { 37576 this.preserve = true; 37577 } 37578 id = this.interpolateCodeAttribute((_ref1 = tag.ids) != null ? _ref1.pop() : void 0, true); 37579 classes = tag.classes; 37580 attributes = {}; 37581 if (tag.attributes) { 37582 _ref2 = tag.attributes; 37583 for (key in _ref2) { 37584 value = _ref2[key]; 37585 if (key === "id") { 37586 if (id) { 37587 id += "_" + this.interpolateCodeAttribute(value, true); 37588 } else { 37589 id = this.interpolateCodeAttribute(value, true); 37590 } 37591 } else if (key === "class") { 37592 classes || (classes = []); 37593 classes.push(value); 37594 } else { 37595 attributes[key] = value; 37596 } 37597 } 37598 } 37599 return { 37600 doctype: tag.doctype, 37601 tag: tag.tag, 37602 id, 37603 classes, 37604 text: escapeQuotes(tag.text), 37605 attributes, 37606 assignment: tag.assignment, 37607 reference: tag.reference 37608 }; 37609 }; 37610 Haml2.prototype.parseTag = function(exp) { 37611 var assignment, attr, attributes, ch, classes, doctype, end, error, haml, htmlAttributes, id, ids, key, klass, level, pos, reference, rest, rubyAttributes, start, tag, text, val, whitespace, _i, _j, _k, _len, _len1, _ref1, _ref2, _ref3, _ref4, _ref5; 37612 try { 37613 doctype = (_ref1 = exp.match(/^(\!{3}.*)/)) != null ? _ref1[1] : void 0; 37614 if (doctype) { 37615 return { 37616 doctype 37617 }; 37618 } 37619 haml = exp.match(/^((?:[#%\.][a-z0-9_:\-]*[\/]?)+)/i)[0]; 37620 rest = exp.substring(haml.length); 37621 if (rest.match(/^[{([]/)) { 37622 reference = ""; 37623 htmlAttributes = ""; 37624 rubyAttributes = ""; 37625 _ref2 = ["[", "{", "(", "[", "{", "("]; 37626 for (_i = 0, _len = _ref2.length; _i < _len; _i++) { 37627 start = _ref2[_i]; 37628 if (start === rest[0]) { 37629 end = (function() { 37630 switch (start) { 37631 case "{": 37632 return "}"; 37633 case "(": 37634 return ")"; 37635 case "[": 37636 return "]"; 37637 } 37638 })(); 37639 level = 0; 37640 for (pos = _j = 0, _ref3 = rest.length; 0 <= _ref3 ? _j <= _ref3 : _j >= _ref3; pos = 0 <= _ref3 ? ++_j : --_j) { 37641 ch = rest[pos]; 37642 if (ch === start) {
37643 level += 1; 37644 } 37645 if (ch === end) { 37646 if (level === 1) { 37647 break; 37648 } else { 37649 level -= 1; 37650 } 37651 } 37652 } 37653 switch (start) { 37654 case "{": 37655 rubyAttributes += rest.substring(0, pos + 1); 37656 rest = rest.substring(pos + 1); 37657 break; 37658 case "(": 37659 htmlAttributes += rest.substring(0, pos + 1); 37660 rest = rest.substring(pos + 1); 37661 break; 37662 case "[": 37663 reference = rest.substring(1, pos); 37664 rest = rest.substring(pos + 1); 37665 } 37666 } 37667 } 37668 assignment = rest || ""; 37669 } else { 37670 reference = ""; 37671 htmlAttributes = ""; 37672 rubyAttributes = ""; 37673 assignment = rest; 37674 } 37675 attributes = {}; 37676 _ref4 = [this.parseAttributes(htmlAttributes), this.parseAttributes(rubyAttributes)]; 37677 for (_k = 0, _len1 = _ref4.length; _k < _len1; _k++) { 37678 attr = _ref4[_k]; 37679 for (key in attr) { 37680 val = attr[key]; 37681 attributes[key] = val; 37682 } 37683 } 37684 if (whitespace = (_ref5 = assignment.match(/^[<>]{0,2}/)) != null ? _ref5[0] : void 0) { 37685 assignment = assignment.substring(whitespace.length); 37686 } 37687 if (assignment[0] === " ") { 37688 assignment = assignment.substring(1); 37689 } 37690 if (assignment && !assignment.match(/^(=|!=|&=|~)/)) { 37691 text = assignment.replace(/^ /, ""); 37692 assignment = void 0; 37693 } 37694 if (whitespace) { 37695 if (whitespace.indexOf(">") !== -1) { 37696 this.wsRemoval.around = true; 37697 } 37698 if (whitespace.indexOf("<") !== -1) { 37699 this.wsRemoval.inside = true; 37700 this.preserve = true; 37701 } 37702 } 37703 tag = haml.match(/\%([a-z_\-][a-z0-9_:\-]*[\/]?)/i); 37704 ids = haml.match(/\#([a-z_\-][a-z0-9_\-]*)/gi); 37705 classes = haml.match(/\.([a-z0-9_\-]*)/gi); 37706 return { 37707 tag: tag ? tag[1] : "div", 37708 ids: ids ? (function() { 37709 var _l, _len2, _results; 37710 _results = []; 37711 for (_l = 0, _len2 = ids.length; _l < _len2; _l++) { 37712 id = ids[_l]; 37713 _results.push("'" + id.substr(1) + "'"); 37714 } 37715 return _results; 37716 })() : void 0, 37717 classes: classes ? (function() { 37718 var _l, _len2, _results; 37719 _results = []; 37720 for (_l = 0, _len2 = classes.length; _l < _len2; _l++) { 37721 klass = classes[_l]; 37722 _results.push("'" + klass.substr(1) + "'"); 37723 } 37724 return _results; 37725 })() : void 0, 37726 attributes, 37727 assignment, 37728 reference, 37729 text 37730 }; 37731 } catch (_error) { 37732 error = _error; 37733 throw new Error("Unable to parse tag from " + exp + ": " + error); 37734 } 37735 }; 37736 Haml2.prototype.parseAttributes = function(exp) { 37737 var attr, attributes, ch, endPos, hasDataAttribute, inDataAttribute, key, keyValue, keys, level, marker, markers, pairs, pos, quote, quoted, start, startPos, type, value, _i, _j, _k, _len, _len1, _ref1, _ref2, _ref3, _ref4, _ref5; 37738 attributes = {}; 37739 if (exp === void 0) { 37740 return attributes; 37741 } 37742 type = exp.substring(0, 1); 37743 exp = exp.replace(/(=|:|=>)\s*('([^\\']|\\\\|\\')*'|"([^\\"]|\\\\|\\")*")/g, function(match, type2, value2) { 37744 return type2 + (value2 != null ? value2.replace(/(:|=|=>)/g, "\x90$1") : void 0); 37745 }); 37746 level = 0; 37747 start = 0; 37748 markers = []; 37749 if (type === "(") { 37750 startPos = 1; 37751 endPos = exp.length - 1; 37752 } else { 37753 startPos = 0; 37754 endPos = exp.length; 37755 } 37756 for (pos = _i = startPos; startPos <= endPos ? _i < endPos : _i > endPos; pos = startPos <= endPos ? ++_i : --_i) { 37757 ch = exp[pos]; 37758 if (ch === "(") {
37759 level += 1; 37760 if (level === 1) { 37761 start = pos; 37762 } 37763 } 37764 if (ch === ")") { 37765 if (level === 1) { 37766 if (start !== 0 && pos - start !== 1) { 37767 markers.push({ 37768 start, 37769 end: pos 37770 }); 37771 } 37772 } else { 37773 level -= 1; 37774 } 37775 } 37776 } 37777 _ref1 = markers.reverse(); 37778 for (_j = 0, _len = _ref1.length; _j < _len; _j++) { 37779 marker = _ref1[_j]; 37780 exp = exp.substring(0, marker.start) + exp.substring(marker.start, marker.end).replace(/(:|=|=>)/g, "\x90$1") + exp.substring(marker.end); 37781 } 37782 switch (type) { 37783 case "(": 37784 keys = /\(\s*([-\w]+[\w:-]*\w?)\s*=|\s+([-\w]+[\w:-]*\w?)\s*=|\(\s*('\w+[\w:-]*\w?')\s*=|\s+('\w+[\w:-]*\w?')\s*=|\(\s*("\w+[\w:-]*\w?")\s*=|\s+("\w+[\w:-]*\w?")\s*=/g; 37785 break; 37786 case "{": 37787 keys = /[{,]\s*(\w+[\w:-]*\w?)\s*:|[{,]\s*('[-\w]+[\w:-]*\w?')\s*:|[{,]\s*("[-\w]+[\w:-]*\w?")\s*:|[{,]\s*:(\w+[\w:-]*\w?)\s*=>|[{,]\s*:?'([-\w]+[\w:-]*\w?)'\s*=>|[{,]\s*:?"([-\w]+[\w:-]*\w?)"\s*=>/g; 37788 } 37789 pairs = exp.split(keys).filter(Boolean); 37790 inDataAttribute = false; 37791 hasDataAttribute = false; 37792 while (pairs.length) { 37793 keyValue = pairs.splice(0, 2); 37794 if (keyValue.length === 1) { 37795 attr = keyValue[0].replace(/^[\s({]+|[\s)}]+$/g, ""); 37796 attributes[attr] = "true"; 37797 } else { 37798 key = (_ref2 = keyValue[0]) != null ? _ref2.replace(/^\s+|\s+$/g, "").replace(/^:/, "") : void 0; 37799 if (quoted = key.match(/^("|')(.*)\1$/)) { 37800 key = quoted[2]; 37801 } 37802 value = (_ref3 = keyValue[1]) != null ? _ref3.replace(/^\s+|[\s,]+$/g, "").replace(/\u0090/g, "") : void 0; 37803 if (key === "data" && !value) { 37804 inDataAttribute = true; 37805 hasDataAttribute = true; 37806 } else if (key && value) { 37807 if (inDataAttribute) { 37808 key = this.hyphenateDataAttrs ? "data-" + key.replace("_", "-") : "data-" + key; 37809 if (/}\s*$/.test(value)) { 37810 inDataAttribute = false; 37811 } 37812 } 37813 } 37814 switch (type) { 37815 case "(": 37816 value = value.replace(/^\s+|[\s)]+$/g, ""); 37817 quote = (_ref4 = /^(['"])/.exec(value)) != null ? _ref4[1] : void 0; 37818 pos = value.lastIndexOf(quote); 37819 if (pos > 1) { 37820 _ref5 = value.substring(pos + 1).split(" "); 37821 for (_k = 0, _len1 = _ref5.length; _k < _len1; _k++) { 37822 attr = _ref5[_k]; 37823 if (attr) { 37824 attributes[attr] = "true"; 37825 } 37826 } 37827 value = value.substring(0, pos + 1); 37828 } 37829 attributes[key] = value; 37830 break; 37831 case "{": 37832 attributes[key] = value.replace(/^\s+|[\s}]+$/g, ""); 37833 } 37834 } 37835 } 37836 if (hasDataAttribute) { 37837 delete attributes["data"]; 37838 } 37839 return attributes; 37840 }; 37841 Haml2.prototype.buildHtmlTagPrefix = function(tokens) { 37842 var classList, classes, hasDynamicClass, key, klass, name, tagParts, value, _i, _len, _ref1; 37843 tagParts = ["<" + tokens.tag]; 37844 if (tokens.classes) { 37845 hasDynamicClass = false; 37846 classList = (function() { 37847 var _i2, _len2, _ref12, _results; 37848 _ref12 = tokens.classes; 37849 _results = []; 37850 for (_i2 = 0, _len2 = _ref12.length; _i2 < _len2; _i2++) { 37851 name = _ref12[_i2]; 37852 name = this.interpolateCodeAttribute(name, true); 37853 if (name.indexOf("#{") !== -1) { 37854 hasDynamicClass = true; 37855 } 37856 _results.push(name); 37857 } 37858 return _results; 37859 }).call(this); 37860 if (hasDynamicClass && classList.length > 1) { 37861 classes = "#{ ["; 37862 for (_i = 0, _len = classList.length; _i < _len; _i++) { 37863 klass = classList[_i]; 37864 classes += "" + this.quoteAndEscapeAttributeValue(klass, true) + ","; 37865 } 37866 classes = classes.substring(0, classes.length - 1) + "].sort().join(' ').replace(/^\\s+|\\s+$/g, '') }"; 37867 } else { 37868 classes = classList.sort().join(" "); 37869 } 37870 tagParts.push("class='" + classes + "'"); 37871 } 37872 if (tokens.id) { 37873 tagParts.push("id='" + tokens.id + "'"); 37874 } 37875 if (tokens.reference) { 37876 if (tokens.attributes) { 37877 delete tokens.attributes["class"]; 37878 delete tokens.attributes["id"]; 37879 } 37880 tagParts.push("#{$r(" + tokens.reference + ")}"); 37881 } 37882 if (tokens.attributes) { 37883 _ref1 = tokens.attributes; 37884 for (key in _ref1) { 37885 value = _ref1[key];
37886 if (value === "true" || value === "false") { 37887 if (value === "true") { 37888 if (this.format === "html5") { 37889 tagParts.push("" + key); 37890 } else { 37891 tagParts.push("" + key + "=" + this.quoteAndEscapeAttributeValue(key)); 37892 } 37893 } 37894 } else { 37895 tagParts.push("" + key + "=" + this.quoteAndEscapeAttributeValue(this.interpolateCodeAttribute(value))); 37896 } 37897 } 37898 } 37899 return tagParts.join(" "); 37900 }; 37901 Haml2.prototype.interpolateCodeAttribute = function(text, unwrap) { 37902 var quoted; 37903 if (unwrap == null) { 37904 unwrap = false; 37905 } 37906 if (!text) { 37907 return; 37908 } 37909 if (!text.match(/^("|').*\1$/)) { 37910 if (this.escapeAttributes) { 37911 if (this.cleanValue) {
37912 text = "#{ $e($c(" + text + ")) }"; 37913 } else { 37914 text = "#{ $e(" + text + ") }"; 37915 } 37916 } else { 37917 if (this.cleanValue) { 37918 text = "#{ $c(" + text + ") }"; 37919 } else { 37920 text = "#{ (" + text + ") }"; 37921 } 37922 } 37923 } 37924 if (unwrap) { 37925 if (quoted = text.match(/^("|')(.*)\1$/)) { 37926 text = quoted[2]; 37927 } 37928 } 37929 return text; 37930 }; 37931 Haml2.prototype.quoteAndEscapeAttributeValue = function(value, code) { 37932 var escaped, hasDoubleQuotes, hasInterpolation, hasSingleQuotes, quoted, result, token, tokens; 37933 if (code == null) { 37934 code = false; 37935 } 37936 if (!value) { 37937 return; 37938 } 37939 if (quoted = value.match(/^("|')(.*)\1$/)) { 37940 value = quoted[2]; 37941 } 37942 tokens = this.splitInterpolations(value); 37943 hasSingleQuotes = false; 37944 hasDoubleQuotes = false; 37945 hasInterpolation = false; 37946 tokens = (function() { 37947 var _i, _len, _results; 37948 _results = []; 37949 for (_i = 0, _len = tokens.length; _i < _len; _i++) { 37950 token = tokens[_i]; 37951 if (token.slice(0, 2) === "#{") { 37952 if (token.indexOf("$e") === -1 && token.indexOf("$c") === -1) { 37953 if (this.escapeAttributes) { 37954 if (this.cleanValue) { 37955 token = "#{ $e($c(" + token.slice(2, -1) + ")) }"; 37956 } else { 37957 token = "#{ $e(" + token.slice(2, -1) + ") }"; 37958 } 37959 } else { 37960 if (this.cleanValue) { 37961 token = "#{ $c(" + token.slice(2, -1) + ") }"; 37962 } 37963 } 37964 } 37965 hasInterpolation = true; 37966 } else { 37967 if (!hasSingleQuotes) { 37968 hasSingleQuotes = token.indexOf("'") !== -1; 37969 } 37970 if (!hasDoubleQuotes) { 37971 hasDoubleQuotes = token.indexOf('"') !== -1; 37972 } 37973 } 37974 _results.push(token); 37975 } 37976 return _results; 37977 }).call(this); 37978 if (code) { 37979 if (hasInterpolation) { 37980 result = '"' + tokens.join("") + '"'; 37981 } else { 37982 result = "'" + tokens.join("") + "'"; 37983 } 37984 } else { 37985 if (!hasDoubleQuotes && !hasSingleQuotes) { 37986 result = "'" + tokens.join("") + "'"; 37987 } 37988 if (hasSingleQuotes && !hasDoubleQuotes) { 37989 result = '\\"' + tokens.join("") + '\\"'; 37990 } 37991 if (hasDoubleQuotes && !hasSingleQuotes) { 37992 escaped = (function() { 37993 var _i, _len, _results; 37994 _results = []; 37995 for (_i = 0, _len = tokens.length; _i < _len; _i++) { 37996 token = tokens[_i]; 37997 _results.push(escapeQuotes(token)); 37998 } 37999 return _results; 38000 })(); 38001 result = "'" + escaped.join("") + "'"; 38002 } 38003 if (hasSingleQuotes && hasDoubleQuotes) { 38004 escaped = (function() { 38005 var _i, _len, _results; 38006 _results = []; 38007 for (_i = 0, _len = tokens.length; _i < _len; _i++) { 38008 token = tokens[_i]; 38009 _results.push(escapeQuotes(token).replace(/'/g, "'")); 38010 } 38011 return _results; 38012 })(); 38013 result = "'" + escaped.join("") + "'"; 38014 } 38015 } 38016 return result; 38017 }; 38018 Haml2.prototype.splitInterpolations = function(value) { 38019 var ch, ch2, level, pos, start, tokens, _i, _ref1; 38020 level = 0; 38021 start = 0; 38022 tokens = []; 38023 for (pos = _i = 0, _ref1 = value.length; 0 <= _ref1 ? _i < _ref1 : _i > _ref1; pos = 0 <= _ref1 ? ++_i : --_i) { 38024 ch = value[pos]; 38025 ch2 = value.slice(pos, +(pos + 1) + 1 || 9e9); 38026 if (ch === "{") {
38027 level += 1; 38028 } 38029 if (ch2 === "#{" && level === 0) { 38030 tokens.push(value.slice(start, pos)); 38031 start = pos; 38032 } 38033 if (ch === "}") { 38034 level -= 1; 38035 if (level === 0) { 38036 tokens.push(value.slice(start, +pos + 1 || 9e9)); 38037 start = pos + 1; 38038 } 38039 } 38040 } 38041 tokens.push(value.slice(start, value.length)); 38042 return tokens.filter(Boolean); 38043 }; 38044 Haml2.prototype.buildDocType = function(doctype) { 38045 switch ("" + this.format + " " + doctype) { 38046 case "xhtml !!! XML": 38047 return "<?xml version='1.0' encoding='utf-8' ?>"; 38048 case "xhtml !!!": 38049 return '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'; 38050 case "xhtml !!! 1.1": 38051 return '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">'; 38052 case "xhtml !!! mobile": 38053 return '<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.2//EN" "http://www.openmobilealliance.org/tech/DTD/xhtml-mobile12.dtd">'; 38054 case "xhtml !!! basic": 38055 return '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd">'; 38056 case "xhtml !!! frameset": 38057 return '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">'; 38058 case "xhtml !!! 5": 38059 case "html5 !!!": 38060 return "<!DOCTYPE html>"; 38061 case "html5 !!! XML": 38062 case "html4 !!! XML": 38063 return ""; 38064 case "html4 !!!": 38065 return '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">'; 38066 case "html4 !!! frameset": 38067 return '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">'; 38068 case "html4 !!! strict": 38069 return '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">'; 38070 } 38071 }; 38072 Haml2.prototype.isNotSelfClosing = function(tag) { 38073 return this.selfCloseTags.indexOf(tag) === -1 && !tag.match(/\/$/); 38074 }; 38075 return Haml2; 38076 })(Node); 38077 }).call(this); 38078 }); 38079 require2.define("/nodes/code.coffee", function(require3, module2, exports2, __dirname, __filename, process, global2) { 38080 (function() { 38081 var Code, Node, _ref, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { 38082 for (var key in parent) { 38083 if (__hasProp.call(parent, key)) child[key] = parent[key]; 38084 } 38085 function ctor() { 38086 this.constructor = child; 38087 } 38088 ctor.prototype = parent.prototype; 38089 child.prototype = new ctor(); 38090 child.__super__ = parent.prototype; 38091 return child; 38092 }; 38093 Node = require3("./node"); 38094 module2.exports = Code = (function(_super) { 38095 __extends(Code2, _super); 38096 function Code2() { 38097 _ref = Code2.__super__.constructor.apply(this, arguments); 38098 return _ref; 38099 } 38100 Code2.prototype.evaluate = function() { 38101 var code, codeBlock, escape2, identifier; 38102 codeBlock = this.expression.match(/(-|!=|\&=|=|~)\s?(.*)?/); 38103 identifier = codeBlock[1]; 38104 code = codeBlock[2]; 38105 if (identifier === "-") { 38106 this.opener = this.markRunningCode(code); 38107 if (this.children.length !== 0 && this.opener.code.match(/(->|=>)/)) { 38108 return this.closer = this.markRunningCode(" ''"); 38109 } 38110 } else if (identifier === "~") { 38111 if (this.escapeHtml) { 38112 return this.opener = this.markInsertingCode(code, true, false, true); 38113 } else { 38114 return this.opener = this.markInsertingCode(code, false, false, true); 38115 } 38116 } else { 38117 escape2 = identifier === "&=" || identifier === "=" && this.escapeHtml; 38118 if (this.children.length !== 0 && code.match(/(->|=>)$/)) { 38119 this.opener = this.markInsertingCode(code, escape2, false, false); 38120 this.opener.block = "start"; 38121 this.closer = this.markRunningCode(' $buffer.join "\\n"'); 38122 return this.closer.block = "end"; 38123 } else { 38124 return this.opener = this.markInsertingCode(code, escape2); 38125 } 38126 } 38127 }; 38128 return Code2; 38129 })(Node); 38130 }).call(this); 38131 }); 38132 require2.define("/nodes/comment.coffee", function(require3, module2, exports2, __dirname, __filename, process, global2) { 38133 (function() { 38134 var Comment, Node, escapeQuotes, _ref, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { 38135 for (var key in parent) { 38136 if (__hasProp.call(parent, key)) child[key] = parent[key]; 38137 } 38138 function ctor() { 38139 this.constructor = child; 38140 } 38141 ctor.prototype = parent.prototype; 38142 child.prototype = new ctor(); 38143 child.__super__ = parent.prototype; 38144 return child; 38145 }; 38146 Node = require3("./node"); 38147 escapeQuotes = require3("../util/text").escapeQuotes; 38148 module2.exports = Comment = (function(_super) { 38149 __extends(Comment2, _super); 38150 function Comment2() { 38151 _ref = Comment2.__super__.constructor.apply(this, arguments); 38152 return _ref; 38153 } 38154 Comment2.prototype.evaluate = function() { 38155 var comment, expression, identifier, _ref1; 38156 _ref1 = this.expression.match(/(-#|\/\[|\/)\s?(.*)?/), expression = _ref1[0], identifier = _ref1[1], comment = _ref1[2]; 38157 switch (identifier) { 38158 case "-#": 38159 this.silent = true; 38160 return this.opener = this.markText(""); 38161 case "/[": 38162 this.opener = this.markText("<!--[" + comment + ">"); 38163 return this.closer = this.markText("<![endif]-->"); 38164 case "/": 38165 if (comment) { 38166 this.opener = this.markText("<!-- " + escapeQuotes(comment)); 38167 return this.closer = this.markText(" -->"); 38168 } else { 38169 this.opener = this.markText("<!--"); 38170 return this.closer = this.markText("-->"); 38171 } 38172 } 38173 }; 38174 return Comment2; 38175 })(Node); 38176 }).call(this); 38177 }); 38178 require2.define("/nodes/filter.coffee", function(require3, module2, exports2, __dirname, __filename, process, global2) { 38179 (function() { 38180 var Filter, Node, unescapeQuotes, whitespace, _ref, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { 38181 for (var key in parent) { 38182 if (__hasProp.call(parent, key)) child[key] = parent[key]; 38183 } 38184 function ctor() { 38185 this.constructor = child; 38186 } 38187 ctor.prototype = parent.prototype; 38188 child.prototype = new ctor(); 38189 child.__super__ = parent.prototype; 38190 return child; 38191 }; 38192 Node = require3("./node"); 38193 whitespace = require3("../util/text").whitespace; 38194 unescapeQuotes = require3("../util/text").unescapeQuotes; 38195 module2.exports = Filter = (function(_super) { 38196 __extends(Filter2, _super); 38197 function Filter2() { 38198 _ref = Filter2.__super__.constructor.apply(this, arguments); 38199 return _ref; 38200 } 38201 Filter2.prototype.evaluate = function() { 38202 var _ref1; 38203 return this.filter = (_ref1 = this.expression.match(/:(escaped|preserve|css|javascript|coffeescript|plain|cdata|coffeescript)(.*)?/)) != null ? _ref1[1] : void 0; 38204 }; 38205 Filter2.prototype.render = function() { 38206 var child, indent, output, preserve, _i, _j, _len, _len1, _ref1, _ref2; 38207 output = []; 38208 switch (this.filter) { 38209 case "escaped": 38210 _ref1 = this.children; 38211 for (_i = 0, _len = _ref1.length; _i < _len; _i++) { 38212 child = _ref1[_i]; 38213 output.push(this.markText(child.render()[0].text, true)); 38214 } 38215 break; 38216 case "preserve": 38217 preserve = ""; 38218 _ref2 = this.children; 38219 for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) { 38220 child = _ref2[_j]; 38221 preserve += "" + child.render()[0].text + "
";
38222 } 38223 preserve = preserve.replace(/\&\#x000A;$/, ""); 38224 output.push(this.markText(preserve)); 38225 break; 38226 case "plain": 38227 this.renderFilterContent(0, output); 38228 break; 38229 case "css": 38230 if (this.format === "html5") { 38231 output.push(this.markText("<style>")); 38232 } else { 38233 output.push(this.markText("<style type='text/css'>")); 38234 } 38235 if (this.format === "xhtml") { 38236 output.push(this.markText(" /*<![CDATA[*/")); 38237 } 38238 indent = this.format === "xhtml" ? 2 : 1; 38239 this.renderFilterContent(indent, output); 38240 if (this.format === "xhtml") { 38241 output.push(this.markText(" /*]]>*/")); 38242 } 38243 output.push(this.markText("</style>")); 38244 break; 38245 case "javascript": 38246 if (this.format === "html5") { 38247 output.push(this.markText("<script>")); 38248 } else { 38249 output.push(this.markText("<script type='text/javascript'>")); 38250 } 38251 if (this.format === "xhtml") { 38252 output.push(this.markText(" //<![CDATA[")); 38253 } 38254 indent = this.format === "xhtml" ? 2 : 1; 38255 this.renderFilterContent(indent, output); 38256 if (this.format === "xhtml") { 38257 output.push(this.markText(" //]]>")); 38258 } 38259 output.push(this.markText("<\/script>")); 38260 break; 38261 case "cdata": 38262 output.push(this.markText("<![CDATA[")); 38263 this.renderFilterContent(2, output); 38264 output.push(this.markText("]]>")); 38265 break; 38266 case "coffeescript": 38267 this.renderFilterContent(0, output, "run"); 38268 } 38269 return output; 38270 }; 38271 Filter2.prototype.renderFilterContent = function(indent, output, type) { 38272 var child, content, e, empty, line, _i, _j, _k, _len, _len1, _ref1, _results; 38273 if (type == null) { 38274 type = "text"; 38275 } 38276 content = []; 38277 empty = 0; 38278 _ref1 = this.children; 38279 for (_i = 0, _len = _ref1.length; _i < _len; _i++) { 38280 child = _ref1[_i]; 38281 content.push(child.render()[0].text); 38282 } 38283 _results = []; 38284 for (_j = 0, _len1 = content.length; _j < _len1; _j++) { 38285 line = content[_j]; 38286 if (line === "") { 38287 _results.push(empty += 1); 38288 } else { 38289 switch (type) { 38290 case "text": 38291 for (e = _k = 0; 0 <= empty ? _k < empty : _k > empty; e = 0 <= empty ? ++_k : --_k) { 38292 output.push(this.markText("")); 38293 } 38294 output.push(this.markText("" + whitespace(indent) + line)); 38295 break; 38296 case "run": 38297 output.push(this.markRunningCode("" + unescapeQuotes(line))); 38298 } 38299 _results.push(empty = 0); 38300 } 38301 } 38302 return _results; 38303 }; 38304 return Filter2; 38305 })(Node); 38306 }).call(this); 38307 }); 38308 require2.define("/nodes/directive.coffee", function(require3, module2, exports2, __dirname, __filename, process, global2) { 38309 (function() { 38310 var CoffeeScript, Directive, Node, fs, path, _ref, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { 38311 for (var key in parent) { 38312 if (__hasProp.call(parent, key)) child[key] = parent[key]; 38313 } 38314 function ctor() { 38315 this.constructor = child; 38316 } 38317 ctor.prototype = parent.prototype; 38318 child.prototype = new ctor(); 38319 child.__super__ = parent.prototype; 38320 return child; 38321 }; 38322 path = require3("path"); 38323 Node = require3("./node"); 38324 if (!process.browser) { 38325 fs = require3("fs"); 38326 CoffeeScript = require3("coffee-script"); 38327 } 38328 module2.exports = Directive = (function(_super) { 38329 __extends(Directive2, _super); 38330 function Directive2() { 38331 _ref = Directive2.__super__.constructor.apply(this, arguments); 38332 return _ref; 38333 } 38334 Directive2.prototype.directives = { 38335 include: function(expression) { 38336 var Compiler, code, compiler, context, e, error, name, source, statement, _ref1; 38337 try { 38338 _ref1 = expression.match(/\s*['"](.*?)['"](?:,\s*(.*))?\s*/), _ref1[0], name = _ref1[1], context = _ref1[2]; 38339 } catch (_error) { 38340 e = _error; 38341 throw new Error("Failed to parse the include directive from " + expression); 38342 } 38343 if (!context) { 38344 context = "this"; 38345 } 38346 statement = (function() { 38347 switch (this.placement) { 38348 case "global": 38349 return "" + this.namespace + "['" + name + "'](" + context + ")"; 38350 case "amd": 38351 return "require('" + name + "').apply(" + context + ")"; 38352 case "standalone": 38353 if (typeof browser !== "undefined" && browser !== null ? browser.process : void 0) { 38354 throw new Error("Include directive not available in the Browser when placement is standalone."); 38355 } else { 38356 try { 38357 source = fs.readFileSync(name).toString(); 38358 } catch (_error) { 38359 error = _error; 38360 console.error(" Error opening file: %s", error); 38361 console.error(error); 38362 } 38363 Compiler = require3("../haml-coffee"); 38364 compiler = new Compiler(this.options); 38365 compiler.parse(source); 38366 code = CoffeeScript.compile(compiler.precompile(), { 38367 bare: true 38368 }); 38369 return statement = "`(function(){" + code + "}).apply(" + context + ")`"; 38370 } 38371 break; 38372 default: 38373 throw new Error("Include directive not available when placement is " + this.placement); 38374 } 38375 }).call(this); 38376 return this.opener = this.markInsertingCode(statement, false); 38377 } 38378 }; 38379 Directive2.prototype.evaluate = function() { 38380 var directives, e, name, rest, _ref1; 38381 directives = Object.keys(this.directives).join("|"); 38382 try { 38383 _ref1 = this.expression.match(RegExp("\\+(" + directives + ")(.*)")), _ref1[0], name = _ref1[1], rest = _ref1[2]; 38384 } catch (_error) { 38385 e = _error;
38386 throw new Error("Unable to recognize directive from " + this.expression); 38387 } 38388 return this.directives[name].call(this, rest); 38389 }; 38390 return Directive2; 38391 })(Node); 38392 }).call(this); 38393 }); 38394 require2.define("fs", function(require3, module2, exports2, __dirname, __filename, process, global2) { 38395 }); 38396 require2.define("/hamlc.coffee", function(require3, module2, exports2, __dirname, __filename, process, global2) { 38397 (function() { 38398 var CoffeeScript, Compiler, fs, __expressCache; 38399 fs = require3("fs"); 38400 Compiler = require3("./haml-coffee"); 38401 if (process.browser) { 38402 CoffeeScript = window.CoffeeScript; 38403 } else { 38404 CoffeeScript = require3("coffee-script"); 38405 } 38406 __expressCache = {}; 38407 module2.exports = { 38408 render: function(source, context, options) { 38409 var compiler, template; 38410 if (context == null) { 38411 context = {}; 38412 } 38413 if (options == null) { 38414 options = {}; 38415 } 38416 options.placement = "standalone"; 38417 compiler = new Compiler(options); 38418 compiler.parse(source); 38419 template = new Function(CoffeeScript.compile(compiler.precompile(), { 38420 bare: true 38421 })); 38422 return template.call(context); 38423 }, 38424 compile: function(source, options) { 38425 var compiler, template; 38426 if (options == null) { 38427 options = {}; 38428 } 38429 compiler = new Compiler(options); 38430 compiler.parse(source); 38431 template = new Function(CoffeeScript.compile(compiler.precompile(), { 38432 bare: true 38433 })); 38434 return function(params) { 38435 return template.call(params); 38436 }; 38437 }, 38438 template: function(source, name, namespace, options) { 38439 var compiler; 38440 if (options == null) { 38441 options = {}; 38442 } 38443 options.namespace = namespace; 38444 options.name = name; 38445 compiler = new Compiler(options); 38446 compiler.parse(source); 38447 return CoffeeScript.compile(compiler.render()); 38448 }, 38449 __express: function(filename, options, callback) { 38450 var err, source; 38451 if (!!(options && options.constructor && options.call && options.apply)) { 38452 callback = options; 38453 options = {}; 38454 } 38455 try { 38456 if (options.cache && __expressCache[filename]) { 38457 return callback(null, __expressCache[filename](options)); 38458 } else { 38459 options.filename = filename; 38460 source = fs.readFileSync(filename, "utf8"); 38461 if (options.cache) { 38462 __expressCache[filename] = module2.exports.compile(source, options); 38463 return callback(null, __expressCache[filename](options)); 38464 } else { 38465 return callback(null, module2.exports.compile(source, options)(options)); 38466 } 38467 } 38468 } catch (_error) { 38469 err = _error; 38470 return callback(err); 38471 } 38472 } 38473 }; 38474 }).call(this); 38475 }); 38476 } 38477 }); 38478 38479
38479// apps/base/assets/javascripts/vendor/jquery.autoellipsis-1.0.10.js 38480 var require_jquery_autoellipsis_1_0_10 = __commonJS({ 38481 "apps/base/assets/javascripts/vendor/jquery.autoellipsis-1.0.10.js"() { 38482 "use strict"; 38483 init_esbuild_shims(); 38484 (function($3) { 38485 var liveUpdatingTargets = []; 38486 var liveUpdaterIntervalId; 38487 var liveUpdaterRunning = false; 38488 var defaultSettings = { 38489 ellipsis: "...", 38490 setTitle: "never", 38491 live: false 38492 }; 38493 $3.fn.ellipsis = function(selector, options) { 38494 var subjectElements, settings; 38495 subjectElements = $3(this); 38496 if (typeof selector !== "string") { 38497 options = selector; 38498 selector = void 0; 38499 } 38500 settings = $3.extend({}, defaultSettings, options); 38501 settings.selector = selector; 38502 subjectElements.each(function() { 38503 var elem = $3(this); 38504 ellipsisOnElement(elem, settings); 38505 }); 38506 if (settings.live) { 38507 addToLiveUpdater(subjectElements, settings); 38508 } else { 38509 removeFromLiveUpdater(subjectElements); 38510 } 38511 return this; 38512 }; 38513 function ellipsisOnElement(containerElement, settings) { 38514 var containerData = containerElement.data("jqae"); 38515 if (!containerData) containerData = {}; 38516 var wrapperElement = containerData.wrapperElement; 38517 if (!wrapperElement) { 38518 wrapperElement = containerElement.wrapInner("<div/>").find(">div"); 38519 wrapperElement.css({ 38520 margin: 0, 38521 padding: 0, 38522 border: 0 38523 }); 38524 } 38525 var wrapperElementData = wrapperElement.data("jqae"); 38526 if (!wrapperElementData) wrapperElementData = {}; 38527 var wrapperOriginalContent = wrapperElementData.originalContent; 38528 if (wrapperOriginalContent) { 38529 wrapperElement = wrapperElementData.originalContent.clone(true).data("jqae", { originalContent: wrapperOriginalContent }).replaceAll(wrapperElement); 38530 } else { 38531 wrapperElement.data("jqae", { originalContent: wrapperElement.clone(true) }); 38532 } 38533 containerElement.data("jqae", { 38534 wrapperElement, 38535 containerWidth: containerElement.width(), 38536 containerHeight: containerElement.height() 38537 }); 38538 var containerElementHeight = containerElement.height(); 38539 var wrapperOffset = (parseInt(containerElement.css("padding-top"), 10) || 0) + (parseInt(containerElement.css("border-top-width"), 10) || 0) - (wrapperElement.offset().top - containerElement.offset().top); 38540 var deferAppendEllipsis = false; 38541 var selectedElements = wrapperElement; 38542 if (settings.selector) selectedElements = $3(wrapperElement.find(settings.selector).get().reverse()); 38543 selectedElements.each(function() { 38544 var selectedElement = $3(this), originalText = selectedElement.text(), ellipsisApplied = false; 38545 if (wrapperElement.innerHeight() - selectedElement.innerHeight() > containerElementHeight + wrapperOffset) { 38546 selectedElement.remove(); 38547 } else { 38548 removeLastEmptyElements(selectedElement); 38549 if (selectedElement.contents().length) { 38550 if (deferAppendEllipsis) { 38551 getLastTextNode(selectedElement).get(0).nodeValue += settings.ellipsis; 38552 deferAppendEllipsis = false; 38553 } 38554 while (wrapperElement.innerHeight() > containerElementHeight + wrapperOffset) { 38555 ellipsisApplied = ellipsisOnLastTextNode(selectedElement); 38556 if (ellipsisApplied) { 38557 removeLastEmptyElements(selectedElement); 38558 if (selectedElement.contents().length) { 38559 getLastTextNode(selectedElement).get(0).nodeValue += settings.ellipsis; 38560 } else { 38561 deferAppendEllipsis = true; 38562 selectedElement.remove(); 38563 break; 38564 } 38565 } else { 38566 deferAppendEllipsis = true; 38567 selectedElement.remove(); 38568 break; 38569 } 38570 } 38571 if (settings.setTitle == "onEllipsis" && ellipsisApplied || settings.setTitle == "always") { 38572 selectedElement.attr("title", originalText); 38573 } else if (settings.setTitle != "never") { 38574 selectedElement.removeAttr("title"); 38575 } 38576 } 38577 } 38578 }); 38579 } 38580 function ellipsisOnLastTextNode(element) { 38581 var lastTextNode = getLastTextNode(element); 38582 if (lastTextNode.length) { 38583 var text = lastTextNode.get(0).nodeValue; 38584 var pos = text.lastIndexOf(" "); 38585 if (pos > -1) { 38586 text = $3.trim(text.substring(0, pos)); 38587 lastTextNode.get(0).nodeValue = text; 38588 } else { 38589 lastTextNode.get(0).nodeValue = ""; 38590 } 38591 return true; 38592 } 38593 return false;
38594 } 38595 function getLastTextNode(element) { 38596 if (element.contents().length) { 38597 var contents = element.contents(); 38598 var lastNode = contents.eq(contents.length - 1); 38599 if (lastNode.filter(textNodeFilter).length) { 38600 return lastNode; 38601 } else { 38602 return getLastTextNode(lastNode); 38603 } 38604 } else { 38605 element.append(""); 38606 var contents = element.contents(); 38607 return contents.eq(contents.length - 1); 38608 } 38609 } 38610 function removeLastEmptyElements(element) { 38611 if (element.contents().length) { 38612 var contents = element.contents(); 38613 var lastNode = contents.eq(contents.length - 1); 38614 if (lastNode.filter(textNodeFilter).length) { 38615 var text = lastNode.get(0).nodeValue; 38616 text = $3.trim(text); 38617 if (text == "") { 38618 lastNode.remove(); 38619 return true; 38620 } else { 38621 return false; 38622 } 38623 } else { 38624 while (removeLastEmptyElements(lastNode)) { 38625 } 38626 if (lastNode.contents().length) { 38627 return false; 38628 } else { 38629 lastNode.remove(); 38630 return true; 38631 } 38632 } 38633 } 38634 return false; 38635 } 38636 function textNodeFilter() { 38637 return this.nodeType === 3; 38638 } 38639 function addToLiveUpdater(targetElements, settings) { 38640 liveUpdatingTargets.push({ elements: targetElements, settings }); 38641 if (!liveUpdaterIntervalId) { 38642 liveUpdaterIntervalId = window.setInterval(function() { 38643 doLiveUpdater(); 38644 }, 200); 38645 } 38646 } 38647 function removeFromLiveUpdater(targetElements) { 38648 liveUpdatingTargets = $3.grep(liveUpdatingTargets, function(entry) { 38649 return entry.elements !== targetElements; 38650 }); 38651 if (!liveUpdatingTargets.length) { 38652 if (liveUpdaterIntervalId) { 38653 window.clearInterval(liveUpdaterIntervalId); 38654 liveUpdaterIntervalId = void 0; 38655 } 38656 } 38657 } 38658 ; 38659 function doLiveUpdater() { 38660 if (!liveUpdaterRunning) { 38661 liveUpdaterRunning = true; 38662 $3.each(liveUpdatingTargets, function(index, entry) { 38663 entry.elements.each(function() { 38664 var containerElement, containerData; 38665 containerElement = $3(this); 38666 containerData = containerElement.data("jqae"); 38667 if (containerData.containerWidth != containerElement.width() || containerData.containerHeight != containerElement.height()) { 38668 ellipsisOnElement(containerElement, entry.settings); 38669 } 38670 }); 38671 }); 38672 liveUpdaterRunning = false; 38673 } 38674 } 38675 ; 38676 })(jQuery); 38677 } 38678 }); 38679 38680
38680// apps/base/assets/javascripts/vendor/jquery-cookie.js 38681 var require_jquery_cookie = __commonJS({ 38682 "apps/base/assets/javascripts/vendor/jquery-cookie.js"() { 38683 "use strict"; 38684 init_esbuild_shims(); 38685 (function($3, document2, undefined2) { 38686 var pluses = /\+/g; 38687 function raw(s) { 38688 return s; 38689 } 38690 function decoded(s) { 38691 return unRfc2068(decodeURIComponent(s.replace(pluses, " "))); 38692 } 38693 function unRfc2068(value) { 38694 if (value.indexOf('"') === 0) { 38695 value = value.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, "\\"); 38696 } 38697 return value; 38698 } 38699 function fromJSON(value) { 38700 return config.json ? JSON.parse(value) : value; 38701 } 38702 var config = $3.cookie = function(key, value, options) { 38703 if (value !== undefined2) { 38704 options = $3.extend({}, config.defaults, options); 38705 if (value === null) { 38706 options.expires = -1; 38707 } 38708 if (typeof options.expires === "number") { 38709 var days = options.expires, t2 = options.expires = /* @__PURE__ */ new Date(); 38710 t2.setDate(t2.getDate() + days); 38711 } 38712 value = config.json ? JSON.stringify(value) : String(value); 38713 return document2.cookie = [ 38714 encodeURIComponent(key), 38715 "=", 38716 config.raw ? value : encodeURIComponent(value), 38717 options.expires ? "; expires=" + options.expires.toUTCString() : "", 38718 // use expires attribute, max-age is not supported by IE 38719 options.path ? "; path=" + options.path : "", 38720 options.domain ? "; domain=" + options.domain : "", 38721 options.secure ? "; secure" : "" 38722 ].join(""); 38723 } 38724 var decode = config.raw ? raw : decoded; 38725 var cookies = document2.cookie.split("; "); 38726 var result = key ? null : {}; 38727 for (var i = 0, l = cookies.length; i < l; i++) { 38728 var parts = cookies[i].split("="); 38729 var name = decode(parts.shift()); 38730 var cookie = decode(parts.join("=")); 38731 if (key && key === name) { 38732 result = fromJSON(cookie); 38733 break; 38734 } 38735 if (!key) { 38736 result[name] = fromJSON(cookie); 38737 } 38738 } 38739 return result; 38740 }; 38741 config.defaults = {}; 38742 $3.removeCookie = function(key, options) { 38743 if ($3.cookie(key) !== null) { 38744 $3.cookie(key, null, options); 38745 return true; 38746 } 38747 return false; 38748 }; 38749 })(jQuery, document); 38750 } 38751 }); 38752 38753
38753// apps/base/assets/javascripts/vendor/jquery.doubleScroll.js 38754 var require_jquery_doubleScroll = __commonJS({ 38755 "apps/base/assets/javascripts/vendor/jquery.doubleScroll.js"() { 38756 "use strict"; 38757 init_esbuild_shims(); 38758 (function($3) { 38759 jQuery.fn.doubleScroll = function(userOptions) { 38760 var options = { 38761 contentElement: void 0, 38762 // Widest element, if not specified first child element will be used 38763 scrollCss: { 38764 "overflow-x": "auto", 38765 "overflow-y": "hidden" 38766 }, 38767 contentCss: { 38768 "overflow-x": "auto", 38769 "overflow-y": "hidden" 38770 }, 38771 onlyIfScroll: true, 38772 // top scrollbar is not shown if the bottom one is not present 38773 resetOnWindowResize: false, 38774 // recompute the top ScrollBar requirements when the window is resized 38775 timeToWaitForResize: 30 38776 // wait for the last update event (usefull when browser fire resize event constantly during ressing) 38777 }; 38778 $3.extend(true, options, userOptions); 38779 $3.extend(options, { 38780 topScrollBarMarkup: '<div class="doubleScroll-scroll-wrapper" style="height: 20px; position: absolute; z-index: 999;"><div class="doubleScroll-scroll" style="height: 1px;"></div></div>', 38781 topScrollBarWrapperSelector: ".doubleScroll-scroll-wrapper", 38782 topScrollBarInnerSelector: ".doubleScroll-scroll" 38783 }); 38784 var _showScrollBar = function($self, options2) { 38785 if (options2.onlyIfScroll && $self.get(0).scrollWidth <= $self.width()) { 38786 $self.prev(options2.topScrollBarWrapperSelector).remove(); 38787 return; 38788 } 38789 var $topScrollBar = $self.prev(options2.topScrollBarWrapperSelector); 38790 if ($topScrollBar.length == 0) { 38791 $topScrollBar = $3(options2.topScrollBarMarkup); 38792 $self.before($topScrollBar); 38793 $topScrollBar.css(options2.scrollCss); 38794 $self.css(options2.contentCss); 38795 $topScrollBar.bind("scroll.doubleScroll", function() { 38796 $self.scrollLeft($topScrollBar.scrollLeft()); 38797 }); 38798 var selfScrollHandler = function() { 38799 $topScrollBar.scrollLeft($self.scrollLeft()); 38800 }; 38801 $self.bind("scroll.doubleScroll", selfScrollHandler); 38802 } 38803 var $contentElement; 38804 if (options2.contentElement !== void 0 && $self.find(options2.contentElement).length !== 0) { 38805 $contentElement = $self.find(options2.contentElement); 38806 } else { 38807 $contentElement = $self.find(">:first-child"); 38808 } 38809 $3(options2.topScrollBarInnerSelector, $topScrollBar).width($contentElement.outerWidth()); 38810 $topScrollBar.width($self.width()); 38811 $topScrollBar.scrollLeft($self.scrollLeft()); 38812 }; 38813 return this.each(function() { 38814 var $self = $3(this); 38815 _showScrollBar($self, options); 38816 if (options.resetOnWindowResize) { 38817 var id; 38818 var handler = function(e) { 38819 _showScrollBar($self, options); 38820 }; 38821 $3(window).bind("resize.doubleScroll", function() { 38822 clearTimeout(id); 38823 id = setTimeout(handler, options.timeToWaitForResize); 38824 }); 38825 } 38826 }); 38827 }; 38828 })(jQuery); 38829 } 38830 }); 38831 38832
38832// apps/base/assets/javascripts/vendor/jquery.hoverIntent.js 38833 var require_jquery_hoverIntent = __commonJS({ 38834 "apps/base/assets/javascripts/vendor/jquery.hoverIntent.js"() { 38835 "use strict"; 38836 init_esbuild_shims(); 38837 (function($3) { 38838 $3.fn.hoverIntent = function(handlerIn, handlerOut, selector) { 38839 var cfg = { 38840 interval: 100, 38841 sensitivity: 6, 38842 timeout: 0 38843 }; 38844 if (typeof handlerIn === "object") { 38845 cfg = $3.extend(cfg, handlerIn); 38846 } else if ($3.isFunction(handlerOut)) { 38847 cfg = $3.extend(cfg, { over: handlerIn, out: handlerOut, selector }); 38848 } else { 38849 cfg = $3.extend(cfg, { over: handlerIn, out: handlerIn, selector: handlerOut }); 38850 } 38851 var cX, cY, pX, pY; 38852 var track = function(ev) { 38853 cX = ev.pageX; 38854 cY = ev.pageY; 38855 }; 38856 var compare = function(ev, ob) { 38857 ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); 38858 if (Math.sqrt((pX - cX) * (pX - cX) + (pY - cY) * (pY - cY)) < cfg.sensitivity) { 38859 $3(ob).off("mousemove.hoverIntent", track); 38860 ob.hoverIntent_s = true; 38861 return cfg.over.apply(ob, [ev]); 38862 } else { 38863 pX = cX; 38864 pY = cY; 38865 ob.hoverIntent_t = setTimeout(function() { 38866 compare(ev, ob); 38867 }, cfg.interval); 38868 } 38869 }; 38870 var delay = function(ev, ob) { 38871 ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); 38872 ob.hoverIntent_s = false; 38873 return cfg.out.apply(ob, [ev]); 38874 }; 38875 var handleHover = function(e) { 38876 var ev = $3.extend({}, e); 38877 var ob = this; 38878 if (ob.hoverIntent_t) { 38879 ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); 38880 } 38881 if (e.type === "mouseenter") { 38882 pX = ev.pageX; 38883 pY = ev.pageY; 38884 $3(ob).on("mousemove.hoverIntent", track); 38885 if (!ob.hoverIntent_s) { 38886 ob.hoverIntent_t = setTimeout(function() { 38887 compare(ev, ob); 38888 }, cfg.interval); 38889 } 38890 } else { 38891 $3(ob).off("mousemove.hoverIntent", track); 38892 if (ob.hoverIntent_s) { 38893 ob.hoverIntent_t = setTimeout(function() { 38894 delay(ev, ob); 38895 }, cfg.timeout); 38896 } 38897 } 38898 }; 38899 return this.on({ "mouseenter.hoverIntent": handleHover, "mouseleave.hoverIntent": handleHover }, cfg.selector); 38900 }; 38901 })(jQuery); 38902 } 38903 }); 38904 38905
38905// apps/base/assets/javascripts/vendor/jquery.iframe-transport.js 38906 var require_jquery_iframe_transport = __commonJS({ 38907 "apps/base/assets/javascripts/vendor/jquery.iframe-transport.js"() { 38908 "use strict"; 38909 init_esbuild_shims(); 38910 (function($3, undefined2) { 38911 "use strict"; 38912 $3.ajaxPrefilter(function(options, origOptions, jqXHR) { 38913 if (options.iframe) { 38914 options.originalURL = options.url; 38915 return "iframe"; 38916 } 38917 }); 38918 $3.ajaxTransport("iframe", function(options, origOptions, jqXHR) { 38919 var form = null, iframe = null, name = "iframe-" + $3.now(), files = $3(options.files), markers = null, accepts = null; 38920 function cleanUp() { 38921 files.each(function(i, file) { 38922 var $file = $3(file); 38923 $file.data("clone").replaceWith($file); 38924 }); 38925 form.remove(); 38926 iframe.one("load", function() { 38927 iframe.remove(); 38928 }); 38929 iframe.attr("src", "javascript:false;"); 38930 } 38931 options.dataTypes.shift(); 38932 options.data = origOptions.data; 38933 if (files.length) { 38934 form = $3("<form enctype='multipart/form-data' method='post'></form>").hide().attr({ action: options.originalURL, target: name }); 38935 if (typeof options.data === "string" && options.data.length > 0) { 38936 $3.error("data must not be serialized"); 38937 } 38938 $3.each(options.data || {}, function(name2, value) { 38939 if ($3.isPlainObject(value)) { 38940 name2 = value.name; 38941 value = value.value; 38942 } 38943 $3("<input type='hidden' />").attr({ name: name2, value }).appendTo(form); 38944 }); 38945 $3("<input type='hidden' value='IFrame' name='X-Requested-With' />").appendTo(form); 38946 if (options.dataTypes[0] && options.accepts[options.dataTypes[0]]) { 38947 accepts = options.accepts[options.dataTypes[0]] + (options.dataTypes[0] !== "*" ? ", */*; q=0.01" : ""); 38948 } else { 38949 accepts = options.accepts["*"]; 38950 } 38951 $3("<input type='hidden' name='X-HTTP-Accept'>").attr("value", accepts).appendTo(form); 38952 markers = files.after(function(idx) { 38953 var $this = $3(this), $clone = $this.clone().prop("disabled", true); 38954 $this.data("clone", $clone); 38955 return $clone; 38956 }).next(); 38957 files.appendTo(form); 38958 return { 38959 // The `send` function is called by jQuery when the request should be 38960 // sent. 38961 send: function(headers, completeCallback) { 38962 iframe = $3("<iframe name='" + name + "' id='" + name + "' style='display:none'></iframe>"); 38963 iframe.one("load", function() { 38964 iframe.one("load", function() { 38965 var doc = this.contentWindow ? this.contentWindow.document : this.contentDocument ? this.contentDocument : this.document, root = doc.documentElement ? doc.documentElement : doc.body, textarea = root.getElementsByTagName("textarea")[0], type = textarea && textarea.getAttribute("data-type") || null, status = textarea && textarea.getAttribute("data-status") || 200, statusText = textarea && textarea.getAttribute("data-statusText") || "OK", content = { 38966 html: root.innerHTML, 38967 text: type ? textarea.value : root ? root.textContent || root.innerText : null 38968 }; 38969 cleanUp(); 38970 completeCallback(status, statusText, content, type ? "Content-Type: " + type : null); 38971 }); 38972 form[0].submit(); 38973 }); 38974 $3("body").append(form, iframe); 38975 }, 38976 // The `abort` function is called by jQuery when the request should be 38977 // aborted. 38978 abort: function() { 38979 if (iframe !== null) { 38980 iframe.unbind("load").attr("src", "javascript:false;"); 38981 cleanUp(); 38982 } 38983 } 38984 }; 38985 } 38986 }); 38987 })(jQuery); 38988 } 38989 }); 38990 38991
vendor: 9,199 bytes, lines 38991-39220
38991// apps/base/assets/javascripts/vendor/jquery.query-object.js 38992 var require_jquery_query_object = __commonJS({ 38993 "apps/base/assets/javascripts/vendor/jquery.query-object.js"() { 38994 "use strict"; 38995 init_esbuild_shims(); 38996 new function(settings) { 38997 var $separator = settings.separator || "&"; 38998 var $spaces = settings.spaces === false ? false : true; 38999 var $suffix = settings.suffix === false ? "" : "[]"; 39000 var $prefix = settings.prefix === false ? false : true; 39001 var $hash = $prefix ? settings.hash === true ? "#" : "?" : ""; 39002 var $numbers = settings.numbers === false ? false : true; 39003 jQuery.query = new function() { 39004 var is = function(o, t2) { 39005 return o != void 0 && o !== null && (!!t2 ? o.constructor == t2 : true); 39006 }; 39007 var parse = function(path) { 39008 var m, rx = /\[([^[]*)\]/g, match = /^([^[]+)(\[.*\])?$/.exec(path), base = match[1], tokens = []; 39009 while (m = rx.exec(match[2])) tokens.push(m[1]); 39010 return [base, tokens]; 39011 }; 39012 var set = function(target, tokens, value) { 39013 var o, token = tokens.shift(); 39014 if (typeof target != "object") target = null; 39015 if (token === "") { 39016 if (!target) target = []; 39017 if (is(target, Array)) { 39018 target.push(tokens.length == 0 ? value : set(null, tokens.slice(0), value)); 39019 } else if (is(target, Object)) { 39020 var i = 0; 39021 while (target[i++] != null) ; 39022 target[--i] = tokens.length == 0 ? value : set(target[i], tokens.slice(0), value); 39023 } else { 39024 target = []; 39025 target.push(tokens.length == 0 ? value : set(null, tokens.slice(0), value)); 39026 } 39027 } else if (token && token.match(/^\s*[0-9]+\s*$/)) { 39028 var index = parseInt(token, 10); 39029 if (!target) target = []; 39030 target[index] = tokens.length == 0 ? value : set(target[index], tokens.slice(0), value); 39031 } else if (token) { 39032 var index = token.replace(/^\s*|\s*$/g, ""); 39033 if (!target) target = {}; 39034 if (is(target, Array)) { 39035 var temp = {}; 39036 for (var i = 0; i < target.length; ++i) { 39037 temp[i] = target[i]; 39038 } 39039 target = temp; 39040 } 39041 target[index] = tokens.length == 0 ? value : set(target[index], tokens.slice(0), value); 39042 } else { 39043 return value; 39044 } 39045 return target; 39046 }; 39047 var queryObject = function(a) { 39048 var self2 = this; 39049 self2.keys = {}; 39050 if (a.queryObject) { 39051 jQuery.each(a.get(), function(key, val) { 39052 self2.SET(key, val); 39053 }); 39054 } else { 39055 self2.parseNew.apply(self2, arguments); 39056 } 39057 return self2; 39058 }; 39059 queryObject.prototype = { 39060 queryObject: true, 39061 parseNew: function() { 39062 var self2 = this; 39063 self2.keys = {}; 39064 jQuery.each(arguments, function() { 39065 var q = "" + this; 39066 q = q.replace(/^[?#]/, ""); 39067 q = q.replace(/[;&]$/, ""); 39068 if ($spaces) q = q.replace(/[+]/g, " "); 39069 jQuery.each(q.split(/[&;]/), function() { 39070 var key = decodeURIComponent(this.split("=")[0] || ""); 39071 var val = decodeURIComponent(this.split("=")[1] || ""); 39072 if (!key) return; 39073 if ($numbers) { 39074 if (/^[+-]?[0-9]+\.[0-9]*$/.test(val)) 39075 val = parseFloat(val); 39076 else if (/^[+-]?[0-9]+$/.test(val)) 39077 val = parseInt(val, 10); 39078 } 39079 val = !val && val !== 0 ? true : val; 39080 self2.SET(key, val); 39081 }); 39082 }); 39083 return self2; 39084 }, 39085 has: function(key, type) { 39086 var value = this.get(key); 39087 return is(value, type); 39088 }, 39089 GET: function(key) { 39090 if (!is(key)) return this.keys; 39091 var parsed = parse(key), base = parsed[0], tokens = parsed[1]; 39092 var target = this.keys[base]; 39093 while (target != null && tokens.length != 0) { 39094 target = target[tokens.shift()]; 39095 } 39096 return typeof target == "number" ? target : target || ""; 39097 }, 39098 get: function(key) { 39099 var target = this.GET(key); 39100 if (is(target, Object)) 39101 return jQuery.extend(true, {}, target); 39102 else if (is(target, Array)) 39103 return target.slice(0); 39104 return target; 39105 }, 39106 SET: function(key, val) { 39107 var value = !is(val) ? null : val; 39108 var parsed = parse(key), base = parsed[0], tokens = parsed[1]; 39109 var target = this.keys[base]; 39110 this.keys[base] = set(target, tokens.slice(0), value); 39111 return this; 39112 }, 39113 set: function(key, val) { 39114 return this.copy().SET(key, val); 39115 }, 39116 REMOVE: function(key, val) { 39117 if (val) { 39118 var target = this.GET(key); 39119 if (is(target, Array)) { 39120 for (tval in target) { 39121 target[tval] = target[tval].toString(); 39122 } 39123 var index = $.inArray(val, target); 39124 if (index >= 0) { 39125 key = target.splice(index, 1); 39126 key = key[index]; 39127 } else { 39128 return; 39129 } 39130 } else if (val != target) { 39131 return; 39132 } 39133 } 39134 return this.SET(key, null).COMPACT(); 39135 }, 39136 remove: function(key, val) { 39137 return this.copy().REMOVE(key, val); 39138 }, 39139 EMPTY: function() { 39140 var self2 = this; 39141 jQuery.each(self2.keys, function(key, value) { 39142 delete self2.keys[key]; 39143 }); 39144 return self2; 39145 }, 39146 load: function(url) { 39147 var hash = url.replace(/^.*?[#](.+?)(?:\?.+)?$/, "$1"); 39148 var search = url.replace(/^.*?[?](.+?)(?:#.+)?$/, "$1"); 39149 return new queryObject(url.length == search.length ? "" : search, url.length == hash.length ? "" : hash); 39150 }, 39151 empty: function() { 39152 return this.copy().EMPTY(); 39153 }, 39154 copy: function() { 39155 return new queryObject(this); 39156 }, 39157 COMPACT: function() { 39158 function build(orig) { 39159 var obj = typeof orig == "object" ? is(orig, Array) ? [] : {} : orig; 39160 if (typeof orig == "object") { 39161 let add2 = function(o, key, value) { 39162 if (is(o, Array)) 39163 o.push(value); 39164 else 39165 o[key] = value; 39166 }; 39167 var add = add2; 39168 jQuery.each(orig, function(key, value) { 39169 if (!is(value)) return true; 39170 add2(obj, key, build(value)); 39171 }); 39172 } 39173 return obj; 39174 } 39175 this.keys = build(this.keys); 39176 return this; 39177 }, 39178 compact: function() { 39179 return this.copy().COMPACT(); 39180 }, 39181 toString: function() { 39182 var i = 0, queryString = [], chunks = [], self2 = this; 39183 var encode = function(str) { 39184 str = str + ""; 39185 if ($spaces) str = str.replace(/ /g, "+"); 39186 return encodeURIComponent(str); 39187 }; 39188 var addFields = function(arr, key, value) { 39189 if (!is(value) || value === false) return; 39190 var o = [encode(key)]; 39191 if (value !== true) { 39192 o.push("="); 39193 o.push(encode(value)); 39194 } 39195 arr.push(o.join("")); 39196 }; 39197 var build = function(obj, base) { 39198 var newKey = function(key) { 39199 return !base || base == "" ? [key].join("") : [base, "[", key, "]"].join(""); 39200 }; 39201 jQuery.each(obj, function(key, value) { 39202 if (typeof value == "object") 39203 build(value, newKey(key)); 39204 else 39205 addFields(chunks, newKey(key), value); 39206 }); 39207 }; 39208 build(this.keys); 39209 if (chunks.length > 0) queryString.push($hash); 39210 queryString.push(chunks.join($separator)); 39211 return queryString.join(""); 39212 } 39213 }; 39214 return new queryObject(location.search, location.hash); 39215 }(); 39216 }(jQuery.query || {}); 39217 } 39218 }); 39219 39220
39220// apps/base/assets/javascripts/vendor/jquery.select-to-autocomplete.js 39221 var require_jquery_select_to_autocomplete = __commonJS({ 39222 "apps/base/assets/javascripts/vendor/jquery.select-to-autocomplete.js"() { 39223 "use strict"; 39224 init_esbuild_shims(); 39225 (function($3) { 39226 var settings = { 39227 "sort": false, 39228 "sort-attr": "data-priority", 39229 "sort-desc": false, 39230 "autoselect": true, 39231 "alternative-spellings": true, 39232 "alternative-spellings-attr": "data-alternative-spellings", 39233 "remove-valueless-options": true, 39234 "copy-attributes-to-text-field": true, 39235 "autocomplete-plugin": "jquery_ui", 39236 "relevancy-sorting": true, 39237 "relevancy-sorting-partial-match-value": 1, 39238 "relevancy-sorting-strict-match-value": 5, 39239 "relevancy-sorting-booster-attr": "data-relevancy-booster", 39240 "minLength": 0, 39241 "delay": 0, 39242 "autoFocus": true, 39243 handle_invalid_input: function(context) { 39244 var selected_finder = "option:selected:first"; 39245 if (context.settings["remove-valueless-options"]) { 39246 selected_finder = 'option:selected[value!=""]:first'; 39247 } 39248 context.$text_field.val(context.$select_field.find(selected_finder).text()); 39249 }, 39250 handle_select_field: function($select_field) { 39251 return $select_field.hide(); 39252 }, 39253 insert_text_field: function(context) { 39254 var $text_field = $3('<input type="text"></input>'); 39255 if (settings["copy-attributes-to-text-field"]) { 39256 var attrs = {}; 39257 var raw_attrs = context.$select_field[0].attributes; 39258 for (var i = 0; i < raw_attrs.length; i++) { 39259 var key = raw_attrs[i].nodeName; 39260 var value = raw_attrs[i].nodeValue; 39261 if (key !== "name" && key !== "id" && typeof context.$select_field.attr(key) !== "undefined") { 39262 attrs[key] = value; 39263 } 39264 } 39265 ; 39266 $text_field.attr(attrs); 39267 } 39268 $text_field.blur(function() { 39269 var valid_values = context.$select_field.find("option").map(function(i2, option) { 39270 return $3(option).text(); 39271 }); 39272 if ($3.inArray($text_field.val(), valid_values) < 0 && typeof settings["handle_invalid_input"] === "function") { 39273 settings["handle_invalid_input"](context); 39274 } 39275 }); 39276 if (context.settings["autoselect"]) { 39277 $text_field.click(function() { 39278 this.select(); 39279 }); 39280 } 39281 var selected_finder = "option:selected:first"; 39282 if (context.settings["remove-valueless-options"]) { 39283 selected_finder = 'option:selected[value!=""]:first'; 39284 } 39285 return $text_field.val(context.$select_field.find(selected_finder).text()).insertAfter(context.$select_field); 39286 }, 39287 extract_options: function($select_field) { 39288 var options = []; 39289 var $options = $select_field.find("option"); 39290 var number_of_options = $options.length; 39291 $options.each(function() { 39292 var $option = $3(this); 39293 var option = { 39294 "real-value": $option.attr("value"), 39295 "label": $option.text() 39296 }; 39297 if (settings["remove-valueless-options"] && option["real-value"] === "") { 39298 } else { 39299 option["matches"] = option["label"]; 39300 var alternative_spellings = $option.attr(settings["alternative-spellings-attr"]); 39301 if (alternative_spellings) { 39302 option["matches"] += " " + alternative_spellings; 39303 } 39304 if (settings["sort"]) { 39305 var weight = parseInt($option.attr(settings["sort-attr"]), 10); 39306 if (weight) { 39307 option["weight"] = weight; 39308 } else { 39309 option["weight"] = number_of_options; 39310 } 39311 } 39312 if (settings["relevancy-sorting"]) { 39313 option["relevancy-score"] = 0; 39314 option["relevancy-score-booster"] = 1; 39315 var boost_by = parseFloat($option.attr(settings["relevancy-sorting-booster-attr"])); 39316 if (boost_by) { 39317 option["relevancy-score-booster"] = boost_by; 39318 } 39319 } 39320 options.push(option); 39321 } 39322 }); 39323 if (settings["sort"]) { 39324 if (settings["sort-desc"]) { 39325 options.sort(function(a, b) { 39326 return b["weight"] - a["weight"]; 39327 }); 39328 } else { 39329 options.sort(function(a, b) { 39330 return a["weight"] - b["weight"]; 39331 }); 39332 } 39333 } 39334 return options; 39335 } 39336 }; 39337 var public_methods = { 39338 init: function(customizations) { 39339 if (/msie/.test(navigator.userAgent.toLowerCase()) && parseInt(navigator.appVersion, 10) <= 6) { 39340 return this; 39341 } else { 39342 settings = $3.extend(settings, customizations); 39343 return this.each(function() { 39344 var $select_field = $3(this); 39345 var context = {
39346 "$select_field": $select_field, 39347 "options": settings["extract_options"]($select_field), 39348 "settings": settings 39349 }; 39350 context["$text_field"] = settings["insert_text_field"](context); 39351 settings["handle_select_field"]($select_field); 39352 if (typeof settings["autocomplete-plugin"] === "string") { 39353 adapters[settings["autocomplete-plugin"]](context); 39354 } else { 39355 settings["autocomplete-plugin"](context); 39356 } 39357 }); 39358 } 39359 } 39360 }; 39361 var adapters = { 39362 jquery_ui: function(context) { 39363 var filter_options = function(term) { 39364 var split_term = term.split(" "); 39365 var matchers = []; 39366 for (var i = 0; i < split_term.length; i++) { 39367 if (split_term[i].length > 0) { 39368 var matcher = {}; 39369 matcher["partial"] = new RegExp($3.ui.autocomplete.escapeRegex(split_term[i]), "i"); 39370 if (context.settings["relevancy-sorting"]) { 39371 matcher["strict"] = new RegExp("^" + $3.ui.autocomplete.escapeRegex(split_term[i]), "i"); 39372 } 39373 matchers.push(matcher); 39374 } 39375 } 39376 ; 39377 return $3.grep(context.options, function(option) { 39378 var partial_matches = 0; 39379 if (context.settings["relevancy-sorting"]) { 39380 var strict_match = false; 39381 var split_option_matches = option.matches.split(" "); 39382 } 39383 for (var i2 = 0; i2 < matchers.length; i2++) { 39384 if (matchers[i2]["partial"].test(option.matches)) { 39385 partial_matches++; 39386 } 39387 if (context.settings["relevancy-sorting"]) { 39388 for (var q = 0; q < split_option_matches.length; q++) { 39389 if (matchers[i2]["strict"].test(split_option_matches[q])) { 39390 strict_match = true; 39391 break; 39392 } 39393 } 39394 ; 39395 } 39396 } 39397 ; 39398 if (context.settings["relevancy-sorting"]) { 39399 var option_score = 0; 39400 option_score += partial_matches * context.settings["relevancy-sorting-partial-match-value"]; 39401 if (strict_match) { 39402 option_score += context.settings["relevancy-sorting-strict-match-value"]; 39403 } 39404 option_score = option_score * option["relevancy-score-booster"]; 39405 option["relevancy-score"] = option_score; 39406 } 39407 return !term || matchers.length === partial_matches; 39408 }); 39409 }; 39410 var update_select_value = function(option) { 39411 if (option) { 39412 if (context.$select_field.val() !== option["real-value"]) { 39413 context.$select_field.val(option["real-value"]); 39414 context.$select_field.change(); 39415 } 39416 } else { 39417 var option_name = context.$text_field.val().toLowerCase(); 39418 var matching_option = { "real-value": false }; 39419 for (var i = 0; i < context.options.length; i++) { 39420 if (option_name === context.options[i]["label"].toLowerCase()) { 39421 matching_option = context.options[i]; 39422 break; 39423 } 39424 } 39425 ; 39426 if (context.$select_field.val() !== matching_option["real-value"]) { 39427 context.$select_field.val(matching_option["real-value"] || ""); 39428 context.$select_field.change(); 39429 } 39430 if (matching_option["real-value"]) { 39431 context.$text_field.val(matching_option["label"]); 39432 } 39433 if (typeof context.settings["handle_invalid_input"] === "function" && context.$select_field.val() === "") { 39434 context.settings["handle_invalid_input"](context); 39435 } 39436 } 39437 }; 39438 context.$text_field.autocomplete({ 39439 "minLength": context.settings["minLength"], 39440 "delay": context.settings["delay"], 39441 "autoFocus": context.settings["autoFocus"], 39442 source: function(request, response) { 39443 var filtered_options = filter_options(request.term); 39444 if (context.settings["relevancy-sorting"]) { 39445 filtered_options = filtered_options.sort(function(a, b) { 39446 if (b["relevancy-score"] == a["relevancy-score"]) { 39447 return b["label"] < a["label"] ? 1 : -1; 39448 } else { 39449 return b["relevancy-score"] - a["relevancy-score"]; 39450 } 39451 }); 39452 } 39453 response(filtered_options); 39454 }, 39455 select: function(event2, ui) { 39456 update_select_value(ui.item); 39457 }, 39458 change: function(event2, ui) { 39459 update_select_value(ui.item); 39460 } 39461 }); 39462 context.$text_field.parents("form:first").submit(function() {
39463 update_select_value(); 39464 }); 39465 update_select_value(); 39466 } 39467 }; 39468 $3.fn.selectToAutocomplete = function(method) { 39469 if (public_methods[method]) { 39470 return public_methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); 39471 } else if (typeof method === "object" || !method) { 39472 return public_methods.init.apply(this, arguments); 39473 } else { 39474 $3.error("Method " + method + " does not exist on jQuery.fn.selectToAutocomplete"); 39475 } 39476 }; 39477 })(jQuery); 39478 } 39479 }); 39480 39481
39481// apps/base/assets/javascripts/vendor/jquery.touchSwipe.min.js 39482 var require_jquery_touchSwipe_min = __commonJS({ 39483 "apps/base/assets/javascripts/vendor/jquery.touchSwipe.min.js"(exports, module) { 39484 "use strict"; 39485 init_esbuild_shims(); 39486 (function(a) { 39487 if (typeof define === "function" && define.amd && define.amd.jQuery) { 39488 define(["jquery"], a); 39489 } else { 39490 if (typeof module !== "undefined" && module.exports) { 39491 a(require_jquery()); 39492 } else { 39493 a(jQuery); 39494 } 39495 } 39496 })(function(f) { 39497 var y = "1.6.15", p = "left", o = "right", e = "up", x = "down", c = "in", A = "out", m = "none", s = "auto", l = "swipe", t2 = "pinch", B = "tap", j = "doubletap", b = "longtap", z = "hold", E = "horizontal", u = "vertical", i = "all", r = 10, g = "start", k = "move", h = "end", q = "cancel", a = "ontouchstart" in window, v = window.navigator.msPointerEnabled && !window.navigator.pointerEnabled && !a, d = (window.navigator.pointerEnabled || window.navigator.msPointerEnabled) && !a, C = "TouchSwipe"; 39498 var n = { fingers: 1, threshold: 75, cancelThreshold: null, pinchThreshold: 20, maxTimeThreshold: null, fingerReleaseThreshold: 250, longTapThreshold: 500, doubleTapThreshold: 200, swipe: null, swipeLeft: null, swipeRight: null, swipeUp: null, swipeDown: null, swipeStatus: null, pinchIn: null, pinchOut: null, pinchStatus: null, click: null, tap: null, doubleTap: null, longTap: null, hold: null, triggerOnTouchEnd: true, triggerOnTouchLeave: false, allowPageScroll: "auto", fallbackToMouseEvents: true, excludedElements: "label, button, input, select, textarea, a, .noSwipe", preventDefaultEvents: true }; 39499 f.fn.swipe = function(H) { 39500 var G = f(this), F = G.data(C); 39501 if (F && typeof H === "string") { 39502 if (F[H]) { 39503 return F[H].apply(this, Array.prototype.slice.call(arguments, 1)); 39504 } else { 39505 f.error("Method " + H + " does not exist on jQuery.swipe"); 39506 } 39507 } else { 39508 if (F && typeof H === "object") { 39509 F.option.apply(this, arguments); 39510 } else { 39511 if (!F && (typeof H === "object" || !H)) { 39512 return w.apply(this, arguments); 39513 } 39514 } 39515 } 39516 return G; 39517 }; 39518 f.fn.swipe.version = y; 39519 f.fn.swipe.defaults = n; 39520 f.fn.swipe.phases = { PHASE_START: g, PHASE_MOVE: k, PHASE_END: h, PHASE_CANCEL: q }; 39521 f.fn.swipe.directions = { LEFT: p, RIGHT: o, UP: e, DOWN: x, IN: c, OUT: A }; 39522 f.fn.swipe.pageScroll = { NONE: m, HORIZONTAL: E, VERTICAL: u, AUTO: s }; 39523 f.fn.swipe.fingers = { ONE: 1, TWO: 2, THREE: 3, FOUR: 4, FIVE: 5, ALL: i }; 39524 function w(F) { 39525 if (F && (F.allowPageScroll === void 0 && (F.swipe !== void 0 || F.swipeStatus !== void 0))) { 39526 F.allowPageScroll = m; 39527 } 39528 if (F.click !== void 0 && F.tap === void 0) { 39529 F.tap = F.click; 39530 } 39531 if (!F) { 39532 F = {}; 39533 } 39534 F = f.extend({}, f.fn.swipe.defaults, F); 39535 return this.each(function() { 39536 var H = f(this); 39537 var G = H.data(C); 39538 if (!G) { 39539 G = new D(this, F); 39540 H.data(C, G); 39541 } 39542 }); 39543 } 39544 function D(a5, au) { 39545 var au = f.extend({}, au); 39546 var az = a || d || !au.fallbackToMouseEvents, K = az ? d ? v ? "MSPointerDown" : "pointerdown" : "touchstart" : "mousedown", ax = az ? d ? v ? "MSPointerMove" : "pointermove" : "touchmove" : "mousemove", V = az ? d ? v ? "MSPointerUp" : "pointerup" : "touchend" : "mouseup", T = az ? d ? "mouseleave" : null : "mouseleave", aD = d ? v ? "MSPointerCancel" : "pointercancel" : "touchcancel"; 39547 var ag = 0, aP = null, a2 = null, ac = 0, a1 = 0, aZ = 0, H = 1, ap = 0, aJ = 0, N = null; 39548 var aR = f(a5); 39549 var aa = "start"; 39550 var X = 0; 39551 var aQ = {}; 39552 var U = 0, a3 = 0, a6 = 0, ay = 0, O = 0; 39553 var aW = null, af = null; 39554 try { 39555 aR.bind(K, aN); 39556 aR.bind(aD, ba); 39557 } catch (aj) { 39558 f.error("events not supported " + K + "," + aD + " on jQuery.swipe"); 39559 } 39560 this.enable = function() { 39561 aR.bind(K, aN); 39562 aR.bind(aD, ba); 39563 return aR; 39564 }; 39565 this.disable = function() { 39566 aK(); 39567 return aR; 39568 }; 39569 this.destroy = function() { 39570 aK(); 39571 aR.data(C, null); 39572 aR = null; 39573 }; 39574 this.option = function(bd, bc) { 39575 if (typeof bd === "object") { 39576 au = f.extend(au, bd); 39577 } else { 39578 if (au[bd] !== void 0) { 39579 if (bc === void 0) { 39580 return au[bd]; 39581 } else { 39582 au[bd] = bc; 39583 } 39584 } else { 39585 if (!bd) { 39586 return au; 39587 } else { 39588 f.error("Option " + bd + " does not exist on jQuery.swipe.options"); 39589 } 39590 } 39591 } 39592 return null; 39593 }; 39594 function aN(be) { 39595 if (aB()) { 39596 return; 39597 } 39598 if (f(be.target).closest(au.excludedElements, aR).length > 0) { 39599 return; 39600 } 39601 var bf = be.originalEvent ? be.originalEvent : be; 39602 var bd, bg = bf.touches, bc = bg ? bg[0] : bf; 39603 aa = g; 39604 if (bg) { 39605 X = bg.length; 39606 } else { 39607 if (au.preventDefaultEvents !== false) { 39608 be.preventDefault(); 39609 } 39610 } 39611 ag = 0; 39612 aP = null; 39613 a2 = null; 39614 aJ = null; 39615 ac = 0; 39616 a1 = 0; 39617 aZ = 0; 39618 H = 1; 39619 ap = 0; 39620 N = ab(); 39621 S(); 39622 ai(0, bc); 39623 if (!bg || (X === au.fingers || au.fingers === i) || aX()) { 39624 U = ar(); 39625 if (X == 2) { 39626 ai(1, bg[1]); 39627 a1 = aZ = at(aQ[0].start, aQ[1].start); 39628 } 39629 if (au.swipeStatus || au.pinchStatus) { 39630 bd = P(bf, aa); 39631 } 39632 } else { 39633 bd = false;
39634 } 39635 if (bd === false) { 39636 aa = q; 39637 P(bf, aa); 39638 return bd; 39639 } else { 39640 if (au.hold) { 39641 af = setTimeout(f.proxy(function() { 39642 aR.trigger("hold", [bf.target]); 39643 if (au.hold) { 39644 bd = au.hold.call(aR, bf, bf.target); 39645 } 39646 }, this), au.longTapThreshold); 39647 } 39648 an(true); 39649 } 39650 return null; 39651 } 39652 function a4(bf) { 39653 var bi = bf.originalEvent ? bf.originalEvent : bf; 39654 if (aa === h || aa === q || al()) { 39655 return; 39656 } 39657 var be, bj = bi.touches, bd = bj ? bj[0] : bi; 39658 var bg = aH(bd); 39659 a3 = ar(); 39660 if (bj) { 39661 X = bj.length; 39662 } 39663 if (au.hold) { 39664 clearTimeout(af); 39665 } 39666 aa = k; 39667 if (X == 2) { 39668 if (a1 == 0) { 39669 ai(1, bj[1]); 39670 a1 = aZ = at(aQ[0].start, aQ[1].start); 39671 } else { 39672 aH(bj[1]); 39673 aZ = at(aQ[0].end, aQ[1].end); 39674 aJ = aq(aQ[0].end, aQ[1].end); 39675 } 39676 H = a8(a1, aZ); 39677 ap = Math.abs(a1 - aZ); 39678 } 39679 if (X === au.fingers || au.fingers === i || !bj || aX()) { 39680 aP = aL(bg.start, bg.end); 39681 a2 = aL(bg.last, bg.end); 39682 ak(bf, a2); 39683 ag = aS(bg.start, bg.end); 39684 ac = aM(); 39685 aI(aP, ag); 39686 be = P(bi, aa); 39687 if (!au.triggerOnTouchEnd || au.triggerOnTouchLeave) { 39688 var bc = true; 39689 if (au.triggerOnTouchLeave) { 39690 var bh = aY(this); 39691 bc = F(bg.end, bh); 39692 } 39693 if (!au.triggerOnTouchEnd && bc) { 39694 aa = aC(k); 39695 } else { 39696 if (au.triggerOnTouchLeave && !bc) { 39697 aa = aC(h); 39698 } 39699 } 39700 if (aa == q || aa == h) { 39701 P(bi, aa); 39702 } 39703 } 39704 } else { 39705 aa = q; 39706 P(bi, aa); 39707 } 39708 if (be === false) { 39709 aa = q; 39710 P(bi, aa); 39711 } 39712 } 39713 function M(bc) { 39714 var bd = bc.originalEvent ? bc.originalEvent : bc, be = bd.touches; 39715 if (be) { 39716 if (be.length && !al()) { 39717 G(bd); 39718 return true; 39719 } else { 39720 if (be.length && al()) { 39721 return true; 39722 } 39723 } 39724 } 39725 if (al()) { 39726 X = ay; 39727 } 39728 a3 = ar(); 39729 ac = aM(); 39730 if (bb() || !am()) { 39731 aa = q; 39732 P(bd, aa); 39733 } else { 39734 if (au.triggerOnTouchEnd || au.triggerOnTouchEnd == false && aa === k) { 39735 if (au.preventDefaultEvents !== false) { 39736 bc.preventDefault(); 39737 } 39738 aa = h; 39739 P(bd, aa); 39740 } else { 39741 if (!au.triggerOnTouchEnd && a7()) { 39742 aa = h; 39743 aF(bd, aa, B); 39744 } else { 39745 if (aa === k) { 39746 aa = q; 39747 P(bd, aa); 39748 } 39749 } 39750 } 39751 } 39752 an(false); 39753 return null; 39754 } 39755 function ba() { 39756 X = 0; 39757 a3 = 0; 39758 U = 0; 39759 a1 = 0; 39760 aZ = 0; 39761 H = 1; 39762 S(); 39763 an(false); 39764 } 39765 function L(bc) { 39766 var bd = bc.originalEvent ? bc.originalEvent : bc; 39767 if (au.triggerOnTouchLeave) { 39768 aa = aC(h); 39769 P(bd, aa); 39770 } 39771 } 39772 function aK() { 39773 aR.unbind(K, aN); 39774 aR.unbind(aD, ba);
39775 aR.unbind(ax, a4); 39776 aR.unbind(V, M); 39777 if (T) { 39778 aR.unbind(T, L); 39779 } 39780 an(false); 39781 } 39782 function aC(bg) { 39783 var bf = bg; 39784 var be = aA(); 39785 var bd = am(); 39786 var bc = bb(); 39787 if (!be || bc) { 39788 bf = q; 39789 } else { 39790 if (bd && bg == k && (!au.triggerOnTouchEnd || au.triggerOnTouchLeave)) { 39791 bf = h; 39792 } else { 39793 if (!bd && bg == h && au.triggerOnTouchLeave) { 39794 bf = q; 39795 } 39796 } 39797 } 39798 return bf; 39799 } 39800 function P(be, bc) { 39801 var bd, bf = be.touches; 39802 if (J() || W()) { 39803 bd = aF(be, bc, l); 39804 } 39805 if ((Q() || aX()) && bd !== false) { 39806 bd = aF(be, bc, t2); 39807 } 39808 if (aG() && bd !== false) { 39809 bd = aF(be, bc, j); 39810 } else { 39811 if (ao() && bd !== false) { 39812 bd = aF(be, bc, b); 39813 } else { 39814 if (ah() && bd !== false) { 39815 bd = aF(be, bc, B); 39816 } 39817 } 39818 } 39819 if (bc === q) { 39820 if (W()) { 39821 bd = aF(be, bc, l); 39822 } 39823 if (aX()) { 39824 bd = aF(be, bc, t2); 39825 } 39826 ba(be); 39827 } 39828 if (bc === h) { 39829 if (bf) { 39830 if (!bf.length) { 39831 ba(be); 39832 } 39833 } else { 39834 ba(be); 39835 } 39836 } 39837 return bd; 39838 } 39839 function aF(bf, bc, be) { 39840 var bd; 39841 if (be == l) { 39842 aR.trigger("swipeStatus", [bc, aP || null, ag || 0, ac || 0, X, aQ, a2]); 39843 if (au.swipeStatus) { 39844 bd = au.swipeStatus.call(aR, bf, bc, aP || null, ag || 0, ac || 0, X, aQ, a2); 39845 if (bd === false) { 39846 return false; 39847 } 39848 } 39849 if (bc == h && aV()) { 39850 clearTimeout(aW); 39851 clearTimeout(af); 39852 aR.trigger("swipe", [aP, ag, ac, X, aQ, a2]); 39853 if (au.swipe) { 39854 bd = au.swipe.call(aR, bf, aP, ag, ac, X, aQ, a2); 39855 if (bd === false) { 39856 return false; 39857 } 39858 } 39859 switch (aP) { 39860 case p: 39861 aR.trigger("swipeLeft", [aP, ag, ac, X, aQ, a2]); 39862 if (au.swipeLeft) { 39863 bd = au.swipeLeft.call(aR, bf, aP, ag, ac, X, aQ, a2); 39864 } 39865 break; 39866 case o: 39867 aR.trigger("swipeRight", [aP, ag, ac, X, aQ, a2]); 39868 if (au.swipeRight) { 39869 bd = au.swipeRight.call(aR, bf, aP, ag, ac, X, aQ, a2); 39870 } 39871 break; 39872 case e: 39873 aR.trigger("swipeUp", [aP, ag, ac, X, aQ, a2]); 39874 if (au.swipeUp) { 39875 bd = au.swipeUp.call(aR, bf, aP, ag, ac, X, aQ, a2); 39876 } 39877 break; 39878 case x: 39879 aR.trigger("swipeDown", [aP, ag, ac, X, aQ, a2]); 39880 if (au.swipeDown) { 39881 bd = au.swipeDown.call(aR, bf, aP, ag, ac, X, aQ, a2); 39882 } 39883 break; 39884 } 39885 } 39886 } 39887 if (be == t2) { 39888 aR.trigger("pinchStatus", [bc, aJ || null, ap || 0, ac || 0, X, H, aQ]); 39889 if (au.pinchStatus) { 39890 bd = au.pinchStatus.call(aR, bf, bc, aJ || null, ap || 0, ac || 0, X, H, aQ); 39891 if (bd === false) { 39892 return false; 39893 } 39894 } 39895 if (bc == h && a9()) { 39896 switch (aJ) { 39897 case c: 39898 aR.trigger("pinchIn", [aJ || null, ap || 0, ac || 0, X, H, aQ]); 39899 if (au.pinchIn) { 39900 bd = au.pinchIn.call(aR, bf, aJ || null, ap || 0, ac || 0, X, H, aQ); 39901 } 39902 break; 39903 case A: 39904 aR.trigger("pinchOut", [aJ || null, ap || 0, ac || 0, X, H, aQ]); 39905 if (au.pinchOut) { 39906 bd = au.pinchOut.call(aR, bf, aJ || null, ap || 0, ac || 0, X, H, aQ); 39907 } 39908 break; 39909 } 39910 } 39911 } 39912 if (be == B) { 39913 if (bc === q || bc === h) { 39914 clearTimeout(aW); 39915 clearTimeout(af); 39916 if (Z() && !I()) { 39917 O = ar(); 39918 aW = setTimeout(f.proxy(function() { 39919 O = null; 39920 aR.trigger("tap", [bf.target]); 39921 if (au.tap) { 39922 bd = au.tap.call(aR, bf, bf.target); 39923 } 39924 }, this), au.doubleTapThreshold); 39925 } else { 39926 O = null; 39927 aR.trigger("tap", [bf.target]); 39928 if (au.tap) { 39929 bd = au.tap.call(aR, bf, bf.target); 39930 } 39931 } 39932 } 39933 } else { 39934 if (be == j) { 39935 if (bc === q || bc === h) { 39936 clearTimeout(aW); 39937 clearTimeout(af); 39938 O = null; 39939 aR.trigger("doubletap", [bf.target]); 39940 if (au.doubleTap) { 39941 bd = au.doubleTap.call(aR, bf, bf.target); 39942 } 39943 } 39944 } else { 39945 if (be == b) { 39946 if (bc === q || bc === h) { 39947 clearTimeout(aW); 39948 O = null; 39949 aR.trigger("longtap", [bf.target]); 39950 if (au.longTap) { 39951 bd = au.longTap.call(aR, bf, bf.target); 39952 } 39953 } 39954 } 39955 } 39956 } 39957 return bd; 39958 } 39959 function am() { 39960 var bc = true; 39961 if (au.threshold !== null) { 39962 bc = ag >= au.threshold; 39963 } 39964 return bc; 39965 } 39966 function bb() { 39967 var bc = false;
39968 if (au.cancelThreshold !== null && aP !== null) { 39969 bc = aT(aP) - ag >= au.cancelThreshold; 39970 } 39971 return bc; 39972 } 39973 function ae() { 39974 if (au.pinchThreshold !== null) { 39975 return ap >= au.pinchThreshold; 39976 } 39977 return true; 39978 } 39979 function aA() { 39980 var bc; 39981 if (au.maxTimeThreshold) { 39982 if (ac >= au.maxTimeThreshold) { 39983 bc = false; 39984 } else { 39985 bc = true; 39986 } 39987 } else { 39988 bc = true; 39989 } 39990 return bc; 39991 } 39992 function ak(bc, bd) { 39993 if (au.preventDefaultEvents === false) { 39994 return; 39995 } 39996 if (au.allowPageScroll === m) { 39997 bc.preventDefault(); 39998 } else { 39999 var be = au.allowPageScroll === s; 40000 switch (bd) { 40001 case p: 40002 if (au.swipeLeft && be || !be && au.allowPageScroll != E) { 40003 bc.preventDefault(); 40004 } 40005 break; 40006 case o: 40007 if (au.swipeRight && be || !be && au.allowPageScroll != E) { 40008 bc.preventDefault(); 40009 } 40010 break; 40011 case e: 40012 if (au.swipeUp && be || !be && au.allowPageScroll != u) { 40013 bc.preventDefault(); 40014 } 40015 break; 40016 case x: 40017 if (au.swipeDown && be || !be && au.allowPageScroll != u) { 40018 bc.preventDefault(); 40019 } 40020 break; 40021 } 40022 } 40023 } 40024 function a9() { 40025 var bd = aO(); 40026 var bc = Y(); 40027 var be = ae(); 40028 return bd && bc && be; 40029 } 40030 function aX() { 40031 return !!(au.pinchStatus || au.pinchIn || au.pinchOut); 40032 } 40033 function Q() { 40034 return !!(a9() && aX()); 40035 } 40036 function aV() { 40037 var bf = aA(); 40038 var bh = am(); 40039 var be = aO(); 40040 var bc = Y(); 40041 var bd = bb(); 40042 var bg = !bd && bc && be && bh && bf; 40043 return bg; 40044 } 40045 function W() { 40046 return !!(au.swipe || au.swipeStatus || au.swipeLeft || au.swipeRight || au.swipeUp || au.swipeDown); 40047 } 40048 function J() { 40049 return !!(aV() && W()); 40050 } 40051 function aO() { 40052 return X === au.fingers || au.fingers === i || !a; 40053 } 40054 function Y() { 40055 return aQ[0].end.x !== 0; 40056 } 40057 function a7() { 40058 return !!au.tap; 40059 } 40060 function Z() { 40061 return !!au.doubleTap; 40062 } 40063 function aU() { 40064 return !!au.longTap; 40065 } 40066 function R() { 40067 if (O == null) { 40068 return false; 40069 } 40070 var bc = ar(); 40071 return Z() && bc - O <= au.doubleTapThreshold; 40072 } 40073 function I() { 40074 return R(); 40075 } 40076 function aw() { 40077 return (X === 1 || !a) && (isNaN(ag) || ag < au.threshold); 40078 } 40079 function a0() { 40080 return ac > au.longTapThreshold && ag < r; 40081 } 40082 function ah() { 40083 return !!(aw() && a7()); 40084 } 40085 function aG() { 40086 return !!(R() && Z()); 40087 } 40088 function ao() { 40089 return !!(a0() && aU()); 40090 } 40091 function G(bc) { 40092 a6 = ar(); 40093 ay = bc.touches.length + 1; 40094 } 40095 function S() { 40096 a6 = 0; 40097 ay = 0; 40098 } 40099 function al() { 40100 var bc = false; 40101 if (a6) { 40102 var bd = ar() - a6; 40103 if (bd <= au.fingerReleaseThreshold) { 40104 bc = true; 40105 } 40106 } 40107 return bc; 40108 } 40109 function aB() { 40110 return !!(aR.data(C + "_intouch") === true); 40111 } 40112 function an(bc) { 40113 if (!aR) { 40114 return; 40115 } 40116 if (bc === true) { 40117 aR.bind(ax, a4); 40118 aR.bind(V, M); 40119 if (T) { 40120 aR.bind(T, L); 40121 } 40122 } else {
40123 aR.unbind(ax, a4, false); 40124 aR.unbind(V, M, false); 40125 if (T) { 40126 aR.unbind(T, L, false); 40127 } 40128 } 40129 aR.data(C + "_intouch", bc === true); 40130 } 40131 function ai(be, bc) { 40132 var bd = { start: { x: 0, y: 0 }, last: { x: 0, y: 0 }, end: { x: 0, y: 0 } }; 40133 bd.start.x = bd.last.x = bd.end.x = bc.pageX || bc.clientX; 40134 bd.start.y = bd.last.y = bd.end.y = bc.pageY || bc.clientY; 40135 aQ[be] = bd; 40136 return bd; 40137 } 40138 function aH(bc) { 40139 var be = bc.identifier !== void 0 ? bc.identifier : 0; 40140 var bd = ad(be); 40141 if (bd === null) { 40142 bd = ai(be, bc); 40143 } 40144 bd.last.x = bd.end.x; 40145 bd.last.y = bd.end.y; 40146 bd.end.x = bc.pageX || bc.clientX; 40147 bd.end.y = bc.pageY || bc.clientY; 40148 return bd; 40149 } 40150 function ad(bc) { 40151 return aQ[bc] || null; 40152 } 40153 function aI(bc, bd) { 40154 bd = Math.max(bd, aT(bc)); 40155 N[bc].distance = bd; 40156 } 40157 function aT(bc) { 40158 if (N[bc]) { 40159 return N[bc].distance; 40160 } 40161 return void 0; 40162 } 40163 function ab() { 40164 var bc = {}; 40165 bc[p] = av(p); 40166 bc[o] = av(o); 40167 bc[e] = av(e); 40168 bc[x] = av(x); 40169 return bc; 40170 } 40171 function av(bc) { 40172 return { direction: bc, distance: 0 }; 40173 } 40174 function aM() { 40175 return a3 - U; 40176 } 40177 function at(bf, be) { 40178 var bd = Math.abs(bf.x - be.x); 40179 var bc = Math.abs(bf.y - be.y); 40180 return Math.round(Math.sqrt(bd * bd + bc * bc)); 40181 } 40182 function a8(bc, bd) { 40183 var be = bd / bc * 1; 40184 return be.toFixed(2); 40185 } 40186 function aq() { 40187 if (H < 1) { 40188 return A; 40189 } else { 40190 return c; 40191 } 40192 } 40193 function aS(bd, bc) { 40194 return Math.round(Math.sqrt(Math.pow(bc.x - bd.x, 2) + Math.pow(bc.y - bd.y, 2))); 40195 } 40196 function aE(bf, bd) { 40197 var bc = bf.x - bd.x; 40198 var bh = bd.y - bf.y; 40199 var be = Math.atan2(bh, bc); 40200 var bg = Math.round(be * 180 / Math.PI); 40201 if (bg < 0) { 40202 bg = 360 - Math.abs(bg); 40203 } 40204 return bg; 40205 } 40206 function aL(bd, bc) { 40207 var be = aE(bd, bc); 40208 if (be <= 45 && be >= 0) { 40209 return p; 40210 } else { 40211 if (be <= 360 && be >= 315) { 40212 return p; 40213 } else { 40214 if (be >= 135 && be <= 225) { 40215 return o; 40216 } else { 40217 if (be > 45 && be < 135) { 40218 return x; 40219 } else { 40220 return e; 40221 } 40222 } 40223 } 40224 } 40225 } 40226 function ar() { 40227 var bc = /* @__PURE__ */ new Date(); 40228 return bc.getTime(); 40229 } 40230 function aY(bc) { 40231 bc = f(bc); 40232 var be = bc.offset(); 40233 var bd = { left: be.left, right: be.left + bc.outerWidth(), top: be.top, bottom: be.top + bc.outerHeight() }; 40234 return bd; 40235 } 40236 function F(bc, bd) { 40237 return bc.x > bd.left && bc.x < bd.right && bc.y > bd.top && bc.y < bd.bottom; 40238 } 40239 } 40240 }); 40241 } 40242 }); 40243 40244
vendor: 11,626 bytes, lines 40244-40549
40244// apps/base/assets/javascripts/vendor/jquery.transit.min.js 40245 var require_jquery_transit_min = __commonJS({ 40246 "apps/base/assets/javascripts/vendor/jquery.transit.min.js"(exports, module) { 40247 "use strict"; 40248 init_esbuild_shims(); 40249 (function(t2, e) { 40250 if (typeof define === "function" && define.amd) { 40251 define(["jquery"], e); 40252 } else if (typeof exports === "object") { 40253 module.exports = e(require_jquery()); 40254 } else { 40255 e(t2.jQuery); 40256 } 40257 })(exports, function(t2) { 40258 t2.transit = { version: "0.9.12", propertyMap: { marginLeft: "margin", marginRight: "margin", marginBottom: "margin", marginTop: "margin", paddingLeft: "padding", paddingRight: "padding", paddingBottom: "padding", paddingTop: "padding" }, enabled: true, useTransitionEnd: false }; 40259 var e = document.createElement("div"); 40260 var n = {}; 40261 function i(t3) { 40262 if (t3 in e.style) return t3; 40263 var n2 = ["Moz", "Webkit", "O", "ms"]; 40264 var i2 = t3.charAt(0).toUpperCase() + t3.substr(1); 40265 for (var r2 = 0; r2 < n2.length; ++r2) { 40266 var s2 = n2[r2] + i2; 40267 if (s2 in e.style) { 40268 return s2; 40269 } 40270 } 40271 } 40272 function r() { 40273 e.style[n.transform] = ""; 40274 e.style[n.transform] = "rotateY(90deg)"; 40275 return e.style[n.transform] !== ""; 40276 } 40277 var s = navigator.userAgent.toLowerCase().indexOf("chrome") > -1; 40278 n.transition = i("transition"); 40279 n.transitionDelay = i("transitionDelay"); 40280 n.transform = i("transform"); 40281 n.transformOrigin = i("transformOrigin"); 40282 n.filter = i("Filter"); 40283 n.transform3d = r(); 40284 var a = { transition: "transitionend", MozTransition: "transitionend", OTransition: "oTransitionEnd", WebkitTransition: "webkitTransitionEnd", msTransition: "MSTransitionEnd" }; 40285 var o = n.transitionEnd = a[n.transition] || null; 40286 for (var u in n) { 40287 if (n.hasOwnProperty(u) && typeof t2.support[u] === "undefined") { 40288 t2.support[u] = n[u]; 40289 } 40290 } 40291 e = null; 40292 t2.cssEase = { _default: "ease", "in": "ease-in", out: "ease-out", "in-out": "ease-in-out", snap: "cubic-bezier(0,1,.5,1)", easeInCubic: "cubic-bezier(.550,.055,.675,.190)", easeOutCubic: "cubic-bezier(.215,.61,.355,1)", easeInOutCubic: "cubic-bezier(.645,.045,.355,1)", easeInCirc: "cubic-bezier(.6,.04,.98,.335)", easeOutCirc: "cubic-bezier(.075,.82,.165,1)", easeInOutCirc: "cubic-bezier(.785,.135,.15,.86)", easeInExpo: "cubic-bezier(.95,.05,.795,.035)", easeOutExpo: "cubic-bezier(.19,1,.22,1)", easeInOutExpo: "cubic-bezier(1,0,0,1)", easeInQuad: "cubic-bezier(.55,.085,.68,.53)", easeOutQuad: "cubic-bezier(.25,.46,.45,.94)", easeInOutQuad: "cubic-bezier(.455,.03,.515,.955)", easeInQuart: "cubic-bezier(.895,.03,.685,.22)", easeOutQuart: "cubic-bezier(.165,.84,.44,1)", easeInOutQuart: "cubic-bezier(.77,0,.175,1)", easeInQuint: "cubic-bezier(.755,.05,.855,.06)", easeOutQuint: "cubic-bezier(.23,1,.32,1)", easeInOutQuint: "cubic-bezier(.86,0,.07,1)", easeInSine: "cubic-bezier(.47,0,.745,.715)", easeOutSine: "cubic-bezier(.39,.575,.565,1)", easeInOutSine: "cubic-bezier(.445,.05,.55,.95)", easeInBack: "cubic-bezier(.6,-.28,.735,.045)", easeOutBack: "cubic-bezier(.175, .885,.32,1.275)", easeInOutBack: "cubic-bezier(.68,-.55,.265,1.55)" }; 40293 t2.cssHooks["transit:transform"] = { get: function(e2) { 40294 return t2(e2).data("transform") || new f(); 40295 }, set: function(e2, i2) { 40296 var r2 = i2; 40297 if (!(r2 instanceof f)) { 40298 r2 = new f(r2); 40299 } 40300 if (n.transform === "WebkitTransform" && !s) { 40301 e2.style[n.transform] = r2.toString(true); 40302 } else { 40303 e2.style[n.transform] = r2.toString(); 40304 } 40305 t2(e2).data("transform", r2); 40306 } }; 40307 t2.cssHooks.transform = { set: t2.cssHooks["transit:transform"].set }; 40308 t2.cssHooks.filter = { get: function(t3) { 40309 return t3.style[n.filter]; 40310 }, set: function(t3, e2) { 40311 t3.style[n.filter] = e2; 40312 } }; 40313 if (t2.fn.jquery < "1.8") { 40314 t2.cssHooks.transformOrigin = { get: function(t3) { 40315 return t3.style[n.transformOrigin]; 40316 }, set: function(t3, e2) { 40317 t3.style[n.transformOrigin] = e2; 40318 } }; 40319 t2.cssHooks.transition = { get: function(t3) { 40320 return t3.style[n.transition]; 40321 }, set: function(t3, e2) { 40322 t3.style[n.transition] = e2; 40323 } }; 40324 } 40325 p("scale"); 40326 p("scaleX"); 40327 p("scaleY"); 40328 p("translate"); 40329 p("rotate"); 40330 p("rotateX"); 40331 p("rotateY"); 40332 p("rotate3d"); 40333 p("perspective"); 40334 p("skewX"); 40335 p("skewY"); 40336 p("x", true); 40337 p("y", true); 40338 function f(t3) { 40339 if (typeof t3 === "string") { 40340 this.parse(t3); 40341 } 40342 return this; 40343 } 40344 f.prototype = { setFromString: function(t3, e2) { 40345 var n2 = typeof e2 === "string" ? e2.split(",") : e2.constructor === Array ? e2 : [e2]; 40346 n2.unshift(t3); 40347 f.prototype.set.apply(this, n2); 40348 }, set: function(t3) { 40349 var e2 = Array.prototype.slice.apply(arguments, [1]); 40350 if (this.setter[t3]) { 40351 this.setter[t3].apply(this, e2); 40352 } else { 40353 this[t3] = e2.join(","); 40354 } 40355 }, get: function(t3) { 40356 if (this.getter[t3]) { 40357 return this.getter[t3].apply(this); 40358 } else { 40359 return this[t3] || 0; 40360 } 40361 }, setter: { rotate: function(t3) { 40362 this.rotate = b(t3, "deg"); 40363 }, rotateX: function(t3) { 40364 this.rotateX = b(t3, "deg"); 40365 }, rotateY: function(t3) { 40366 this.rotateY = b(t3, "deg"); 40367 }, scale: function(t3, e2) { 40368 if (e2 === void 0) { 40369 e2 = t3; 40370 } 40371 this.scale = t3 + "," + e2; 40372 }, skewX: function(t3) { 40373 this.skewX = b(t3, "deg"); 40374 }, skewY: function(t3) { 40375 this.skewY = b(t3, "deg"); 40376 }, perspective: function(t3) { 40377 this.perspective = b(t3, "px"); 40378 }, x: function(t3) { 40379 this.set("translate", t3, null); 40380 }, y: function(t3) { 40381 this.set("translate", null, t3); 40382 }, translate: function(t3, e2) { 40383 if (this._translateX === void 0) { 40384 this._translateX = 0; 40385 } 40386 if (this._translateY === void 0) { 40387 this._translateY = 0; 40388 } 40389 if (t3 !== null && t3 !== void 0) { 40390 this._translateX = b(t3, "px"); 40391 } 40392 if (e2 !== null && e2 !== void 0) { 40393 this._translateY = b(e2, "px"); 40394 } 40395 this.translate = this._translateX + "," + this._translateY; 40396 } }, getter: { x: function() { 40397 return this._translateX || 0; 40398 }, y: function() { 40399 return this._translateY || 0; 40400 }, scale: function() { 40401 var t3 = (this.scale || "1,1").split(","); 40402 if (t3[0]) { 40403 t3[0] = parseFloat(t3[0]); 40404 } 40405 if (t3[1]) { 40406 t3[1] = parseFloat(t3[1]); 40407 } 40408 return t3[0] === t3[1] ? t3[0] : t3; 40409 }, rotate3d: function() { 40410 var t3 = (this.rotate3d || "0,0,0,0deg").split(","); 40411 for (var e2 = 0; e2 <= 3; ++e2) { 40412 if (t3[e2]) { 40413 t3[e2] = parseFloat(t3[e2]); 40414 } 40415 } 40416 if (t3[3]) { 40417 t3[3] = b(t3[3], "deg"); 40418 } 40419 return t3; 40420 } }, parse: function(t3) { 40421 var e2 = this; 40422 t3.replace(/([a-zA-Z0-9]+)\((.*?)\)/g, function(t4, n2, i2) { 40423 e2.setFromString(n2, i2); 40424 }); 40425 }, toString: function(t3) { 40426 var e2 = []; 40427 for (var i2 in this) { 40428 if (this.hasOwnProperty(i2)) { 40429 if (!n.transform3d && (i2 === "rotateX" || i2 === "rotateY" || i2 === "perspective" || i2 === "transformOrigin")) { 40430 continue; 40431 } 40432 if (i2[0] !== "_") { 40433 if (t3 && i2 === "scale") { 40434 e2.push(i2 + "3d(" + this[i2] + ",1)"); 40435 } else if (t3 && i2 === "translate") { 40436 e2.push(i2 + "3d(" + this[i2] + ",0)"); 40437 } else { 40438 e2.push(i2 + "(" + this[i2] + ")"); 40439 } 40440 } 40441 } 40442 } 40443 return e2.join(" "); 40444 } }; 40445 function c(t3, e2, n2) { 40446 if (e2 === true) { 40447 t3.queue(n2); 40448 } else if (e2) { 40449 t3.queue(e2, n2); 40450 } else { 40451 t3.each(function() { 40452 n2.call(this); 40453 }); 40454 } 40455 } 40456 function l(e2) { 40457 var i2 = []; 40458 t2.each(e2, function(e3) { 40459 e3 = t2.camelCase(e3); 40460 e3 = t2.transit.propertyMap[e3] || t2.cssProps[e3] || e3; 40461 e3 = h(e3); 40462 if (n[e3]) e3 = h(n[e3]); 40463 if (t2.inArray(e3, i2) === -1) { 40464 i2.push(e3); 40465 } 40466 }); 40467 return i2; 40468 } 40469 function d(e2, n2, i2, r2) { 40470 var s2 = l(e2); 40471 if (t2.cssEase[i2]) { 40472 i2 = t2.cssEase[i2]; 40473 } 40474 var a2 = "" + y(n2) + " " + i2; 40475 if (parseInt(r2, 10) > 0) { 40476 a2 += " " + y(r2); 40477 } 40478 var o2 = []; 40479 t2.each(s2, function(t3, e3) { 40480 o2.push(e3 + " " + a2); 40481 }); 40482 return o2.join(", "); 40483 } 40484 t2.fn.transition = t2.fn.transit = function(e2, i2, r2, s2) { 40485 var a2 = this; 40486 var u2 = 0; 40487 var f2 = true; 40488 var l2 = t2.extend(true, {}, e2); 40489 if (typeof i2 === "function") { 40490 s2 = i2; 40491 i2 = void 0; 40492 } 40493 if (typeof i2 === "object") { 40494 r2 = i2.easing; 40495 u2 = i2.delay || 0; 40496 f2 = typeof i2.queue === "undefined" ? true : i2.queue; 40497 s2 = i2.complete; 40498 i2 = i2.duration; 40499 } 40500 if (typeof r2 === "function") { 40501 s2 = r2; 40502 r2 = void 0; 40503 } 40504 if (typeof l2.easing !== "undefined") { 40505 r2 = l2.easing; 40506 delete l2.easing; 40507 } 40508 if (typeof l2.duration !== "undefined") { 40509 i2 = l2.duration; 40510 delete l2.duration; 40511 } 40512 if (typeof l2.complete !== "undefined") { 40513 s2 = l2.complete; 40514 delete l2.complete; 40515 } 40516 if (typeof l2.queue !== "undefined") { 40517 f2 = l2.queue; 40518 delete l2.queue; 40519 } 40520 if (typeof l2.delay !== "undefined") { 40521 u2 = l2.delay; 40522 delete l2.delay; 40523 } 40524 if (typeof i2 === "undefined") { 40525 i2 = t2.fx.speeds._default; 40526 } 40527 if (typeof r2 === "undefined") { 40528 r2 = t2.cssEase._default; 40529 } 40530 i2 = y(i2); 40531 var p2 = d(l2, i2, r2, u2); 40532 var h2 = t2.transit.enabled && n.transition; 40533 var b2 = h2 ? parseInt(i2, 10) + parseInt(u2, 10) : 0; 40534 if (b2 === 0) { 40535 var g = function(t3) { 40536 a2.css(l2); 40537 if (s2) { 40538 s2.apply(a2); 40539 } 40540 if (t3) { 40541 t3(); 40542 } 40543 }; 40544 c(a2, f2, g); 40545 return a2; 40546 } 40547 var m = {}; 40548 var v = function(e3) { 40549 var i3 = false;
40550 var r3 = function() { 40551 if (i3) { 40552 a2.unbind(o, r3); 40553 } 40554 if (b2 > 0) { 40555 a2.each(function() { 40556 this.style[n.transition] = m[this] || null; 40557 }); 40558 } 40559 if (typeof s2 === "function") { 40560 s2.apply(a2); 40561 } 40562 if (typeof e3 === "function") { 40563 e3(); 40564 } 40565 }; 40566 if (b2 > 0 && o && t2.transit.useTransitionEnd) { 40567 i3 = true; 40568 a2.bind(o, r3); 40569 } else { 40570 window.setTimeout(r3, b2); 40571 } 40572 a2.each(function() { 40573 if (b2 > 0) { 40574 this.style[n.transition] = p2; 40575 } 40576 t2(this).css(l2); 40577 }); 40578 }; 40579 var z = function(t3) { 40580 this.offsetWidth; 40581 v(t3); 40582 }; 40583 c(a2, f2, z); 40584 return this; 40585 }; 40586 function p(e2, i2) { 40587 if (!i2) { 40588 t2.cssNumber[e2] = true; 40589 } 40590 t2.transit.propertyMap[e2] = n.transform; 40591 t2.cssHooks[e2] = { get: function(n2) { 40592 var i3 = t2(n2).css("transit:transform"); 40593 return i3.get(e2); 40594 }, set: function(n2, i3) { 40595 var r2 = t2(n2).css("transit:transform"); 40596 r2.setFromString(e2, i3); 40597 t2(n2).css({ "transit:transform": r2 }); 40598 } }; 40599 } 40600 function h(t3) { 40601 return t3.replace(/([A-Z])/g, function(t4) { 40602 return "-" + t4.toLowerCase(); 40603 }); 40604 } 40605 function b(t3, e2) { 40606 if (typeof t3 === "string" && !t3.match(/^[\-0-9\.]+$/)) { 40607 return t3; 40608 } else { 40609 return "" + t3 + e2; 40610 } 40611 } 40612 function y(e2) { 40613 var n2 = e2; 40614 if (typeof n2 === "string" && !n2.match(/^[\-0-9\.]+/)) { 40615 n2 = t2.fx.speeds[n2] || t2.fx.speeds._default; 40616 } 40617 return b(n2, "ms"); 40618 } 40619 t2.transit.getTransitionValue = d; 40620 return t2; 40621 }); 40622 } 40623 }); 40624 40625
vendor: 16,384 bytes, lines 40625-40943
40625// apps/base/assets/javascripts/vendor/jquery.ui.autocomplete.js 40626 var require_jquery_ui_autocomplete = __commonJS({ 40627 "apps/base/assets/javascripts/vendor/jquery.ui.autocomplete.js"() { 40628 "use strict"; 40629 init_esbuild_shims(); 40630 (function(factory) { 40631 if (typeof define === "function" && define.amd) { 40632 define(["jquery"], factory); 40633 } else { 40634 factory(jQuery); 40635 } 40636 })(function($3) { 40637 $3.ui = $3.ui || {}; 40638 return $3.ui.version = "1.12.1"; 40639 }); 40640 (function(factory) { 40641 if (typeof define === "function" && define.amd) { 40642 define(["jquery", "./version"], factory); 40643 } else { 40644 factory(jQuery); 40645 } 40646 })(function($3) { 40647 return $3.ui.keyCode = { 40648 BACKSPACE: 8, 40649 COMMA: 188, 40650 DELETE: 46, 40651 DOWN: 40, 40652 END: 35, 40653 ENTER: 13, 40654 ESCAPE: 27, 40655 HOME: 36, 40656 LEFT: 37, 40657 PAGE_DOWN: 34, 40658 PAGE_UP: 33, 40659 PERIOD: 190, 40660 RIGHT: 39, 40661 SPACE: 32, 40662 TAB: 9, 40663 UP: 38 40664 }; 40665 }); 40666 (function(factory) { 40667 if (typeof define === "function" && define.amd) { 40668 define(["jquery", "./version"], factory); 40669 } else { 40670 factory(jQuery); 40671 } 40672 })(function($3) { 40673 (function() { 40674 var cachedScrollbarWidth, max = Math.max, abs = Math.abs, rhorizontal = /left|center|right/, rvertical = /top|center|bottom/, roffset = /[\+\-]\d+(\.[\d]+)?%?/, rposition = /^\w+/, rpercent = /%$/, _position = $3.fn.position; 40675 function getOffsets(offsets, width, height) { 40676 return [ 40677 parseFloat(offsets[0]) * (rpercent.test(offsets[0]) ? width / 100 : 1), 40678 parseFloat(offsets[1]) * (rpercent.test(offsets[1]) ? height / 100 : 1) 40679 ]; 40680 } 40681 function parseCss(element, property) { 40682 return parseInt($3.css(element, property), 10) || 0; 40683 } 40684 function getDimensions(elem) { 40685 var raw = elem[0]; 40686 if (raw.nodeType === 9) { 40687 return { 40688 width: elem.width(), 40689 height: elem.height(), 40690 offset: { top: 0, left: 0 } 40691 }; 40692 } 40693 if ($3.isWindow(raw)) { 40694 return { 40695 width: elem.width(), 40696 height: elem.height(), 40697 offset: { top: elem.scrollTop(), left: elem.scrollLeft() } 40698 }; 40699 } 40700 if (raw.preventDefault) { 40701 return { 40702 width: 0, 40703 height: 0, 40704 offset: { top: raw.pageY, left: raw.pageX } 40705 }; 40706 } 40707 return { 40708 width: elem.outerWidth(), 40709 height: elem.outerHeight(), 40710 offset: elem.offset() 40711 }; 40712 } 40713 $3.position = { 40714 scrollbarWidth: function() { 40715 if (cachedScrollbarWidth !== void 0) { 40716 return cachedScrollbarWidth; 40717 } 40718 var w1, w2, div = $3("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"), innerDiv = div.children()[0]; 40719 $3("body").append(div); 40720 w1 = innerDiv.offsetWidth; 40721 div.css("overflow", "scroll"); 40722 w2 = innerDiv.offsetWidth; 40723 if (w1 === w2) { 40724 w2 = div[0].clientWidth; 40725 } 40726 div.remove(); 40727 return cachedScrollbarWidth = w1 - w2; 40728 }, 40729 getScrollInfo: function(within) { 40730 var overflowX = within.isWindow || within.isDocument ? "" : within.element.css("overflow-x"), overflowY = within.isWindow || within.isDocument ? "" : within.element.css("overflow-y"), hasOverflowX = overflowX === "scroll" || overflowX === "auto" && within.width < within.element[0].scrollWidth, hasOverflowY = overflowY === "scroll" || overflowY === "auto" && within.height < within.element[0].scrollHeight; 40731 return { 40732 width: hasOverflowY ? $3.position.scrollbarWidth() : 0, 40733 height: hasOverflowX ? $3.position.scrollbarWidth() : 0 40734 }; 40735 }, 40736 getWithinInfo: function(element) { 40737 var withinElement = $3(element || window), isWindow = $3.isWindow(withinElement[0]), isDocument = !!withinElement[0] && withinElement[0].nodeType === 9, hasOffset = !isWindow && !isDocument; 40738 return { 40739 element: withinElement, 40740 isWindow, 40741 isDocument, 40742 offset: hasOffset ? $3(element).offset() : { left: 0, top: 0 }, 40743 scrollLeft: withinElement.scrollLeft(), 40744 scrollTop: withinElement.scrollTop(), 40745 width: withinElement.outerWidth(), 40746 height: withinElement.outerHeight() 40747 }; 40748 } 40749 }; 40750 $3.fn.position = function(options) { 40751 if (!options || !options.of) { 40752 return _position.apply(this, arguments); 40753 } 40754 options = $3.extend({}, options); 40755 var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions, target = $3(options.of), within = $3.position.getWithinInfo(options.within), scrollInfo = $3.position.getScrollInfo(within), collision = (options.collision || "flip").split(" "), offsets = {}; 40756 dimensions = getDimensions(target); 40757 if (target[0].preventDefault) { 40758 options.at = "left top"; 40759 } 40760 targetWidth = dimensions.width; 40761 targetHeight = dimensions.height; 40762 targetOffset = dimensions.offset; 40763 basePosition = $3.extend({}, targetOffset); 40764 $3.each(["my", "at"], function() { 40765 var pos = (options[this] || "").split(" "), horizontalOffset, verticalOffset; 40766 if (pos.length === 1) { 40767 pos = rhorizontal.test(pos[0]) ? pos.concat(["center"]) : rvertical.test(pos[0]) ? ["center"].concat(pos) : ["center", "center"]; 40768 } 40769 pos[0] = rhorizontal.test(pos[0]) ? pos[0] : "center"; 40770 pos[1] = rvertical.test(pos[1]) ? pos[1] : "center"; 40771 horizontalOffset = roffset.exec(pos[0]); 40772 verticalOffset = roffset.exec(pos[1]); 40773 offsets[this] = [ 40774 horizontalOffset ? horizontalOffset[0] : 0, 40775 verticalOffset ? verticalOffset[0] : 0 40776 ]; 40777 options[this] = [ 40778 rposition.exec(pos[0])[0], 40779 rposition.exec(pos[1])[0] 40780 ]; 40781 }); 40782 if (collision.length === 1) { 40783 collision[1] = collision[0]; 40784 } 40785 if (options.at[0] === "right") { 40786 basePosition.left += targetWidth; 40787 } else if (options.at[0] === "center") { 40788 basePosition.left += targetWidth / 2; 40789 } 40790 if (options.at[1] === "bottom") { 40791 basePosition.top += targetHeight; 40792 } else if (options.at[1] === "center") { 40793 basePosition.top += targetHeight / 2; 40794 } 40795 atOffset = getOffsets(offsets.at, targetWidth, targetHeight); 40796 basePosition.left += atOffset[0]; 40797 basePosition.top += atOffset[1]; 40798 return this.each(function() { 40799 var collisionPosition, using, elem = $3(this), elemWidth = elem.outerWidth(), elemHeight = elem.outerHeight(), marginLeft = parseCss(this, "marginLeft"), marginTop = parseCss(this, "marginTop"), collisionWidth = elemWidth + marginLeft + parseCss(this, "marginRight") + scrollInfo.width, collisionHeight = elemHeight + marginTop + parseCss(this, "marginBottom") + scrollInfo.height, position = $3.extend({}, basePosition), myOffset = getOffsets(offsets.my, elem.outerWidth(), elem.outerHeight()); 40800 if (options.my[0] === "right") { 40801 position.left -= elemWidth; 40802 } else if (options.my[0] === "center") { 40803 position.left -= elemWidth / 2; 40804 } 40805 if (options.my[1] === "bottom") { 40806 position.top -= elemHeight; 40807 } else if (options.my[1] === "center") { 40808 position.top -= elemHeight / 2; 40809 } 40810 position.left += myOffset[0]; 40811 position.top += myOffset[1]; 40812 collisionPosition = { 40813 marginLeft, 40814 marginTop 40815 }; 40816 $3.each(["left", "top"], function(i, dir) { 40817 if ($3.ui.position[collision[i]]) { 40818 $3.ui.position[collision[i]][dir](position, { 40819 targetWidth, 40820 targetHeight, 40821 elemWidth, 40822 elemHeight, 40823 collisionPosition, 40824 collisionWidth, 40825 collisionHeight, 40826 offset: [atOffset[0] + myOffset[0], atOffset[1] + myOffset[1]], 40827 my: options.my, 40828 at: options.at, 40829 within, 40830 elem 40831 }); 40832 } 40833 }); 40834 if (options.using) { 40835 using = function(props) { 40836 var left = targetOffset.left - position.left, right = left + targetWidth - elemWidth, top = targetOffset.top - position.top, bottom = top + targetHeight - elemHeight, feedback = { 40837 target: { 40838 element: target, 40839 left: targetOffset.left, 40840 top: targetOffset.top, 40841 width: targetWidth, 40842 height: targetHeight 40843 }, 40844 element: { 40845 element: elem, 40846 left: position.left, 40847 top: position.top, 40848 width: elemWidth, 40849 height: elemHeight 40850 }, 40851 horizontal: right < 0 ? "left" : left > 0 ? "right" : "center", 40852 vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle" 40853 }; 40854 if (targetWidth < elemWidth && abs(left + right) < targetWidth) { 40855 feedback.horizontal = "center"; 40856 } 40857 if (targetHeight < elemHeight && abs(top + bottom) < targetHeight) { 40858 feedback.vertical = "middle"; 40859 } 40860 if (max(abs(left), abs(right)) > max(abs(top), abs(bottom))) { 40861 feedback.important = "horizontal"; 40862 } else { 40863 feedback.important = "vertical"; 40864 } 40865 options.using.call(this, props, feedback); 40866 }; 40867 } 40868 elem.offset($3.extend(position, { using })); 40869 }); 40870 }; 40871 $3.ui.position = { 40872 fit: { 40873 left: function(position, data) { 40874 var within = data.within, withinOffset = within.isWindow ? within.scrollLeft : within.offset.left, outerWidth = within.width, collisionPosLeft = position.left - data.collisionPosition.marginLeft, overLeft = withinOffset - collisionPosLeft, overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset, newOverRight; 40875 if (data.collisionWidth > outerWidth) { 40876 if (overLeft > 0 && overRight <= 0) { 40877 newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset; 40878 position.left += overLeft - newOverRight; 40879 } else if (overRight > 0 && overLeft <= 0) { 40880 position.left = withinOffset; 40881 } else { 40882 if (overLeft > overRight) { 40883 position.left = withinOffset + outerWidth - data.collisionWidth; 40884 } else { 40885 position.left = withinOffset; 40886 } 40887 } 40888 } else if (overLeft > 0) { 40889 position.left += overLeft; 40890 } else if (overRight > 0) { 40891 position.left -= overRight; 40892 } else { 40893 position.left = max(position.left - collisionPosLeft, position.left); 40894 } 40895 }, 40896 top: function(position, data) { 40897 var within = data.within, withinOffset = within.isWindow ? within.scrollTop : within.offset.top, outerHeight = data.within.height, collisionPosTop = position.top - data.collisionPosition.marginTop, overTop = withinOffset - collisionPosTop, overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset, newOverBottom; 40898 if (data.collisionHeight > outerHeight) { 40899 if (overTop > 0 && overBottom <= 0) { 40900 newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset; 40901 position.top += overTop - newOverBottom; 40902 } else if (overBottom > 0 && overTop <= 0) { 40903 position.top = withinOffset; 40904 } else { 40905 if (overTop > overBottom) { 40906 position.top = withinOffset + outerHeight - data.collisionHeight; 40907 } else { 40908 position.top = withinOffset; 40909 } 40910 } 40911 } else if (overTop > 0) { 40912 position.top += overTop; 40913 } else if (overBottom > 0) { 40914 position.top -= overBottom; 40915 } else { 40916 position.top = max(position.top - collisionPosTop, position.top); 40917 } 40918 } 40919 }, 40920 flip: { 40921 left: function(position, data) { 40922 var within = data.within, withinOffset = within.offset.left + within.scrollLeft, outerWidth = within.width, offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left, collisionPosLeft = position.left - data.collisionPosition.marginLeft, overLeft = collisionPosLeft - offsetLeft, overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft, myOffset = data.my[0] === "left" ? -data.elemWidth : data.my[0] === "right" ? data.elemWidth : 0, atOffset = data.at[0] === "left" ? data.targetWidth : data.at[0] === "right" ? -data.targetWidth : 0, offset = -2 * data.offset[0], newOverRight, newOverLeft; 40923 if (overLeft < 0) { 40924 newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset; 40925 if (newOverRight < 0 || newOverRight < abs(overLeft)) { 40926 position.left += myOffset + atOffset + offset; 40927 } 40928 } else if (overRight > 0) { 40929 newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft; 40930 if (newOverLeft > 0 || abs(newOverLeft) < overRight) { 40931 position.left += myOffset + atOffset + offset; 40932 } 40933 } 40934 }, 40935 top: function(position, data) { 40936 var within = data.within, withinOffset = within.offset.top + within.scrollTop, outerHeight = within.height, offsetTop = within.isWindow ? within.scrollTop : within.offset.top, collisionPosTop = position.top - data.collisionPosition.marginTop, overTop = collisionPosTop - offsetTop, overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop, top = data.my[1] === "top", myOffset = top ? -data.elemHeight : data.my[1] === "bottom" ? data.elemHeight : 0, atOffset = data.at[1] === "top" ? data.targetHeight : data.at[1] === "bottom" ? -data.targetHeight : 0, offset = -2 * data.offset[1], newOverTop, newOverBottom; 40937 if (overTop < 0) { 40938 newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset; 40939 if (newOverBottom < 0 || newOverBottom < abs(overTop)) { 40940 position.top += myOffset + atOffset + offset; 40941 } 40942 } else if (overBottom > 0) { 40943 newOverTop = position.top - data.collis
vendor: 5,329 bytes, lines 40943-41092
40943ionPosition.marginTop + myOffset + atOffset + offset - offsetTop; 40944 if (newOverTop > 0 || abs(newOverTop) < overBottom) { 40945 position.top += myOffset + atOffset + offset; 40946 } 40947 } 40948 } 40949 }, 40950 flipfit: { 40951 left: function() { 40952 $3.ui.position.flip.left.apply(this, arguments); 40953 $3.ui.position.fit.left.apply(this, arguments); 40954 }, 40955 top: function() { 40956 $3.ui.position.flip.top.apply(this, arguments); 40957 $3.ui.position.fit.top.apply(this, arguments); 40958 } 40959 } 40960 }; 40961 })(); 40962 return $3.ui.position; 40963 }); 40964 (function(factory) { 40965 if (typeof define === "function" && define.amd) { 40966 define(["jquery", "./version"], factory); 40967 } else { 40968 factory(jQuery); 40969 } 40970 })(function($3) { 40971 return $3.ui.safeActiveElement = function(document2) { 40972 var activeElement; 40973 try { 40974 activeElement = document2.activeElement; 40975 } catch (error) { 40976 activeElement = document2.body; 40977 } 40978 if (!activeElement) { 40979 activeElement = document2.body; 40980 } 40981 if (!activeElement.nodeName) { 40982 activeElement = document2.body; 40983 } 40984 return activeElement; 40985 }; 40986 }); 40987 (function(factory) { 40988 if (typeof define === "function" && define.amd) { 40989 define(["jquery", "./version"], factory); 40990 } else { 40991 factory(jQuery); 40992 } 40993 })(function($3) { 40994 return $3.fn.extend({ 40995 uniqueId: /* @__PURE__ */ (function() { 40996 var uuid = 0; 40997 return function() { 40998 return this.each(function() { 40999 if (!this.id) { 41000 this.id = "ui-id-" + ++uuid; 41001 } 41002 }); 41003 }; 41004 })(), 41005 removeUniqueId: function() { 41006 return this.each(function() { 41007 if (/^ui-id-\d+$/.test(this.id)) { 41008 $3(this).removeAttr("id"); 41009 } 41010 }); 41011 } 41012 }); 41013 }); 41014 (function(factory) { 41015 if (typeof define === "function" && define.amd) { 41016 define(["jquery", "./version"], factory); 41017 } else { 41018 factory(jQuery); 41019 } 41020 })(function($3) { 41021 var widgetUuid = 0; 41022 var widgetSlice = Array.prototype.slice; 41023 $3.cleanData = /* @__PURE__ */ (function(orig) { 41024 return function(elems) { 41025 var events, elem, i; 41026 for (i = 0; (elem = elems[i]) != null; i++) { 41027 try { 41028 events = $3._data(elem, "events"); 41029 if (events && events.remove) { 41030 $3(elem).triggerHandler("remove"); 41031 } 41032 } catch (e) { 41033 } 41034 } 41035 orig(elems); 41036 }; 41037 })($3.cleanData); 41038 $3.widget = function(name, base, prototype) { 41039 var existingConstructor, constructor, basePrototype; 41040 var proxiedPrototype = {}; 41041 var namespace = name.split(".")[0]; 41042 name = name.split(".")[1]; 41043 var fullName = namespace + "-" + name; 41044 if (!prototype) { 41045 prototype = base; 41046 base = $3.Widget; 41047 } 41048 if ($3.isArray(prototype)) { 41049 prototype = $3.extend.apply(null, [{}].concat(prototype)); 41050 } 41051 $3.expr[":"][fullName.toLowerCase()] = function(elem) { 41052 return !!$3.data(elem, fullName); 41053 }; 41054 $3[namespace] = $3[namespace] || {}; 41055 existingConstructor = $3[namespace][name]; 41056 constructor = $3[namespace][name] = function(options, element) { 41057 if (!this._createWidget) { 41058 return new constructor(options, element); 41059 } 41060 if (arguments.length) { 41061 this._createWidget(options, element); 41062 } 41063 }; 41064 $3.extend(constructor, existingConstructor, { 41065 version: prototype.version, 41066 // Copy the object used to create the prototype in case we need to 41067 // redefine the widget later 41068 _proto: $3.extend({}, prototype), 41069 // Track widgets that inherit from this widget in case this widget is 41070 // redefined after a widget inherits from it 41071 _childConstructors: [] 41072 }); 41073 basePrototype = new base(); 41074 basePrototype.options = $3.widget.extend({}, basePrototype.options); 41075 $3.each(prototype, function(prop, value) { 41076 if (!$3.isFunction(value)) { 41077 proxiedPrototype[prop] = value; 41078 return; 41079 } 41080 proxiedPrototype[prop] = /* @__PURE__ */ (function() { 41081 function _super() { 41082 return base.prototype[prop].apply(this, arguments); 41083 } 41084 function _superApply(args) { 41085 return base.prototype[prop].apply(this, args); 41086 } 41087 return function() { 41088 var __super = this._super; 41089 var __superApply = this._superApply; 41090 var returnValue; 41091 this._super = _super; 41092 this._superApply = _superApply;
vendor: 12,814 bytes, lines 41093-41417
41093 returnValue = value.apply(this, arguments); 41094 this._super = __super; 41095 this._superApply = __superApply; 41096 return returnValue; 41097 }; 41098 })(); 41099 }); 41100 constructor.prototype = $3.widget.extend(basePrototype, { 41101 // TODO: remove support for widgetEventPrefix 41102 // always use the name + a colon as the prefix, e.g., draggable:start 41103 // don't prefix for widgets that aren't DOM-based 41104 widgetEventPrefix: existingConstructor ? basePrototype.widgetEventPrefix || name : name 41105 }, proxiedPrototype, { 41106 constructor, 41107 namespace, 41108 widgetName: name, 41109 widgetFullName: fullName 41110 }); 41111 if (existingConstructor) { 41112 $3.each(existingConstructor._childConstructors, function(i, child) { 41113 var childPrototype = child.prototype; 41114 $3.widget( 41115 childPrototype.namespace + "." + childPrototype.widgetName, 41116 constructor, 41117 child._proto 41118 ); 41119 }); 41120 delete existingConstructor._childConstructors; 41121 } else { 41122 base._childConstructors.push(constructor); 41123 } 41124 $3.widget.bridge(name, constructor); 41125 return constructor; 41126 }; 41127 $3.widget.extend = function(target) { 41128 var input = widgetSlice.call(arguments, 1); 41129 var inputIndex = 0; 41130 var inputLength = input.length; 41131 var key; 41132 var value; 41133 for (; inputIndex < inputLength; inputIndex++) { 41134 for (key in input[inputIndex]) { 41135 value = input[inputIndex][key]; 41136 if (input[inputIndex].hasOwnProperty(key) && value !== void 0) { 41137 if ($3.isPlainObject(value)) { 41138 target[key] = $3.isPlainObject(target[key]) ? $3.widget.extend({}, target[key], value) : ( 41139 // Don't extend strings, arrays, etc. with objects 41140 $3.widget.extend({}, value) 41141 ); 41142 } else { 41143 target[key] = value; 41144 } 41145 } 41146 } 41147 } 41148 return target; 41149 }; 41150 $3.widget.bridge = function(name, object) { 41151 var fullName = object.prototype.widgetFullName || name; 41152 $3.fn[name] = function(options) { 41153 var isMethodCall = typeof options === "string"; 41154 var args = widgetSlice.call(arguments, 1); 41155 var returnValue = this; 41156 if (isMethodCall) { 41157 if (!this.length && options === "instance") { 41158 returnValue = void 0; 41159 } else { 41160 this.each(function() { 41161 var methodValue; 41162 var instance = $3.data(this, fullName); 41163 if (options === "instance") { 41164 returnValue = instance; 41165 return false; 41166 } 41167 if (!instance) { 41168 return $3.error("cannot call methods on " + name + " prior to initialization; attempted to call method '" + options + "'"); 41169 } 41170 if (!$3.isFunction(instance[options]) || options.charAt(0) === "_") { 41171 return $3.error("no such method '" + options + "' for " + name + " widget instance"); 41172 } 41173 methodValue = instance[options].apply(instance, args); 41174 if (methodValue !== instance && methodValue !== void 0) { 41175 returnValue = methodValue && methodValue.jquery ? returnValue.pushStack(methodValue.get()) : methodValue; 41176 return false; 41177 } 41178 }); 41179 } 41180 } else { 41181 if (args.length) { 41182 options = $3.widget.extend.apply(null, [options].concat(args)); 41183 } 41184 this.each(function() { 41185 var instance = $3.data(this, fullName); 41186 if (instance) { 41187 instance.option(options || {}); 41188 if (instance._init) { 41189 instance._init(); 41190 } 41191 } else { 41192 $3.data(this, fullName, new object(options, this)); 41193 } 41194 }); 41195 } 41196 return returnValue; 41197 }; 41198 }; 41199 $3.Widget = function() { 41200 }; 41201 $3.Widget._childConstructors = []; 41202 $3.Widget.prototype = { 41203 widgetName: "widget", 41204 widgetEventPrefix: "", 41205 defaultElement: "<div>", 41206 options: { 41207 classes: {}, 41208 disabled: false, 41209 // Callbacks 41210 create: null 41211 }, 41212 _createWidget: function(options, element) { 41213 element = $3(element || this.defaultElement || this)[0]; 41214 this.element = $3(element); 41215 this.uuid = widgetUuid++; 41216 this.eventNamespace = "." + this.widgetName + this.uuid; 41217 this.bindings = $3(); 41218 this.hoverable = $3(); 41219 this.focusable = $3(); 41220 this.classesElementLookup = {}; 41221 if (element !== this) { 41222 $3.data(element, this.widgetFullName, this); 41223 this._on(true, this.element, { 41224 remove: function(event2) { 41225 if (event2.target === element) { 41226 this.destroy(); 41227 } 41228 } 41229 }); 41230 this.document = $3(element.style ? ( 41231 // Element within the document 41232 element.ownerDocument 41233 ) : ( 41234 // Element is window or document 41235 element.document || element 41236 )); 41237 this.window = $3(this.document[0].defaultView || this.document[0].parentWindow); 41238 } 41239 this.options = $3.widget.extend( 41240 {}, 41241 this.options, 41242 this._getCreateOptions(), 41243 options 41244 ); 41245 this._create(); 41246 if (this.options.disabled) { 41247 this._setOptionDisabled(this.options.disabled); 41248 } 41249 this._trigger("create", null, this._getCreateEventData()); 41250 this._init(); 41251 }, 41252 _getCreateOptions: function() { 41253 return {}; 41254 }, 41255 _getCreateEventData: $3.noop, 41256 _create: $3.noop, 41257 _init: $3.noop, 41258 destroy: function() { 41259 var that = this; 41260 this._destroy(); 41261 $3.each(this.classesElementLookup, function(key, value) { 41262 that._removeClass(value, key); 41263 }); 41264 this.element.off(this.eventNamespace).removeData(this.widgetFullName); 41265 this.widget().off(this.eventNamespace).removeAttr("aria-disabled"); 41266 this.bindings.off(this.eventNamespace); 41267 }, 41268 _destroy: $3.noop, 41269 widget: function() { 41270 return this.element; 41271 }, 41272 option: function(key, value) { 41273 var options = key; 41274 var parts; 41275 var curOption; 41276 var i; 41277 if (arguments.length === 0) { 41278 return $3.widget.extend({}, this.options); 41279 } 41280 if (typeof key === "string") { 41281 options = {}; 41282 parts = key.split("."); 41283 key = parts.shift(); 41284 if (parts.length) { 41285 curOption = options[key] = $3.widget.extend({}, this.options[key]); 41286 for (i = 0; i < parts.length - 1; i++) { 41287 curOption[parts[i]] = curOption[parts[i]] || {}; 41288 curOption = curOption[parts[i]]; 41289 } 41290 key = parts.pop(); 41291 if (arguments.length === 1) { 41292 return curOption[key] === void 0 ? null : curOption[key]; 41293 } 41294 curOption[key] = value; 41295 } else { 41296 if (arguments.length === 1) { 41297 return this.options[key] === void 0 ? null : this.options[key]; 41298 } 41299 options[key] = value; 41300 } 41301 } 41302 this._setOptions(options); 41303 return this; 41304 }, 41305 _setOptions: function(options) { 41306 var key; 41307 for (key in options) { 41308 this._setOption(key, options[key]); 41309 } 41310 return this; 41311 }, 41312 _setOption: function(key, value) { 41313 if (key === "classes") { 41314 this._setOptionClasses(value); 41315 } 41316 this.options[key] = value; 41317 if (key === "disabled") { 41318 this._setOptionDisabled(value); 41319 } 41320 return this; 41321 }, 41322 _setOptionClasses: function(value) { 41323 var classKey, elements, currentElements; 41324 for (classKey in value) { 41325 currentElements = this.classesElementLookup[classKey]; 41326 if (value[classKey] === this.options.classes[classKey] || !currentElements || !currentElements.length) { 41327 continue; 41328 } 41329 elements = $3(currentElements.get()); 41330 this._removeClass(currentElements, classKey); 41331 elements.addClass(this._classes({ 41332 element: elements, 41333 keys: classKey, 41334 classes: value, 41335 add: true 41336 })); 41337 } 41338 }, 41339 _setOptionDisabled: function(value) { 41340 this._toggleClass(this.widget(), this.widgetFullName + "-disabled", null, !!value); 41341 if (value) { 41342 this._removeClass(this.hoverable, null, "ui-state-hover"); 41343 this._removeClass(this.focusable, null, "ui-state-focus"); 41344 } 41345 }, 41346 enable: function() { 41347 return this._setOptions({ disabled: false }); 41348 }, 41349 disable: function() { 41350 return this._setOptions({ disabled: true }); 41351 }, 41352 _classes: function(options) { 41353 var full = []; 41354 var that = this; 41355 options = $3.extend({ 41356 element: this.element, 41357 classes: this.options.classes || {} 41358 }, options); 41359 function processClassString(classes, checkOption) { 41360 var current, i; 41361 for (i = 0; i < classes.length; i++) { 41362 current = that.classesElementLookup[classes[i]] || $3(); 41363 if (options.add) { 41364 current = $3($3.unique(current.get().concat(options.element.get()))); 41365 } else { 41366 current = $3(current.not(options.element).get()); 41367 } 41368 that.classesElementLookup[classes[i]] = current; 41369 full.push(classes[i]); 41370 if (checkOption && options.classes[classes[i]]) { 41371 full.push(options.classes[classes[i]]); 41372 } 41373 } 41374 } 41375 this._on(options.element, { 41376 "remove": "_untrackClassesElement" 41377 }); 41378 if (options.keys) { 41379 processClassString(options.keys.match(/\S+/g) || [], true); 41380 } 41381 if (options.extra) { 41382 processClassString(options.extra.match(/\S+/g) || []); 41383 } 41384 return full.join(" "); 41385 }, 41386 _untrackClassesElement: function(event2) { 41387 var that = this; 41388 $3.each(that.classesElementLookup, function(key, value) { 41389 if ($3.inArray(event2.target, value) !== -1) { 41390 that.classesElementLookup[key] = $3(value.not(event2.target).get()); 41391 } 41392 }); 41393 }, 41394 _removeClass: function(element, keys, extra) { 41395 return this._toggleClass(element, keys, extra, false); 41396 }, 41397 _addClass: function(element, keys, extra) { 41398 return this._toggleClass(element, keys, extra, true); 41399 }, 41400 _toggleClass: function(element, keys, extra, add) { 41401 add = typeof add === "boolean" ? add : extra; 41402 var shift = typeof element === "string" || element === null, options = { 41403 extra: shift ? keys : extra, 41404 keys: shift ? element : keys, 41405 element: shift ? this.element : element, 41406 add 41407 }; 41408 options.element.toggleClass(this._classes(options), add); 41409 return this; 41410 }, 41411 _on: function(suppressDisabledCheck, element, handlers) { 41412 var delegateElement; 41413 var instance = this; 41414 if (typeof suppressDisabledCheck !== "boolean") { 41415 handlers = element; 41416 element = suppressDisabledCheck; 41417 suppressDisabledCheck = false;
vendor: 19,248 bytes, lines 41418-41872
41418 } 41419 if (!handlers) { 41420 handlers = element; 41421 element = this.element; 41422 delegateElement = this.widget(); 41423 } else { 41424 element = delegateElement = $3(element); 41425 this.bindings = this.bindings.add(element); 41426 } 41427 $3.each(handlers, function(event2, handler) { 41428 function handlerProxy() { 41429 if (!suppressDisabledCheck && (instance.options.disabled === true || $3(this).hasClass("ui-state-disabled"))) { 41430 return; 41431 } 41432 return (typeof handler === "string" ? instance[handler] : handler).apply(instance, arguments); 41433 } 41434 if (typeof handler !== "string") { 41435 handlerProxy.guid = handler.guid = handler.guid || handlerProxy.guid || $3.guid++; 41436 } 41437 var match = event2.match(/^([\w:-]*)\s*(.*)$/); 41438 var eventName = match[1] + instance.eventNamespace; 41439 var selector = match[2]; 41440 if (selector) { 41441 delegateElement.on(eventName, selector, handlerProxy); 41442 } else { 41443 element.on(eventName, handlerProxy); 41444 } 41445 }); 41446 }, 41447 _off: function(element, eventName) { 41448 eventName = (eventName || "").split(" ").join(this.eventNamespace + " ") + this.eventNamespace; 41449 element.off(eventName).off(eventName); 41450 this.bindings = $3(this.bindings.not(element).get()); 41451 this.focusable = $3(this.focusable.not(element).get()); 41452 this.hoverable = $3(this.hoverable.not(element).get()); 41453 }, 41454 _delay: function(handler, delay) { 41455 function handlerProxy() { 41456 return (typeof handler === "string" ? instance[handler] : handler).apply(instance, arguments); 41457 } 41458 var instance = this; 41459 return setTimeout(handlerProxy, delay || 0); 41460 }, 41461 _hoverable: function(element) { 41462 this.hoverable = this.hoverable.add(element); 41463 this._on(element, { 41464 mouseenter: function(event2) { 41465 this._addClass($3(event2.currentTarget), null, "ui-state-hover"); 41466 }, 41467 mouseleave: function(event2) { 41468 this._removeClass($3(event2.currentTarget), null, "ui-state-hover"); 41469 } 41470 }); 41471 }, 41472 _focusable: function(element) { 41473 this.focusable = this.focusable.add(element); 41474 this._on(element, { 41475 focusin: function(event2) { 41476 this._addClass($3(event2.currentTarget), null, "ui-state-focus"); 41477 }, 41478 focusout: function(event2) { 41479 this._removeClass($3(event2.currentTarget), null, "ui-state-focus"); 41480 } 41481 }); 41482 }, 41483 _trigger: function(type, event2, data) { 41484 var prop, orig; 41485 var callback = this.options[type]; 41486 data = data || {}; 41487 event2 = $3.Event(event2); 41488 event2.type = (type === this.widgetEventPrefix ? type : this.widgetEventPrefix + type).toLowerCase(); 41489 event2.target = this.element[0]; 41490 orig = event2.originalEvent; 41491 if (orig) { 41492 for (prop in orig) { 41493 if (!(prop in event2)) { 41494 event2[prop] = orig[prop]; 41495 } 41496 } 41497 } 41498 this.element.trigger(event2, data); 41499 return !($3.isFunction(callback) && callback.apply(this.element[0], [event2].concat(data)) === false || event2.isDefaultPrevented()); 41500 } 41501 }; 41502 $3.each({ show: "fadeIn", hide: "fadeOut" }, function(method, defaultEffect) { 41503 $3.Widget.prototype["_" + method] = function(element, options, callback) { 41504 if (typeof options === "string") { 41505 options = { effect: options }; 41506 } 41507 var hasOptions; 41508 var effectName = !options ? method : options === true || typeof options === "number" ? defaultEffect : options.effect || defaultEffect; 41509 options = options || {}; 41510 if (typeof options === "number") { 41511 options = { duration: options }; 41512 } 41513 hasOptions = !$3.isEmptyObject(options); 41514 options.complete = callback; 41515 if (options.delay) { 41516 element.delay(options.delay); 41517 } 41518 if (hasOptions && $3.effects && $3.effects.effect[effectName]) { 41519 element[method](options); 41520 } else if (effectName !== method && element[effectName]) { 41521 element[effectName](options.duration, options.easing, callback); 41522 } else { 41523 element.queue(function(next) { 41524 $3(this)[method](); 41525 if (callback) { 41526 callback.call(element[0]); 41527 } 41528 next(); 41529 }); 41530 } 41531 }; 41532 }); 41533 return $3.widget; 41534 }); 41535 (function(factory) { 41536 if (typeof define === "function" && define.amd) { 41537 define([ 41538 "jquery", 41539 "../keycode", 41540 "../position", 41541 "../safe-active-element", 41542 "../unique-id", 41543 "../version", 41544 "../widget" 41545 ], factory); 41546 } else { 41547 factory(jQuery); 41548 } 41549 })(function($3) { 41550 return $3.widget("ui.menu", { 41551 version: "1.12.1", 41552 defaultElement: "<ul>", 41553 delay: 300, 41554 options: { 41555 icons: { 41556 submenu: "ui-icon-caret-1-e" 41557 }, 41558 items: "> *", 41559 menus: "ul", 41560 position: { 41561 my: "left top", 41562 at: "right top" 41563 }, 41564 role: "menu", 41565 // Callbacks 41566 blur: null, 41567 focus: null, 41568 select: null 41569 }, 41570 _create: function() { 41571 this.activeMenu = this.element; 41572 this.mouseHandled = false; 41573 this.element.uniqueId().attr({ 41574 role: this.options.role, 41575 tabIndex: 0 41576 }); 41577 this._addClass("ui-menu", "ui-widget ui-widget-content"); 41578 this._on({ 41579 // Prevent focus from sticking to links inside menu after clicking 41580 // them (focus should always stay on UL during navigation). 41581 "mousedown .ui-menu-item": function(event2) { 41582 event2.preventDefault(); 41583 }, 41584 "click .ui-menu-item": function(event2) { 41585 var target = $3(event2.target); 41586 var active = $3($3.ui.safeActiveElement(this.document[0])); 41587 if (!this.mouseHandled && target.not(".ui-state-disabled").length) { 41588 this.select(event2); 41589 if (!event2.isPropagationStopped()) { 41590 this.mouseHandled = true; 41591 } 41592 if (target.has(".ui-menu").length) { 41593 this.expand(event2); 41594 } else if (!this.element.is(":focus") && active.closest(".ui-menu").length) { 41595 this.element.trigger("focus", [true]); 41596 if (this.active && this.active.parents(".ui-menu").length === 1) { 41597 clearTimeout(this.timer); 41598 } 41599 } 41600 } 41601 }, 41602 "mouseenter .ui-menu-item": function(event2) { 41603 if (this.previousFilter) { 41604 return; 41605 } 41606 var actualTarget = $3(event2.target).closest(".ui-menu-item"), target = $3(event2.currentTarget); 41607 if (actualTarget[0] !== target[0]) { 41608 return; 41609 } 41610 this._removeClass( 41611 target.siblings().children(".ui-state-active"), 41612 null, 41613 "ui-state-active" 41614 ); 41615 this.focus(event2, target); 41616 }, 41617 mouseleave: "collapseAll", 41618 "mouseleave .ui-menu": "collapseAll", 41619 focus: function(event2, keepActiveItem) { 41620 var item = this.active || this.element.find(this.options.items).eq(0); 41621 if (!keepActiveItem) { 41622 this.focus(event2, item); 41623 } 41624 }, 41625 blur: function(event2) { 41626 this._delay(function() { 41627 var notContained = !$3.contains( 41628 this.element[0], 41629 $3.ui.safeActiveElement(this.document[0]) 41630 ); 41631 if (notContained) { 41632 this.collapseAll(event2); 41633 } 41634 }); 41635 }, 41636 keydown: "_keydown" 41637 }); 41638 this.refresh(); 41639 this._on(this.document, { 41640 click: function(event2) { 41641 if (this._closeOnDocumentClick(event2)) { 41642 this.collapseAll(event2); 41643 } 41644 this.mouseHandled = false; 41645 } 41646 }); 41647 }, 41648 _destroy: function() { 41649 var items = this.element.find(".ui-menu-item").removeAttr("role aria-disabled"), submenus = items.children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup"); 41650 this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(); 41651 submenus.children().each(function() { 41652 var elem = $3(this); 41653 if (elem.data("ui-menu-submenu-caret")) { 41654 elem.remove(); 41655 } 41656 }); 41657 }, 41658 _keydown: function(event2) { 41659 var match, prev, character, skip, preventDefault = true; 41660 switch (event2.keyCode) { 41661 case $3.ui.keyCode.PAGE_UP: 41662 this.previousPage(event2); 41663 break; 41664 case $3.ui.keyCode.PAGE_DOWN: 41665 this.nextPage(event2); 41666 break; 41667 case $3.ui.keyCode.HOME: 41668 this._move("first", "first", event2); 41669 break; 41670 case $3.ui.keyCode.END: 41671 this._move("last", "last", event2); 41672 break; 41673 case $3.ui.keyCode.UP: 41674 this.previous(event2); 41675 break; 41676 case $3.ui.keyCode.DOWN: 41677 this.next(event2); 41678 break; 41679 case $3.ui.keyCode.LEFT: 41680 this.collapse(event2); 41681 break; 41682 case $3.ui.keyCode.RIGHT: 41683 if (this.active && !this.active.is(".ui-state-disabled")) { 41684 this.expand(event2); 41685 } 41686 break; 41687 case $3.ui.keyCode.ENTER: 41688 case $3.ui.keyCode.SPACE: 41689 this._activate(event2); 41690 break; 41691 case $3.ui.keyCode.ESCAPE: 41692 this.collapse(event2); 41693 break; 41694 default: 41695 preventDefault = false; 41696 prev = this.previousFilter || ""; 41697 skip = false; 41698 character = event2.keyCode >= 96 && event2.keyCode <= 105 ? (event2.keyCode - 96).toString() : String.fromCharCode(event2.keyCode); 41699 clearTimeout(this.filterTimer); 41700 if (character === prev) { 41701 skip = true; 41702 } else { 41703 character = prev + character; 41704 } 41705 match = this._filterMenuItems(character); 41706 match = skip && match.index(this.active.next()) !== -1 ? this.active.nextAll(".ui-menu-item") : match; 41707 if (!match.length) { 41708 character = String.fromCharCode(event2.keyCode); 41709 match = this._filterMenuItems(character); 41710 } 41711 if (match.length) { 41712 this.focus(event2, match); 41713 this.previousFilter = character; 41714 this.filterTimer = this._delay(function() { 41715 delete this.previousFilter; 41716 }, 1e3); 41717 } else { 41718 delete this.previousFilter; 41719 } 41720 } 41721 if (preventDefault) { 41722 event2.preventDefault(); 41723 } 41724 }, 41725 _activate: function(event2) { 41726 if (this.active && !this.active.is(".ui-state-disabled")) { 41727 if (this.active.children("[aria-haspopup='true']").length) { 41728 this.expand(event2); 41729 } else { 41730 this.select(event2); 41731 } 41732 } 41733 }, 41734 refresh: function() { 41735 var menus, items, newSubmenus, newItems, newWrappers, that = this, icon = this.options.icons.submenu, submenus = this.element.find(this.options.menus); 41736 this._toggleClass("ui-menu-icons", null, !!this.element.find(".ui-icon").length); 41737 newSubmenus = submenus.filter(":not(.ui-menu)").hide().attr({ 41738 role: this.options.role, 41739 "aria-hidden": "true", 41740 "aria-expanded": "false" 41741 }).each(function() { 41742 var menu = $3(this), item = menu.prev(), submenuCaret = $3("<span>").data("ui-menu-submenu-caret", true); 41743 that._addClass(submenuCaret, "ui-menu-icon", "ui-icon " + icon); 41744 item.attr("aria-haspopup", "true").prepend(submenuCaret); 41745 menu.attr("aria-labelledby", item.attr("id")); 41746 }); 41747 this._addClass(newSubmenus, "ui-menu", "ui-widget ui-widget-content ui-front"); 41748 menus = submenus.add(this.element); 41749 items = menus.find(this.options.items); 41750 items.not(".ui-menu-item").each(function() { 41751 var item = $3(this); 41752 if (that._isDivider(item)) { 41753 that._addClass(item, "ui-menu-divider", "ui-widget-content"); 41754 } 41755 }); 41756 newItems = items.not(".ui-menu-item, .ui-menu-divider"); 41757 newWrappers = newItems.children().not(".ui-menu").uniqueId().attr({ 41758 tabIndex: -1, 41759 role: this._itemRole() 41760 }); 41761 this._addClass(newItems, "ui-menu-item")._addClass(newWrappers, "ui-menu-item-wrapper"); 41762 items.filter(".ui-state-disabled").attr("aria-disabled", "true"); 41763 if (this.active && !$3.contains(this.element[0], this.active[0])) { 41764 this.blur(); 41765 } 41766 }, 41767 _itemRole: function() { 41768 return { 41769 menu: "menuitem", 41770 listbox: "option" 41771 }[this.options.role]; 41772 }, 41773 _setOption: function(key, value) { 41774 if (key === "icons") { 41775 var icons = this.element.find(".ui-menu-icon"); 41776 this._removeClass(icons, null, this.options.icons.submenu)._addClass(icons, null, value.submenu); 41777 } 41778 this._super(key, value); 41779 }, 41780 _setOptionDisabled: function(value) { 41781 this._super(value); 41782 this.element.attr("aria-disabled", String(value)); 41783 this._toggleClass(null, "ui-state-disabled", !!value); 41784 }, 41785 focus: function(event2, item) { 41786 var nested, focused, activeParent; 41787 this.blur(event2, event2 && event2.type === "focus"); 41788 this._scrollIntoView(item); 41789 this.active = item.first(); 41790 focused = this.active.children(".ui-menu-item-wrapper"); 41791 this._addClass(focused, null, "ui-state-active"); 41792 if (this.options.role) { 41793 this.element.attr("aria-activedescendant", focused.attr("id")); 41794 } 41795 activeParent = this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"); 41796 this._addClass(activeParent, null, "ui-state-active"); 41797 if (event2 && event2.type === "keydown") { 41798 this._close(); 41799 } else { 41800 this.timer = this._delay(function() { 41801 this._close(); 41802 }, this.delay); 41803 } 41804 nested = item.children(".ui-menu"); 41805 if (nested.length && event2 && /^mouse/.test(event2.type)) { 41806 this._startOpening(nested); 41807 } 41808 this.activeMenu = item.parent(); 41809 this._trigger("focus", event2, { item }); 41810 }, 41811 _scrollIntoView: function(item) { 41812 var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight; 41813 if (this._hasScroll()) { 41814 borderTop = parseFloat($3.css(this.activeMenu[0], "borderTopWidth")) || 0; 41815 paddingTop = parseFloat($3.css(this.activeMenu[0], "paddingTop")) || 0; 41816 offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop; 41817 scroll = this.activeMenu.scrollTop(); 41818 elementHeight = this.activeMenu.height(); 41819 itemHeight = item.outerHeight(); 41820 if (offset < 0) { 41821 this.activeMenu.scrollTop(scroll + offset); 41822 } else if (offset + itemHeight > elementHeight) { 41823 this.activeMenu.scrollTop(scroll + offset - elementHeight + itemHeight); 41824 } 41825 } 41826 }, 41827 blur: function(event2, fromFocus) { 41828 if (!fromFocus) { 41829 clearTimeout(this.timer); 41830 } 41831 if (!this.active) { 41832 return; 41833 } 41834 this._removeClass( 41835 this.active.children(".ui-menu-item-wrapper"), 41836 null, 41837 "ui-state-active" 41838 ); 41839 this._trigger("blur", event2, { item: this.active }); 41840 this.active = null; 41841 }, 41842 _startOpening: function(submenu) { 41843 clearTimeout(this.timer); 41844 if (submenu.attr("aria-hidden") !== "true") { 41845 return; 41846 } 41847 this.timer = this._delay(function() { 41848 this._close(); 41849 this._open(submenu); 41850 }, this.delay); 41851 }, 41852 _open: function(submenu) { 41853 var position = $3.extend({ 41854 of: this.active 41855 }, this.options.position); 41856 clearTimeout(this.timer); 41857 this.element.find(".ui-menu").not(submenu.parents(".ui-menu")).hide().attr("aria-hidden", "true"); 41858 submenu.show().removeAttr("aria-hidden").attr("aria-expanded", "true").position(position); 41859 }, 41860 collapseAll: function(event2, all) { 41861 clearTimeout(this.timer); 41862 this.timer = this._delay(function() { 41863 var currentMenu = all ? this.element : $3(event2 && event2.target).closest(this.element.find(".ui-menu")); 41864 if (!currentMenu.length) { 41865 currentMenu = this.element; 41866 } 41867 this._close(currentMenu); 41868 this.blur(event2); 41869 this._removeClass(currentMenu.find(".ui-state-active"), null, "ui-state-active"); 41870 this.activeMenu = currentMenu; 41871 }, this.delay); 41872 },
vendor: 4,384 bytes, lines 41873-41981
41873 // With no arguments, closes the currently active menu - if nothing is active 41874 // it closes all menus. If passed an argument, it will search for menus BELOW 41875 _close: function(startMenu) { 41876 if (!startMenu) { 41877 startMenu = this.active ? this.active.parent() : this.element; 41878 } 41879 startMenu.find(".ui-menu").hide().attr("aria-hidden", "true").attr("aria-expanded", "false"); 41880 }, 41881 _closeOnDocumentClick: function(event2) { 41882 return !$3(event2.target).closest(".ui-menu").length; 41883 }, 41884 _isDivider: function(item) { 41885 return !/[^\-\u2014\u2013\s]/.test(item.text()); 41886 }, 41887 collapse: function(event2) { 41888 var newItem = this.active && this.active.parent().closest(".ui-menu-item", this.element); 41889 if (newItem && newItem.length) { 41890 this._close(); 41891 this.focus(event2, newItem); 41892 } 41893 }, 41894 expand: function(event2) { 41895 var newItem = this.active && this.active.children(".ui-menu ").find(this.options.items).first(); 41896 if (newItem && newItem.length) { 41897 this._open(newItem.parent()); 41898 this._delay(function() { 41899 this.focus(event2, newItem); 41900 }); 41901 } 41902 }, 41903 next: function(event2) { 41904 this._move("next", "first", event2); 41905 }, 41906 previous: function(event2) { 41907 this._move("prev", "last", event2); 41908 }, 41909 isFirstItem: function() { 41910 return this.active && !this.active.prevAll(".ui-menu-item").length; 41911 }, 41912 isLastItem: function() { 41913 return this.active && !this.active.nextAll(".ui-menu-item").length; 41914 }, 41915 _move: function(direction, filter, event2) { 41916 var next; 41917 if (this.active) { 41918 if (direction === "first" || direction === "last") { 41919 next = this.active[direction === "first" ? "prevAll" : "nextAll"](".ui-menu-item").eq(-1); 41920 } else { 41921 next = this.active[direction + "All"](".ui-menu-item").eq(0); 41922 } 41923 } 41924 if (!next || !next.length || !this.active) { 41925 next = this.activeMenu.find(this.options.items)[filter](); 41926 } 41927 this.focus(event2, next); 41928 }, 41929 nextPage: function(event2) { 41930 var item, base, height; 41931 if (!this.active) { 41932 this.next(event2); 41933 return; 41934 } 41935 if (this.isLastItem()) { 41936 return; 41937 } 41938 if (this._hasScroll()) { 41939 base = this.active.offset().top; 41940 height = this.element.height(); 41941 this.active.nextAll(".ui-menu-item").each(function() { 41942 item = $3(this); 41943 return item.offset().top - base - height < 0; 41944 }); 41945 this.focus(event2, item); 41946 } else { 41947 this.focus(event2, this.activeMenu.find(this.options.items)[!this.active ? "first" : "last"]()); 41948 } 41949 }, 41950 previousPage: function(event2) { 41951 var item, base, height; 41952 if (!this.active) { 41953 this.next(event2); 41954 return; 41955 } 41956 if (this.isFirstItem()) { 41957 return; 41958 } 41959 if (this._hasScroll()) { 41960 base = this.active.offset().top; 41961 height = this.element.height(); 41962 this.active.prevAll(".ui-menu-item").each(function() { 41963 item = $3(this); 41964 return item.offset().top - base + height > 0; 41965 }); 41966 this.focus(event2, item); 41967 } else { 41968 this.focus(event2, this.activeMenu.find(this.options.items).first()); 41969 } 41970 }, 41971 _hasScroll: function() { 41972 return this.element.outerHeight() < this.element.prop("scrollHeight"); 41973 }, 41974 select: function(event2) { 41975 this.active = this.active || $3(event2.target).closest(".ui-menu-item"); 41976 var ui = { item: this.active }; 41977 if (!this.active.has(".ui-menu").length) { 41978 this.collapseAll(event2, true); 41979 } 41980 this._trigger("select", event2, ui); 41981 },
vendor: 4,374 bytes, lines 41982-42097
41982 _filterMenuItems: function(character) { 41983 var escapedCharacter = character.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&"), regex = new RegExp("^" + escapedCharacter, "i"); 41984 return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function() { 41985 return regex.test( 41986 $3.trim($3(this).children(".ui-menu-item-wrapper").text()) 41987 ); 41988 }); 41989 } 41990 }); 41991 }); 41992 (function(factory) { 41993 if (typeof define === "function" && define.amd) { 41994 define([ 41995 "jquery", 41996 "./menu", 41997 "../keycode", 41998 "../position", 41999 "../safe-active-element", 42000 "../version", 42001 "../widget" 42002 ], factory); 42003 } else { 42004 factory(jQuery); 42005 } 42006 })(function($3) { 42007 $3.widget("ui.autocomplete", { 42008 version: "1.12.1", 42009 defaultElement: "<input>", 42010 options: { 42011 appendTo: null, 42012 autoFocus: false, 42013 delay: 300, 42014 minLength: 1, 42015 position: { 42016 my: "left top", 42017 at: "left bottom", 42018 collision: "none" 42019 }, 42020 source: null, 42021 // Callbacks 42022 change: null, 42023 close: null, 42024 focus: null, 42025 open: null, 42026 response: null, 42027 search: null, 42028 select: null 42029 }, 42030 requestIndex: 0, 42031 pending: 0, 42032 _create: function() { 42033 var suppressKeyPress, suppressKeyPressRepeat, suppressInput, nodeName = this.element[0].nodeName.toLowerCase(), isTextarea = nodeName === "textarea", isInput = nodeName === "input"; 42034 this.isMultiLine = isTextarea || !isInput && this._isContentEditable(this.element); 42035 this.valueMethod = this.element[isTextarea || isInput ? "val" : "text"]; 42036 this.isNewMenu = true; 42037 this._addClass("ui-autocomplete-input"); 42038 this.element.attr("autocomplete", "off"); 42039 this._on(this.element, { 42040 keydown: function(event2) { 42041 if (this.element.prop("readOnly")) { 42042 suppressKeyPress = true; 42043 suppressInput = true; 42044 suppressKeyPressRepeat = true; 42045 return; 42046 } 42047 suppressKeyPress = false; 42048 suppressInput = false; 42049 suppressKeyPressRepeat = false; 42050 var keyCode = $3.ui.keyCode; 42051 switch (event2.keyCode) { 42052 case keyCode.PAGE_UP: 42053 suppressKeyPress = true; 42054 this._move("previousPage", event2); 42055 break; 42056 case keyCode.PAGE_DOWN: 42057 suppressKeyPress = true; 42058 this._move("nextPage", event2); 42059 break; 42060 case keyCode.UP: 42061 suppressKeyPress = true; 42062 this._keyEvent("previous", event2); 42063 break; 42064 case keyCode.DOWN: 42065 suppressKeyPress = true; 42066 this._keyEvent("next", event2); 42067 break; 42068 case keyCode.ENTER: 42069 if (this.menu.active) { 42070 suppressKeyPress = true; 42071 event2.preventDefault(); 42072 this.menu.select(event2); 42073 } 42074 break; 42075 case keyCode.TAB: 42076 if (this.menu.active) { 42077 this.menu.select(event2); 42078 } 42079 break; 42080 case keyCode.ESCAPE: 42081 if (this.menu.element.is(":visible")) { 42082 if (!this.isMultiLine) { 42083 this._value(this.term); 42084 } 42085 this.close(event2); 42086 event2.preventDefault(); 42087 } 42088 break; 42089 default: 42090 suppressKeyPressRepeat = true; 42091 this._searchTimeout(event2); 42092 break; 42093 } 42094 }, 42095 keypress: function(event2) { 42096 if (suppressKeyPress) { 42097 suppressKeyPress = false;
vendor: 14,896 bytes, lines 42098-42489
42098 if (!this.isMultiLine || this.menu.element.is(":visible")) { 42099 event2.preventDefault(); 42100 } 42101 return; 42102 } 42103 if (suppressKeyPressRepeat) { 42104 return; 42105 } 42106 var keyCode = $3.ui.keyCode; 42107 switch (event2.keyCode) { 42108 case keyCode.PAGE_UP: 42109 this._move("previousPage", event2); 42110 break; 42111 case keyCode.PAGE_DOWN: 42112 this._move("nextPage", event2); 42113 break; 42114 case keyCode.UP: 42115 this._keyEvent("previous", event2); 42116 break; 42117 case keyCode.DOWN: 42118 this._keyEvent("next", event2); 42119 break; 42120 } 42121 }, 42122 input: function(event2) { 42123 if (suppressInput) { 42124 suppressInput = false; 42125 event2.preventDefault(); 42126 return; 42127 } 42128 this._searchTimeout(event2); 42129 }, 42130 focus: function() { 42131 this.selectedItem = null; 42132 this.previous = this._value(); 42133 }, 42134 blur: function(event2) { 42135 if (this.cancelBlur) { 42136 delete this.cancelBlur; 42137 return; 42138 } 42139 clearTimeout(this.searching); 42140 this.close(event2); 42141 this._change(event2); 42142 } 42143 }); 42144 this._initSource(); 42145 this.menu = $3("<ul>").appendTo(this._appendTo()).menu({ 42146 // disable ARIA support, the live region takes care of that 42147 role: null 42148 }).hide().menu("instance"); 42149 this._addClass(this.menu.element, "ui-autocomplete", "ui-front"); 42150 this._on(this.menu.element, { 42151 mousedown: function(event2) { 42152 event2.preventDefault(); 42153 this.cancelBlur = true; 42154 this._delay(function() { 42155 delete this.cancelBlur; 42156 if (this.element[0] !== $3.ui.safeActiveElement(this.document[0])) { 42157 this.element.trigger("focus"); 42158 } 42159 }); 42160 }, 42161 menufocus: function(event2, ui) { 42162 var label, item; 42163 if (this.isNewMenu) { 42164 this.isNewMenu = false; 42165 if (event2.originalEvent && /^mouse/.test(event2.originalEvent.type)) { 42166 this.menu.blur(); 42167 this.document.one("mousemove", function() { 42168 $3(event2.target).trigger(event2.originalEvent); 42169 }); 42170 return; 42171 } 42172 } 42173 item = ui.item.data("ui-autocomplete-item"); 42174 if (false !== this._trigger("focus", event2, { item })) { 42175 if (event2.originalEvent && /^key/.test(event2.originalEvent.type)) { 42176 this._value(item.value); 42177 } 42178 } 42179 label = ui.item.attr("aria-label") || item.value; 42180 if (label && $3.trim(label).length) { 42181 this.liveRegion.children().hide(); 42182 $3("<div>").text(label).appendTo(this.liveRegion); 42183 } 42184 }, 42185 menuselect: function(event2, ui) { 42186 var item = ui.item.data("ui-autocomplete-item"), previous = this.previous; 42187 if (this.element[0] !== $3.ui.safeActiveElement(this.document[0])) { 42188 this.element.trigger("focus"); 42189 this.previous = previous; 42190 this._delay(function() { 42191 this.previous = previous; 42192 this.selectedItem = item; 42193 }); 42194 } 42195 if (false !== this._trigger("select", event2, { item })) { 42196 this._value(item.value); 42197 } 42198 this.term = this._value(); 42199 this.close(event2); 42200 this.selectedItem = item; 42201 } 42202 }); 42203 this.liveRegion = $3("<div>", { 42204 role: "status", 42205 "aria-live": "assertive", 42206 "aria-relevant": "additions" 42207 }).appendTo(this.document[0].body); 42208 this._addClass(this.liveRegion, null, "ui-helper-hidden-accessible"); 42209 this._on(this.window, { 42210 beforeunload: function() { 42211 this.element.removeAttr("autocomplete"); 42212 } 42213 }); 42214 }, 42215 _destroy: function() { 42216 clearTimeout(this.searching); 42217 this.element.removeAttr("autocomplete"); 42218 this.menu.element.remove(); 42219 this.liveRegion.remove(); 42220 }, 42221 _setOption: function(key, value) { 42222 this._super(key, value); 42223 if (key === "source") { 42224 this._initSource(); 42225 } 42226 if (key === "appendTo") { 42227 this.menu.element.appendTo(this._appendTo()); 42228 } 42229 if (key === "disabled" && value && this.xhr) { 42230 this.xhr.abort(); 42231 } 42232 }, 42233 _isEventTargetInWidget: function(event2) { 42234 var menuElement = this.menu.element[0]; 42235 return event2.target === this.element[0] || event2.target === menuElement || $3.contains(menuElement, event2.target); 42236 }, 42237 _closeOnClickOutside: function(event2) { 42238 if (!this._isEventTargetInWidget(event2)) { 42239 this.close(); 42240 } 42241 }, 42242 _appendTo: function() { 42243 var element = this.options.appendTo; 42244 if (element) { 42245 element = element.jquery || element.nodeType ? $3(element) : this.document.find(element).eq(0); 42246 } 42247 if (!element || !element[0]) { 42248 element = this.element.closest(".ui-front, dialog"); 42249 } 42250 if (!element.length) { 42251 element = this.document[0].body; 42252 } 42253 return element; 42254 }, 42255 _initSource: function() { 42256 var array, url, that = this; 42257 if ($3.isArray(this.options.source)) { 42258 array = this.options.source; 42259 this.source = function(request, response) { 42260 response($3.ui.autocomplete.filter(array, request.term)); 42261 }; 42262 } else if (typeof this.options.source === "string") { 42263 url = this.options.source; 42264 this.source = function(request, response) { 42265 if (that.xhr) { 42266 that.xhr.abort(); 42267 } 42268 that.xhr = $3.ajax({ 42269 url, 42270 data: request, 42271 dataType: "json", 42272 success: function(data) { 42273 response(data); 42274 }, 42275 error: function() { 42276 response([]); 42277 } 42278 }); 42279 }; 42280 } else { 42281 this.source = this.options.source; 42282 } 42283 }, 42284 _searchTimeout: function(event2) { 42285 clearTimeout(this.searching); 42286 this.searching = this._delay(function() { 42287 var equalValues = this.term === this._value(), menuVisible = this.menu.element.is(":visible"), modifierKey = event2.altKey || event2.ctrlKey || event2.metaKey || event2.shiftKey; 42288 if (!equalValues || equalValues && !menuVisible && !modifierKey) { 42289 this.selectedItem = null; 42290 this.search(null, event2); 42291 } 42292 }, this.options.delay); 42293 }, 42294 search: function(value, event2) { 42295 value = value != null ? value : this._value(); 42296 this.term = this._value(); 42297 if (value.length < this.options.minLength) { 42298 return this.close(event2); 42299 } 42300 if (this._trigger("search", event2) === false) { 42301 return; 42302 } 42303 return this._search(value); 42304 }, 42305 _search: function(value) { 42306 this.pending++; 42307 this._addClass("ui-autocomplete-loading"); 42308 this.cancelSearch = false; 42309 this.source({ term: value }, this._response()); 42310 }, 42311 _response: function() { 42312 var index = ++this.requestIndex; 42313 return $3.proxy(function(content) { 42314 if (index === this.requestIndex) { 42315 this.__response(content); 42316 } 42317 this.pending--; 42318 if (!this.pending) { 42319 this._removeClass("ui-autocomplete-loading"); 42320 } 42321 }, this); 42322 }, 42323 __response: function(content) { 42324 if (content) { 42325 content = this._normalize(content); 42326 } 42327 this._trigger("response", null, { content }); 42328 if (!this.options.disabled && content && content.length && !this.cancelSearch) { 42329 this._suggest(content); 42330 this._trigger("open"); 42331 } else { 42332 this._close(); 42333 } 42334 }, 42335 close: function(event2) { 42336 this.cancelSearch = true; 42337 this._close(event2); 42338 }, 42339 _close: function(event2) { 42340 this._off(this.document, "mousedown"); 42341 if (this.menu.element.is(":visible")) { 42342 this.menu.element.hide(); 42343 this.menu.blur(); 42344 this.isNewMenu = true; 42345 this._trigger("close", event2); 42346 } 42347 }, 42348 _change: function(event2) { 42349 if (this.previous !== this._value()) { 42350 this._trigger("change", event2, { item: this.selectedItem }); 42351 } 42352 }, 42353 _normalize: function(items) { 42354 if (items.length && items[0].label && items[0].value) { 42355 return items; 42356 } 42357 return $3.map(items, function(item) { 42358 if (typeof item === "string") { 42359 return { 42360 label: item, 42361 value: item 42362 }; 42363 } 42364 return $3.extend({}, item, { 42365 label: item.label || item.value, 42366 value: item.value || item.label 42367 }); 42368 }); 42369 }, 42370 _suggest: function(items) { 42371 var ul = this.menu.element.empty(); 42372 this._renderMenu(ul, items); 42373 this.isNewMenu = true; 42374 this.menu.refresh(); 42375 ul.show(); 42376 this._resizeMenu(); 42377 ul.position($3.extend({ 42378 of: this.element 42379 }, this.options.position)); 42380 if (this.options.autoFocus) { 42381 this.menu.next(); 42382 } 42383 this._on(this.document, { 42384 mousedown: "_closeOnClickOutside" 42385 }); 42386 }, 42387 _resizeMenu: function() { 42388 var ul = this.menu.element; 42389 ul.outerWidth(Math.max( 42390 // Firefox wraps long text (possibly a rounding bug) 42391 // so we add 1px to avoid the wrapping (#7513) 42392 ul.width("").outerWidth() + 1, 42393 this.element.outerWidth() 42394 )); 42395 }, 42396 _renderMenu: function(ul, items) { 42397 var that = this; 42398 $3.each(items, function(index, item) { 42399 that._renderItemData(ul, item); 42400 }); 42401 }, 42402 _renderItemData: function(ul, item) { 42403 return this._renderItem(ul, item).data("ui-autocomplete-item", item); 42404 }, 42405 _renderItem: function(ul, item) { 42406 return $3("<li>").append($3("<div>").text(item.label)).appendTo(ul); 42407 }, 42408 _move: function(direction, event2) { 42409 if (!this.menu.element.is(":visible")) { 42410 this.search(null, event2); 42411 return; 42412 } 42413 if (this.menu.isFirstItem() && /^previous/.test(direction) || this.menu.isLastItem() && /^next/.test(direction)) { 42414 if (!this.isMultiLine) { 42415 this._value(this.term); 42416 } 42417 this.menu.blur(); 42418 return; 42419 } 42420 this.menu[direction](event2); 42421 }, 42422 widget: function() { 42423 return this.menu.element; 42424 }, 42425 _value: function() { 42426 return this.valueMethod.apply(this.element, arguments); 42427 }, 42428 _keyEvent: function(keyEvent, event2) { 42429 if (!this.isMultiLine || this.menu.element.is(":visible")) { 42430 this._move(keyEvent, event2); 42431 event2.preventDefault(); 42432 } 42433 }, 42434 // Support: Chrome <=50 42435 // We should be able to just use this.element.prop( "isContentEditable" ) 42436 // but hidden elements always report false in Chrome. 42437 // https://code.google.com/p/chromium/issues/detail?id=313082 42438 _isContentEditable: function(element) { 42439 if (!element.length) { 42440 return false; 42441 } 42442 var editable = element.prop("contentEditable"); 42443 if (editable === "inherit") { 42444 return this._isContentEditable(element.parent()); 42445 } 42446 return editable === "true"; 42447 } 42448 }); 42449 $3.extend($3.ui.autocomplete, { 42450 escapeRegex: function(value) { 42451 return value.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&"); 42452 }, 42453 filter: function(array, term) { 42454 var matcher = new RegExp($3.ui.autocomplete.escapeRegex(term), "i"); 42455 return $3.grep(array, function(value) { 42456 return matcher.test(value.label || value.value || value); 42457 }); 42458 } 42459 }); 42460 $3.widget("ui.autocomplete", $3.ui.autocomplete, { 42461 options: { 42462 messages: { 42463 noResults: "No search results.", 42464 results: function(amount) { 42465 return amount + (amount > 1 ? " results are" : " result is") + " available, use up and down arrow keys to navigate."; 42466 } 42467 } 42468 }, 42469 __response: function(content) { 42470 var message; 42471 this._superApply(arguments); 42472 if (this.options.disabled || this.cancelSearch) { 42473 return; 42474 } 42475 if (content && content.length) { 42476 message = this.options.messages.results(content.length); 42477 } else { 42478 message = this.options.messages.noResults; 42479 } 42480 this.liveRegion.children().hide(); 42481 $3("<div>").text(message).appendTo(this.liveRegion); 42482 } 42483 }); 42484 return $3.ui.autocomplete; 42485 }); 42486 } 42487 }); 42488 42489
42489// apps/base/assets/javascripts/vendor/jquery.ujs.js 42490 var require_jquery_ujs = __commonJS({ 42491 "apps/base/assets/javascripts/vendor/jquery.ujs.js"() { 42492 "use strict"; 42493 init_esbuild_shims(); 42494 (function($3, undefined2) { 42495 "use strict"; 42496 if ($3.rails !== undefined2) { 42497 $3.error("jquery-ujs has already been loaded!"); 42498 } 42499 var rails; 42500 var $document = $3(document); 42501 $3.rails = rails = { 42502 // Link elements bound by jquery-ujs 42503 linkClickSelector: "a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]", 42504 // Button elements bound by jquery-ujs 42505 buttonClickSelector: "button[data-remote]:not([form]):not(form button), button[data-confirm]:not([form]):not(form button)", 42506 // Select elements bound by jquery-ujs 42507 inputChangeSelector: "select[data-remote], input[data-remote], textarea[data-remote]", 42508 // Form elements bound by jquery-ujs 42509 formSubmitSelector: "form", 42510 // Form input elements bound by jquery-ujs 42511 formInputClickSelector: "form input[type=submit], form input[type=image], form button[type=submit], form button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])", 42512 // Form input elements disabled during form submission 42513 disableSelector: "input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled", 42514 // Form input elements re-enabled after form submission 42515 enableSelector: "input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled", 42516 // Form required input elements 42517 requiredInputSelector: "input[name][required]:not([disabled]), textarea[name][required]:not([disabled])", 42518 // Form file input elements 42519 fileInputSelector: "input[name][type=file]:not([disabled])", 42520 // Link onClick disable selector with possible reenable after remote submission 42521 linkDisableSelector: "a[data-disable-with], a[data-disable]", 42522 // Button onClick disable selector with possible reenable after remote submission 42523 buttonDisableSelector: "button[data-remote][data-disable-with], button[data-remote][data-disable]", 42524 // Up-to-date Cross-Site Request Forgery token 42525 csrfToken: function() { 42526 return $3("meta[name=csrf-token]").attr("content"); 42527 }, 42528 // URL param that must contain the CSRF token 42529 csrfParam: function() { 42530 return $3("meta[name=csrf-param]").attr("content"); 42531 }, 42532 // Make sure that every Ajax request sends the CSRF token 42533 CSRFProtection: function(xhr) { 42534 var token = rails.csrfToken(); 42535 if (token) xhr.setRequestHeader("X-CSRF-Token", token); 42536 }, 42537 // Make sure that all forms have actual up-to-date tokens (cached forms contain old ones) 42538 refreshCSRFTokens: function() { 42539 $3('form input[name="' + rails.csrfParam() + '"]').val(rails.csrfToken()); 42540 }, 42541 // Triggers an event on an element and returns false if the event result is false 42542 fire: function(obj, name, data) { 42543 var event2 = $3.Event(name); 42544 obj.trigger(event2, data); 42545 return event2.result !== false; 42546 }, 42547 // Default confirm dialog, may be overridden with custom confirm dialog in $.rails.confirm 42548 confirm: function(message) { 42549 return confirm(message); 42550 }, 42551 // Default ajax function, may be overridden with custom function in $.rails.ajax 42552 ajax: function(options) { 42553 return $3.ajax(options); 42554 }, 42555 // Default way to get an element's href. May be overridden at $.rails.href. 42556 href: function(element) { 42557 return element[0].href; 42558 }, 42559 // Checks "data-remote" if true to handle the request through a XHR request. 42560 isRemote: function(element) { 42561 return element.data("remote") !== undefined2 && element.data("remote") !== false; 42562 }, 42563 // Submits "remote" forms and links with ajax 42564 handleRemote: function(element) { 42565 var method, url, data, withCredentials, dataType, options; 42566 if (rails.fire(element, "ajax:before")) { 42567 withCredentials = element.data("with-credentials") || null; 42568 dataType = element.data("type") || $3.ajaxSettings && $3.ajaxSettings.dataType; 42569 if (element.is("form")) { 42570 method = element.data("ujs:submit-button-formmethod") || element.attr("method"); 42571 url = element.data("ujs:submit-button-formaction") || element.attr("action"); 42572 data = $3(element[0]).serializeArray(); 42573 var button = element.data("ujs:submit-button"); 42574 if (button) { 42575 data.push(button); 42576 element.data("ujs:submit-button", null); 42577 } 42578 element.data("ujs:submit-button-formmethod", null); 42579 element.data("ujs:submit-button-formaction", null); 42580 } else if (element.is(rails.inputChangeSelector)) { 42581 method = element.data("method"); 42582 url = element.data("url"); 42583 data = element.serialize(); 42584 if (element.data("params")) data = data + "&" + element.data("params"); 42585 } else if (element.is(rails.buttonClickSelector)) { 42586 method = element.data("method") || "get"; 42587 url = element.data("url"); 42588 data = element.serialize(); 42589 if (element.data("params")) data = data + "&" + element.data("params"); 42590 } else { 42591 method = element.data("method"); 42592 url = rails.href(element); 42593 data = element.data("params") || null; 42594 } 42595 options = { 42596 type: method || "GET", 42597 data, 42598 dataType, 42599 // stopping the "ajax:beforeSend" event will cancel the ajax request 42600 beforeSend: function(xhr, settings) { 42601 if (settings.dataType === undefined2) { 42602 xhr.setRequestHeader("accept", "*/*;q=0.5, " + settings.accepts.script); 42603 } 42604 if (rails.fire(element, "ajax:beforeSend", [xhr, settings])) { 42605 element.trigger("ajax:send", xhr); 42606 } else { 42607 return false;
42608 } 42609 }, 42610 success: function(data2, status, xhr) { 42611 element.trigger("ajax:success", [data2, status, xhr]); 42612 }, 42613 complete: function(xhr, status) { 42614 element.trigger("ajax:complete", [xhr, status]); 42615 }, 42616 error: function(xhr, status, error) { 42617 element.trigger("ajax:error", [xhr, status, error]); 42618 }, 42619 crossDomain: rails.isCrossDomain(url) 42620 }; 42621 if (withCredentials) { 42622 options.xhrFields = { 42623 withCredentials 42624 }; 42625 } 42626 if (url) { 42627 options.url = url; 42628 } 42629 return rails.ajax(options); 42630 } else { 42631 return false; 42632 } 42633 }, 42634 // Determines if the request is a cross domain request. 42635 isCrossDomain: function(url) { 42636 var originAnchor = document.createElement("a"); 42637 originAnchor.href = location.href; 42638 var urlAnchor = document.createElement("a"); 42639 try { 42640 urlAnchor.href = url; 42641 urlAnchor.href = urlAnchor.href; 42642 return !((!urlAnchor.protocol || urlAnchor.protocol === ":") && !urlAnchor.host || originAnchor.protocol + "//" + originAnchor.host === urlAnchor.protocol + "//" + urlAnchor.host); 42643 } catch (e) { 42644 return true; 42645 } 42646 }, 42647 // Handles "data-method" on links such as: 42648 // <a href="/users/5" data-method="delete" rel="nofollow" data-confirm="Are you sure?">Delete</a> 42649 handleMethod: function(link) { 42650 var href = rails.href(link), method = link.data("method"), target = link.attr("target"), csrfToken = rails.csrfToken(), csrfParam = rails.csrfParam(), form = $3('<form method="post" action="' + href + '"></form>'), metadataInput = '<input name="_method" value="' + method + '" type="hidden" />'; 42651 if (csrfParam !== undefined2 && csrfToken !== undefined2 && !rails.isCrossDomain(href)) { 42652 metadataInput += '<input name="' + csrfParam + '" value="' + csrfToken + '" type="hidden" />'; 42653 } 42654 if (target) { 42655 form.attr("target", target); 42656 } 42657 form.hide().append(metadataInput).appendTo("body"); 42658 form.submit(); 42659 }, 42660 // Helper function that returns form elements that match the specified CSS selector 42661 // If form is actually a "form" element this will return associated elements outside the from that have 42662 // the html form attribute set 42663 formElements: function(form, selector) { 42664 return form.is("form") ? $3(form[0].elements).filter(selector) : form.find(selector); 42665 }, 42666 /* Disables form elements: 42667 - Caches element value in 'ujs:enable-with' data store 42668 - Replaces element text with value of 'data-disable-with' attribute 42669 - Sets disabled property to true 42670 */ 42671 disableFormElements: function(form) { 42672 rails.formElements(form, rails.disableSelector).each(function() { 42673 rails.disableFormElement($3(this)); 42674 }); 42675 }, 42676 disableFormElement: function(element) { 42677 var method, replacement; 42678 method = element.is("button") ? "html" : "val"; 42679 replacement = element.data("disable-with"); 42680 if (replacement !== undefined2) { 42681 element.data("ujs:enable-with", element[method]()); 42682 element[method](replacement); 42683 } 42684 element.prop("disabled", true); 42685 element.data("ujs:disabled", true); 42686 }, 42687 /* Re-enables disabled form elements: 42688 - Replaces element text with cached value from 'ujs:enable-with' data store (created in `disableFormElements`) 42689 - Sets disabled property to false 42690 */ 42691 enableFormElements: function(form) { 42692 rails.formElements(form, rails.enableSelector).each(function() { 42693 rails.enableFormElement($3(this)); 42694 }); 42695 }, 42696 enableFormElement: function(element) { 42697 var method = element.is("button") ? "html" : "val"; 42698 if (element.data("ujs:enable-with") !== undefined2) { 42699 element[method](element.data("ujs:enable-with")); 42700 element.removeData("ujs:enable-with"); 42701 } 42702 element.prop("disabled", false); 42703 element.removeData("ujs:disabled"); 42704 }, 42705 /* For 'data-confirm' attribute: 42706 - Fires `confirm` event 42707 - Shows the confirmation dialog 42708 - Fires the `confirm:complete` event 42709 42710 Returns `true` if no function stops the chain and user chose yes; `false` otherwise. 42711 Attaching a handler to the element's `confirm` event that returns a `falsy` value cancels the confirmation dialog. 42712 Attaching a handler to the element's `confirm:complete` event that returns a `falsy` value makes this function 42713 return false. The `confirm:complete` event is fired
42713whether or not the user answered true or false to the dialog. 42714 */ 42715 allowAction: function(element) { 42716 var message = element.data("confirm"), answer = false, callback; 42717 if (!message) { 42718 return true; 42719 } 42720 if (rails.fire(element, "confirm")) { 42721 try { 42722 answer = rails.confirm(message); 42723 } catch (e) { 42724 (console.error || console.log).call(console, e.stack || e); 42725 } 42726 callback = rails.fire(element, "confirm:complete", [answer]); 42727 } 42728 return answer && callback; 42729 }, 42730 // Helper function which checks for blank inputs in a form that match the specified CSS selector 42731 blankInputs: function(form, specifiedSelector, nonBlank) { 42732 var foundInputs = $3(), input, valueToCheck, radiosForNameWithNoneSelected, radioName, selector = specifiedSelector || "input,textarea", requiredInputs = form.find(selector), checkedRadioButtonNames = {}; 42733 requiredInputs.each(function() { 42734 input = $3(this); 42735 if (input.is("input[type=radio]")) { 42736 radioName = input.attr("name"); 42737 if (!checkedRadioButtonNames[radioName]) { 42738 if (form.find('input[type=radio]:checked[name="' + radioName + '"]').length === 0) { 42739 radiosForNameWithNoneSelected = form.find( 42740 'input[type=radio][name="' + radioName + '"]' 42741 ); 42742 foundInputs = foundInputs.add(radiosForNameWithNoneSelected); 42743 } 42744 checkedRadioButtonNames[radioName] = radioName; 42745 } 42746 } else { 42747 valueToCheck = input.is("input[type=checkbox],input[type=radio]") ? input.is(":checked") : !!input.val(); 42748 if (valueToCheck === nonBlank) { 42749 foundInputs = foundInputs.add(input); 42750 } 42751 } 42752 }); 42753 return foundInputs.length ? foundInputs : false; 42754 }, 42755 // Helper function which checks for non-blank inputs in a form that match the specified CSS selector 42756 nonBlankInputs: function(form, specifiedSelector) { 42757 return rails.blankInputs(form, specifiedSelector, true); 42758 }, 42759 // Helper function, needed to provide consistent behavior in IE 42760 stopEverything: function(e) { 42761 $3(e.target).trigger("ujs:everythingStopped"); 42762 e.stopImmediatePropagation(); 42763 return false; 42764 }, 42765 // Replace element's html with the 'data-disable-with' after storing original html 42766 // and prevent clicking on it 42767 disableElement: function(element) { 42768 var replacement = element.data("disable-with"); 42769 if (replacement !== undefined2) { 42770 element.data("ujs:enable-with", element.html()); 42771 element.html(replacement); 42772 } 42773 element.bind("click.railsDisable", function(e) { 42774 return rails.stopEverything(e); 42775 }); 42776 element.data("ujs:disabled", true); 42777 }, 42778 // Restore element to its original state which was disabled by 'disableElement' above 42779 enableElement: function(element) { 42780 if (element.data("ujs:enable-with") !== undefined2) { 42781 element.html(element.data("ujs:enable-with")); 42782 element.removeData("ujs:enable-with"); 42783 } 42784 element.unbind("click.railsDisable"); 42785 element.removeData("ujs:disabled"); 42786 } 42787 }; 42788 if (rails.fire($document, "rails:attachBindings")) { 42789 $3.ajaxPrefilter(function(options, originalOptions, xhr) { 42790 if (!options.crossDomain) { 42791 rails.CSRFProtection(xhr); 42792 } 42793 }); 42794 $3(window).on("pageshow.rails", function() { 42795 $3($3.rails.enableSelector).each(function() { 42796 var element = $3(this); 42797 if (element.data("ujs:disabled")) { 42798 $3.rails.enableFormElement(element); 42799 } 42800 }); 42801 $3($3.rails.linkDisableSelector).each(function() { 42802 var element = $3(this); 42803 if (element.data("ujs:disabled")) { 42804 $3.rails.enableElement(element); 42805 } 42806 }); 42807 }); 42808 $document.on("ajax:complete", rails.linkDisableSelector, function() { 42809 rails.enableElement($3(this)); 42810 }); 42811 $document.on("ajax:complete", rails.buttonDisableSelector, function() { 42812 rails.enableFormElement($3(this)); 42813 }); 42814 $document.on("click.rails", rails.linkClickSelector, function(e) { 42815 var link = $3(this), method = link.data("method"), data = link.data("params"), metaClick = e.metaKey || e.ctrlKey; 42816 if (!rails.allowAction(link)) return rails.stopEverything(e); 42817 if (!metaClick && link.is(rails.linkDisableSelector)) rails.disableElement(link); 42818 if (rails.isRemote(link)) { 42819 if (metaClick && (!method || method === "GET") && !data) { 42820 return true; 42821 } 42822 var handleRemote = rails.handleRemote(link); 42823 if (handleRemote === false) { 42824 rails.enableElement(link); 42825 } else { 42826 handleRemote.fail(function() { 42827 rails.enableElement(link); 42828 }); 42829 } 42830 return false;
42831 } else if (method) { 42832 rails.handleMethod(link); 42833 return false; 42834 } 42835 }); 42836 $document.on("click.rails", rails.buttonClickSelector, function(e) { 42837 var button = $3(this); 42838 if (!rails.allowAction(button) || !rails.isRemote(button)) return rails.stopEverything(e); 42839 if (button.is(rails.buttonDisableSelector)) rails.disableFormElement(button); 42840 var handleRemote = rails.handleRemote(button); 42841 if (handleRemote === false) { 42842 rails.enableFormElement(button); 42843 } else { 42844 handleRemote.fail(function() { 42845 rails.enableFormElement(button); 42846 }); 42847 } 42848 return false; 42849 }); 42850 $document.on("change.rails", rails.inputChangeSelector, function(e) { 42851 var link = $3(this); 42852 if (!rails.allowAction(link) || !rails.isRemote(link)) return rails.stopEverything(e); 42853 rails.handleRemote(link); 42854 return false; 42855 }); 42856 $document.on("submit.rails", rails.formSubmitSelector, function(e) { 42857 var form = $3(this), remote = rails.isRemote(form), blankRequiredInputs, nonBlankFileInputs; 42858 if (!rails.allowAction(form)) return rails.stopEverything(e); 42859 if (form.attr("novalidate") === undefined2) { 42860 if (form.data("ujs:formnovalidate-button") === undefined2) { 42861 blankRequiredInputs = rails.blankInputs(form, rails.requiredInputSelector, false); 42862 if (blankRequiredInputs && rails.fire(form, "ajax:aborted:required", [blankRequiredInputs])) { 42863 return rails.stopEverything(e); 42864 } 42865 } else { 42866 form.data("ujs:formnovalidate-button", undefined2); 42867 } 42868 } 42869 if (remote) { 42870 nonBlankFileInputs = rails.nonBlankInputs(form, rails.fileInputSelector); 42871 if (nonBlankFileInputs) { 42872 setTimeout(function() { 42873 rails.disableFormElements(form); 42874 }, 13); 42875 var aborted = rails.fire(form, "ajax:aborted:file", [nonBlankFileInputs]); 42876 if (!aborted) { 42877 setTimeout(function() { 42878 rails.enableFormElements(form); 42879 }, 13); 42880 } 42881 return aborted; 42882 } 42883 rails.handleRemote(form); 42884 return false; 42885 } else { 42886 setTimeout(function() { 42887 rails.disableFormElements(form); 42888 }, 13); 42889 } 42890 }); 42891 $document.on("click.rails", rails.formInputClickSelector, function(event2) { 42892 var button = $3(this); 42893 if (!rails.allowAction(button)) return rails.stopEverything(event2); 42894 var name = button.attr("name"), data = name ? { name, value: button.val() } : null; 42895 var form = button.closest("form"); 42896 if (form.length === 0) { 42897 form = $3("#" + button.attr("form")); 42898 } 42899 form.data("ujs:submit-button", data); 42900 form.data("ujs:formnovalidate-button", button.attr("formnovalidate")); 42901 form.data("ujs:submit-button-formaction", button.attr("formaction")); 42902 form.data("ujs:submit-button-formmethod", button.attr("formmethod")); 42903 }); 42904 $document.on("ajax:send.rails", rails.formSubmitSelector, function(event2) { 42905 if (this === event2.target) rails.disableFormElements($3(this)); 42906 }); 42907 $document.on("ajax:complete.rails", rails.formSubmitSelector, function(event2) { 42908 if (this === event2.target) rails.enableFormElements($3(this)); 42909 }); 42910 $3(function() { 42911 rails.refreshCSRFTokens(); 42912 }); 42913 } 42914 })(jQuery); 42915 } 42916 }); 42917 42918
vendor: 16,156 bytes, lines 42918-43335
42918// apps/base/assets/javascripts/vendor/magnific-popup.js 42919 var require_magnific_popup = __commonJS({ 42920 "apps/base/assets/javascripts/vendor/magnific-popup.js"(exports) { 42921 "use strict"; 42922 init_esbuild_shims(); 42923 (function(factory) { 42924 if (typeof define === "function" && define.amd) { 42925 define(["jquery"], factory); 42926 } else if (typeof exports === "object") { 42927 factory(require_jquery()); 42928 } else { 42929 factory(window.jQuery || window.Zepto); 42930 } 42931 })(function($3) { 42932 var CLOSE_EVENT = "Close", BEFORE_CLOSE_EVENT = "BeforeClose", AFTER_CLOSE_EVENT = "AfterClose", BEFORE_APPEND_EVENT = "BeforeAppend", MARKUP_PARSE_EVENT = "MarkupParse", OPEN_EVENT = "Open", CHANGE_EVENT = "Change", NS = "mfp", EVENT_NS = "." + NS, READY_CLASS = "mfp-ready", REMOVING_CLASS = "mfp-removing", PREVENT_CLOSE_CLASS = "mfp-prevent-close"; 42933 var mfp, MagnificPopup = function() { 42934 }, _isJQ = !!window.jQuery, _prevStatus, _window = $3(window), _document, _prevContentType, _wrapClasses, _currPopupType; 42935 var _mfpOn = function(name, f) { 42936 mfp.ev.on(NS + name + EVENT_NS, f); 42937 }, _getEl = function(className, appendTo, html, raw) { 42938 var el = document.createElement("div"); 42939 el.className = "mfp-" + className; 42940 if (html) { 42941 el.innerHTML = html; 42942 } 42943 if (!raw) { 42944 el = $3(el); 42945 if (appendTo) { 42946 el.appendTo(appendTo); 42947 } 42948 } else if (appendTo) { 42949 appendTo.appendChild(el); 42950 } 42951 return el; 42952 }, _mfpTrigger = function(e, data) { 42953 mfp.ev.triggerHandler(NS + e, data); 42954 if (mfp.st.callbacks) { 42955 e = e.charAt(0).toLowerCase() + e.slice(1); 42956 if (mfp.st.callbacks[e]) { 42957 mfp.st.callbacks[e].apply(mfp, $3.isArray(data) ? data : [data]); 42958 } 42959 } 42960 }, _getCloseBtn = function(type) { 42961 if (type !== _currPopupType || !mfp.currTemplate.closeBtn) { 42962 mfp.currTemplate.closeBtn = $3(mfp.st.closeMarkup.replace("%title%", mfp.st.tClose)); 42963 _currPopupType = type; 42964 } 42965 return mfp.currTemplate.closeBtn; 42966 }, _checkInstance = function() { 42967 if (!$3.magnificPopup.instance) { 42968 mfp = new MagnificPopup(); 42969 mfp.init(); 42970 $3.magnificPopup.instance = mfp; 42971 } 42972 }, supportsTransitions = function() { 42973 var s = document.createElement("p").style, v = ["ms", "O", "Moz", "Webkit"]; 42974 if (s["transition"] !== void 0) { 42975 return true; 42976 } 42977 while (v.length) { 42978 if (v.pop() + "Transition" in s) { 42979 return true; 42980 } 42981 } 42982 return false; 42983 }; 42984 MagnificPopup.prototype = { 42985 constructor: MagnificPopup, 42986 /** 42987 * Initializes Magnific Popup plugin. 42988 * This function is triggered only once when $.fn.magnificPopup or $.magnificPopup is executed 42989 */ 42990 init: function() { 42991 var appVersion = navigator.appVersion; 42992 mfp.isLowIE = mfp.isIE8 = document.all && !document.addEventListener; 42993 mfp.isAndroid = /android/gi.test(appVersion); 42994 mfp.isIOS = /iphone|ipad|ipod/gi.test(appVersion); 42995 mfp.supportsTransition = supportsTransitions(); 42996 mfp.probablyMobile = mfp.isAndroid || mfp.isIOS || /(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent); 42997 _document = $3(document); 42998 mfp.popupsCache = {}; 42999 }, 43000 /** 43001 * Opens popup 43002 * @param data [description] 43003 */ 43004 open: function(data) { 43005 var i; 43006 if (data.isObj === false) { 43007 mfp.items = data.items.toArray(); 43008 mfp.index = 0; 43009 var items = data.items, item; 43010 for (i = 0; i < items.length; i++) { 43011 item = items[i]; 43012 if (item.parsed) { 43013 item = item.el[0]; 43014 } 43015 if (item === data.el[0]) { 43016 mfp.index = i; 43017 break; 43018 } 43019 } 43020 } else { 43021 mfp.items = $3.isArray(data.items) ? data.items : [data.items]; 43022 mfp.index = data.index || 0; 43023 } 43024 if (mfp.isOpen) { 43025 mfp.updateItemHTML(); 43026 return; 43027 } 43028 mfp.types = []; 43029 _wrapClasses = ""; 43030 if (data.mainEl && data.mainEl.length) { 43031 mfp.ev = data.mainEl.eq(0); 43032 } else { 43033 mfp.ev = _document; 43034 } 43035 if (data.key) { 43036 if (!mfp.popupsCache[data.key]) { 43037 mfp.popupsCache[data.key] = {}; 43038 } 43039 mfp.currTemplate = mfp.popupsCache[data.key]; 43040 } else { 43041 mfp.currTemplate = {}; 43042 } 43043 mfp.st = $3.extend(true, {}, $3.magnificPopup.defaults, data); 43044 mfp.fixedContentPos = mfp.st.fixedContentPos === "auto" ? !mfp.probablyMobile : mfp.st.fixedContentPos; 43045 if (mfp.st.modal) { 43046 mfp.st.closeOnContentClick = false; 43047 mfp.st.closeOnBgClick = false; 43048 mfp.st.showCloseBtn = false; 43049 mfp.st.enableEscapeKey = false; 43050 } 43051 if (!mfp.bgOverlay) { 43052 mfp.bgOverlay = _getEl("bg").on("click" + EVENT_NS, function() { 43053 mfp.close(); 43054 }); 43055 mfp.wrap = _getEl("wrap").attr("tabindex", -1).on("click" + EVENT_NS, function(e) { 43056 if (mfp._checkIfClose(e.target)) { 43057 mfp.close(); 43058 } 43059 }); 43060 mfp.container = _getEl("container", mfp.wrap); 43061 } 43062 mfp.contentContainer = _getEl("content"); 43063 if (mfp.st.preloader) { 43064 mfp.preloader = _getEl("preloader", mfp.container, mfp.st.tLoading); 43065 } 43066 var modules = $3.magnificPopup.modules; 43067 for (i = 0; i < modules.length; i++) { 43068 var n = modules[i]; 43069 n = n.charAt(0).toUpperCase() + n.slice(1); 43070 mfp["init" + n].call(mfp); 43071 } 43072 _mfpTrigger("BeforeOpen"); 43073 if (mfp.st.showCloseBtn) { 43074 if (!mfp.st.closeBtnInside) { 43075 mfp.wrap.append(_getCloseBtn()); 43076 } else { 43077 _mfpOn(MARKUP_PARSE_EVENT, function(e, template, values, item2) { 43078 values.close_replaceWith = _getCloseBtn(item2.type); 43079 }); 43080 _wrapClasses += " mfp-close-btn-in"; 43081 } 43082 } 43083 if (mfp.st.alignTop) { 43084 _wrapClasses += " mfp-align-top"; 43085 } 43086 if (mfp.fixedContentPos) { 43087 mfp.wrap.css({ 43088 overflow: mfp.st.overflowY, 43089 overflowX: "hidden", 43090 overflowY: mfp.st.overflowY 43091 }); 43092 } else { 43093 mfp.wrap.css({ 43094 top: _window.scrollTop(), 43095 position: "absolute" 43096 }); 43097 } 43098 if (mfp.st.fixedBgPos === false || mfp.st.fixedBgPos === "auto" && !mfp.fixedContentPos) { 43099 mfp.bgOverlay.css({ 43100 height: _document.height(), 43101 position: "absolute" 43102 }); 43103 } 43104 if (mfp.st.enableEscapeKey) { 43105 _document.on("keyup" + EVENT_NS, function(e) { 43106 if (e.keyCode === 27) { 43107 mfp.close(); 43108 } 43109 }); 43110 } 43111 _window.on("resize" + EVENT_NS, function() { 43112 mfp.updateSize(); 43113 }); 43114 if (!mfp.st.closeOnContentClick) { 43115 _wrapClasses += " mfp-auto-cursor"; 43116 } 43117 if (_wrapClasses) 43118 mfp.wrap.addClass(_wrapClasses); 43119 var windowHeight = mfp.wH = _window.height(); 43120 var windowStyles = {}; 43121 if (mfp.fixedContentPos) { 43122 if (mfp._hasScrollBar(windowHeight)) { 43123 var s = mfp._getScrollbarSize(); 43124 if (s) { 43125 windowStyles.marginRight = s; 43126 } 43127 } 43128 } 43129 if (mfp.fixedContentPos) { 43130 if (!mfp.isIE7) { 43131 windowStyles.overflow = "hidden"; 43132 } else { 43133 $3("body, html").css("overflow", "hidden"); 43134 } 43135 } 43136 var classesToadd = mfp.st.mainClass; 43137 if (mfp.isIE7) { 43138 classesToadd += " mfp-ie7"; 43139 } 43140 if (classesToadd) { 43141 mfp._addClassToMFP(classesToadd); 43142 } 43143 mfp.updateItemHTML(); 43144 _mfpTrigger("BuildControls"); 43145 $3("html").css(windowStyles); 43146 mfp.bgOverlay.add(mfp.wrap).prependTo(mfp.st.prependTo || $3(document.body)); 43147 mfp._lastFocusedEl = document.activeElement; 43148 setTimeout(function() { 43149 if (mfp.content) { 43150 mfp._addClassToMFP(READY_CLASS); 43151 mfp._setFocus(); 43152 } else { 43153 mfp.bgOverlay.addClass(READY_CLASS); 43154 } 43155 _document.on("focusin" + EVENT_NS, mfp._onFocusIn); 43156 }, 16); 43157 mfp.isOpen = true; 43158 mfp.updateSize(windowHeight); 43159 _mfpTrigger(OPEN_EVENT); 43160 return data; 43161 }, 43162 /** 43163 * Closes the popup 43164 */ 43165 close: function() { 43166 if (!mfp.isOpen) return; 43167 _mfpTrigger(BEFORE_CLOSE_EVENT); 43168 mfp.isOpen = false; 43169 if (mfp.st.removalDelay && !mfp.isLowIE && mfp.supportsTransition) { 43170 mfp._addClassToMFP(REMOVING_CLASS); 43171 setTimeout(function() { 43172 mfp._close(); 43173 }, mfp.st.removalDelay); 43174 } else { 43175 mfp._close(); 43176 } 43177 }, 43178 /** 43179 * Helper for close() function 43180 */ 43181 _close: function() { 43182 _mfpTrigger(CLOSE_EVENT); 43183 var classesToRemove = REMOVING_CLASS + " " + READY_CLASS + " "; 43184 mfp.bgOverlay.detach(); 43185 mfp.wrap.detach(); 43186 mfp.container.empty(); 43187 if (mfp.st.mainClass) { 43188 classesToRemove += mfp.st.mainClass + " "; 43189 } 43190 mfp._removeClassFromMFP(classesToRemove); 43191 if (mfp.fixedContentPos) { 43192 var windowStyles = { marginRight: "" }; 43193 if (mfp.isIE7) { 43194 $3("body, html").css("overflow", ""); 43195 } else { 43196 windowStyles.overflow = ""; 43197 } 43198 $3("html").css(windowStyles); 43199 } 43200 _document.off("keyup" + EVENT_NS + " focusin" + EVENT_NS); 43201 mfp.ev.off(EVENT_NS); 43202 mfp.wrap.attr("class", "mfp-wrap").removeAttr("style"); 43203 mfp.bgOverlay.attr("class", "mfp-bg"); 43204 mfp.container.attr("class", "mfp-container"); 43205 if (mfp.st.showCloseBtn && (!mfp.st.closeBtnInside || mfp.currTemplate[mfp.currItem.type] === true)) { 43206 if (mfp.currTemplate.closeBtn) 43207 mfp.currTemplate.closeBtn.detach(); 43208 } 43209 if (mfp.st.autoFocusLast && mfp._lastFocusedEl) { 43210 $3(mfp._lastFocusedEl).focus(); 43211 } 43212 mfp.currItem = null; 43213 mfp.content = null; 43214 mfp.currTemplate = null; 43215 mfp.prevHeight = 0; 43216 _mfpTrigger(AFTER_CLOSE_EVENT); 43217 }, 43218 updateSize: function(winHeight) { 43219 if (mfp.isIOS) { 43220 var zoomLevel = document.documentElement.clientWidth / window.innerWidth; 43221 var height = window.innerHeight * zoomLevel; 43222 mfp.wrap.css("height", height); 43223 mfp.wH = height; 43224 } else { 43225 mfp.wH = winHeight || _window.height(); 43226 } 43227 if (!mfp.fixedContentPos) { 43228 mfp.wrap.css("height", mfp.wH); 43229 } 43230 _mfpTrigger("Resize"); 43231 }, 43232 /** 43233 * Set content of popup based on current index 43234 */ 43235 updateItemHTML: function() { 43236 var item = mfp.items[mfp.index]; 43237 mfp.contentContainer.detach(); 43238 if (mfp.content) 43239 mfp.content.detach(); 43240 if (!item.parsed) { 43241 item = mfp.parseEl(mfp.index); 43242 } 43243 var type = item.type; 43244 _mfpTrigger("BeforeChange", [mfp.currItem ? mfp.currItem.type : "", type]); 43245 mfp.currItem = item; 43246 if (!mfp.currTemplate[type]) { 43247 var markup = mfp.st[type] ? mfp.st[type].markup : false; 43248 _mfpTrigger("FirstMarkupParse", markup); 43249 if (markup) { 43250 mfp.currTemplate[type] = $3(markup); 43251 } else { 43252 mfp.currTemplate[type] = true; 43253 } 43254 } 43255 if (_prevContentType && _prevContentType !== item.type) { 43256 mfp.container.removeClass("mfp-" + _prevContentType + "-holder"); 43257 } 43258 var newContent = mfp["get" + type.charAt(0).toUpperCase() + type.slice(1)](item, mfp.currTemplate[type]); 43259 mfp.appendContent(newContent, type); 43260 item.preloaded = true; 43261 _mfpTrigger(CHANGE_EVENT, item); 43262 _prevContentType = item.type; 43263 mfp.container.prepend(mfp.contentContainer); 43264 _mfpTrigger("AfterChange"); 43265 }, 43266 /** 43267 * Set HTML content of popup 43268 */ 43269 appendContent: function(newContent, type) { 43270 mfp.content = newContent; 43271 if (newContent) { 43272 if (mfp.st.showCloseBtn && mfp.st.closeBtnInside && mfp.currTemplate[type] === true) { 43273 if (!mfp.content.find(".mfp-close").length) { 43274 mfp.content.append(_getCloseBtn()); 43275 } 43276 } else { 43277 mfp.content = newContent; 43278 } 43279 } else { 43280 mfp.content = ""; 43281 } 43282 _mfpTrigger(BEFORE_APPEND_EVENT); 43283 mfp.container.addClass("mfp-" + type + "-holder"); 43284 mfp.contentContainer.append(mfp.content); 43285 }, 43286 /** 43287 * Creates Magnific Popup data object based on given data 43288 * @param {int} index Index of item to parse 43289 */ 43290 parseEl: function(index) { 43291 var item = mfp.items[index], type; 43292 if (item.tagName) { 43293 item = { el: $3(item) }; 43294 } else { 43295 type = item.type; 43296 item = { data: item, src: item.src }; 43297 } 43298 if (item.el) { 43299 var types = mfp.types; 43300 for (var i = 0; i < types.length; i++) { 43301 if (item.el.hasClass("mfp-" + types[i])) { 43302 type = types[i]; 43303 break; 43304 } 43305 } 43306 item.src = item.el.attr("data-mfp-src"); 43307 if (!item.src) { 43308 item.src = item.el.attr("href"); 43309 } 43310 } 43311 item.type = type || mfp.st.type || "inline"; 43312 item.index = index; 43313 item.parsed = true; 43314 mfp.items[index] = item; 43315 _mfpTrigger("ElementParse", item); 43316 return mfp.items[index]; 43317 }, 43318 /** 43319 * Initializes single popup or a group of popups 43320 */ 43321 addGroup: function(el, options) { 43322 var eHandler = function(e) { 43323 e.mfpEl = this; 43324 mfp._openClick(e, el, options); 43325 }; 43326 if (!options) { 43327 options = {}; 43328 } 43329 var eName = "click.magnificPopup"; 43330 options.mainEl = el; 43331 if (options.items) { 43332 options.isObj = true; 43333 el.off(eName).on(eName, eHandler); 43334 } else { 43335 options.isObj = false;
43336 if (options.delegate) { 43337 el.off(eName).on(eName, options.delegate, eHandler); 43338 } else { 43339 options.items = el; 43340 el.off(eName).on(eName, eHandler); 43341 } 43342 } 43343 }, 43344 _openClick: function(e, el, options) { 43345 var midClick = options.midClick !== void 0 ? options.midClick : $3.magnificPopup.defaults.midClick; 43346 if (!midClick && (e.which === 2 || e.ctrlKey || e.metaKey || e.altKey || e.shiftKey)) { 43347 return; 43348 } 43349 var disableOn = options.disableOn !== void 0 ? options.disableOn : $3.magnificPopup.defaults.disableOn; 43350 if (disableOn) { 43351 if ($3.isFunction(disableOn)) { 43352 if (!disableOn.call(mfp)) { 43353 return true; 43354 } 43355 } else { 43356 if (_window.width() < disableOn) { 43357 return true; 43358 } 43359 } 43360 } 43361 if (e.type) { 43362 e.preventDefault(); 43363 if (mfp.isOpen) { 43364 e.stopPropagation(); 43365 } 43366 } 43367 options.el = $3(e.mfpEl); 43368 if (options.delegate) { 43369 options.items = el.find(options.delegate); 43370 } 43371 mfp.open(options); 43372 }, 43373 /** 43374 * Updates text on preloader 43375 */ 43376 updateStatus: function(status, text) { 43377 if (mfp.preloader) { 43378 if (_prevStatus !== status) { 43379 mfp.container.removeClass("mfp-s-" + _prevStatus); 43380 } 43381 if (!text && status === "loading") { 43382 text = mfp.st.tLoading; 43383 } 43384 var data = { 43385 status, 43386 text 43387 }; 43388 _mfpTrigger("UpdateStatus", data); 43389 status = data.status; 43390 text = data.text; 43391 mfp.preloader.html(text); 43392 mfp.preloader.find("a").on("click", function(e) { 43393 e.stopImmediatePropagation(); 43394 }); 43395 mfp.container.addClass("mfp-s-" + status); 43396 _prevStatus = status; 43397 } 43398 }, 43399 /* 43400 "Private" helpers that aren't private at all 43401 */ 43402 // Check to close popup or not 43403 // "target" is an element that was clicked 43404 _checkIfClose: function(target) { 43405 if ($3(target).hasClass(PREVENT_CLOSE_CLASS)) { 43406 return; 43407 } 43408 var closeOnContent = mfp.st.closeOnContentClick; 43409 var closeOnBg = mfp.st.closeOnBgClick; 43410 if (closeOnContent && closeOnBg) { 43411 return true; 43412 } else { 43413 if (!mfp.content || $3(target).hasClass("mfp-close") || mfp.preloader && target === mfp.preloader[0]) { 43414 return true; 43415 } 43416 if (target !== mfp.content[0] && !$3.contains(mfp.content[0], target)) { 43417 if (closeOnBg) { 43418 if ($3.contains(document, target)) { 43419 return true; 43420 } 43421 } 43422 } else if (closeOnContent) { 43423 return true; 43424 } 43425 } 43426 return false; 43427 }, 43428 _addClassToMFP: function(cName) { 43429 mfp.bgOverlay.addClass(cName); 43430 mfp.wrap.addClass(cName); 43431 }, 43432 _removeClassFromMFP: function(cName) { 43433 this.bgOverlay.removeClass(cName); 43434 mfp.wrap.removeClass(cName); 43435 }, 43436 _hasScrollBar: function(winHeight) { 43437 return (mfp.isIE7 ? _document.height() : document.body.scrollHeight) > (winHeight || _window.height()); 43438 }, 43439 _setFocus: function() { 43440 (mfp.st.focus ? mfp.content.find(mfp.st.focus).eq(0) : mfp.wrap).focus(); 43441 }, 43442 _onFocusIn: function(e) { 43443 if (e.target !== mfp.wrap[0] && !$3.contains(mfp.wrap[0], e.target)) { 43444 mfp._setFocus(); 43445 return false; 43446 } 43447 }, 43448 _parseMarkup: function(template, values, item) { 43449 var arr; 43450 if (item.data) { 43451 values = $3.extend(item.data, values); 43452 } 43453 _mfpTrigger(MARKUP_PARSE_EVENT, [template, values, item]); 43454 $3.each(values, function(key, value) { 43455 if (value === void 0 || value === false) { 43456 return true; 43457 } 43458 arr = key.split("_"); 43459 if (arr.length > 1) { 43460 var el = template.find(EVENT_NS + "-" + arr[0]); 43461 if (el.length > 0) { 43462 var attr = arr[1]; 43463 if (attr === "replaceWith") { 43464 if (el[0] !== value[0]) { 43465 el.replaceWith(value); 43466 } 43467 } else if (attr === "img") { 43468 if (el.is("img")) { 43469 el.attr("src", value); 43470 } else { 43471 el.replaceWith($3("<img>").attr("src", value).attr("class", el.attr("class"))); 43472 } 43473 } else { 43474 el.attr(arr[1], value); 43475 } 43476 } 43477 } else { 43478 template.find(EVENT_NS + "-" + key).html(value); 43479 } 43480 }); 43481 }, 43482 _getScrollbarSize: function() { 43483 if (mfp.scrollbarSize === void 0) { 43484 var scrollDiv = document.createElement("div"); 43485 scrollDiv.style.cssText = "width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;"; 43486 document.body.appendChild(scrollDiv); 43487 mfp.scrollbarSize = scrollDiv.offsetWidth - scrollDiv.clientWidth; 43488 document.body.removeChild(scrollDiv); 43489 } 43490 return mfp.scrollbarSize; 43491 } 43492 }; 43493 $3.magnificPopup = { 43494 instance: null, 43495 proto: MagnificPopup.prototype, 43496 modules: [], 43497 open: function(options, index) { 43498 _checkInstance(); 43499 if (!options) { 43500 options = {}; 43501 } else { 43502 options = $3.extend(true, {}, options); 43503 } 43504 options.isObj = true; 43505 options.index = index || 0; 43506 return this.instance.open(options); 43507 }, 43508 close: function() { 43509 return $3.magnificPopup.instance && $3.magnificPopup.instance.close(); 43510 }, 43511 registerModule: function(name, module2) { 43512 if (module2.options) { 43513 $3.magnificPopup.defaults[name] = module2.options; 43514 } 43515 $3.extend(this.proto, module2.proto); 43516 this.modules.push(name); 43517 }, 43518 defaults: { 43519 // Info about options is in docs:
vendor: 22,172 bytes, lines 43520-44085
43520 // http://dimsemenov.com/plugins/magnific-popup/documentation.html#options 43521 disableOn: 0, 43522 key: null, 43523 midClick: false, 43524 mainClass: "", 43525 preloader: true, 43526 focus: "", 43527 // CSS selector of input to focus after popup is opened 43528 closeOnContentClick: false, 43529 closeOnBgClick: true, 43530 closeBtnInside: true, 43531 showCloseBtn: true, 43532 enableEscapeKey: true, 43533 modal: false, 43534 alignTop: false, 43535 removalDelay: 0, 43536 prependTo: null, 43537 fixedContentPos: "auto", 43538 fixedBgPos: "auto", 43539 overflowY: "auto", 43540 closeMarkup: '<button title="%title%" type="button" class="mfp-close">×</button>', 43541 tClose: "Close (Esc)", 43542 tLoading: "Loading...", 43543 autoFocusLast: true 43544 } 43545 }; 43546 $3.fn.magnificPopup = function(options) { 43547 _checkInstance(); 43548 var jqEl = $3(this); 43549 if (typeof options === "string") { 43550 if (options === "open") { 43551 var items, itemOpts = _isJQ ? jqEl.data("magnificPopup") : jqEl[0].magnificPopup, index = parseInt(arguments[1], 10) || 0; 43552 if (itemOpts.items) { 43553 items = itemOpts.items[index]; 43554 } else { 43555 items = jqEl; 43556 if (itemOpts.delegate) { 43557 items = items.find(itemOpts.delegate); 43558 } 43559 items = items.eq(index); 43560 } 43561 mfp._openClick({ mfpEl: items }, jqEl, itemOpts); 43562 } else { 43563 if (mfp.isOpen) 43564 mfp[options].apply(mfp, Array.prototype.slice.call(arguments, 1)); 43565 } 43566 } else { 43567 options = $3.extend(true, {}, options); 43568 if (_isJQ) { 43569 jqEl.data("magnificPopup", options); 43570 } else { 43571 jqEl[0].magnificPopup = options; 43572 } 43573 mfp.addGroup(jqEl, options); 43574 } 43575 return jqEl; 43576 }; 43577 var INLINE_NS = "inline", _hiddenClass, _inlinePlaceholder, _lastInlineElement, _putInlineElementsBack = function() { 43578 if (_lastInlineElement) { 43579 _inlinePlaceholder.after(_lastInlineElement.addClass(_hiddenClass)).detach(); 43580 _lastInlineElement = null; 43581 } 43582 }; 43583 $3.magnificPopup.registerModule(INLINE_NS, { 43584 options: { 43585 hiddenClass: "hide", 43586 // will be appended with `mfp-` prefix 43587 markup: "", 43588 tNotFound: "Content not found" 43589 }, 43590 proto: { 43591 initInline: function() { 43592 mfp.types.push(INLINE_NS); 43593 _mfpOn(CLOSE_EVENT + "." + INLINE_NS, function() { 43594 _putInlineElementsBack(); 43595 }); 43596 }, 43597 getInline: function(item, template) { 43598 _putInlineElementsBack(); 43599 if (item.src) { 43600 var inlineSt = mfp.st.inline, el = $3(item.src); 43601 if (el.length) { 43602 var parent = el[0].parentNode; 43603 if (parent && parent.tagName) { 43604 if (!_inlinePlaceholder) { 43605 _hiddenClass = inlineSt.hiddenClass; 43606 _inlinePlaceholder = _getEl(_hiddenClass); 43607 _hiddenClass = "mfp-" + _hiddenClass; 43608 } 43609 _lastInlineElement = el.after(_inlinePlaceholder).detach().removeClass(_hiddenClass); 43610 } 43611 mfp.updateStatus("ready"); 43612 } else { 43613 mfp.updateStatus("error", inlineSt.tNotFound); 43614 el = $3("<div>"); 43615 } 43616 item.inlineElement = el; 43617 return el; 43618 } 43619 mfp.updateStatus("ready"); 43620 mfp._parseMarkup(template, {}, item); 43621 return template; 43622 } 43623 } 43624 }); 43625 var AJAX_NS = "ajax", _ajaxCur, _removeAjaxCursor = function() { 43626 if (_ajaxCur) { 43627 $3(document.body).removeClass(_ajaxCur); 43628 } 43629 }, _destroyAjaxRequest = function() { 43630 _removeAjaxCursor(); 43631 if (mfp.req) { 43632 mfp.req.abort(); 43633 } 43634 }; 43635 $3.magnificPopup.registerModule(AJAX_NS, { 43636 options: { 43637 settings: null, 43638 cursor: "mfp-ajax-cur", 43639 tError: '<a href="%url%">The content</a> could not be loaded.' 43640 }, 43641 proto: { 43642 initAjax: function() { 43643 mfp.types.push(AJAX_NS); 43644 _ajaxCur = mfp.st.ajax.cursor; 43645 _mfpOn(CLOSE_EVENT + "." + AJAX_NS, _destroyAjaxRequest); 43646 _mfpOn("BeforeChange." + AJAX_NS, _destroyAjaxRequest); 43647 }, 43648 getAjax: function(item) { 43649 if (_ajaxCur) { 43650 $3(document.body).addClass(_ajaxCur); 43651 } 43652 mfp.updateStatus("loading"); 43653 var opts = $3.extend({ 43654 url: item.src, 43655 success: function(data, textStatus, jqXHR) { 43656 var temp = { 43657 data, 43658 xhr: jqXHR 43659 }; 43660 _mfpTrigger("ParseAjax", temp); 43661 mfp.appendContent($3(temp.data), AJAX_NS); 43662 item.finished = true; 43663 _removeAjaxCursor(); 43664 mfp._setFocus(); 43665 setTimeout(function() { 43666 mfp.wrap.addClass(READY_CLASS); 43667 }, 16); 43668 mfp.updateStatus("ready"); 43669 _mfpTrigger("AjaxContentAdded"); 43670 }, 43671 error: function() { 43672 _removeAjaxCursor(); 43673 item.finished = item.loadError = true; 43674 mfp.updateStatus("error", mfp.st.ajax.tError.replace("%url%", item.src)); 43675 } 43676 }, mfp.st.ajax.settings); 43677 mfp.req = $3.ajax(opts); 43678 return ""; 43679 } 43680 } 43681 }); 43682 var _imgInterval, _getTitle = function(item) { 43683 if (item.data && item.data.title !== void 0) 43684 return item.data.title; 43685 var src = mfp.st.image.titleSrc; 43686 if (src) { 43687 if ($3.isFunction(src)) { 43688 return src.call(mfp, item); 43689 } else if (item.el) { 43690 return item.el.attr(src) || ""; 43691 } 43692 } 43693 return ""; 43694 }; 43695 $3.magnificPopup.registerModule("image", { 43696 options: { 43697 markup: '<div class="mfp-figure"><div class="mfp-close"></div><figure><div class="mfp-img"></div><figcaption><div class="mfp-bottom-bar"><div class="mfp-title"></div><div class="mfp-counter"></div></div></figcaption></figure></div>', 43698 cursor: "mfp-zoom-out-cur", 43699 titleSrc: "title", 43700 verticalFit: true, 43701 tError: '<a href="%url%">The image</a> could not be loaded.' 43702 }, 43703 proto: { 43704 initImage: function() { 43705 var imgSt = mfp.st.image, ns = ".image"; 43706 mfp.types.push("image"); 43707 _mfpOn(OPEN_EVENT + ns, function() { 43708 if (mfp.currItem.type === "image" && imgSt.cursor) { 43709 $3(document.body).addClass(imgSt.cursor); 43710 } 43711 }); 43712 _mfpOn(CLOSE_EVENT + ns, function() { 43713 if (imgSt.cursor) { 43714 $3(document.body).removeClass(imgSt.cursor); 43715 } 43716 _window.off("resize" + EVENT_NS); 43717 }); 43718 _mfpOn("Resize" + ns, mfp.resizeImage); 43719 if (mfp.isLowIE) { 43720 _mfpOn("AfterChange", mfp.resizeImage); 43721 } 43722 }, 43723 resizeImage: function() { 43724 var item = mfp.currItem; 43725 if (!item || !item.img) return; 43726 if (mfp.st.image.verticalFit) { 43727 var decr = 0; 43728 if (mfp.isLowIE) { 43729 decr = parseInt(item.img.css("padding-top"), 10) + parseInt(item.img.css("padding-bottom"), 10); 43730 } 43731 item.img.css("max-height", mfp.wH - decr); 43732 } 43733 }, 43734 _onImageHasSize: function(item) { 43735 if (item.img) { 43736 item.hasSize = true; 43737 if (_imgInterval) { 43738 clearInterval(_imgInterval); 43739 } 43740 item.isCheckingImgSize = false; 43741 _mfpTrigger("ImageHasSize", item); 43742 if (item.imgHidden) { 43743 if (mfp.content) 43744 mfp.content.removeClass("mfp-loading"); 43745 item.imgHidden = false; 43746 } 43747 } 43748 }, 43749 /** 43750 * Function that loops until the image has size to display elements that rely on it asap 43751 */ 43752 findImageSize: function(item) { 43753 var counter = 0, img = item.img[0], mfpSetInterval = function(delay) { 43754 if (_imgInterval) { 43755 clearInterval(_imgInterval); 43756 } 43757 _imgInterval = setInterval(function() { 43758 if (img.naturalWidth > 0) { 43759 mfp._onImageHasSize(item); 43760 return; 43761 } 43762 if (counter > 200) { 43763 clearInterval(_imgInterval); 43764 } 43765 counter++; 43766 if (counter === 3) { 43767 mfpSetInterval(10); 43768 } else if (counter === 40) { 43769 mfpSetInterval(50); 43770 } else if (counter === 100) { 43771 mfpSetInterval(500); 43772 } 43773 }, delay); 43774 }; 43775 mfpSetInterval(1); 43776 }, 43777 getImage: function(item, template) { 43778 var guard = 0, onLoadComplete = function() { 43779 if (item) { 43780 if (item.img[0].complete) { 43781 item.img.off(".mfploader"); 43782 if (item === mfp.currItem) { 43783 mfp._onImageHasSize(item); 43784 mfp.updateStatus("ready"); 43785 } 43786 item.hasSize = true; 43787 item.loaded = true; 43788 _mfpTrigger("ImageLoadComplete"); 43789 } else { 43790 guard++; 43791 if (guard < 200) { 43792 setTimeout(onLoadComplete, 100); 43793 } else { 43794 onLoadError(); 43795 } 43796 } 43797 } 43798 }, onLoadError = function() { 43799 if (item) { 43800 item.img.off(".mfploader"); 43801 if (item === mfp.currItem) { 43802 mfp._onImageHasSize(item); 43803 mfp.updateStatus("error", imgSt.tError.replace("%url%", item.src)); 43804 } 43805 item.hasSize = true; 43806 item.loaded = true; 43807 item.loadError = true; 43808 } 43809 }, imgSt = mfp.st.image; 43810 var el = template.find(".mfp-img"); 43811 if (el.length) { 43812 var img = document.createElement("img"); 43813 img.className = "mfp-img"; 43814 if (item.el && item.el.find("img").length) { 43815 img.alt = item.el.find("img").attr("alt"); 43816 } 43817 item.img = $3(img).on("load.mfploader", onLoadComplete).on("error.mfploader", onLoadError); 43818 img.src = item.src; 43819 if (el.is("img")) { 43820 item.img = item.img.clone(); 43821 } 43822 img = item.img[0]; 43823 if (img.naturalWidth > 0) { 43824 item.hasSize = true; 43825 } else if (!img.width) { 43826 item.hasSize = false; 43827 } 43828 } 43829 mfp._parseMarkup(template, { 43830 title: _getTitle(item), 43831 img_replaceWith: item.img 43832 }, item); 43833 mfp.resizeImage(); 43834 if (item.hasSize) { 43835 if (_imgInterval) clearInterval(_imgInterval); 43836 if (item.loadError) { 43837 template.addClass("mfp-loading"); 43838 mfp.updateStatus("error", imgSt.tError.replace("%url%", item.src)); 43839 } else { 43840 template.removeClass("mfp-loading"); 43841 mfp.updateStatus("ready"); 43842 } 43843 return template; 43844 } 43845 mfp.updateStatus("loading"); 43846 item.loading = true; 43847 if (!item.hasSize) { 43848 item.imgHidden = true; 43849 template.addClass("mfp-loading"); 43850 mfp.findImageSize(item); 43851 } 43852 return template; 43853 } 43854 } 43855 }); 43856 var hasMozTransform, getHasMozTransform = function() { 43857 if (hasMozTransform === void 0) { 43858 hasMozTransform = document.createElement("p").style.MozTransform !== void 0; 43859 } 43860 return hasMozTransform; 43861 }; 43862 $3.magnificPopup.registerModule("zoom", { 43863 options: { 43864 enabled: false, 43865 easing: "ease-in-out", 43866 duration: 300, 43867 opener: function(element) { 43868 return element.is("img") ? element : element.find("img"); 43869 } 43870 }, 43871 proto: { 43872 initZoom: function() { 43873 var zoomSt = mfp.st.zoom, ns = ".zoom", image; 43874 if (!zoomSt.enabled || !mfp.supportsTransition) { 43875 return; 43876 } 43877 var duration = zoomSt.duration, getElToAnimate = function(image2) { 43878 var newImg = image2.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image"), transition = "all " + zoomSt.duration / 1e3 + "s " + zoomSt.easing, cssObj = { 43879 position: "fixed", 43880 zIndex: 9999, 43881 left: 0, 43882 top: 0, 43883 "-webkit-backface-visibility": "hidden" 43884 }, t2 = "transition"; 43885 cssObj["-webkit-" + t2] = cssObj["-moz-" + t2] = cssObj["-o-" + t2] = cssObj[t2] = transition; 43886 newImg.css(cssObj); 43887 return newImg; 43888 }, showMainContent = function() { 43889 mfp.content.css("visibility", "visible"); 43890 }, openTimeout, animatedImg; 43891 _mfpOn("BuildControls" + ns, function() { 43892 if (mfp._allowZoom()) { 43893 clearTimeout(openTimeout); 43894 mfp.content.css("visibility", "hidden"); 43895 image = mfp._getItemToZoom(); 43896 if (!image) { 43897 showMainContent(); 43898 return; 43899 } 43900 animatedImg = getElToAnimate(image); 43901 animatedImg.css(mfp._getOffset()); 43902 mfp.wrap.append(animatedImg); 43903 openTimeout = setTimeout(function() { 43904 animatedImg.css(mfp._getOffset(true)); 43905 openTimeout = setTimeout(function() { 43906 showMainContent(); 43907 setTimeout(function() { 43908 animatedImg.remove(); 43909 image = animatedImg = null; 43910 _mfpTrigger("ZoomAnimationEnded"); 43911 }, 16); 43912 }, duration); 43913 }, 16); 43914 } 43915 }); 43916 _mfpOn(BEFORE_CLOSE_EVENT + ns, function() { 43917 if (mfp._allowZoom()) { 43918 clearTimeout(openTimeout); 43919 mfp.st.removalDelay = duration; 43920 if (!image) { 43921 image = mfp._getItemToZoom(); 43922 if (!image) { 43923 return; 43924 } 43925 animatedImg = getElToAnimate(image); 43926 } 43927 animatedImg.css(mfp._getOffset(true)); 43928 mfp.wrap.append(animatedImg); 43929 mfp.content.css("visibility", "hidden"); 43930 setTimeout(function() { 43931 animatedImg.css(mfp._getOffset()); 43932 }, 16); 43933 } 43934 }); 43935 _mfpOn(CLOSE_EVENT + ns, function() { 43936 if (mfp._allowZoom()) { 43937 showMainContent(); 43938 if (animatedImg) { 43939 animatedImg.remove(); 43940 } 43941 image = null; 43942 } 43943 }); 43944 }, 43945 _allowZoom: function() { 43946 return mfp.currItem.type === "image"; 43947 }, 43948 _getItemToZoom: function() { 43949 if (mfp.currItem.hasSize) { 43950 return mfp.currItem.img; 43951 } else { 43952 return false; 43953 } 43954 }, 43955 // Get element postion relative to viewport 43956 _getOffset: function(isLarge) { 43957 var el; 43958 if (isLarge) { 43959 el = mfp.currItem.img; 43960 } else { 43961 el = mfp.st.zoom.opener(mfp.currItem.el || mfp.currItem); 43962 } 43963 var offset = el.offset(); 43964 var paddingTop = parseInt(el.css("padding-top"), 10); 43965 var paddingBottom = parseInt(el.css("padding-bottom"), 10); 43966 offset.top -= $3(window).scrollTop() - paddingTop; 43967 var obj = { 43968 width: el.width(), 43969 // fix Zepto height+padding issue 43970 height: (_isJQ ? el.innerHeight() : el[0].offsetHeight) - paddingBottom - paddingTop 43971 }; 43972 if (getHasMozTransform()) { 43973 obj["-moz-transform"] = obj["transform"] = "translate(" + offset.left + "px," + offset.top + "px)"; 43974 } else { 43975 obj.left = offset.left; 43976 obj.top = offset.top; 43977 } 43978 return obj; 43979 } 43980 } 43981 }); 43982 var IFRAME_NS = "iframe", _emptyPage = "//about:blank", _fixIframeBugs = function(isShowing) { 43983 if (mfp.currTemplate[IFRAME_NS]) { 43984 var el = mfp.currTemplate[IFRAME_NS].find("iframe"); 43985 if (el.length) { 43986 if (!isShowing) { 43987 el[0].src = _emptyPage; 43988 } 43989 if (mfp.isIE8) { 43990 el.css("display", isShowing ? "block" : "none"); 43991 } 43992 } 43993 } 43994 }; 43995 $3.magnificPopup.registerModule(IFRAME_NS, { 43996 options: { 43997 markup: '<div class="mfp-iframe-scaler"><div class="mfp-close"></div><iframe class="mfp-iframe" src="//about:blank" frameborder="0" allowfullscreen></iframe></div>', 43998 srcAction: "iframe_src", 43999 // we don't care and support only one default type of URL by default 44000 patterns: { 44001 youtube: { 44002 index: "youtube.com", 44003 id: "v=", 44004 src: "//www.youtube.com/embed/%id%?autoplay=1" 44005 }, 44006 vimeo: { 44007 index: "vimeo.com/", 44008 id: "/", 44009 src: "//player.vimeo.com/video/%id%?autoplay=1" 44010 }, 44011 gmaps: { 44012 index: "//maps.google.", 44013 src: "%id%&output=embed" 44014 } 44015 } 44016 }, 44017 proto: { 44018 initIframe: function() { 44019 mfp.types.push(IFRAME_NS); 44020 _mfpOn("BeforeChange", function(e, prevType, newType) { 44021 if (prevType !== newType) { 44022 if (prevType === IFRAME_NS) { 44023 _fixIframeBugs(); 44024 } else if (newType === IFRAME_NS) { 44025 _fixIframeBugs(true); 44026 } 44027 } 44028 }); 44029 _mfpOn(CLOSE_EVENT + "." + IFRAME_NS, function() { 44030 _fixIframeBugs(); 44031 }); 44032 }, 44033 getIframe: function(item, template) { 44034 var embedSrc = item.src; 44035 var iframeSt = mfp.st.iframe; 44036 $3.each(iframeSt.patterns, function() { 44037 if (embedSrc.indexOf(this.index) > -1) { 44038 if (this.id) { 44039 if (typeof this.id === "string") { 44040 embedSrc = embedSrc.substr(embedSrc.lastIndexOf(this.id) + this.id.length, embedSrc.length); 44041 } else { 44042 embedSrc = this.id.call(this, embedSrc); 44043 } 44044 } 44045 embedSrc = this.src.replace("%id%", embedSrc); 44046 return false; 44047 } 44048 }); 44049 var dataObj = {}; 44050 if (iframeSt.srcAction) { 44051 dataObj[iframeSt.srcAction] = embedSrc; 44052 } 44053 mfp._parseMarkup(template, dataObj, item); 44054 mfp.updateStatus("ready"); 44055 return template; 44056 } 44057 } 44058 }); 44059 var _getLoopedId = function(index) { 44060 var numSlides = mfp.items.length; 44061 if (index > numSlides - 1) { 44062 return index - numSlides; 44063 } else if (index < 0) { 44064 return numSlides + index; 44065 } 44066 return index; 44067 }, _replaceCurrTotal = function(text, curr, total) { 44068 return text.replace(/%curr%/gi, curr + 1).replace(/%total%/gi, total); 44069 }; 44070 $3.magnificPopup.registerModule("gallery", { 44071 options: { 44072 enabled: false, 44073 arrowMarkup: '<button title="%title%" type="button" class="mfp-arrow mfp-arrow-%dir%"></button>', 44074 preload: [0, 2], 44075 navigateByImgClick: true, 44076 arrows: true, 44077 tPrev: "Previous (Left arrow key)", 44078 tNext: "Next (Right arrow key)", 44079 tCounter: "%curr% of %total%" 44080 }, 44081 proto: { 44082 initGallery: function() { 44083 var gSt = mfp.st.gallery, ns = ".mfp-gallery"; 44084 mfp.direction = true; 44085 if (!gSt || !gSt.enabled) return false;
44086 _wrapClasses += " mfp-gallery"; 44087 _mfpOn(OPEN_EVENT + ns, function() { 44088 if (gSt.navigateByImgClick) { 44089 mfp.wrap.on("click" + ns, ".mfp-img", function() { 44090 if (mfp.items.length > 1) { 44091 mfp.next(); 44092 return false; 44093 } 44094 }); 44095 } 44096 _document.on("keydown" + ns, function(e) { 44097 if (e.keyCode === 37) { 44098 mfp.prev(); 44099 } else if (e.keyCode === 39) { 44100 mfp.next(); 44101 } 44102 }); 44103 }); 44104 _mfpOn("UpdateStatus" + ns, function(e, data) { 44105 if (data.text) { 44106 data.text = _replaceCurrTotal(data.text, mfp.currItem.index, mfp.items.length); 44107 } 44108 }); 44109 _mfpOn(MARKUP_PARSE_EVENT + ns, function(e, element, values, item) { 44110 var l = mfp.items.length; 44111 values.counter = l > 1 ? _replaceCurrTotal(gSt.tCounter, item.index, l) : ""; 44112 }); 44113 _mfpOn("BuildControls" + ns, function() { 44114 if (mfp.items.length > 1 && gSt.arrows && !mfp.arrowLeft) { 44115 var markup = gSt.arrowMarkup, arrowLeft = mfp.arrowLeft = $3(markup.replace(/%title%/gi, gSt.tPrev).replace(/%dir%/gi, "left")).addClass(PREVENT_CLOSE_CLASS), arrowRight = mfp.arrowRight = $3(markup.replace(/%title%/gi, gSt.tNext).replace(/%dir%/gi, "right")).addClass(PREVENT_CLOSE_CLASS); 44116 arrowLeft.click(function() { 44117 mfp.prev(); 44118 }); 44119 arrowRight.click(function() { 44120 mfp.next(); 44121 }); 44122 mfp.container.append(arrowLeft.add(arrowRight)); 44123 } 44124 }); 44125 _mfpOn(CHANGE_EVENT + ns, function() { 44126 if (mfp._preloadTimeout) clearTimeout(mfp._preloadTimeout); 44127 mfp._preloadTimeout = setTimeout(function() { 44128 mfp.preloadNearbyImages(); 44129 mfp._preloadTimeout = null; 44130 }, 16); 44131 }); 44132 _mfpOn(CLOSE_EVENT + ns, function() { 44133 _document.off(ns); 44134 mfp.wrap.off("click" + ns); 44135 mfp.arrowRight = mfp.arrowLeft = null; 44136 }); 44137 }, 44138 next: function() { 44139 mfp.direction = true; 44140 mfp.index = _getLoopedId(mfp.index + 1); 44141 mfp.updateItemHTML(); 44142 }, 44143 prev: function() { 44144 mfp.direction = false; 44145 mfp.index = _getLoopedId(mfp.index - 1); 44146 mfp.updateItemHTML(); 44147 }, 44148 goTo: function(newIndex) { 44149 mfp.direction = newIndex >= mfp.index; 44150 mfp.index = newIndex; 44151 mfp.updateItemHTML(); 44152 }, 44153 preloadNearbyImages: function() { 44154 var p = mfp.st.gallery.preload, preloadBefore = Math.min(p[0], mfp.items.length), preloadAfter = Math.min(p[1], mfp.items.length), i; 44155 for (i = 1; i <= (mfp.direction ? preloadAfter : preloadBefore); i++) { 44156 mfp._preloadItem(mfp.index + i); 44157 } 44158 for (i = 1; i <= (mfp.direction ? preloadBefore : preloadAfter); i++) { 44159 mfp._preloadItem(mfp.index - i); 44160 } 44161 }, 44162 _preloadItem: function(index) { 44163 index = _getLoopedId(index); 44164 if (mfp.items[index].preloaded) { 44165 return; 44166 } 44167 var item = mfp.items[index]; 44168 if (!item.parsed) { 44169 item = mfp.parseEl(index); 44170 } 44171 _mfpTrigger("LazyLoad", item); 44172 if (item.type === "image") { 44173 item.img = $3('<img class="mfp-img" />').on("load.mfploader", function() { 44174 item.hasSize = true; 44175 }).on("error.mfploader", function() { 44176 item.hasSize = true; 44177 item.loadError = true; 44178 _mfpTrigger("LazyLoadError", item); 44179 }).attr("src", item.src); 44180 } 44181 item.preloaded = true; 44182 } 44183 } 44184 }); 44185 var RETINA_NS = "retina"; 44186 $3.magnificPopup.registerModule(RETINA_NS, { 44187 options: { 44188 replaceSrc: function(item) { 44189 return item.src.replace(/\.\w+$/, function(m) { 44190 return "@2x" + m; 44191 }); 44192 }, 44193 ratio: 1 44194 // Function or number. Set to 1 to disable. 44195 }, 44196 proto: { 44197 initRetina: function() { 44198 if (window.devicePixelRatio > 1) { 44199 var st = mfp.st.retina, ratio = st.ratio;
44200 ratio = !isNaN(ratio) ? ratio : ratio(); 44201 if (ratio > 1) { 44202 _mfpOn("ImageHasSize." + RETINA_NS, function(e, item) { 44203 item.img.css({ 44204 "max-width": item.img[0].naturalWidth / ratio, 44205 "width": "100%" 44206 }); 44207 }); 44208 _mfpOn("ElementParse." + RETINA_NS, function(e, item) { 44209 item.src = st.replaceSrc(item, ratio); 44210 }); 44211 } 44212 } 44213 } 44214 } 44215 }); 44216 _checkInstance(); 44217 }); 44218 } 44219 }); 44220 44221
44221// apps/base/assets/javascripts/vendor/media-query-events.js 44222 var require_media_query_events = __commonJS({ 44223 "apps/base/assets/javascripts/vendor/media-query-events.js"() { 44224 "use strict"; 44225 init_esbuild_shims(); 44226 $(document).ready(function() { 44227 var Z63 = (function(parent, $3) { 44228 var MediaQueryListener = function() { 44229 this.afterElement = window.getComputedStyle ? window.getComputedStyle(document.body, ":after") : false; 44230 if (!this.afterElement) { 44231 return; 44232 } 44233 this.currentBreakpoint = ""; 44234 this.lastBreakpoint = this.afterElement.getPropertyValue("content"); 44235 this.init(); 44236 }; 44237 MediaQueryListener.prototype = { 44238 init: function() { 44239 var self2 = this; 44240 if (!self2.afterElement) { 44241 return; 44242 } 44243 self2.currentBreakpoint = self2.afterElement.getPropertyValue("content").replace(/^["']|["']$/g, ""); 44244 window.breakpoint = self2.currentBreakpoint; 44245 self2.lastBreakpoint = self2.currentBreakpoint; 44246 self2._resizeListener(); 44247 }, 44248 _resizeListener: function() { 44249 var self2 = this; 44250 $3(window).on("resize orientationchange load", function() { 44251 self2.currentBreakpoint = self2.afterElement.getPropertyValue("content").replace(/^["']|["']$/g, ""); 44252 window.breakpoint = self2.currentBreakpoint; 44253 if (self2.currentBreakpoint !== self2.lastBreakpoint) { 44254 self2.lastBreakpoint = self2.currentBreakpoint; 44255 $3(window).trigger("breakpoint-change", self2.currentBreakpoint); 44256 } 44257 }); 44258 } 44259 }; 44260 parent.mediaqueryListener = parent.mediaqueryListener || new MediaQueryListener(); 44261 return parent; 44262 })(Z63 || {}, jQuery); 44263 }); 44264 } 44265 }); 44266 44267
44267// apps/base/assets/javascripts/vendor/nouislider.js 44268 var require_nouislider = __commonJS({ 44269 "apps/base/assets/javascripts/vendor/nouislider.js"(exports, module) { 44270 "use strict"; 44271 init_esbuild_shims(); 44272 (function(factory) { 44273 if (typeof define === "function" && define.amd) { 44274 define([], factory); 44275 } else if (typeof exports === "object") { 44276 module.exports = factory(); 44277 } else { 44278 window.noUiSlider = factory(); 44279 } 44280 })(function() { 44281 "use strict"; 44282 function unique(array) { 44283 return array.filter(function(a) { 44284 return !this[a] ? this[a] = true : false; 44285 }, {}); 44286 } 44287 function closest(value, to) { 44288 return Math.round(value / to) * to; 44289 } 44290 function offset(elem) { 44291 var rect = elem.getBoundingClientRect(), doc = elem.ownerDocument, docElem = doc.documentElement, pageOffset = getPageOffset(); 44292 if (/webkit.*Chrome.*Mobile/i.test(navigator.userAgent)) { 44293 pageOffset.x = 0; 44294 } 44295 return { 44296 top: rect.top + pageOffset.y - docElem.clientTop, 44297 left: rect.left + pageOffset.x - docElem.clientLeft 44298 }; 44299 } 44300 function isNumeric(a) { 44301 return typeof a === "number" && !isNaN(a) && isFinite(a); 44302 } 44303 function accurateNumber(number) { 44304 var p = Math.pow(10, 7); 44305 return Number((Math.round(number * p) / p).toFixed(7)); 44306 } 44307 function addClassFor(element, className, duration) { 44308 addClass(element, className); 44309 setTimeout(function() { 44310 removeClass(element, className); 44311 }, duration); 44312 } 44313 function limit(a) { 44314 return Math.max(Math.min(a, 100), 0); 44315 } 44316 function asArray(a) { 44317 return Array.isArray(a) ? a : [a]; 44318 } 44319 function countDecimals(numStr) { 44320 var pieces = numStr.split("."); 44321 return pieces.length > 1 ? pieces[1].length : 0; 44322 } 44323 function addClass(el, className) { 44324 if (el.classList) { 44325 el.classList.add(className); 44326 } else { 44327 el.className += " " + className; 44328 } 44329 } 44330 function removeClass(el, className) { 44331 if (el.classList) { 44332 el.classList.remove(className); 44333 } else { 44334 el.className = el.className.replace(new RegExp("(^|\\b)" + className.split(" ").join("|") + "(\\b|$)", "gi"), " "); 44335 } 44336 } 44337 function hasClass(el, className) { 44338 if (el.classList) { 44339 el.classList.contains(className); 44340 } else { 44341 new RegExp("(^| )" + className + "( |$)", "gi").test(el.className); 44342 } 44343 } 44344 function getPageOffset() { 44345 var supportPageOffset = window.pageXOffset !== void 0, isCSS1Compat = (document.compatMode || "") === "CSS1Compat", x = supportPageOffset ? window.pageXOffset : isCSS1Compat ? document.documentElement.scrollLeft : document.body.scrollLeft, y = supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop; 44346 return { 44347 x, 44348 y 44349 }; 44350 } 44351 function stopPropagation(e) { 44352 e.stopPropagation(); 44353 } 44354 function addCssPrefix(cssPrefix) { 44355 return function(className) { 44356 return cssPrefix + className; 44357 }; 44358 } 44359 var actions = window.navigator.pointerEnabled ? { 44360 start: "pointerdown", 44361 move: "pointermove", 44362 end: "pointerup" 44363 } : window.navigator.msPointerEnabled ? { 44364 start: "MSPointerDown", 44365 move: "MSPointerMove", 44366 end: "MSPointerUp" 44367 } : { 44368 start: "mousedown touchstart", 44369 move: "mousemove touchmove", 44370 end: "mouseup touchend" 44371 }, defaultCssPrefix = "noUi-"; 44372 function subRangeRatio(pa, pb) { 44373 return 100 / (pb - pa); 44374 } 44375 function fromPercentage(range, value) { 44376 return value * 100 / (range[1] - range[0]); 44377 } 44378 function toPercentage(range, value) { 44379 return fromPercentage(range, range[0] < 0 ? value + Math.abs(range[0]) : value - range[0]); 44380 } 44381 function isPercentage(range, value) { 44382 return value * (range[1] - range[0]) / 100 + range[0]; 44383 } 44384 function getJ(value, arr) { 44385 var j = 1; 44386 while (value >= arr[j]) { 44387 j += 1; 44388 } 44389 return j; 44390 } 44391 function toStepping(xVal, xPct, value) { 44392 if (value >= xVal.slice(-1)[0]) { 44393 return 100; 44394 } 44395 var j = getJ(value, xVal), va, vb, pa, pb; 44396 va = xVal[j - 1]; 44397 vb = xVal[j]; 44398 pa = xPct[j - 1]; 44399 pb = xPct[j]; 44400 return pa + toPercentage([va, vb], value) / subRangeRatio(pa, pb); 44401 } 44402 function fromStepping(xVal, xPct, value) { 44403 if (value >= 100) { 44404 return xVal.slice(-1)[0]; 44405 } 44406 var j = getJ(value, xPct), va, vb, pa, pb; 44407 va = xVal[j - 1]; 44408 vb = xVal[j]; 44409 pa = xPct[j - 1]; 44410 pb = xPct[j]; 44411 return isPercentage([va, vb], (value - pa) * subRangeRatio(pa, pb)); 44412 } 44413 function getStep(xPct, xSteps, snap, value) { 44414 if (value === 100) { 44415 return value; 44416 } 44417 var j = getJ(value, xPct), a, b; 44418 if (snap) { 44419 a = xPct[j - 1]; 44420 b = xPct[j]; 44421 if (value - a > (b - a) / 2) { 44422 return b; 44423 } 44424 return a; 44425 } 44426 if (!xSteps[j - 1]) { 44427 return value; 44428 } 44429 return xPct[j - 1] + closest( 44430 value - xPct[j - 1], 44431 xSteps[j - 1] 44432 ); 44433 } 44434 function handleEntryPoint(index, value, that) { 44435 var percentage; 44436 if (typeof value === "number") { 44437 value = [value]; 44438 } 44439 if (Object.prototype.toString.call(value) !== "[object Array]") { 44440 throw new Error("noUiSlider: 'range' contains invali
44440d value."); 44441 } 44442 if (index === "min") { 44443 percentage = 0; 44444 } else if (index === "max") { 44445 percentage = 100; 44446 } else { 44447 percentage = parseFloat(index); 44448 } 44449 if (!isNumeric(percentage) || !isNumeric(value[0])) { 44450 throw new Error("noUiSlider: 'range' value isn't numeric."); 44451 } 44452 that.xPct.push(percentage); 44453 that.xVal.push(value[0]); 44454 if (!percentage) { 44455 if (!isNaN(value[1])) { 44456 that.xSteps[0] = value[1]; 44457 } 44458 } else { 44459 that.xSteps.push(isNaN(value[1]) ? false : value[1]); 44460 } 44461 } 44462 function handleStepPoint(i, n, that) { 44463 if (!n) { 44464 return true; 44465 } 44466 that.xSteps[i] = fromPercentage([ 44467 that.xVal[i], 44468 that.xVal[i + 1] 44469 ], n) / subRangeRatio( 44470 that.xPct[i], 44471 that.xPct[i + 1] 44472 ); 44473 } 44474 function Spectrum(entry, snap, direction, singleStep) { 44475 this.xPct = []; 44476 this.xVal = []; 44477 this.xSteps = [singleStep || false]; 44478 this.xNumSteps = [false]; 44479 this.snap = snap; 44480 this.direction = direction; 44481 var index, ordered = [ 44482 /* [0, 'min'], [1, '50%'], [2, 'max'] */ 44483 ]; 44484 for (index in entry) { 44485 if (entry.hasOwnProperty(index)) { 44486 ordered.push([entry[index], index]); 44487 } 44488 } 44489 if (ordered.length && typeof ordered[0][0] === "object") { 44490 ordered.sort(function(a, b) { 44491 return a[0][0] - b[0][0]; 44492 }); 44493 } else { 44494 ordered.sort(function(a, b) { 44495 return a[0] - b[0]; 44496 }); 44497 } 44498 for (index = 0; index < ordered.length; index++) { 44499 handleEntryPoint(ordered[index][1], ordered[index][0], this); 44500 } 44501 this.xNumSteps = this.xSteps.slice(0); 44502 for (index = 0; index < this.xNumSteps.length; index++) { 44503 handleStepPoint(index, this.xNumSteps[index], this); 44504 } 44505 } 44506 Spectrum.prototype.getMargin = function(value) { 44507 return this.xPct.length === 2 ? fromPercentage(this.xVal, value) : false; 44508 }; 44509 Spectrum.prototype.toStepping = function(value) { 44510 value = toStepping(this.xVal, this.xPct, value); 44511 if (this.direction) { 44512 value = 100 - value; 44513 } 44514 return value; 44515 }; 44516 Spectrum.prototype.fromStepping = function(value) { 44517 if (this.direction) { 44518 value = 100 - value; 44519 } 44520 return accurateNumber(fromStepping(this.xVal, this.xPct, value)); 44521 }; 44522 Spectrum.prototype.getStep = function(value) { 44523 if (this.direction) { 44524 value = 100 - value; 44525 } 44526 value = getStep(this.xPct, this.xSteps, this.snap, value); 44527 if (this.direction) { 44528 value = 100 - value; 44529 } 44530 return value; 44531 }; 44532 Spectrum.prototype.getApplicableStep = function(value) { 44533 var j = getJ(value, this.xPct), offset2 = value === 100 ? 2 : 1; 44534 return [this.xNumSteps[j - 2], this.xVal[j - offset2], this.xNumSteps[j - offset2]]; 44535 }; 44536 Spectrum.prototype.convert = function(value) { 44537 return this.getStep(this.toStepping(value)); 44538 }; 44539 var defaultFormatter = { "to": function(value) { 44540 return value !== void 0 && value.toFixed(2); 44541 }, "from": Number }; 44542 function testStep(parsed, entry) { 44543 if (!isNumeric(entry)) { 44544 throw new Error("noUiSlider: 'step' is not numeric."); 44545 } 44546 parsed.singleStep = entry; 44547 } 44548 function testRange(parsed, entry) { 44549 if (typeof entry !== "object" || Array.isArray(entry)) { 44550 throw new Error("noUiSlider: 'range' is not an object."); 44551 } 44552 if (entry.min === void 0 || entry.max === void 0) { 44553 throw new Error("noUiSlider: Missing 'min' or 'max' in 'range'."); 44554 } 44555 if (entry.min === entry.max) { 44556 throw new Error("noUiSlider: 'range' 'min' and 'max' cannot be equal."); 44557 } 44558 parsed.spectrum = new Spectrum(entry, parsed.snap, parsed.dir, parsed.singleStep); 44559 } 44560 function testStart(parsed, entry) { 44561 entry = asArray(entry); 44562 if (!Array.isArray(entry) || !entry.length || entry.length > 2) { 44563 throw new Error("noUiSlider: 'start' option is incorrect."); 44564 } 44565 parsed.handles = entry.length; 44566 parsed.start = entry; 44567 } 44568 function testSnap(parsed, entry) { 44569 parsed.snap = entry; 44570 if (typeof entry !== "boolean") { 44571 throw new Error("noUiSlider: 'snap' option must be a boolean."); 44572 } 44573 } 44574 function testAnimate(parsed, entry) { 44575 parsed.animate = entry; 44576 if (typeof entry !== "boolean") { 44577 throw new Error("noUiSlider: 'animate' option must be a boolean."); 44578 } 44579 } 44580 function testConnect(parsed, entry) { 44581 if (entry === "lower" && parsed.handles === 1) { 44582 parsed.connect = 1; 44583 } else if (entry === "upper" && parsed.handles === 1) { 44584 parsed.connect = 2; 44585 } else if (entry === true && parsed.handles === 2) { 44586 parsed.connect = 3; 44587 } else if (entry === false) { 44588 parsed.connect = 0; 44589 } else { 44590 throw new Error("noUiSlider: 'connect' option doesn't match handle count."); 44591 } 44592 } 44593 function testOrientation(parsed, entry) { 44594 switch (entry) { 44595 case "horizontal": 44596 parsed.ort = 0; 44597 break; 44598 case "vertical": 44599 parsed.ort = 1; 44600 break; 44601 default: 44602 throw new Error("noUiSlider: 'orientation' option is invali
44602d."); 44603 } 44604 } 44605 function testMargin(parsed, entry) { 44606 if (!isNumeric(entry)) { 44607 throw new Error("noUiSlider: 'margin' option must be numeric."); 44608 } 44609 parsed.margin = parsed.spectrum.getMargin(entry); 44610 if (!parsed.margin) { 44611 throw new Error("noUiSlider: 'margin' option is only supported on linear sliders."); 44612 } 44613 } 44614 function testLimit(parsed, entry) { 44615 if (!isNumeric(entry)) { 44616 throw new Error("noUiSlider: 'limit' option must be numeric."); 44617 } 44618 parsed.limit = parsed.spectrum.getMargin(entry); 44619 if (!parsed.limit) { 44620 throw new Error("noUiSlider: 'limit' option is only supported on linear sliders."); 44621 } 44622 } 44623 function testDirection(parsed, entry) { 44624 switch (entry) { 44625 case "ltr": 44626 parsed.dir = 0; 44627 break; 44628 case "rtl": 44629 parsed.dir = 1; 44630 parsed.connect = [0, 2, 1, 3][parsed.connect]; 44631 break; 44632 default: 44633 throw new Error("noUiSlider: 'direction' option was not recognized."); 44634 } 44635 } 44636 function testBehaviour(parsed, entry) { 44637 if (typeof entry !== "string") { 44638 throw new Error("noUiSlider: 'behaviour' must be a string containing options."); 44639 } 44640 var tap = entry.indexOf("tap") >= 0, drag = entry.indexOf("drag") >= 0, fixed = entry.indexOf("fixed") >= 0, snap = entry.indexOf("snap") >= 0, hover = entry.indexOf("hover") >= 0; 44641 if (drag && !parsed.connect) { 44642 throw new Error("noUiSlider: 'drag' behaviour must be used with 'connect': true."); 44643 } 44644 parsed.events = { 44645 tap: tap || snap, 44646 drag, 44647 fixed, 44648 snap, 44649 hover 44650 }; 44651 } 44652 function testTooltips(parsed, entry) { 44653 var i; 44654 if (entry === false) { 44655 return; 44656 } else if (entry === true) { 44657 parsed.tooltips = []; 44658 for (i = 0; i < parsed.handles; i++) { 44659 parsed.tooltips.push(true); 44660 } 44661 } else { 44662 parsed.tooltips = asArray(entry); 44663 if (parsed.tooltips.length !== parsed.handles) { 44664 throw new Error("noUiSlider: must pass a formatter for all handles."); 44665 } 44666 parsed.tooltips.forEach(function(formatter) { 44667 if (typeof formatter !== "boolean" && (typeof formatter !== "object" || typeof formatter.to !== "function")) { 44668 throw new Error("noUiSlider: 'tooltips' must be passed a formatter or 'false'."); 44669 } 44670 }); 44671 } 44672 } 44673 function testFormat(parsed, entry) { 44674 parsed.format = entry; 44675 if (typeof entry.to === "function" && typeof entry.from === "function") { 44676 return true; 44677 } 44678 throw new Error("noUiSlider: 'format' requires 'to' and 'from' methods."); 44679 } 44680 function testCssPrefix(parsed, entry) { 44681 if (entry !== void 0 && typeof entry !== "string") { 44682 throw new Error("noUiSlider: 'cssPrefix' must be a string."); 44683 } 44684 parsed.cssPrefix = entry; 44685 } 44686 function testOptions(options) { 44687 var parsed = { 44688 margin: 0, 44689 limit: 0, 44690 animate: true, 44691 format: defaultFormatter 44692 }, tests; 44693 tests = { 44694 "step": { r: false, t: testStep }, 44695 "start": { r: true, t: testStart }, 44696 "connect": { r: true, t: testConnect }, 44697 "direction": { r: true, t: testDirection }, 44698 "snap": { r: false, t: testSnap }, 44699 "animate": { r: false, t: testAnimate }, 44700 "range": { r: true, t: testRange }, 44701 "orientation": { r: false, t: testOrientation }, 44702 "margin": { r: false, t: testMargin }, 44703 "limit": { r: false, t: testLimit }, 44704 "behaviour": { r: true, t: testBehaviour }, 44705 "format": { r: false, t: testFormat }, 44706 "tooltips": { r: false, t: testTooltips }, 44707 "cssPrefix": { r: false, t: testCssPrefix } 44708 }; 44709 var defaults = { 44710 "connect": false, 44711 "direction": "ltr", 44712 "behaviour": "tap", 44713 "orientation": "horizontal" 44714 };
44715 Object.keys(tests).forEach(function(name) { 44716 if (options[name] === void 0 && defaults[name] === void 0) { 44717 if (tests[name].r) { 44718 throw new Error("noUiSlider: '" + name + "' is required."); 44719 } 44720 return true; 44721 } 44722 tests[name].t(parsed, options[name] === void 0 ? defaults[name] : options[name]); 44723 }); 44724 parsed.pips = options.pips; 44725 parsed.style = parsed.ort ? "top" : "left"; 44726 return parsed; 44727 } 44728 function closure(target, options) { 44729 var scope_Target = target, scope_Locations = [-1, -1], scope_Base, scope_Handles, scope_Spectrum = options.spectrum, scope_Values = [], scope_Events = {}, scope_Self; 44730 var cssClasses = [ 44731 /* 0 */ 44732 "target", 44733 "base", 44734 "origin", 44735 "handle", 44736 "horizontal", 44737 "vertical", 44738 "background", 44739 "connect", 44740 "ltr", 44741 "rtl", 44742 "draggable", 44743 "", 44744 "state-drag", 44745 "", 44746 "state-tap", 44747 "active", 44748 "", 44749 "stacking", 44750 "tooltip", 44751 "", 44752 "pips", 44753 "marker", 44754 "value" 44755 ].map(addCssPrefix(options.cssPrefix || defaultCssPrefix)); 44756 function getPositions(a, b, delimit) { 44757 var c = a + b[0], d = a + b[1]; 44758 if (delimit) { 44759 if (c < 0) { 44760 d += Math.abs(c); 44761 } 44762 if (d > 100) { 44763 c -= d - 100; 44764 } 44765 return [limit(c), limit(d)]; 44766 } 44767 return [c, d]; 44768 } 44769 function fixEvent(e, pageOffset) { 44770 e.preventDefault(); 44771 var touch = e.type.indexOf("touch") === 0, mouse = e.type.indexOf("mouse") === 0, pointer = e.type.indexOf("pointer") === 0, x, y, event2 = e; 44772 if (e.type.indexOf("MSPointer") === 0) { 44773 pointer = true; 44774 } 44775 if (touch) { 44776 x = e.changedTouches[0].pageX; 44777 y = e.changedTouches[0].pageY; 44778 } 44779 pageOffset = pageOffset || getPageOffset(); 44780 if (mouse || pointer) { 44781 x = e.clientX + pageOffset.x; 44782 y = e.clientY + pageOffset.y; 44783 } 44784 event2.pageOffset = pageOffset; 44785 event2.points = [x, y]; 44786 event2.cursor = mouse || pointer; 44787 return event2; 44788 } 44789 function addHandle(direction, index) { 44790 var origin = document.createElement("div"), handle = document.createElement("div"), additions = ["-lower", "-upper"]; 44791 if (direction) { 44792 additions.reverse(); 44793 } 44794 addClass(handle, cssClasses[3]); 44795 addClass(handle, cssClasses[3] + additions[index]);
44796 addClass(origin, cssClasses[2]); 44797 origin.appendChild(handle); 44798 return origin; 44799 } 44800 function addConnection(connect, target2, handles) { 44801 switch (connect) { 44802 case 1: 44803 addClass(target2, cssClasses[7]); 44804 addClass(handles[0], cssClasses[6]); 44805 break; 44806 case 3: 44807 addClass(handles[1], cssClasses[6]); 44808 /* falls through */ 44809 case 2: 44810 addClass(handles[0], cssClasses[7]); 44811 /* falls through */ 44812 case 0: 44813 addClass(target2, cssClasses[6]); 44814 break; 44815 } 44816 } 44817 function addHandles(nrHandles, direction, base) { 44818 var index, handles = []; 44819 for (index = 0; index < nrHandles; index += 1) { 44820 handles.push(base.appendChild(addHandle(direction, index))); 44821 } 44822 return handles; 44823 } 44824 function addSlider(direction, orientation, target2) { 44825 addClass(target2, cssClasses[0]); 44826 addClass(target2, cssClasses[8 + direction]); 44827 addClass(target2, cssClasses[4 + orientation]); 44828 var div = document.createElement("div"); 44829 addClass(div, cssClasses[1]); 44830 target2.appendChild(div); 44831 return div; 44832 } 44833 function addTooltip(handle, index) { 44834 if (!options.tooltips[index]) { 44835 return false; 44836 } 44837 var element = document.createElement("div"); 44838 element.className = cssClasses[18]; 44839 return handle.firstChild.appendChild(element); 44840 } 44841 function tooltips() { 44842 if (options.dir) { 44843 options.tooltips.reverse(); 44844 } 44845 var tips = scope_Handles.map(addTooltip); 44846 if (options.dir) { 44847 tips.reverse(); 44848 options.tooltips.reverse(); 44849 } 44850 bindEvent("update", function(f, o, r) { 44851 if (tips[o]) { 44852 tips[o].innerHTML = options.tooltips[o] === true ? f[o] : options.tooltips[o].to(r[o]); 44853 } 44854 }); 44855 } 44856 function getGroup(mode, values, stepped) { 44857 if (mode === "range" || mode === "steps") { 44858 return scope_Spectrum.xVal; 44859 } 44860 if (mode === "count") { 44861 var spread = 100 / (values - 1), v, i = 0; 44862 values = []; 44863 while ((v = i++ * spread) <= 100) { 44864 values.push(v); 44865 } 44866 mode = "positions"; 44867 } 44868 if (mode === "positions") { 44869 return values.map(function(value) { 44870 return scope_Spectrum.fromStepping(stepped ? scope_Spectrum.getStep(value) : value); 44871 }); 44872 } 44873 if (mode === "values") { 44874 if (stepped) { 44875 return values.map(function(value) { 44876 return scope_Spectrum.fromStepping(scope_Spectrum.getStep(scope_Spectrum.toStepping(value))); 44877 }); 44878 } 44879 return values; 44880 } 44881 } 44882 function generateSpread(density, mode, group) { 44883 function safeIncrement(value, increment) { 44884 return (value + increment).toFixed(7) / 1; 44885 } 44886 var originalSpectrumDirection = scope_Spectrum.direction, indexes = {}, firstInRange = scope_Spectrum.xVal[0], lastInRange = scope_Spectrum.xVal[scope_Spectrum.xVal.length - 1], ignoreFirst = false, ignoreLast = false, prevPct = 0; 44887 scope_Spectrum.direction = 0; 44888 group = unique(group.slice().sort(function(a, b) { 44889 return a - b; 44890 })); 44891 if (group[0] !== firstInRange) { 44892 group.unshift(firstInRange); 44893 ignoreFirst = true; 44894 } 44895 if (group[group.length - 1] !== lastInRange) { 44896 group.push(lastInRange); 44897 ignoreLast = true; 44898 } 44899 group.forEach(function(current, index) { 44900 var step, i, q, low = current, high = group[index + 1], newPct, pctDifference, pctPos, type, steps, realSteps, stepsize; 44901 if (mode === "steps") { 44902 step = scope_Spectrum.xNumSteps[index]; 44903 } 44904 if (!step) { 44905 step = high - low; 44906 } 44907 if (low === false || high === void 0) { 44908 return; 44909 } 44910 for (i = low; i <= high; i = safeIncrement(i, step)) { 44911 newPct = scope_Spectrum.toStepping(i); 44912 pctDifference = newPct - prevPct; 44913 steps = pctDifference / density; 44914 realSteps = Math.round(steps); 44915 stepsize = pctDifference / realSteps; 44916 for (q = 1; q <= realSteps; q += 1) { 44917 pctPos = prevPct + q * stepsize; 44918 indexes[pctPos.toFixed(5)] = ["x", 0]; 44919 } 44920 type = group.indexOf(i) > -1 ? 1 : mode === "steps" ? 2 : 0; 44921 if (!index && ignoreFirst) { 44922 type = 0; 44923 } 44924 if (!(i === high && ignoreLast)) { 44925 indexes[newPct.toFixed(5)] = [i, type]; 44926 } 44927 prevPct = newPct; 44928 } 44929 }); 44930 scope_Spectrum.direction = originalSpectrumDirection; 44931 return indexes; 44932 } 44933 function addMarking(spread, filterFunc, formatter) { 44934 var style = ["horizontal", "vertical"][options.ort], element = document.createElement("div");
44935 addClass(element, cssClasses[20]); 44936 addClass(element, cssClasses[20] + "-" + style); 44937 function getSize(type) { 44938 return ["-normal", "-large", "-sub"][type]; 44939 } 44940 function getTags(offset2, source, values) { 44941 return 'class="' + source + " " + source + "-" + style + " " + source + getSize(values[1]) + '" style="' + options.style + ": " + offset2 + '%"'; 44942 } 44943 function addSpread(offset2, values) { 44944 if (scope_Spectrum.direction) { 44945 offset2 = 100 - offset2; 44946 } 44947 values[1] = values[1] && filterFunc ? filterFunc(values[0], values[1]) : values[1]; 44948 element.innerHTML += "<div " + getTags(offset2, cssClasses[21], values) + "></div>"; 44949 if (values[1]) { 44950 element.innerHTML += "<div " + getTags(offset2, cssClasses[22], values) + ">" + formatter.to(values[0]) + "</div>"; 44951 } 44952 } 44953 Object.keys(spread).forEach(function(a) { 44954 addSpread(a, spread[a]); 44955 }); 44956 return element; 44957 } 44958 function pips(grid) { 44959 var mode = grid.mode, density = grid.density || 1, filter = grid.filter || false, values = grid.values || false, stepped = grid.stepped || false, group = getGroup(mode, values, stepped), spread = generateSpread(density, mode, group), format = grid.format || { 44960 to: Math.round 44961 }; 44962 return scope_Target.appendChild(addMarking( 44963 spread, 44964 filter, 44965 format 44966 )); 44967 } 44968 function baseSize() { 44969 return scope_Base["offset" + ["Width", "Height"][options.ort]]; 44970 } 44971 function fireEvent(event2, handleNumber, tap2) { 44972 if (handleNumber !== void 0 && options.handles !== 1) { 44973 handleNumber = Math.abs(handleNumber - options.dir); 44974 } 44975 Object.keys(scope_Events).forEach(function(targetEvent) { 44976 var eventType = targetEvent.split(".")[0]; 44977 if (event2 === eventType) { 44978 scope_Events[targetEvent].forEach(function(callback) { 44979 callback.call(scope_Self, asArray(valueGet()), handleNumber, asArray(inSliderOrder(Array.prototype.slice.call(scope_Values))), tap2 || false); 44980 }); 44981 } 44982 }); 44983 } 44984 function inSliderOrder(values) { 44985 if (values.length === 1) { 44986 return values[0]; 44987 } 44988 if (options.dir) { 44989 return values.reverse(); 44990 } 44991 return values; 44992 } 44993 function attach(events2, element, callback, data) { 44994 var method = function(e) { 44995 if (scope_Target.hasAttribute("disabled")) { 44996 return false; 44997 } 44998 if (hasClass(scope_Target, cssClasses[14])) { 44999 return false; 45000 } 45001 e = fixEvent(e, data.pageOffset); 45002 if (events2 === actions.start && e.buttons !== void 0 && e.buttons > 1) { 45003 return false; 45004 } 45005 if (data.hover && e.buttons) { 45006 return false; 45007 } 45008 e.calcPoint = e.points[options.ort]; 45009 callback(e, data); 45010 }, methods = []; 45011 events2.split(" ").forEach(function(eventName) { 45012 element.addEventListener(eventName, method, false); 45013 methods.push([eventName, method]); 45014 }); 45015 return methods; 45016 } 45017 function move(event2, data) { 45018 if (navigator.appVersion.indexOf("MSIE 9") === -1 && event2.buttons === 0 && data.buttonsProperty !== 0) { 45019 return end(event2, data); 45020 } 45021 var handles = data.handles || scope_Handles, positions, state = false, proposal = (event2.calcPoint - data.start) * 100 / data.baseSize, handleNumber = handles[0] === scope_Handles[0] ? 0 : 1, i; 45022 positions = getPositions(proposal, data.positions, handles.length > 1); 45023 state = setHandle(handles[0], positions[handleNumber], handles.length === 1); 45024 if (handles.length > 1) { 45025 state = setHandle(handles[1], positions[handleNumber ? 0 : 1], false) || state; 45026 if (state) { 45027 for (i = 0; i < data.handles.length; i++) { 45028 fireEvent("slide", i); 45029 } 45030 } 45031 } else if (state) { 45032 fireEvent("slide", handleNumber); 45033 } 45034 } 45035 function end(event2, data) { 45036 var active = scope_Base.querySelector("." + cssClasse
45036s[15]), handleNumber = data.handles[0] === scope_Handles[0] ? 0 : 1; 45037 if (active !== null) { 45038 removeClass(active, cssClasses[15]); 45039 } 45040 if (event2.cursor) { 45041 document.body.style.cursor = ""; 45042 document.body.removeEventListener("selectstart", document.body.noUiListener); 45043 } 45044 var d = document.documentElement; 45045 d.noUiListeners.forEach(function(c) { 45046 d.removeEventListener(c[0], c[1]); 45047 }); 45048 removeClass(scope_Target, cssClasses[12]); 45049 fireEvent("set", handleNumber); 45050 fireEvent("change", handleNumber); 45051 if (data.handleNumber !== void 0) { 45052 fireEvent("end", data.handleNumber); 45053 } 45054 } 45055 function documentLeave(event2, data) { 45056 if (event2.type === "mouseout" && event2.target.nodeName === "HTML" && event2.relatedTarget === null) { 45057 end(event2, data); 45058 } 45059 } 45060 function start(event2, data) { 45061 var d = document.documentElement; 45062 if (data.handles.length === 1) { 45063 addClass(data.handles[0].children[0], cssClasses[15]); 45064 if (data.handles[0].hasAttribute("disabled")) { 45065 return false; 45066 } 45067 } 45068 event2.preventDefault(); 45069 event2.stopPropagation(); 45070 var moveEvent = attach(actions.move, d, move, { 45071 start: event2.calcPoint, 45072 baseSize: baseSize(), 45073 pageOffset: event2.pageOffset, 45074 handles: data.handles, 45075 handleNumber: data.handleNumber, 45076 buttonsProperty: event2.buttons, 45077 positions: [ 45078 scope_Locations[0], 45079 scope_Locations[scope_Handles.length - 1] 45080 ] 45081 }), endEvent = attach(actions.end, d, end, { 45082 handles: data.handles, 45083 handleNumber: data.handleNumber 45084 }); 45085 var outEvent = attach("mouseout", d, documentLeave, { 45086 handles: data.handles, 45087 handleNumber: data.handleNumber 45088 }); 45089 d.noUiListeners = moveEvent.concat(endEvent, outEvent); 45090 if (event2.cursor) { 45091 document.body.style.cursor = getComputedStyle(event2.target).cursor; 45092 if (scope_Handles.length > 1) { 45093 addClass(scope_Target, cssClasses[12]); 45094 } 45095 var f = function() { 45096 return false; 45097 }; 45098 document.body.noUiListener = f; 45099 document.body.addEventListener("selectstart", f, false); 45100 } 45101 if (data.handleNumber !== void 0) { 45102 fireEvent("start", data.handleNumber); 45103 } 45104 } 45105 function tap(event2) { 45106 var location2 = event2.calcPoint, total = 0, handleNumber, to; 45107 event2.stopPropagation(); 45108 scope_Handles.forEach(function(a) { 45109 total += offset(a)[options.style]; 45110 }); 45111 handleNumber = location2 < total / 2 || scope_Handles.length === 1 ? 0 : 1; 45112 location2 -= offset(scope_Base)[options.style]; 45113 to = location2 * 100 / baseSize(); 45114 if (!options.events.snap) { 45115 addClassFor(scope_Target, cssClasses[14], 300); 45116 } 45117 if (scope_Handles[handleNumber].hasAttribute("disabled")) { 45118 return false; 45119 } 45120 setHandle(scope_Handles[handleNumber], to); 45121 fireEvent("slide", handleNumber, true); 45122 fireEvent("set", handleNumber, true); 45123 fireEvent("change", handleNumber, true); 45124 if (options.events.snap) { 45125 start(event2, { handles: [scope_Handles[handleNumber]] }); 45126 } 45127 } 45128 function hover(event2) { 45129 var location2 = event2.calcPoint - offset(scope_Base)[options.style], to = scope_Spectrum.getStep(location2 * 100 / baseSize()), value = scope_Spectrum.fromStepping(to);
45130 Object.keys(scope_Events).forEach(function(targetEvent) { 45131 if ("hover" === targetEvent.split(".")[0]) { 45132 scope_Events[targetEvent].forEach(function(callback) { 45133 callback.call(scope_Self, value); 45134 }); 45135 } 45136 }); 45137 } 45138 function events(behaviour) { 45139 var i, drag; 45140 if (!behaviour.fixed) { 45141 for (i = 0; i < scope_Handles.length; i += 1) { 45142 attach(actions.start, scope_Handles[i].children[0], start, { 45143 handles: [scope_Handles[i]], 45144 handleNumber: i 45145 }); 45146 } 45147 } 45148 if (behaviour.tap) { 45149 attach(actions.start, scope_Base, tap, { 45150 handles: scope_Handles 45151 }); 45152 } 45153 if (behaviour.hover) { 45154 attach(actions.move, scope_Base, hover, { hover: true }); 45155 for (i = 0; i < scope_Handles.length; i += 1) { 45156 ["mousemove MSPointerMove pointermove"].forEach(function(eventName) { 45157 scope_Handles[i].children[0].addEventListener(eventName, stopPropagation, false); 45158 }); 45159 } 45160 } 45161 if (behaviour.drag) { 45162 drag = [scope_Base.querySelector("." + cssClasses[7])]; 45163 addClass(drag[0], cssClasses[10]); 45164 if (behaviour.fixed) { 45165 drag.push(scope_Handles[drag[0] === scope_Handles[0] ? 1 : 0].children[0]); 45166 } 45167 drag.forEach(function(element) { 45168 attach(actions.start, element, start, { 45169 handles: scope_Handles 45170 }); 45171 }); 45172 } 45173 } 45174 function setHandle(handle, to, noLimitOption) { 45175 var trigger = handle !== scope_Handles[0] ? 1 : 0, lowerMargin = scope_Locations[0] + options.margin, upperMargin = scope_Locations[1] - options.margin, lowerLimit = scope_Locations[0] + options.limit, upperLimit = scope_Locations[1] - options.limit; 45176 if (scope_Handles.length > 1) { 45177 to = trigger ? Math.max(to, lowerMargin) : Math.min(to, upperMargin); 45178 } 45179 if (noLimitOption !== false && options.limit && scope_Handles.length > 1) { 45180 to = trigger ? Math.min(to, lowerLimit) : Math.max(to, upperLimit); 45181 } 45182 to = scope_Spectrum.getStep(to); 45183 to = limit(parseFloat(to.toFixed(7))); 45184 if (to === scope_Locations[trigger]) { 45185 return false; 45186 } 45187 if (window.requestAnimationFrame) { 45188 window.requestAnimationFrame(function() { 45189 handle.style[options.style] = to + "%"; 45190 }); 45191 } else { 45192 handle.style[options.style] = to + "%"; 45193 } 45194 if (!handle.previousSibling) { 45195 removeClass(handle, cssClasses[17]); 45196 if (to > 50) { 45197 addClass(handle, cssClasses[17]); 45198 } 45199 } 45200 scope_Locations[trigger] = to; 45201 scope_Values[trigger] = scope_Spectrum.fromStepping(to); 45202 fireEvent("update", trigger); 45203 return true; 45204 } 45205 function setValues(count, values) { 45206 var i, trigger, to; 45207 if (options.limit) { 45208 count += 1; 45209 } 45210 for (i = 0; i < count; i += 1) { 45211 trigger = i % 2; 45212 to = values[trigger]; 45213 if (to !== null && to !== false) { 45214 if (typeof to === "number") { 45215 to = String(to); 45216 } 45217 to = options.format.from(to); 45218 if (to === false || isNaN(to) || setHandle(scope_Handles[trigger], scope_Spectrum.toStepping(to), i === 3 - options.dir) === false) { 45219 fireEvent("update", trigger); 45220 } 45221 } 45222 } 45223 } 45224 function valueSet(input) { 45225 var count, values = asArray(input), i; 45226 if (options.dir && options.handles > 1) { 45227 values.reverse(); 45228 } 45229 if (options.animate && scope_Locations[0] !== -1) {
45230 addClassFor(scope_Target, cssClasses[14], 300); 45231 } 45232 count = scope_Handles.length > 1 ? 3 : 1; 45233 if (values.length === 1) { 45234 count = 1; 45235 } 45236 setValues(count, values); 45237 for (i = 0; i < scope_Handles.length; i++) { 45238 fireEvent("set", i); 45239 } 45240 } 45241 function valueGet() { 45242 var i, retour = []; 45243 for (i = 0; i < options.handles; i += 1) { 45244 retour[i] = options.format.to(scope_Values[i]); 45245 } 45246 return inSliderOrder(retour); 45247 } 45248 function destroy() { 45249 cssClasses.forEach(function(cls) { 45250 if (!cls) { 45251 return; 45252 } 45253 removeClass(scope_Target, cls); 45254 }); 45255 scope_Target.innerHTML = ""; 45256 delete scope_Target.noUiSlider; 45257 } 45258 function getCurrentStep() { 45259 var retour = scope_Locations.map(function(location2, index) { 45260 var step = scope_Spectrum.getApplicableStep(location2), stepDecimals = countDecimals(String(step[2])), value = scope_Values[index], increment = location2 === 100 ? null : step[2], prev = Number((value - step[2]).toFixed(stepDecimals)), decrement = location2 === 0 ? null : prev >= step[1] ? step[2] : step[0] || false; 45261 return [decrement, increment]; 45262 }); 45263 return inSliderOrder(retour); 45264 } 45265 function bindEvent(namespacedEvent, callback) { 45266 scope_Events[namespacedEvent] = scope_Events[namespacedEvent] || []; 45267 scope_Events[namespacedEvent].push(callback); 45268 if (namespacedEvent.split(".")[0] === "update") { 45269 scope_Handles.forEach(function(a, index) { 45270 fireEvent("update", index); 45271 }); 45272 } 45273 } 45274 function removeEvent(namespacedEvent) { 45275 var event2 = namespacedEvent.split(".")[0], namespace = namespacedEvent.substring(event2.length); 45276 Object.keys(scope_Events).forEach(function(bind) { 45277 var tEvent = bind.split(".")[0], tNamespace = bind.substring(tEvent.length); 45278 if ((!event2 || event2 === tEvent) && (!namespace || namespace === tNamespace)) { 45279 delete scope_Events[bind]; 45280 } 45281 }); 45282 } 45283 function updateOptions(optionsToUpdate) { 45284 var v = valueGet(), i, newOptions = testOptions({ 45285 start: [0, 0], 45286 margin: optionsToUpdate.margin, 45287 limit: optionsToUpdate.limit, 45288 step: optionsToUpdate.step, 45289 range: optionsToUpdate.range, 45290 animate: optionsToUpdate.animate, 45291 snap: optionsToUpdate.snap === void 0 ? options.snap : optionsToUpdate.snap 45292 }); 45293 ["margin", "limit", "step", "range", "animate"].forEach(function(name) { 45294 if (optionsToUpdate[name] !== void 0) { 45295 options[name] = optionsToUpdate[name]; 45296 } 45297 }); 45298 scope_Spectrum = newOptions.spectrum; 45299 scope_Locations = [-1, -1]; 45300 valueSet(v); 45301 for (i = 0; i < scope_Handles.length; i++) { 45302 fireEvent("update", i); 45303 } 45304 } 45305 if (scope_Target.noUiSlider) { 45306 throw new Error("Slider was already initialized."); 45307 } 45308 scope_Base = addSlider(options.dir, options.ort, scope_Target); 45309 scope_Handles = addHandles(options.handles, options.dir, scope_Base); 45310 addConnection(options.connect, scope_Target, scope_Handles); 45311 if (options.pips) { 45312 pips(options.pips); 45313 } 45314 if (options.tooltips) { 45315 tooltips(); 45316 } 45317 scope_Self = { 45318 destroy, 45319 steps: getCurrentStep, 45320 on: bindEvent, 45321 off: removeEvent, 45322 get: valueGet, 45323 set: valueSet, 45324 updateOptions 45325 }; 45326 events(options.events); 45327 return scope_Self; 45328 } 45329 function initialize(target, originalOptions) { 45330 if (!target.nodeName) { 45331 throw new Error("noUiSlider.create requires a single element."); 45332 } 45333 var options = testOptions(originalOptions, target), slider = closure(target, options); 45334 slider.set(options.start); 45335 target.noUiSlider = slider; 45336 return slider; 45337 } 45338 return { 45339 create: initialize 45340 }; 45341 }); 45342 } 45343 }); 45344 45345
45345// apps/base/assets/javascripts/vendor/pikaday.js 45346 var require_pikaday2 = __commonJS({ 45347 "apps/base/assets/javascripts/vendor/pikaday.js"(exports, module) { 45348 "use strict"; 45349 init_esbuild_shims(); 45350 (function(root, factory) { 45351 "use strict"; 45352 var moment2; 45353 if (typeof exports === "object") { 45354 try { 45355 moment2 = require_moment(); 45356 } catch (e) { 45357 } 45358 module.exports = factory(moment2); 45359 } else if (typeof define === "function" && define.amd) { 45360 define(function(req) { 45361 var id = "moment"; 45362 try { 45363 moment2 = req(id); 45364 } catch (e) { 45365 } 45366 return factory(moment2); 45367 }); 45368 } else { 45369 root.Pikaday = factory(root.moment); 45370 } 45371 })(exports, function(moment2) { 45372 "use strict"; 45373 var hasMoment = typeof moment2 === "function", hasEventListeners = !!window.addEventListener, document2 = window.document, sto = window.setTimeout, addEvent = function(el, e, callback, capture) { 45374 if (hasEventListeners) { 45375 el.addEventListener(e, callback, !!capture); 45376 } else { 45377 el.attachEvent("on" + e, callback); 45378 } 45379 }, removeEvent = function(el, e, callback, capture) { 45380 if (hasEventListeners) { 45381 el.removeEventListener(e, callback, !!capture); 45382 } else { 45383 el.detachEvent("on" + e, callback); 45384 } 45385 }, fireEvent = function(el, eventName, data) { 45386 var ev; 45387 if (document2.createEvent) { 45388 ev = document2.createEvent("HTMLEvents"); 45389 ev.initEvent(eventName, true, false); 45390 ev = extend(ev, data); 45391 el.dispatchEvent(ev); 45392 } else if (document2.createEventObject) { 45393 ev = document2.createEventObject(); 45394 ev = extend(ev, data); 45395 el.fireEvent("on" + eventName, ev); 45396 } 45397 }, trim = function(str) { 45398 return str.trim ? str.trim() : str.replace(/^\s+|\s+$/g, ""); 45399 }, hasClass = function(el, cn) { 45400 return (" " + el.className + " ").indexOf(" " + cn + " ") !== -1; 45401 }, addClass = function(el, cn) { 45402 if (!hasClass(el, cn)) { 45403 el.className = el.className === "" ? cn : el.className + " " + cn; 45404 } 45405 }, removeClass = function(el, cn) { 45406 el.className = trim((" " + el.className + " ").replace(" " + cn + " ", " ")); 45407 }, isArray = function(obj) { 45408 return /Array/.test(Object.prototype.toString.call(obj)); 45409 }, isDate = function(obj) { 45410 return /Date/.test(Object.prototype.toString.call(obj)) && !isNaN(obj.getTime()); 45411 }, isWeekend = function(date) { 45412 var day = date.getDay(); 45413 return day === 0 || day === 6; 45414 }, isLeapYear = function(year) { 45415 return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0; 45416 }, getDaysInMonth = function(year, month) { 45417 return [31, isLeapYear(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month]; 45418 }, setToStartOfDay = function(date) { 45419 if (isDate(date)) date.setHours(0, 0, 0, 0); 45420 }, compareDates = function(a, b) { 45421 return a.getTime() === b.getTime(); 45422 }, extend = function(to, from, overwrite) { 45423 var prop, hasProp; 45424 for (prop in from) { 45425 hasProp = to[prop] !== void 0; 45426 if (hasProp && typeof from[prop] === "object" && from[prop] !== null && from[prop].nodeName === void 0) { 45427 if (isDate(from[prop])) { 45428 if (overwrite) { 45429 to[prop] = new Date(from[prop].getTime()); 45430 } 45431 } else if (isArray(from[prop])) { 45432 if (overwrite) { 45433 to[prop] = from[prop].slice(0); 45434 } 45435 } else { 45436 to[prop] = extend({}, from[prop], overwrite); 45437 } 45438 } else if (overwrite || !hasProp) { 45439 to[prop] = from[prop]; 45440 } 45441 } 45442 return to; 45443 }
45443, adjustCalendar = function(calendar) { 45444 if (calendar.month < 0) { 45445 calendar.year -= Math.ceil(Math.abs(calendar.month) / 12); 45446 calendar.month += 12; 45447 } 45448 if (calendar.month > 11) { 45449 calendar.year += Math.floor(Math.abs(calendar.month) / 12); 45450 calendar.month -= 12; 45451 } 45452 return calendar; 45453 }, defaults = { 45454 // bind the picker to a form field 45455 field: null, 45456 // automatically show/hide the picker on `field` focus (default `true` if `field` is set) 45457 bound: void 0, 45458 // position of the datepicker, relative to the field (default to bottom & left) 45459 // ('bottom' & 'left' keywords are not used, 'top' & 'right' are modifier on the bottom/left position) 45460 position: "bottom left", 45461 // automatically fit in the viewport even if it means repositioning from the position option 45462 reposition: true, 45463 // the default output format for `.toString()` and `field` value 45464 format: "YYYY-MM-DD", 45465 // the initial date to view when first opened 45466 defaultDate: null, 45467 // make the `defaultDate` the initial selected value 45468 setDefaultDate: false, 45469 // first day of week (0: Sunday, 1: Monday etc) 45470 firstDay: 0, 45471 // the minimum/earliest date that can be selected 45472 minDate: null, 45473 // the maximum/latest date that can be selected 45474 maxDate: null, 45475 // number of years either side, or array of upper/lower range 45476 yearRange: 10, 45477 // show week numbers at head of row 45478 showWeekNumber: false, 45479 // used internally (don't config outside) 45480 minYear: 0, 45481 maxYear: 9999, 45482 minMonth: void 0, 45483 maxMonth: void 0, 45484 startRange: null, 45485 endRange: null, 45486 isRTL: false, 45487 // Additional text to append to the year in the calendar title 45488 yearSuffix: "", 45489 // Render the month after year in the calendar title 45490 showMonthAfterYear: false, 45491 // how many months are visible 45492 numberOfMonths: 1, 45493 // when numberOfMonths is used, this will help you to choose where the main calendar will be (default `left`, can be set to `right`) 45494 // only used for the first display or when a selected date is not visible 45495 mainCalendar: "left", 45496 // Specify a DOM element to render the calendar in 45497 container: void 0, 45498 // internationalization 45499 i18n: { 45500 previousMonth: "Previous Month", 45501 nextMonth: "Next Month", 45502 months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "
vendor: 19,387 bytes, lines 45502-45983
45502November", "December"], 45503 weekdays: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], 45504 weekdaysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"] 45505 }, 45506 // Theme Classname 45507 theme: null, 45508 // callback function 45509 onSelect: null, 45510 onOpen: null, 45511 onClose: null, 45512 onDraw: null 45513 }, renderDayName = function(opts, day, abbr) { 45514 day += opts.firstDay; 45515 while (day >= 7) { 45516 day -= 7; 45517 } 45518 return abbr ? opts.i18n.weekdaysShort[day] : opts.i18n.weekdays[day]; 45519 }, renderDay = function(opts) { 45520 if (opts.isEmpty) { 45521 return '<td class="is-empty"></td>'; 45522 } 45523 var arr = []; 45524 if (opts.isDisabled) { 45525 arr.push("is-disabled"); 45526 } 45527 if (opts.isToday) { 45528 arr.push("is-today"); 45529 } 45530 if (opts.isSelected) { 45531 arr.push("is-selected"); 45532 } 45533 if (opts.isInRange) { 45534 arr.push("is-inrange"); 45535 } 45536 if (opts.isStartRange) { 45537 arr.push("is-startrange"); 45538 } 45539 if (opts.isEndRange) { 45540 arr.push("is-endrange"); 45541 } 45542 return '<td data-day="' + opts.day + '" class="' + arr.join(" ") + '"><button class="pika-button pika-day" type="button" data-pika-year="' + opts.year + '" data-pika-month="' + opts.month + '" data-pika-day="' + opts.day + '">' + opts.day + "</button></td>"; 45543 }, renderWeek = function(d, m, y) { 45544 var onejan = new Date(y, 0, 1), weekNum = Math.ceil(((new Date(y, m, d) - onejan) / 864e5 + onejan.getDay() + 1) / 7); 45545 return '<td class="pika-week">' + weekNum + "</td>"; 45546 }, renderRow = function(days, isRTL) { 45547 return "<tr>" + (isRTL ? days.reverse() : days).join("") + "</tr>"; 45548 }, renderBody = function(rows) { 45549 return "<tbody>" + rows.join("") + "</tbody>"; 45550 }, renderHead = function(opts) { 45551 var i, arr = []; 45552 if (opts.showWeekNumber) { 45553 arr.push("<th></th>"); 45554 } 45555 for (i = 0; i < 7; i++) { 45556 arr.push('<th scope="col"><abbr title="' + renderDayName(opts, i) + '">' + renderDayName(opts, i, true) + "</abbr></th>"); 45557 } 45558 return "<thead>" + (opts.isRTL ? arr.reverse() : arr).join("") + "</thead>"; 45559 }, renderTitle = function(instance, c, year, month, refYear) { 45560 var i, j, arr, opts = instance._o, isMinYear = year === opts.minYear, isMaxYear = year === opts.maxYear, html = '<div class="pika-title">', monthHtml, yearHtml, prev = true, next = true; 45561 for (arr = [], i = 0; i < 12; i++) { 45562 arr.push('<option value="' + (year === refYear ? i - c : 12 + i - c) + '"' + (i === month ? " selected" : "") + (isMinYear && i < opts.minMonth || isMaxYear && i > opts.maxMonth ? "disabled" : "") + ">" + opts.i18n.months[i] + "</option>"); 45563 } 45564 monthHtml = '<div class="pika-label">' + opts.i18n.months[month] + '<select class="pika-select pika-select-month" tabindex="-1">' + arr.join("") + "</select></div>"; 45565 if (isArray(opts.yearRange)) { 45566 i = opts.yearRange[0]; 45567 j = opts.yearRange[1] + 1; 45568 } else { 45569 i = year - opts.yearRange; 45570 j = 1 + year + opts.yearRange; 45571 } 45572 for (arr = []; i < j && i <= opts.maxYear; i++) { 45573 if (i >= opts.minYear) { 45574 arr.push('<option value="' + i + '"' + (i === year ? " selected" : "") + ">" + i + "</option>"); 45575 } 45576 } 45577 yearHtml = '<div class="pika-label">' + year + opts.yearSuffix + '<select class="pika-select pika-select-year" tabindex="-1">' + arr.join("") + "</select></div>"; 45578 if (opts.showMonthAfterYear) { 45579 html += yearHtml + monthHtml; 45580 } else { 45581 html += monthHtml + yearHtml; 45582 } 45583 if (isMinYear && (month === 0 || opts.minMonth >= month)) { 45584 prev = false; 45585 } 45586 if (isMaxYear && (month === 11 || opts.maxMonth <= month)) { 45587 next = false; 45588 } 45589 if (c === 0) { 45590 html += '<button class="pika-prev' + (prev ? "" : " is-disabled") + '" type="button">' + opts.i18n.previousMonth + "</button>"; 45591 } 45592 if (c === instance._o.numberOfMonths - 1) { 45593 html += '<button class="pika-next' + (next ? "" : " is-disabled") + '" type="button">' + opts.i18n.nextMonth + "</button>"; 45594 } 45595 return html += "</div>"; 45596 }, renderTable = function(opts, data) { 45597 return '<table cellpadding="0" cellspacing="0" class="pika-table">' + renderHead(opts) + renderBody(data) + "</table>"; 45598 }, Pikaday3 = function(options) { 45599 var self2 = this, opts = self2.config(options); 45600 self2._onMouseDown = function(e) { 45601 if (!self2._v) { 45602 return; 45603 } 45604 e = e || window.event; 45605 var target = e.target || e.srcElement; 45606 if (!target) { 45607 return; 45608 } 45609 if (!hasClass(target.parentNode, "is-disabled")) { 45610 if (hasClass(target, "pika-button") && !hasClass(target, "is-empty")) { 45611 self2.setDate(new Date(target.getAttribute("data-pika-year"), target.getAttribute("data-pika-month"), target.getAttribute("data-pika-day"))); 45612 if (opts.bound) { 45613 sto(function() { 45614 self2.hide(); 45615 if (opts.field) { 45616 opts.field.blur(); 45617 } 45618 }, 100); 45619 } 45620 return; 45621 } else if (hasClass(target, "pika-prev")) { 45622 self2.prevMonth(); 45623 } else if (hasClass(target, "pika-next")) { 45624 self2.nextMonth(); 45625 } 45626 } 45627 if (!hasClass(target, "pika-select")) { 45628 if (e.preventDefault) { 45629 e.preventDefault(); 45630 } else { 45631 e.returnValue = false; 45632 return false; 45633 } 45634 } else { 45635 self2._c = true; 45636 } 45637 }; 45638 self2._onChange = function(e) { 45639 e = e || window.event; 45640 var target = e.target || e.srcElement; 45641 if (!target) { 45642 return; 45643 } 45644 if (hasClass(target, "pika-select-month")) { 45645 self2.gotoMonth(target.value); 45646 } else if (hasClass(target, "pika-select-year")) { 45647 self2.gotoYear(target.value); 45648 } 45649 }; 45650 self2._onInputChange = function(e) { 45651 var date; 45652 if (e.firedBy === self2) { 45653 return; 45654 } 45655 if (hasMoment) { 45656 date = moment2(opts.field.value, opts.format); 45657 date = date && date.isValid() ? date.toDate() : null; 45658 } else { 45659 date = new Date(Date.parse(opts.field.value)); 45660 } 45661 if (isDate(date)) { 45662 self2.setDate(date); 45663 } 45664 if (!self2._v) { 45665 self2.show(); 45666 } 45667 }; 45668 self2._onInputFocus = function() { 45669 self2.show(); 45670 }; 45671 self2._onInputClick = function() { 45672 self2.show(); 45673 }; 45674 self2._onInputBlur = function() { 45675 var pEl = document2.activeElement; 45676 do { 45677 if (hasClass(pEl, "pika-single")) { 45678 return; 45679 } 45680 } while (pEl = pEl.parentNode); 45681 if (!self2._c) { 45682 self2._b = sto(function() { 45683 self2.hide(); 45684 }, 50); 45685 } 45686 self2._c = false; 45687 }; 45688 self2._onClick = function(e) { 45689 e = e || window.event; 45690 var target = e.target || e.srcElement, pEl = target; 45691 if (!target) { 45692 return; 45693 } 45694 if (!hasEventListeners && hasClass(target, "pika-select")) { 45695 if (!target.onchange) { 45696 target.setAttribute("onchange", "return;"); 45697 addEvent(target, "change", self2._onChange); 45698 } 45699 } 45700 do { 45701 if (hasClass(pEl, "pika-single") || pEl === opts.trigger) { 45702 return; 45703 } 45704 } while (pEl = pEl.parentNode); 45705 if (self2._v && target !== opts.trigger && pEl !== opts.trigger) { 45706 self2.hide(); 45707 } 45708 }; 45709 self2.el = document2.createElement("div"); 45710 self2.el.className = "pika-single" + (opts.isRTL ? " is-rtl" : "") + (opts.theme ? " " + opts.theme : ""); 45711 addEvent(self2.el, "ontouchend" in document2 ? "touchend" : "mousedown", self2._onMouseDown, true); 45712 addEvent(self2.el, "change", self2._onChange); 45713 if (opts.field) { 45714 if (opts.container) { 45715 opts.container.appendChild(self2.el); 45716 } else if (opts.bound) { 45717 document2.body.appendChild(self2.el); 45718 } else { 45719 opts.field.parentNode.insertBefore(self2.el, opts.field.nextSibling); 45720 } 45721 addEvent(opts.field, "change", self2._onInputChange); 45722 if (!opts.defaultDate) { 45723 if (hasMoment && opts.field.value) { 45724 opts.defaultDate = moment2(opts.field.value, opts.format).toDate(); 45725 } else { 45726 opts.defaultDate = new Date(Date.parse(opts.field.value)); 45727 } 45728 opts.setDefaultDate = true; 45729 } 45730 } 45731 var defDate = opts.defaultDate; 45732 if (isDate(defDate)) { 45733 if (opts.setDefaultDate) { 45734 self2.setDate(defDate, true); 45735 } else { 45736 self2.gotoDate(defDate); 45737 } 45738 } else { 45739 self2.gotoDate(/* @__PURE__ */ new Date()); 45740 } 45741 if (opts.bound) { 45742 this.hide(); 45743 self2.el.className += " is-bound"; 45744 addEvent(opts.trigger, "click", self2._onInputClick); 45745 addEvent(opts.trigger, "focus", self2._onInputFocus); 45746 addEvent(opts.trigger, "blur", self2._onInputBlur); 45747 } else { 45748 this.show(); 45749 } 45750 }; 45751 Pikaday3.prototype = { 45752 /** 45753 * configure functionality 45754 */ 45755 config: function(options) { 45756 if (!this._o) { 45757 this._o = extend({}, defaults, true); 45758 } 45759 var opts = extend(this._o, options, true); 45760 opts.isRTL = !!opts.isRTL; 45761 opts.field = opts.field && opts.field.nodeName ? opts.field : null; 45762 opts.theme = typeof opts.theme === "string" && opts.theme ? opts.theme : null; 45763 opts.bound = !!(opts.bound !== void 0 ? opts.field && opts.bound : opts.field); 45764 opts.trigger = opts.trigger && opts.trigger.nodeName ? opts.trigger : opts.field; 45765 opts.disableWeekends = !!opts.disableWeekends; 45766 opts.disableDayFn = typeof opts.disableDayFn === "function" ? opts.disableDayFn : null; 45767 var nom = parseInt(opts.numberOfMonths, 10) || 1; 45768 opts.numberOfMonths = nom > 4 ? 4 : nom; 45769 if (!isDate(opts.minDate)) { 45770 opts.minDate = false; 45771 } 45772 if (!isDate(opts.maxDate)) { 45773 opts.maxDate = false; 45774 } 45775 if (opts.minDate && opts.maxDate && opts.maxDate < opts.minDate) { 45776 opts.maxDate = opts.minDate = false; 45777 } 45778 if (opts.minDate) { 45779 this.setMinDate(opts.minDate); 45780 } 45781 if (opts.maxDate) { 45782 setToStartOfDay(opts.maxDate); 45783 opts.maxYear = opts.maxDate.getFullYear(); 45784 opts.maxMonth = opts.maxDate.getMonth(); 45785 } 45786 if (isArray(opts.yearRange)) { 45787 var fallback = (/* @__PURE__ */ new Date()).getFullYear() - 10; 45788 opts.yearRange[0] = parseInt(opts.yearRange[0], 10) || fallback; 45789 opts.yearRange[1] = parseInt(opts.yearRange[1], 10) || fallback; 45790 } else { 45791 opts.yearRange = Math.abs(parseInt(opts.yearRange, 10)) || defaults.yearRange; 45792 if (opts.yearRange > 100) { 45793 opts.yearRange = 100; 45794 } 45795 } 45796 return opts; 45797 }, 45798 /** 45799 * return a formatted string of the current selection (using Moment.js if available) 45800 */ 45801 toString: function(format) { 45802 return !isDate(this._d) ? "" : hasMoment ? moment2(this._d).format(format || this._o.format) : this._d.toDateString(); 45803 }, 45804 /** 45805 * return a Moment.js object of the current selection (if available) 45806 */ 45807 getMoment: function() { 45808 return hasMoment ? moment2(this._d) : null; 45809 }, 45810 /** 45811 * set the current selection from a Moment.js object (if available) 45812 */ 45813 setMoment: function(date, preventOnSelect) { 45814 if (hasMoment && moment2.isMoment(date)) { 45815 this.setDate(date.toDate(), preventOnSelect); 45816 } 45817 }, 45818 /** 45819 * return a Date object of the current selection 45820 */ 45821 getDate: function() { 45822 return isDate(this._d) ? new Date(this._d.getTime()) : null; 45823 }, 45824 /** 45825 * set the current selection 45826 */ 45827 setDate: function(date, preventOnSelect) { 45828 if (!date) { 45829 this._d = null; 45830 if (this._o.field) { 45831 this._o.field.value = ""; 45832 fireEvent(this._o.field, "change", { firedBy: this }); 45833 } 45834 return this.draw(); 45835 } 45836 if (typeof date === "string") { 45837 date = new Date(Date.parse(date)); 45838 } 45839 if (!isDate(date)) { 45840 return; 45841 } 45842 var min = this._o.minDate, max = this._o.maxDate; 45843 if (isDate(min) && date < min) { 45844 date = min; 45845 } else if (isDate(max) && date > max) { 45846 date = max; 45847 } 45848 this._d = new Date(date.getTime()); 45849 setToStartOfDay(this._d); 45850 this.gotoDate(this._d); 45851 if (this._o.field) { 45852 this._o.field.value = this.toString(); 45853 fireEvent(this._o.field, "change", { firedBy: this }); 45854 } 45855 if (!preventOnSelect && typeof this._o.onSelect === "function") { 45856 this._o.onSelect.call(this, this.getDate()); 45857 } 45858 }, 45859 /** 45860 * change view to a specific date 45861 */ 45862 gotoDate: function(date) { 45863 var newCalendar = true; 45864 if (!isDate(date)) { 45865 return; 45866 } 45867 if (this.calendars) { 45868 var firstVisibleDate = new Date(this.calendars[0].year, this.calendars[0].month, 1), lastVisibleDate = new Date(this.calendars[this.calendars.length - 1].year, this.calendars[this.calendars.length - 1].month, 1), visibleDate = date.getTime(); 45869 lastVisibleDate.setMonth(lastVisibleDate.getMonth() + 1); 45870 lastVisibleDate.setDate(lastVisibleDate.getDate() - 1); 45871 newCalendar = visibleDate < firstVisibleDate.getTime() || lastVisibleDate.getTime() < visibleDate; 45872 } 45873 if (newCalendar) { 45874 this.calendars = [{ 45875 month: date.getMonth(), 45876 year: date.getFullYear() 45877 }]; 45878 if (this._o.mainCalendar === "right") { 45879 this.calendars[0].month += 1 - this._o.numberOfMonths; 45880 } 45881 } 45882 this.adjustCalendars(); 45883 }, 45884 adjustCalendars: function() { 45885 this.calendars[0] = adjustCalendar(this.calendars[0]); 45886 for (var c = 1; c < this._o.numberOfMonths; c++) { 45887 this.calendars[c] = adjustCalendar({ 45888 month: this.calendars[0].month + c, 45889 year: this.calendars[0].year 45890 }); 45891 } 45892 this.draw(); 45893 }, 45894 gotoToday: function() { 45895 this.gotoDate(/* @__PURE__ */ new Date()); 45896 }, 45897 /** 45898 * change view to a specific month (zero-index, e.g. 0: January) 45899 */ 45900 gotoMonth: function(month) { 45901 if (!isNaN(month)) { 45902 this.calendars[0].month = parseInt(month, 10); 45903 this.adjustCalendars(); 45904 } 45905 }, 45906 nextMonth: function() { 45907 this.calendars[0].month++; 45908 this.adjustCalendars(); 45909 }, 45910 prevMonth: function() { 45911 this.calendars[0].month--; 45912 this.adjustCalendars(); 45913 }, 45914 /** 45915 * change view to a specific full year (e.g. "2012") 45916 */ 45917 gotoYear: function(year) { 45918 if (!isNaN(year)) { 45919 this.calendars[0].year = parseInt(year, 10); 45920 this.adjustCalendars(); 45921 } 45922 }, 45923 /** 45924 * change the minDate 45925 */ 45926 setMinDate: function(value) { 45927 setToStartOfDay(value); 45928 this._o.minDate = value; 45929 this._o.minYear = value.getFullYear(); 45930 this._o.minMonth = value.getMonth(); 45931 }, 45932 /** 45933 * change the maxDate 45934 */ 45935 setMaxDate: function(value) { 45936 this._o.maxDate = value; 45937 }, 45938 setStartRange: function(value) { 45939 this._o.startRange = value; 45940 }, 45941 setEndRange: function(value) { 45942 this._o.endRange = value; 45943 }, 45944 /** 45945 * refresh the HTML 45946 */ 45947 draw: function(force) { 45948 if (!this._v && !force) { 45949 return; 45950 } 45951 var opts = this._o, minYear = opts.minYear, maxYear = opts.maxYear, minMonth = opts.minMonth, maxMonth = opts.maxMonth, html = ""; 45952 if (this._y <= minYear) { 45953 this._y = minYear; 45954 if (!isNaN(minMonth) && this._m < minMonth) { 45955 this._m = minMonth; 45956 } 45957 } 45958 if (this._y >= maxYear) { 45959 this._y = maxYear; 45960 if (!isNaN(maxMonth) && this._m > maxMonth) { 45961 this._m = maxMonth; 45962 } 45963 } 45964 for (var c = 0; c < opts.numberOfMonths; c++) { 45965 html += '<div class="pika-lendar">' + renderTitle(this, c, this.calendars[c].year, this.calendars[c].month, this.calendars[0].year) + this.render(this.calendars[c].year, this.calendars[c].month) + "</div>"; 45966 } 45967 this.el.innerHTML = html; 45968 if (opts.bound) { 45969 if (opts.field.type !== "hidden") { 45970 sto(function() { 45971 opts.trigger.focus(); 45972 }, 1); 45973 } 45974 } 45975 if (typeof this._o.onDraw === "function") { 45976 var self2 = this; 45977 sto(function() { 45978 self2._o.onDraw.call(self2); 45979 }, 0); 45980 } 45981 }, 45982 adjustPosition: function() { 45983 var field, pEl, width, height, viewportWidth, viewportHe
45983ight, scrollTop, left, top, clientRect; 45984 if (this._o.container) return; 45985 this.el.style.position = "absolute"; 45986 field = this._o.trigger; 45987 pEl = field; 45988 width = this.el.offsetWidth; 45989 height = this.el.offsetHeight; 45990 viewportWidth = window.innerWidth || document2.documentElement.clientWidth; 45991 viewportHeight = window.innerHeight || document2.documentElement.clientHeight; 45992 scrollTop = window.pageYOffset || document2.body.scrollTop || document2.documentElement.scrollTop; 45993 if (typeof field.getBoundingClientRect === "function") { 45994 clientRect = field.getBoundingClientRect(); 45995 left = clientRect.left + window.pageXOffset; 45996 top = clientRect.bottom + window.pageYOffset; 45997 } else { 45998 left = pEl.offsetLeft; 45999 top = pEl.offsetTop + pEl.offsetHeight; 46000 while (pEl = pEl.offsetParent) { 46001 left += pEl.offsetLeft; 46002 top += pEl.offsetTop; 46003 } 46004 } 46005 if (this._o.reposition && left + width > viewportWidth || this._o.position.indexOf("right") > -1 && left - width + field.offsetWidth > 0) { 46006 left = left - width + field.offsetWidth; 46007 } 46008 if (this._o.reposition && top + height > viewportHeight + scrollTop || this._o.position.indexOf("top") > -1 && top - height - field.offsetHeight > 0) { 46009 top = top - height - field.offsetHeight; 46010 } 46011 this.el.style.left = left + "px"; 46012 this.el.style.top = top + "px"; 46013 }, 46014 /** 46015 * render HTML for a particular month 46016 */ 46017 render: function(year, month) { 46018 var opts = this._o, now = /* @__PURE__ */ new Date(), days = getDaysInMonth(year, month), before = new Date(year, month, 1).getDay(), data = [], row = []; 46019 setToStartOfDay(now); 46020 if (opts.firstDay > 0) { 46021 before -= opts.firstDay; 46022 if (before < 0) { 46023 before += 7; 46024 } 46025 } 46026 var cells = days + before, after = cells; 46027 while (after > 7) { 46028 after -= 7; 46029 } 46030 cells += 7 - after; 46031 for (var i = 0, r = 0; i < cells; i++) { 46032 var dayConfig, day = new Date(year, month, 1 + (i - before)), isSelected = isDate(this._d) ? compareDates(day, this._d) : false, isToday = compareDates(day, now), isEmpty = i < before || i >= days + before, isStartRange = opts.startRange && compareDates(opts.startRange, day), isEndRange = opts.endRange && compareDates(opts.endRange, day), isInRange = opts.startRange && opts.endRange && opts.startRange < day && day < opts.endRange, isDisabled = opts.minDate && day < opts.minDate || opts.maxDate && day > opts.maxDate || opts.disableWeekends && isWeekend(day) || opts.disableDayFn && opts.disableDayFn(day), dayConfig = { 46033 day: 1 + (i - before), 46034 month, 46035 year, 46036 isSelected, 46037 isToday, 46038 isDisabled, 46039 isEmpty, 46040 isStartRange, 46041 isEndRange, 46042 isInRange 46043 }; 46044 row.push(renderDay(dayConfig)); 46045 if (++r === 7) { 46046 if (opts.showWeekNumber) { 46047 row.unshift(renderWeek(i - before, month, year)); 46048 } 46049 data.push(renderRow(row, opts.isRTL)); 46050 row = []; 46051 r = 0; 46052 } 46053 } 46054 return renderTable(opts, data); 46055 }, 46056 isVisible: function() { 46057 return this._v; 46058 }, 46059 show: function() { 46060 if (!this._v) { 46061 removeClass(this.el, "is-hidden"); 46062 this._v = true; 46063 this.draw(); 46064 if (this._o.bound) { 46065 addEvent(document2, "click", this._onClick); 46066 this.adjustPosition(); 46067 } 46068 if (typeof this._o.onOpen === "function") { 46069 this._o.onOpen.call(this); 46070 } 46071 } 46072 }, 46073 hide: function() { 46074 var v = this._v; 46075 if (v !== false) { 46076 if (this._o.bound) { 46077 removeEvent(document2, "click", this._onClick); 46078 } 46079 this.el.style.position = "static"; 46080 this.el.style.left = "auto"; 46081 this.el.style.top = "auto"; 46082 addClass(this.el, "is-hidden"); 46083 this._v = false;
vendor: 976 bytes, lines 46084-46114
46084 if (v !== void 0 && typeof this._o.onClose === "function") { 46085 this._o.onClose.call(this); 46086 } 46087 } 46088 }, 46089 /** 46090 * GAME OVER 46091 */ 46092 destroy: function() { 46093 this.hide(); 46094 removeEvent(this.el, "mousedown", this._onMouseDown, true); 46095 removeEvent(this.el, "change", this._onChange); 46096 if (this._o.field) { 46097 removeEvent(this._o.field, "change", this._onInputChange); 46098 if (this._o.bound) { 46099 removeEvent(this._o.trigger, "click", this._onInputClick); 46100 removeEvent(this._o.trigger, "focus", this._onInputFocus); 46101 removeEvent(this._o.trigger, "blur", this._onInputBlur); 46102 } 46103 } 46104 if (this.el.parentNode) { 46105 this.el.parentNode.removeChild(this.el); 46106 } 46107 } 46108 }; 46109 return Pikaday3; 46110 }); 46111 } 46112 }); 46113 46114
46114// apps/base/assets/javascripts/vendor/placeholders.js 46115 var require_placeholders = __commonJS({ 46116 "apps/base/assets/javascripts/vendor/placeholders.js"(exports) { 46117 "use strict"; 46118 init_esbuild_shims(); 46119 (function(global2) { 46120 "use strict"; 46121 var test = document.createElement("input"); 46122 var nativeSupport = test.placeholder !== void 0; 46123 global2.Placeholders = { 46124 nativeSupport, 46125 disable: nativeSupport ? noop : disablePlaceholders, 46126 enable: nativeSupport ? noop : enablePlaceholders 46127 }; 46128 if (nativeSupport) { 46129 return; 46130 } 46131 var validTypes = [ 46132 "text", 46133 "search", 46134 "url", 46135 "tel", 46136 "email", 46137 "password", 46138 "number", 46139 "textarea" 46140 ]; 46141 var badKeys = [ 46142 // The following keys all cause the caret to jump to the end of the input 46143 // value. 46144 27, 46145 // Escape 46146 33, 46147 // Page up 46148 34, 46149 // Page down 46150 35, 46151 // End 46152 36, 46153 // Home 46154 // Arrow keys allow you to move the caret manually, which should be 46155 // prevented when the placeholder is visible. 46156 37, 46157 // Left 46158 38, 46159 // Up 46160 39, 46161 // Right 46162 40, 46163 // Down 46164 // The following keys allow you to modify the placeholder text by removing 46165 // characters, which should be prevented when the placeholder is visible. 46166 8, 46167 // Backspace 46168 46 46169 // Delete 46170 ]; 46171 var placeholderStyleColor = "#ccc"; 46172 var placeholderClassName = "placeholdersjs"; 46173 var classNameRegExp = new RegExp("(?:^|\\s)" + placeholderClassName + "(?!\\S)"); 46174 var ATTR_CURRENT_VAL = "data-placeholder-value"; 46175 var ATTR_ACTIVE = "data-placeholder-active"; 46176 var ATTR_INPUT_TYPE = "data-placeholder-type"; 46177 var ATTR_FORM_HANDLED = "data-placeholder-submit"; 46178 var ATTR_EVENTS_BOUND = "data-placeholder-bound"; 46179 var ATTR_OPTION_FOCUS = "data-placeholder-focus"; 46180 var ATTR_OPTION_LIVE = "data-placeholder-live"; 46181 var ATTR_MAXLENGTH = "data-placeholder-maxlength"; 46182 var UPDATE_INTERVAL = 100; 46183 var head = document.getElementsByTagName("head")[0]; 46184 var root = document.documentElement; 46185 var Placeholders = global2.Placeholders; 46186 var keydownVal; 46187 var inputs = document.getElementsByTagName("input"); 46188 var textareas = document.getElementsByTagName("textarea"); 46189 var hideOnInput = root.getAttribute(ATTR_OPTION_FOCUS) === "false"; 46190 var liveUpdates = root.getAttribute(ATTR_OPTION_LIVE) !== "false"; 46191 var styleElem = document.createElement("style"); 46192 styleElem.type = "text/css"; 46193 var styleRules = document.createTextNode( 46194 "." + placeholderClassName + " {color:" + placeholderStyleColor + ";}" 46195 ); 46196 if (styleElem.styleSheet) { 46197 styleElem.styleSheet.cssText = styleRules.nodeValue; 46198 } else { 46199 styleElem.appendChild(styleRules); 46200 } 46201 head.insertBefore(styleElem, head.firstChild); 46202 var placeholder; 46203 var elem; 46204 for (var i = 0, len = inputs.length + textareas.length; i < len; i++) { 46205 elem = i < inputs.length ? inputs[i] : textareas[i - inputs.length]; 46206 placeholder = elem.attributes.placeholder; 46207 if (placeholder) { 46208 placeholder = placeholder.nodeValue; 46209 if (placeholder && inArray(validTypes, elem.type)) { 46210 newElement(elem); 46211 } 46212 } 46213 } 46214 var timer = setInterval(function() { 46215 for (var i2 = 0, len2 = inputs.length + textareas.length; i2 < len2; i2++) { 46216 elem = i2 < inputs.length ? inputs[i2] : textareas[i2 - inputs.length]; 46217 placeholder = elem.attributes.placeholder; 46218 if (placeholder) { 46219 placeholder = placeholder.nodeValue; 46220 if (placeholder && inArray(validTypes, elem.type)) { 46221 if (!elem.getAttribute(ATTR_EVENTS_BOUND)) { 46222 newElement(elem); 46223 } 46224 if (placeholder !== elem.getAttribute(ATTR_CURRENT_VAL) || elem.type === "password" && !elem.getAttribute(ATTR_INPUT_TYPE)) { 46225 if (elem.type === "password" && !elem.getAttribute(ATTR_INPUT_TYPE) && changeType(elem, "text")) { 46226 elem.setAttribute(ATTR_INPUT_TYPE, "password"); 46227 } 46228 if (elem.value === elem.getAttribute(ATTR_CURRENT_VAL)) { 46229 elem.value = placeholder; 46230 } 46231 elem.setAttribute(ATTR_CURRENT_VAL, placeholder); 46232 } 46233 } 46234 } else if (elem.getAttribute(ATTR_ACTIVE)) { 46235 hidePlaceholder(elem); 46236 elem.removeAttribute(ATTR_CURRENT_VAL); 46237 } 46238 } 46239 if (!liveUpdates) { 46240 clearInterval(timer); 46241 } 46242 }, UPDATE_INTERVAL); 46243 addEventListener(global2, "beforeunload", function() { 46244 Placeholders.disable(); 46245 }); 46246 function noop() { 46247 } 46248 function safeActiveElement() { 46249 try { 46250 return document.activeElement; 46251 } catch (err) { 46252 } 46253 } 46254 function inArray(arr, item) { 46255 for (var i2 = 0, len2 = arr.length; i2 < len2; i2++) { 46256 if (arr[i2] === item) { 46257 return true; 46258 } 46259 } 46260 return false;
46261 } 46262 function addEventListener(elem2, event2, fn) { 46263 if (elem2.addEventListener) { 46264 return elem2.addEventListener(event2, fn, false); 46265 } 46266 if (elem2.attachEvent) { 46267 return elem2.attachEvent("on" + event2, fn); 46268 } 46269 } 46270 function moveCaret(elem2, index) { 46271 var range; 46272 if (elem2.createTextRange) { 46273 range = elem2.createTextRange(); 46274 range.move("character", index); 46275 range.select(); 46276 } else if (elem2.selectionStart) { 46277 elem2.focus(); 46278 elem2.setSelectionRange(index, index); 46279 } 46280 } 46281 function changeType(elem2, type) { 46282 try { 46283 elem2.type = type; 46284 return true; 46285 } catch (e) { 46286 return false; 46287 } 46288 } 46289 function handleElem(node, callback) { 46290 if (node && node.getAttribute(ATTR_CURRENT_VAL)) { 46291 callback(node); 46292 } else { 46293 var handleInputs = node ? node.getElementsByTagName("input") : inputs; 46294 var handleTextareas = node ? node.getElementsByTagName("textarea") : textareas; 46295 var handleInputsLength = handleInputs ? handleInputs.length : 0; 46296 var handleTextareasLength = handleTextareas ? handleTextareas.length : 0; 46297 var len2 = handleInputsLength + handleTextareasLength; 46298 var elem2; 46299 for (var i2 = 0; i2 < len2; i2++) { 46300 elem2 = i2 < handleInputsLength ? handleInputs[i2] : handleTextareas[i2 - handleInputsLength]; 46301 callback(elem2); 46302 } 46303 } 46304 } 46305 function disablePlaceholders(node) { 46306 handleElem(node, hidePlaceholder); 46307 } 46308 function enablePlaceholders(node) { 46309 handleElem(node, showPlaceholder); 46310 } 46311 function hidePlaceholder(elem2, keydownValue) { 46312 var valueChanged = !!keydownValue && elem2.value !== keydownValue; 46313 var isPlaceholderValue = elem2.value === elem2.getAttribute(ATTR_CURRENT_VAL); 46314 if ((valueChanged || isPlaceholderValue) && elem2.getAttribute(ATTR_ACTIVE) === "true") { 46315 elem2.removeAttribute(ATTR_ACTIVE); 46316 elem2.value = elem2.value.replace(elem2.getAttribute(ATTR_CURRENT_VAL), ""); 46317 elem2.className = elem2.className.replace(classNameRegExp, ""); 46318 var maxLength = elem2.getAttribute(ATTR_MAXLENGTH); 46319 if (parseInt(maxLength, 10) >= 0) { 46320 elem2.setAttribute("maxLength", maxLength); 46321 elem2.removeAttribute(ATTR_MAXLENGTH); 46322 } 46323 var type = elem2.getAttribute(ATTR_INPUT_TYPE); 46324 if (type) { 46325 elem2.type = type; 46326 } 46327 return true; 46328 } 46329 return false; 46330 } 46331 function showPlaceholder(elem2) { 46332 var val = elem2.getAttribute(ATTR_CURRENT_VAL); 46333 if (elem2.value === "" && val) { 46334 elem2.setAttribute(ATTR_ACTIVE, "true"); 46335 elem2.value = val; 46336 elem2.className += " " + placeholderClassName; 46337 var maxLength = elem2.getAttribute(ATTR_MAXLENGTH); 46338 if (!maxLength) { 46339 elem2.setAttribute(ATTR_MAXLENGTH, elem2.maxLength); 46340 elem2.removeAttribute("maxLength"); 46341 } 46342 var type = elem2.getAttribute(ATTR_INPUT_TYPE); 46343 if (type) { 46344 elem2.type = "text"; 46345 } else if (elem2.type === "password" && changeType(elem2, "text")) { 46346 elem2.setAttribute(ATTR_INPUT_TYPE, "password"); 46347 } 46348 return true; 46349 } 46350 return false; 46351 } 46352 function makeFocusHandler(elem2) { 46353 return function() { 46354 if (hideOnInput && elem2.value === elem2.getAttribute(ATTR_CURRENT_VAL) && elem2.getAttribute(ATTR_ACTIVE) === "true") { 46355 moveCaret(elem2, 0); 46356 } else { 46357 hidePlaceholder(elem2); 46358 } 46359 }; 46360 } 46361 function makeBlurHandler(elem2) { 46362 return function() { 46363 showPlaceholder(elem2); 46364 }; 46365 } 46366 function makeSubmitHandler(form) { 46367 return function() { 46368 disablePlaceholders(form); 46369 }; 46370 } 46371 function makeKeydownHandler(elem2) { 46372 return function(e) { 46373 keydownVal = elem2.value; 46374 if (elem2.getAttribute(ATTR_ACTIVE) === "true" && keydownVal === elem2.getAttribute(ATTR_CURRENT_VAL) && inArray(badKeys, e.keyCode)) { 46375 if (e.preventDefault) { 46376 e.preventDefault(); 46377 } 46378 return false;
46379 } 46380 }; 46381 } 46382 function makeKeyupHandler(elem2) { 46383 return function() { 46384 hidePlaceholder(elem2, keydownVal); 46385 if (elem2.value === "") { 46386 elem2.blur(); 46387 moveCaret(elem2, 0); 46388 } 46389 }; 46390 } 46391 function makeClickHandler(elem2) { 46392 return function() { 46393 if (elem2 === safeActiveElement() && elem2.value === elem2.getAttribute(ATTR_CURRENT_VAL) && elem2.getAttribute(ATTR_ACTIVE) === "true") { 46394 moveCaret(elem2, 0); 46395 } 46396 }; 46397 } 46398 function newElement(elem2) { 46399 var form = elem2.form; 46400 if (form && typeof form === "string") { 46401 form = document.getElementById(form); 46402 if (!form.getAttribute(ATTR_FORM_HANDLED)) { 46403 addEventListener(form, "submit", makeSubmitHandler(form)); 46404 form.setAttribute(ATTR_FORM_HANDLED, "true"); 46405 } 46406 } 46407 addEventListener(elem2, "focus", makeFocusHandler(elem2)); 46408 addEventListener(elem2, "blur", makeBlurHandler(elem2)); 46409 if (hideOnInput) { 46410 addEventListener(elem2, "keydown", makeKeydownHandler(elem2)); 46411 addEventListener(elem2, "keyup", makeKeyupHandler(elem2)); 46412 addEventListener(elem2, "click", makeClickHandler(elem2)); 46413 } 46414 elem2.setAttribute(ATTR_EVENTS_BOUND, "true"); 46415 elem2.setAttribute(ATTR_CURRENT_VAL, placeholder); 46416 if (hideOnInput || elem2 !== safeActiveElement()) { 46417 showPlaceholder(elem2); 46418 } 46419 } 46420 })(exports); 46421 } 46422 }); 46423 46424
46424// apps/base/assets/javascripts/vendor/promise.polyfill.js 46425 var require_promise_polyfill = __commonJS({ 46426 "apps/base/assets/javascripts/vendor/promise.polyfill.js"(exports, module) { 46427 "use strict"; 46428 init_esbuild_shims(); 46429 !(function(e, n) { 46430 "object" == typeof exports && "undefined" != typeof module ? n() : "function" == typeof define && define.amd ? define(n) : n(); 46431 })(0, function() { 46432 "use strict"; 46433 function e(e2) { 46434 var n2 = this.constructor; 46435 return this.then( 46436 function(t2) { 46437 return n2.resolve(e2()).then(function() { 46438 return t2; 46439 }); 46440 }, 46441 function(t2) { 46442 return n2.resolve(e2()).then(function() { 46443 return n2.reject(t2); 46444 }); 46445 } 46446 ); 46447 } 46448 function n(e2) { 46449 return !(!e2 || "undefined" == typeof e2.length); 46450 } 46451 function o(e2) { 46452 if (!(this instanceof o)) throw new TypeError("Promises must be constructed via new"); 46453 if ("function" != typeof e2) throw new TypeError("not a function"); 46454 this._state = 0, this._handled = false, this._value = void 0, this._deferreds = [], c(e2, this); 46455 } 46456 function r(e2, n2) { 46457 for (; 3 === e2._state; ) e2 = e2._value; 46458 0 !== e2._state ? (e2._handled = true, o._immediateFn(function() { 46459 var t2 = 1 === e2._state ? n2.onFulfilled : n2.onRejected; 46460 if (null !== t2) { 46461 var o2; 46462 try { 46463 o2 = t2(e2._value); 46464 } catch (r2) { 46465 return void f(n2.promise, r2); 46466 } 46467 i(n2.promise, o2); 46468 } else (1 === e2._state ? i : f)(n2.promise, e2._value); 46469 })) : e2._deferreds.push(n2); 46470 } 46471 function i(e2, n2) { 46472 try { 46473 if (n2 === e2) throw new TypeError("A promise cannot be resolved with itself."); 46474 if (n2 && ("object" == typeof n2 || "function" == typeof n2)) { 46475 var t2 = n2.then; 46476 if (n2 instanceof o) return e2._state = 3, e2._value = n2, void u(e2); 46477 if ("function" == typeof t2) 46478 return void c(
46479 /* @__PURE__ */ (function(e3, n3) { 46480 return function() { 46481 e3.apply(n3, arguments); 46482 }; 46483 })(t2, n2), 46484 e2 46485 ); 46486 } 46487 ; 46488 e2._state = 1, e2._value = n2, u(e2); 46489 } catch (r2) { 46490 f(e2, r2); 46491 } 46492 } 46493 function f(e2, n2) { 46494 ; 46495 e2._state = 2, e2._value = n2, u(e2); 46496 } 46497 function u(e2) { 46498 2 === e2._state && 0 === e2._deferreds.length && o._immediateFn(function() { 46499 e2._handled || o._unhandledRejectionFn(e2._value); 46500 }); 46501 for (var n2 = 0, t2 = e2._deferreds.length; t2 > n2; n2++) r(e2, e2._deferreds[n2]); 46502 e2._deferreds = null; 46503 } 46504 function c(e2, n2) { 46505 var t2 = false; 46506 try { 46507 e2( 46508 function(e3) { 46509 t2 || (t2 = true, i(n2, e3)); 46510 }, 46511 function(e3) { 46512 t2 || (t2 = true, f(n2, e3)); 46513 } 46514 ); 46515 } catch (o2) { 46516 if (t2) return; 46517 t2 = true, f(n2, o2); 46518 } 46519 } 46520 var a = setTimeout; 46521 o.prototype["catch"] = function(e2) { 46522 return this.then(null, e2); 46523 }, o.prototype.then = function(e2, n2) { 46524 var o2 = new this.constructor(t); 46525 return r( 46526 this, 46527 new (function(e3, n3, t2) { 46528 ; 46529 this.onFulfilled = "function" == typeof e3 ? e3 : null, this.onRejected = "function" == typeof n3 ? n3 : null, this.promise = t2; 46530 })(e2, n2, o2) 46531 ), o2; 46532 }, o.prototype["finally"] = e, o.all = function(e2) { 46533 return new o(function(t2, o2) { 46534 function r2(e3, n2) { 46535 try { 46536 if (n2 && ("object" == typeof n2 || "function" == typeof n2)) { 46537 var u3 = n2.then; 46538 if ("function" == typeof u3) 46539 return void u3.call( 46540 n2, 46541 function(n3) { 46542 r2(e3, n3); 46543 }, 46544 o2 46545 ); 46546 } 46547 ; 46548 i2[e3] = n2, 0 == --f2 && t2(i2); 46549 } catch (c2) { 46550 o2(c2); 46551 } 46552 } 46553 if (!n(e2)) return o2(new TypeError("Promise.all accepts an array")); 46554 var i2 = Array.prototype.slice.call(e2); 46555 if (0 === i2.length) return t2([]); 46556 for (var f2 = i2.length, u2 = 0; i2.length > u2; u2++) r2(u2, i2[u2]); 46557 }); 46558 }, o.resolve = function(e2) { 46559 return e2 && "object" == typeof e2 && e2.constructor === o ? e2 : new o(function(n2) { 46560 n2(e2); 46561 }); 46562 }, o.reject = function(e2) { 46563 return new o(function(n2, t2) { 46564 t2(e2); 46565 }); 46566 }, o.race = function(e2) { 46567 return new o(function(t2, r2) { 46568 if (!n(e2)) return r2(new TypeError("Promise.race accepts an array")); 46569 for (var i2 = 0, f2 = e2.length; f2 > i2; i2++) o.resolve(e2[i2]).then(t2, r2); 46570 }); 46571 }, o._immediateFn = "function" == typeof setImmediate && function(e2) { 46572 setImmediate(e2); 46573 } || function(e2) { 46574 a(e2, 0); 46575 }, o._unhandledRejectionFn = function(e2) { 46576 void 0 !== console && console && console.warn("Possible Unhandled Promise Rejection:", e2); 46577 }; 46578 var l = (function() { 46579 if ("undefined" != typeof self) return self; 46580 if ("undefined" != typeof window) return window; 46581 if ("undefined" != typeof global) return global; 46582 throw Error("unable to locate global object"); 46583 })(); 46584 "Promise" in l ? l.Promise.prototype["finally"] || (l.Promise.prototype["finally"] = e) : l.Promise = o; 46585 }); 46586 } 46587 }); 46588 46589
46589// apps/base/assets/javascripts/vendor/scroll-up-bar.js 46590 var require_scroll_up_bar = __commonJS({ 46591 "apps/base/assets/javascripts/vendor/scroll-up-bar.js"() { 46592 "use strict"; 46593 init_esbuild_shims(); 46594 (function($3) { 46595 "use strict"; 46596 var _destroyFn; 46597 $3.scrollupbar = function($bar, options) { 46598 options = $3.extend({ 46599 enterViewport: $3.noop, 46600 fullyEnterViewport: $3.noop, 46601 exitViewport: $3.noop, 46602 partiallyExitViewport: $3.noop 46603 }, options); 46604 function isFullyInViewport() { 46605 return $window.scrollTop() <= $bar.offset().top; 46606 } 46607 function isInViewport() { 46608 return $window.scrollTop() < $bar.offset().top + $bar.outerHeight(); 46609 } 46610 var $window = $3(window), $document = $3(document), minY = $bar.css("position") == "fixed" ? 0 : $bar.offset().top, lastY = $window.scrollTop(), initialPosTop = $bar.position().top, iOS = /(iPad|iPhone|iPod)/g.test(navigator.userAgent), timeout; 46611 $3.scrollupbar.isInViewport = isInViewport(); 46612 $3.scrollupbar.isFullyInViewport = isFullyInViewport(); 46613 if (!iOS) { 46614 $window.on("scroll.scrollupbar", function() { 46615 var y = $window.scrollTop(), barHeight = $bar.outerHeight(); 46616 if (y < 0 || y > $document.height() - $window.height()) { 46617 return; 46618 } 46619 if (timeout) { 46620 clearTimeout(timeout); 46621 } 46622 if (y < lastY) { 46623 if (!$3.scrollupbar.isInViewport && lastY - barHeight >= minY) { 46624 $bar.css("top", lastY - barHeight); 46625 $3.scrollupbar.isInViewport = true; 46626 options.enterViewport(); 46627 } 46628 if (isFullyInViewport()) { 46629 if (y >= minY) { 46630 $bar.css({ 46631 "position": "fixed", 46632 "top": 0 46633 }); 46634 } else { 46635 $bar.css({ 46636 "position": "absolute", 46637 "top": initialPosTop 46638 }); 46639 } 46640 if (!$3.scrollupbar.isFullyInViewport) { 46641 $3.scrollupbar.isFullyInViewport = true; 46642 options.fullyEnterViewport(); 46643 } 46644 } 46645 timeout = setTimeout(function() { 46646 if (!isFullyInViewport()) { 46647 $bar.css({ 46648 "position": "fixed", 46649 "top": $bar.offset().top - y 46650 }); 46651 $bar.animate({ "top": 0 }, 100, function() { 46652 $3.scrollupbar.isFullyInViewport = true; 46653 options.fullyEnterViewport(); 46654 }); 46655 } 46656 }, 400); 46657 } else if (y > lastY) { 46658 if ($3.scrollupbar.isFullyInViewport) { 46659 $bar.css({ 46660 "position": "absolute", 46661 "top": lastY > minY ? lastY : initialPosTop 46662 }); 46663 if (!isFullyInViewport()) { 46664 $3.scrollupbar.isFullyInViewport = false; 46665 options.partiallyExitViewport(); 46666 } 46667 } 46668 if ($3.scrollupbar.isInViewport && !isInViewport()) { 46669 $3.scrollupbar.isInViewport = false; 46670 options.exitViewport(); 46671 } 46672 timeout = setTimeout(function() { 46673 if (isInViewport() && y - barHeight >= minY) { 46674 $bar.animate({ "top": y - barHeight }, 100, function() { 46675 $3.scrollupbar.isInViewport = false; 46676 options.exitViewport(); 46677 }); 46678 } 46679 }, 400); 46680 } 46681 lastY = y; 46682 }); 46683 } else { 46684 $window.on("touchstart.scrollupbar", function() { 46685 lastY = $window.scrollTop(); 46686 }); 46687 $window.on("touchend.scrollupbar", function() { 46688 var y = $window.scrollTop(); 46689 if (y < lastY || y - $bar.outerHeight() < minY) { 46690 if (y <= minY) { 46691 $bar.css({ 46692 "position": "absolute", 46693 "top": initialPosTop 46694 });
46695 $bar.show(function() { 46696 $3.scrollupbar.isInViewport = true; 46697 $3.scrollupbar.isFullyInViewport = true; 46698 options.enterViewport(); 46699 options.fullyEnterViewport(); 46700 }); 46701 } else { 46702 $bar.css({ 46703 "position": "fixed", 46704 "top": 0 46705 }); 46706 $3.scrollupbar.isInViewport = true; 46707 options.enterViewport(); 46708 $bar.slideDown(function() { 46709 $3.scrollupbar.isFullyInViewport = true; 46710 options.fullyEnterViewport(); 46711 }); 46712 } 46713 } else if (y > lastY) { 46714 $3.scrollupbar.isFullyInViewport = false; 46715 options.partiallyExitViewport(); 46716 $bar.slideUp(function() { 46717 $3.scrollupbar.isInViewport = false; 46718 options.exitViewport(); 46719 }); 46720 } 46721 lastY = y; 46722 }); 46723 } 46724 _destroyFn = function() { 46725 $window.off(".scrollupbar"); 46726 $bar.css({ 46727 "position": "absolute", 46728 "top": initialPosTop 46729 }); 46730 }; 46731 return $bar; 46732 }; 46733 $3.scrollupbar.destroy = function() { 46734 if (_destroyFn) { 46735 return _destroyFn(); 46736 } 46737 }; 46738 $3.fn.scrollupbar = function(options) { 46739 return $3.scrollupbar(this, options); 46740 }; 46741 })(jQuery); 46742 } 46743 }); 46744 46745
46745// apps/base/assets/javascripts/vendor/swfobject.js 46746 var require_swfobject = __commonJS({ 46747 "apps/base/assets/javascripts/vendor/swfobject.js"(exports, module) { 46748 "use strict"; 46749 init_esbuild_shims(); 46750 if (typeof deconcept == "undefined") { 46751 deconcept = new Object(); 46752 } 46753 var deconcept; 46754 if (typeof deconcept.util == "undefined") { 46755 deconcept.util = new Object(); 46756 } 46757 if (typeof deconcept.SWFObjectUtil == "undefined") { 46758 deconcept.SWFObjectUtil = new Object(); 46759 } 46760 deconcept.SWFObject = function(_1, id, w, h, _5, c, _7, _8, _9, _a) { 46761 if (!document.getElementById) { 46762 return; 46763 } 46764 this.DETECT_KEY = _a ? _a : "detectflash"; 46765 this.skipDetect = deconcept.util.getRequestParameter(this.DETECT_KEY); 46766 this.params = new Object(); 46767 this.variables = new Object(); 46768 this.attributes = new Array(); 46769 if (_1) { 46770 this.setAttribute("swf", _1); 46771 } 46772 if (id) { 46773 this.setAttribute("id", id); 46774 } 46775 if (w) { 46776 this.setAttribute("width", w); 46777 } 46778 if (h) { 46779 this.setAttribute("height", h); 46780 } 46781 if (_5) { 46782 this.setAttribute("version", new deconcept.PlayerVersion(_5.toString().split("."))); 46783 } 46784 this.installedVer = deconcept.SWFObjectUtil.getPlayerVersion(); 46785 if (!window.opera && document.all && this.installedVer.major > 7) { 46786 deconcept.SWFObject.doPrepUnload = true; 46787 } 46788 if (c) { 46789 this.addParam("bgcolor", c); 46790 } 46791 var q = _7 ? _7 : "high"; 46792 this.addParam("quality", q); 46793 this.setAttribute("useExpressInstall", false); 46794 this.setAttribute("doExpressInstall", false); 46795 var _c = _8 ? _8 : window.location; 46796 this.setAttribute("xiRedirectUrl", _c); 46797 this.setAttribute("redirectUrl", ""); 46798 if (_9) { 46799 this.setAttribute("redirectUrl", _9); 46800 } 46801 }; 46802 deconcept.SWFObject.prototype = { useExpressInstall: function(_d) { 46803 this.xiSWFPath = !_d ? "expressinstall.swf" : _d; 46804 this.setAttribute("useExpressInstall", true); 46805 }, setAttribute: function(_e, _f) { 46806 this.attributes[_e] = _f; 46807 }, getAttribute: function(_10) { 46808 return this.attributes[_10]; 46809 }, addParam: function(_11, _12) { 46810 this.params[_11] = _12; 46811 }, getParams: function() { 46812 return this.params; 46813 }, addVariable: function(_13, _14) { 46814 this.variables[_13] = _14; 46815 }, getVariable: function(_15) { 46816 return this.variables[_15]; 46817 }, getVariables: function() { 46818 return this.variables; 46819 }, getVariablePairs: function() { 46820 var _16 = new Array(); 46821 var key; 46822 var _18 = this.getVariables(); 46823 for (key in _18) { 46824 _16[_16.length] = key + "=" + _18[key]; 46825 } 46826 return _16; 46827 }, getSWFHTML: function() { 46828 var _19 = ""; 46829 if (navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length) { 46830 if (this.getAttribute("doExpressInstall")) { 46831 this.addVariable("MMplayerType", "PlugIn"); 46832 this.setAttribute("swf", this.xiSWFPath); 46833 } 46834 _19 = '<embed type="application/x-shockwave-flash" src="' + this.getAttribute("swf") + '" width="' + this.getAttribute("width") + '" height="' + this.getAttribute("height") + '" style="' + this.getAttribute("style") + '"'; 46835 _19 += ' id="' + this.getAttribute("id") + '" name="' + this.getAttribute("id") + '" '; 46836 var _1a = this.getParams(); 46837 for (var key in _1a) { 46838 _19 += [key] + '="' + _1a[key] + '" '; 46839 } 46840 var _1c = this.getVariablePairs().join("&"); 46841 if (_1c.length > 0) { 46842 _19 += 'flashvars="' + _1c + '"'; 46843 } 46844 _19 += "/>"; 46845 } else { 46846 if (this.getAttribute("doExpressInstall")) { 46847 this.addVariable("MMplayerType", "ActiveX"); 46848 this.setAttribute("swf", this.xiSWFPath); 46849 } 46850 _19 = '<object id="' + this.getAttribute("id") + '" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="' + this.getAttribute("width") + '" height="' + this.getAttribute("height") + '" style="' + this.getAttribute("style") + '">'; 46851 _19 += '<param name="movie" value="' + this.getAttribute("swf") + '" />'; 46852 var _1d = this.getParams(); 46853 for (var key in _1d) { 46854 _19 += '<param name="' + key + '" value="' + _1d[key] + '" />'; 46855 } 46856 var _1f = this.getVariablePairs().join("&"); 46857 if (_1f.length > 0) { 46858 _19 += '<param name="flashvars" value="' + _1f + '" />'; 46859 } 46860 _19 += "</object>"; 46861 } 46862 return _19; 46863 }, write: function(_20) { 46864 if (this.getAttribute("useExpressInstall")) { 46865 var _21 = new deconcept.PlayerVersion([6, 0, 65]); 46866 if (this.installedVer.versionIsValid(_21) && !this.installedVer.versionIsValid(this.getAttribute("version"))) { 46867 this.setAttribute("doExpressInstall", true); 46868 this.addVariable("MMredirectURL", escape(this.getAttribute("xiRedirectUrl"))); 46869 document.title = document.title.slice(0, 47) + " - Flash Player Installation"; 46870 this.addVariable("MMdoctitle", document.title); 46871 } 46872 } 46873 if (this.skipDetect || this.getAttribute("doExpressInstall") || this.installedVer.versionIsValid(this.getAttribute("version"))) { 46874 var n = typeof _20 == "string" ? document.getElementById(_20) : _20;
46875 n.innerHTML = this.getSWFHTML(); 46876 return true; 46877 } else { 46878 if (this.getAttribute("redirectUrl") != "") { 46879 document.location.replace(this.getAttribute("redirectUrl")); 46880 } 46881 } 46882 return false; 46883 } }; 46884 deconcept.SWFObjectUtil.getPlayerVersion = function() { 46885 var _23 = new deconcept.PlayerVersion([0, 0, 0]); 46886 if (navigator.plugins && navigator.mimeTypes.length) { 46887 var x = navigator.plugins["Shockwave Flash"]; 46888 if (x && x.description) { 46889 _23 = new deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/, "").replace(/(\s+r|\s+b[0-9]+)/, ".").split(".")); 46890 } 46891 } else { 46892 if (navigator.userAgent && navigator.userAgent.indexOf("Windows CE") >= 0) { 46893 var axo = 1; 46894 var _26 = 3; 46895 while (axo) { 46896 try { 46897 _26++; 46898 axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash." + _26); 46899 _23 = new deconcept.PlayerVersion([_26, 0, 0]); 46900 } catch (e) { 46901 axo = null; 46902 } 46903 } 46904 } else { 46905 try { 46906 var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"); 46907 } catch (e) { 46908 try { 46909 var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"); 46910 _23 = new deconcept.PlayerVersion([6, 0, 21]); 46911 axo.AllowScriptAccess = "always"; 46912 } catch (e2) { 46913 if (_23.major == 6) { 46914 return _23; 46915 } 46916 } 46917 try { 46918 axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); 46919 } catch (e2) { 46920 } 46921 } 46922 if (axo != null) { 46923 _23 = new deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(",")); 46924 } 46925 } 46926 } 46927 return _23; 46928 }; 46929 deconcept.PlayerVersion = function(_29) { 46930 this.major = _29[0] != null ? parseInt(_29[0]) : 0; 46931 this.minor = _29[1] != null ? parseInt(_29[1]) : 0; 46932 this.rev = _29[2] != null ? parseInt(_29[2]) : 0; 46933 }; 46934 deconcept.PlayerVersion.prototype.versionIsValid = function(fv) { 46935 if (this.major < fv.major) { 46936 return false; 46937 } 46938 if (this.major > fv.major) { 46939 return true; 46940 } 46941 if (this.minor < fv.minor) { 46942 return false; 46943 } 46944 if (this.minor > fv.minor) { 46945 return true; 46946 } 46947 if (this.rev < fv.rev) { 46948 return false; 46949 } 46950 return true; 46951 }; 46952 deconcept.util = { getRequestParameter: function(_2b) { 46953 var q = document.location.search || document.location.hash; 46954 if (_2b == null) { 46955 return q; 46956 } 46957 if (q) { 46958 var _2d = q.substring(1).split("&"); 46959 for (var i = 0; i < _2d.length; i++) { 46960 if (_2d[i].substring(0, _2d[i].indexOf("=")) == _2b) { 46961 return _2d[i].substring(_2d[i].indexOf("=") + 1); 46962 } 46963 } 46964 } 46965 return ""; 46966 } }; 46967 deconcept.SWFObjectUtil.cleanupSWFs = function() { 46968 var _2f = document.getElementsByTagName("OBJECT"); 46969 for (var i = _2f.length - 1; i >= 0; i--) { 46970 _2f[i].style.display = "none"; 46971 for (var x in _2f[i]) { 46972 if (typeof _2f[i][x] == "function") { 46973 _2f[i][x] = function() { 46974 }; 46975 } 46976 } 46977 } 46978 }; 46979 if (deconcept.SWFObject.doPrepUnload) { 46980 if (!deconcept.unloadSet) { 46981 deconcept.SWFObjectUtil.prepUnload = function() { 46982 __flash_unloadHandler = function() { 46983 }; 46984 __flash_savedUnloadHandler = function() { 46985 }; 46986 Event.observe(window, "unload", deconcept.SWFObjectUtil.cleanupSWFs); 46987 }; 46988 Event.observe(window, "beforeunload", deconcept.SWFObjectUtil.prepUnload); 46989 deconcept.unloadSet = true; 46990 } 46991 } 46992 if (!document.getElementById && document.all) { 46993 document.getElementById = function(id) { 46994 return document.all[id]; 46995 }; 46996 } 46997 var getQueryParamValue = deconcept.util.getRequestParameter; 46998 var FlashObject = deconcept.SWFObject; 46999 var SWFObject = deconcept.SWFObject; 47000 module.exports = deconcept.SWFObject; 47001 } 47002 }); 47003 47004
47004// apps/base/assets/javascripts/vendor/table-head-fixer.js 47005 var require_table_head_fixer = __commonJS({ 47006 "apps/base/assets/javascripts/vendor/table-head-fixer.js"() { 47007 "use strict"; 47008 init_esbuild_shims(); 47009 (function($3) { 47010 $3.fn.tableHeadFixer = function(param) { 47011 var defaults = { 47012 head: true, 47013 foot: false, 47014 left: 0, 47015 right: 0, 47016 "z-index": 0 47017 }; 47018 var settings = $3.extend({}, defaults, param); 47019 return this.each(function() { 47020 settings.table = this; 47021 settings.parent = $3(settings.table).parent(); 47022 setParent(); 47023 if (settings.head == true) 47024 fixHead(); 47025 if (settings.foot == true) 47026 fixFoot(); 47027 if (settings.left > 0) 47028 fixLeft(); 47029 if (settings.right > 0) 47030 fixRight(); 47031 setCorner(); 47032 $3(settings.parent).trigger("scroll"); 47033 $3(window).resize(function() { 47034 $3(settings.parent).trigger("scroll"); 47035 }); 47036 }); 47037 function setCorner() { 47038 var table = $3(settings.table); 47039 if (settings.head) { 47040 if (settings.left > 0) { 47041 var tr = table.find("thead tr"); 47042 tr.each(function(k, row) { 47043 solverLeftColspan(row, function(cell) { 47044 $3(cell).css("z-index", settings["z-index"] + 1); 47045 }); 47046 }); 47047 } 47048 if (settings.right > 0) { 47049 var tr = table.find("thead tr"); 47050 tr.each(function(k, row) { 47051 solveRightColspan(row, function(cell) { 47052 $3(cell).css("z-index", settings["z-index"] + 1); 47053 }); 47054 }); 47055 } 47056 } 47057 if (settings.foot) { 47058 if (settings.left > 0) { 47059 var tr = table.find("tfoot tr"); 47060 tr.each(function(k, row) { 47061 solverLeftColspan(row, function(cell) { 47062 $3(cell).css("z-index", settings["z-index"]); 47063 }); 47064 }); 47065 } 47066 if (settings.right > 0) { 47067 var tr = table.find("tfoot tr"); 47068 tr.each(function(k, row) { 47069 solveRightColspan(row, function(cell) { 47070 $3(cell).css("z-index", settings["z-index"]); 47071 }); 47072 }); 47073 } 47074 } 47075 } 47076 function setParent() { 47077 var parent = $3(settings.parent); 47078 var table = $3(settings.table); 47079 parent.append(table); 47080 parent.css({ 47081 "overflow-x": "auto", 47082 "overflow-y": "auto" 47083 }); 47084 parent.scroll(function() { 47085 var scrollWidth = parent[0].scrollWidth; 47086 var clientWidth = parent[0].clientWidth; 47087 var scrollHeight = parent[0].scrollHeight; 47088 var clientHeight = parent[0].clientHeight; 47089 var top = parent.scrollTop(); 47090 var left = parent.scrollLeft(); 47091 if (settings.head) 47092 this.find("thead tr > *").css("top", top); 47093 if (settings.foot) 47094 this.find("tfoot tr > *").css("bottom", scrollHeight - clientHeight - top); 47095 if (settings.left > 0) 47096 settings.leftColumns.css("left", left); 47097 if (settings.right > 0) 47098 settings.rightColumns.css("right", scrollWidth - clientWidth - left); 47099 }.bind(table)); 47100 } 47101 function fixHead() { 47102 var thead = $3(settings.table).find("thead"); 47103 var tr = thead.find("tr"); 47104 var cells = thead.find("tr > *"); 47105 setBackground(cells); 47106 cells.css({ 47107 "position": "relative" 47108 }); 47109 } 47110 function fixFoot() { 47111 var tfoot = $3(settings.table).find("tfoot"); 47112 var tr = tfoot.find("tr"); 47113 var cells = tfoot.find("tr > *");
47114 setBackground(cells); 47115 cells.css({ 47116 "position": "relative" 47117 }); 47118 } 47119 function fixLeft() { 47120 var table = $3(settings.table); 47121 settings.leftColumns = $3(); 47122 var tr = table.find("tr"); 47123 tr.each(function(k, row) { 47124 solverLeftColspan(row, function(cell) { 47125 settings.leftColumns = settings.leftColumns.add(cell); 47126 }); 47127 }); 47128 var column = settings.leftColumns; 47129 column.each(function(k, cell) { 47130 var cell = $3(cell); 47131 setBackground(cell); 47132 cell.css({ 47133 "position": "relative" 47134 }); 47135 }); 47136 } 47137 function fixRight() { 47138 var table = $3(settings.table); 47139 var fixColumn = settings.right; 47140 settings.rightColumns = $3(); 47141 var tr = table.find("tr"); 47142 tr.each(function(k, row) { 47143 solveRightColspan(row, function(cell) { 47144 settings.rightColumns = settings.rightColumns.add(cell); 47145 }); 47146 }); 47147 var column = settings.rightColumns; 47148 column.each(function(k, cell) { 47149 var cell = $3(cell); 47150 setBackground(cell); 47151 cell.css({ 47152 "position": "relative" 47153 }); 47154 }); 47155 } 47156 function setBackground(elements) { 47157 elements.each(function(k, element) { 47158 var element = $3(element); 47159 var parent = $3(element).parent(); 47160 var elementBackground = element.css("background-color"); 47161 elementBackground = elementBackground == "transparent" || elementBackground == "rgba(0, 0, 0, 0)" ? null : elementBackground; 47162 var parentBackground = parent.css("background-color"); 47163 parentBackground = parentBackground == "transparent" || parentBackground == "rgba(0, 0, 0, 0)" ? null : parentBackground; 47164 var background = parentBackground ? parentBackground : "white"; 47165 background = elementBackground ? elementBackground : background; 47166 element.css("background-color", background); 47167 }); 47168 } 47169 function solverLeftColspan(row, action) { 47170 var fixColumn = settings.left; 47171 var inc = 1; 47172 for (var i = 1; i <= fixColumn; i = i + inc) { 47173 var nth = inc > 1 ? i - 1 : i; 47174 var cell = $3(row).find("> *:nth-child(" + nth + ")"); 47175 var colspan = cell.prop("colspan"); 47176 if (cell.cellPos().left < fixColumn) { 47177 action(cell); 47178 } 47179 inc = colspan; 47180 } 47181 } 47182 function solveRightColspan(row, action) { 47183 var fixColumn = settings.right; 47184 var inc = 1; 47185 for (var i = 1; i <= fixColumn; i = i + inc) { 47186 var nth = inc > 1 ? i - 1 : i; 47187 var cell = $3(row).find("> *:nth-last-child(" + nth + ")"); 47188 var colspan = cell.prop("colspan"); 47189 action(cell); 47190 inc = colspan; 47191 } 47192 } 47193 }; 47194 })(jQuery); 47195 (function($3) { 47196 function scanTable($table) { 47197 var m = []; 47198 $table.children("tr").each(function(y, row) { 47199 $3(row).children("td, th").each(function(x, cell) { 47200 var $cell = $3(cell), cspan = $cell.attr("colspan") | 0, rspan = $cell.attr("rowspan") | 0, tx, ty; 47201 cspan = cspan ? cspan : 1; 47202 rspan = rspan ? rspan : 1; 47203 for (; m[y] && m[y][x]; ++x) ; 47204 for (tx = x; tx < x + cspan; ++tx) { 47205 for (ty = y; ty < y + rspan; ++ty) { 47206 if (!m[ty]) { 47207 m[ty] = []; 47208 } 47209 m[ty][tx] = true; 47210 } 47211 } 47212 var pos = { top: y, left: x }; 47213 $cell.data("cellPos", pos); 47214 }); 47215 }); 47216 } 47217 ; 47218 $3.fn.cellPos = function(rescan) { 47219 var $cell = this.first(), pos = $cell.data("cellPos"); 47220 if (!pos || rescan) { 47221 var $table = $cell.closest("table, thead, tbody, tfoot"); 47222 scanTable($table); 47223 } 47224 pos = $cell.data("cellPos"); 47225 return pos; 47226 }; 47227 })(jQuery); 47228 } 47229 }); 47230 47231
47231// apps/base/assets/javascripts/vendor/webfontloader.js 47232 var require_webfontloader = __commonJS({ 47233 "apps/base/assets/javascripts/vendor/webfontloader.js"(exports, module) { 47234 "use strict"; 47235 init_esbuild_shims(); 47236 (function() { 47237 function aa(a, b, d) { 47238 return a.call.apply(a.bind, arguments); 47239 } 47240 function ba(a, b, d) { 47241 if (!a) throw Error(); 47242 if (2 < arguments.length) { 47243 var c = Array.prototype.slice.call(arguments, 2); 47244 return function() { 47245 var d2 = Array.prototype.slice.call(arguments); 47246 Array.prototype.unshift.apply(d2, c); 47247 return a.apply(b, d2); 47248 }; 47249 } 47250 return function() { 47251 return a.apply(b, arguments); 47252 }; 47253 } 47254 function p(a, b, d) { 47255 p = Function.prototype.bind && -1 != Function.prototype.bind.toString().indexOf("native code") ? aa : ba; 47256 return p.apply(null, arguments); 47257 } 47258 var q = Date.now || function() { 47259 return +/* @__PURE__ */ new Date(); 47260 }; 47261 function ca(a, b) { 47262 this.a = a; 47263 this.m = b || a; 47264 this.c = this.m.document; 47265 } 47266 var da = !!window.FontFace; 47267 function t2(a, b, d, c) { 47268 b = a.c.createElement(b); 47269 if (d) for (var e in d) d.hasOwnProperty(e) && ("style" == e ? b.style.cssText = d[e] : b.setAttribute(e, d[e])); 47270 c && b.appendChild(a.c.createTextNode(c)); 47271 return b; 47272 } 47273 function u(a, b, d) { 47274 a = a.c.getElementsByTagName(b)[0]; 47275 a || (a = document.documentElement); 47276 a.insertBefore(d, a.lastChild); 47277 } 47278 function v(a) { 47279 a.parentNode && a.parentNode.removeChild(a); 47280 } 47281 function w(a, b, d) { 47282 b = b || []; 47283 d = d || []; 47284 for (var c = a.className.split(/\s+/), e = 0; e < b.length; e += 1) { 47285 for (var f = false, g = 0; g < c.length; g += 1) if (b[e] === c[g]) { 47286 f = true; 47287 break; 47288 } 47289 f || c.push(b[e]); 47290 } 47291 b = []; 47292 for (e = 0; e < c.length; e += 1) { 47293 f = false;
47294 for (g = 0; g < d.length; g += 1) if (c[e] === d[g]) { 47295 f = true; 47296 break; 47297 } 47298 f || b.push(c[e]); 47299 } 47300 a.className = b.join(" ").replace(/\s+/g, " ").replace(/^\s+|\s+$/, ""); 47301 } 47302 function y(a, b) { 47303 for (var d = a.className.split(/\s+/), c = 0, e = d.length; c < e; c++) if (d[c] == b) return true; 47304 return false; 47305 } 47306 function z(a) { 47307 if ("string" === typeof a.f) return a.f; 47308 var b = a.m.location.protocol; 47309 "about:" == b && (b = a.a.location.protocol); 47310 return "https:" == b ? "https:" : "http:"; 47311 } 47312 function ea(a) { 47313 return a.m.location.hostname || a.a.location.hostname; 47314 } 47315 function A(a, b, d) { 47316 function c() { 47317 k && e && f && (k(g), k = null); 47318 } 47319 b = t2(a, "link", { rel: "stylesheet", href: b, media: "all" }); 47320 var e = false, f = true, g = null, k = d || null; 47321 da ? (b.onload = function() { 47322 e = true; 47323 c(); 47324 }, b.onerror = function() { 47325 e = true; 47326 g = Error("Stylesheet failed to load"); 47327 c(); 47328 }) : setTimeout(function() { 47329 e = true; 47330 c(); 47331 }, 0); 47332 u(a, "head", b); 47333 } 47334 function B(a, b, d, c) { 47335 var e = a.c.getElementsByTagName("head")[0]; 47336 if (e) { 47337 var f = t2(a, "script", { src: b }), g = false;
47338 f.onload = f.onreadystatechange = function() { 47339 g || this.readyState && "loaded" != this.readyState && "complete" != this.readyState || (g = true, d && d(null), f.onload = f.onreadystatechange = null, "HEAD" == f.parentNode.tagName && e.removeChild(f)); 47340 }; 47341 e.appendChild(f); 47342 setTimeout(function() { 47343 g || (g = true, d && d(Error("Script load timeout"))); 47344 }, c || 5e3); 47345 return f; 47346 } 47347 return null; 47348 } 47349 ; 47350 function C() { 47351 this.a = 0; 47352 this.c = null; 47353 } 47354 function D(a) { 47355 a.a++; 47356 return function() { 47357 a.a--; 47358 E(a); 47359 }; 47360 } 47361 function F(a, b) { 47362 a.c = b; 47363 E(a); 47364 } 47365 function E(a) { 47366 0 == a.a && a.c && (a.c(), a.c = null); 47367 } 47368 ; 47369 function G(a) { 47370 this.a = a || "-"; 47371 } 47372 G.prototype.c = function(a) { 47373 for (var b = [], d = 0; d < arguments.length; d++) b.push(arguments[d].replace(/[\W_]+/g, "").toLowerCase()); 47374 return b.join(this.a); 47375 }; 47376 function H(a, b) { 47377 this.c = a; 47378 this.f = 4; 47379 this.a = "n"; 47380 var d = (b || "n4").match(/^([nio])([1-9])$/i); 47381 d && (this.a = d[1], this.f = parseInt(d[2], 10)); 47382 } 47383 function fa(a) { 47384 return I(a) + " " + (a.f + "00") + " 300px " + J(a.c); 47385 } 47386 function J(a) { 47387 var b = []; 47388 a = a.split(/,\s*/); 47389 for (var d = 0; d < a.length; d++) { 47390 var c = a[d].replace(/['"]/g, ""); 47391 -1 != c.indexOf(" ") || /^\d/.test(c) ? b.push("'" + c + "'") : b.push(c); 47392 } 47393 return b.join(","); 47394 } 47395 function K(a) { 47396 return a.a + a.f; 47397 } 47398 function I(a) { 47399 var b = "normal"; 47400 "o" === a.a ? b = "oblique" : "i" === a.a && (b = "italic"); 47401 return b; 47402 } 47403 function ga(a) { 47404 var b = 4, d = "n", c = null; 47405 a && ((c = a.match(/(normal|oblique|italic)/i)) && c[1] && (d = c[1].substr(0, 1).toLowerCase()), (c = a.match(/([1-9]00|normal|bold)/i)) && c[1] && (/bold/i.test(c[1]) ? b = 7 : /[1-9]00/.test(c[1]) && (b = parseInt(c[1].substr(0, 1), 10)))); 47406 return d + b; 47407 } 47408 ; 47409 function ha(a, b) { 47410 this.c = a; 47411 this.f = a.m.document.documentElement; 47412 this.h = b; 47413 this.a = new G("-"); 47414 this.j = false !== b.events; 47415 this.g = false !== b.classes; 47416 } 47417 function ia(a) { 47418 a.g && w(a.f, [a.a.c("wf", "loading")]); 47419 L(a, "loading"); 47420 } 47421 function M(a) { 47422 if (a.g) { 47423 var b = y(a.f, a.a.c("wf", "active")), d = [], c = [a.a.c("wf", "loading")]; 47424 b || d.push(a.a.c("wf", "inactive")); 47425 w(a.f, d, c); 47426 } 47427 L(a, "inactive"); 47428 } 47429 function L(a, b, d) { 47430 if (a.j && a.h[b]) if (d) a.h[b](d.c, K(d)); 47431 else a.h[b](); 47432 } 47433 ; 47434 function ja() { 47435 this.c = {}; 47436 } 47437 function ka(a, b, d) { 47438 var c = [], e; 47439 for (e in b) if (b.hasOwnProperty(e)) { 47440 var f = a.c[e]; 47441 f && c.push(f(b[e], d)); 47442 } 47443 return c; 47444 } 47445 ; 47446 function N(a, b) { 47447 this.c = a; 47448 this.f = b; 47449 this.a = t2(this.c, "span", { "aria-hidden": "true" }, this.f); 47450 } 47451 function O(a) { 47452 u(a.c, "body", a.a); 47453 } 47454 function P(a) { 47455 return "display:block;position:absolute;top:-9999px;left:-9999px;font-size:300px;width:auto;height:auto;line-height:normal;margin:0;padding:0;font-variant:normal;white-space:nowrap;font-family:" + J(a.c) + ";" + ("font-style:" + I(a) + ";font-weight:" + (a.f + "00") + ";"); 47456 } 47457 ; 47458 function Q(a, b, d, c, e, f) { 47459 this.g = a; 47460 this.j = b; 47461 this.a = c; 47462 this.c = d; 47463 this.f = e || 3e3; 47464 this.h = f || void 0; 47465 } 47466 Q.prototype.start = function() { 47467 var a = this.c.m.document, b = this, d = q(), c = new Promise(function(c2, e2) { 47468 function k() { 47469 q() - d >= b.f ? e2() : a.fonts.load(fa(b.a), b.h).then(function(a2) { 47470 1 <= a2.length ? c2() : setTimeout(k, 25); 47471 }, function() { 47472 e2(); 47473 }); 47474 } 47475 k(); 47476 }), e = new Promise(function(a2, c2) { 47477 setTimeout(c2, b.f); 47478 }); 47479 Promise.race([e, c]).then(function() { 47480 b.g(b.a); 47481 }, function() { 47482 b.j(b.a); 47483 }); 47484 }; 47485 function R(a, b, d, c, e, f, g) { 47486 this.v = a; 47487 this.B = b; 47488 this.c = d; 47489 this.a = c; 47490 this.s = g || "BESbswy"; 47491 this.f = {}; 47492 this.w = e || 3e3; 47493 this.u = f || null; 47494 this.o = this.j = this.h = this.g = null; 47495 this.g = new N(this.c, this.s); 47496 this.h = new N(this.c, this.s); 47497 this.j = new N(this.c, this.s); 47498 this.o = new N(this.c, this.s); 47499 a = new H(this.a.c + ",serif", K(this.a)); 47500 a = P(a); 47501 this.g.a.style.cssText = a; 47502 a = new H(this.a.c + ",sans-serif", K(this.a)); 47503 a = P(a); 47504 this.h.a.style.cssText = a; 47505 a = new H("serif", K(this.a)); 47506 a = P(a); 47507 this.j.a.style.cssText = a; 47508 a = new H("sans-serif", K(this.a)); 47509 a = P(a); 47510 this.o.a.style.cssText = a; 47511 O(this.g); 47512 O(this.h); 47513 O(this.j); 47514 O(this.o); 47515 } 47516 var S = { D: "serif", C: "sans-serif" }, T = null; 47517 function U() { 47518 if (null === T) {
47519 var a = /AppleWebKit\/([0-9]+)(?:\.([0-9]+))/.exec(window.navigator.userAgent); 47520 T = !!a && (536 > parseInt(a[1], 10) || 536 === parseInt(a[1], 10) && 11 >= parseInt(a[2], 10)); 47521 } 47522 return T; 47523 } 47524 R.prototype.start = function() { 47525 this.f.serif = this.j.a.offsetWidth; 47526 this.f["sans-serif"] = this.o.a.offsetWidth; 47527 this.A = q(); 47528 la(this); 47529 }; 47530 function ma(a, b, d) { 47531 for (var c in S) if (S.hasOwnProperty(c) && b === a.f[S[c]] && d === a.f[S[c]]) return true; 47532 return false; 47533 } 47534 function la(a) { 47535 var b = a.g.a.offsetWidth, d = a.h.a.offsetWidth, c; 47536 (c = b === a.f.serif && d === a.f["sans-serif"]) || (c = U() && ma(a, b, d)); 47537 c ? q() - a.A >= a.w ? U() && ma(a, b, d) && (null === a.u || a.u.hasOwnProperty(a.a.c)) ? V(a, a.v) : V(a, a.B) : na(a) : V(a, a.v); 47538 } 47539 function na(a) { 47540 setTimeout(p(function() { 47541 la(this); 47542 }, a), 50); 47543 } 47544 function V(a, b) { 47545 setTimeout(p(function() { 47546 v(this.g.a); 47547 v(this.h.a); 47548 v(this.j.a); 47549 v(this.o.a); 47550 b(this.a); 47551 }, a), 0); 47552 } 47553 ; 47554 function W(a, b, d) { 47555 this.c = a; 47556 this.a = b; 47557 this.f = 0; 47558 this.o = this.j = false; 47559 this.s = d; 47560 } 47561 var X = null; 47562 W.prototype.g = function(a) { 47563 var b = this.a; 47564 b.g && w(b.f, [b.a.c("wf", a.c, K(a).toString(), "active")], [b.a.c("wf", a.c, K(a).toString(), "loading"), b.a.c("wf", a.c, K(a).toString(), "inactive")]); 47565 L(b, "fontactive", a); 47566 this.o = true; 47567 oa(this); 47568 }; 47569 W.prototype.h = function(a) { 47570 var b = this.a; 47571 if (b.g) { 47572 var d = y(b.f, b.a.c("wf", a.c, K(a).toString(), "active")), c = [], e = [b.a.c("wf", a.c, K(a).toString(), "loading")]; 47573 d || c.push(b.a.c("wf", a.c, K(a).toString(), "inactive")); 47574 w(b.f, c, e); 47575 } 47576 L(b, "fontinactive", a); 47577 oa(this); 47578 }; 47579 function oa(a) { 47580 0 == --a.f && a.j && (a.o ? (a = a.a, a.g && w(a.f, [a.a.c("wf", "active")], [a.a.c("wf", "loading"), a.a.c("wf", "inactive")]), L(a, "active")) : M(a.a)); 47581 } 47582 ; 47583 function pa(a) { 47584 this.j = a; 47585 this.a = new ja(); 47586 this.h = 0; 47587 this.f = this.g = true; 47588 } 47589 pa.prototype.load = function(a) { 47590 this.c = new ca(this.j, a.context || this.j); 47591 this.g = false !== a.events; 47592 this.f = false !== a.classes; 47593 qa(this, new ha(this.c, a), a); 47594 }; 47595 function ra(a, b, d, c, e) { 47596 var f = 0 == --a.h; 47597 (a.f || a.g) && setTimeout(function() { 47598 var a2 = e || null, k = c || null || {}; 47599 if (0 === d.length && f) M(b.a); 47600 else { 47601 b.f += d.length; 47602 f && (b.j = f); 47603 var h, m = []; 47604 for (h = 0; h < d.length; h++) { 47605 var l = d[h], n = k[l.c], r = b.a, x = l; 47606 r.g && w(r.f, [r.a.c("wf", x.c, K(x).toString(), "loading")]); 47607 L(r, "fontloading", x); 47608 r = null; 47609 null === X && (X = window.FontFace ? (x = /Gecko.*Firefox\/(\d+)/.exec(window.navigator.userAgent)) ? 42 < parseInt(x[1], 10) : true : false); 47610 X ? r = new Q(p(b.g, b), p(b.h, b), b.c, l, b.s, n) : r = new R( 47611 p(b.g, b), 47612 p(b.h, b), 47613 b.c, 47614 l, 47615 b.s, 47616 a2, 47617 n 47618 ); 47619 m.push(r); 47620 } 47621 for (h = 0; h < m.length; h++) m[h].start(); 47622 } 47623 }, 0); 47624 } 47625 function qa(a, b, d) { 47626 var c = [], e = d.timeout; 47627 ia(b); 47628 var c = ka(a.a, d, a.c), f = new W(a.c, b, e); 47629 a.h = c.length; 47630 b = 0; 47631 for (d = c.length; b < d; b++) c[b].load(function(b2, c2, d2) { 47632 ra(a, f, b2, c2, d2); 47633 }); 47634 } 47635 ; 47636 function sa(a, b) { 47637 this.c = a; 47638 this.a = b; 47639 } 47640 function ta(a, b, d) { 47641 var c = z(a.c); 47642 a = (a.a.api || "fast.fonts.net/jsapi").replace(/^.*http(s?):(\/\/)?/, ""); 47643 return c + "//" + a + "/" + b + ".js" + (d ? "?v=" + d : ""); 47644 } 47645 sa.prototype.load = function(a) { 47646 function b() { 47647 if (e["__mti_fntLst" + d]) { 47648 var c2 = e["__mti_fntLst" + d](), g = [], k; 47649 if (c2) for (var h = 0; h < c2.length; h++) { 47650 var m = c2[h].fontfamily; 47651 void 0 != c2[h].fontStyle && void 0 != c2[h].fontWeight ? (k = c2[h].fontStyle + c2[h].fontWeight, g.push(new H(m, k))) : g.push(new H(m)); 47652 } 47653 a(g); 47654 } else setTimeout(function() { 47655 b(); 47656 }, 50); 47657 } 47658 var d = this.a.projectId, c = this.a.version; 47659 if (d) { 47660 var e = this.c.m; 47661 B(this.c, ta(this, d, c), function(c2) { 47662 c2 ? a([]) : b(); 47663 }).id = "__MonotypeAPIScript__" + d; 47664 } else a([]); 47665 }; 47666 function ua(a, b) { 47667 this.c = a; 47668 this.a = b; 47669 } 47670 ua.prototype.load = function(a) { 47671 var b, d, c = this.a.urls || [], e = this.a.families || [], f = this.a.testStrings || {}, g = new C(); 47672 b = 0; 47673 for (d = c.length; b < d; b++) A(this.c, c[b], D(g)); 47674 var k = []; 47675 b = 0; 47676 for (d = e.length; b < d; b++) if (c = e[b].split(":"), c[1]) for (var h = c[1].split(","), m = 0; m < h.length; m += 1) k.push(new H(c[0], h[m])); 47677 else k.push(new H(c[0])); 47678 F(g, function() { 47679 a(k, f); 47680 }); 47681 }; 47682 function va(a, b, d) { 47683 a ? this.c = a : this.c = b + wa; 47684 this.a = []; 47685 this.f = []; 47686 this.g = d || ""; 47687 } 47688 var wa = "//fonts.googleapis.com/css"; 47689 function xa(a, b) { 47690 for (var d = b.length, c = 0; c < d; c++) { 47691 var e = b[c].split(":"); 47692 3 == e.length && a.f.push(e.pop()); 47693 var f = ""; 47694 2 == e.length && "" != e[1] && (f = ":"); 47695 a.a.push(e.join(f)); 47696 } 47697 } 47698 function ya(a) { 47699 if (0 == a.a.length) throw Error("No fonts to load!"); 47700 if (-1 != a.c.indexOf("kit=")) return a.c; 47701 for (var b = a.a.length, d = [], c = 0; c < b; c++) d.push(a.a[c].replace(/ /g, "+")); 47702 b = a.c + "?family=" + d.join("%7C"); 47703 0 < a.f.length && (b += "&subset=" + a.f.join(",")); 47704 0 < a.g.length && (b += "&text=" + encodeURIComponent(a.g)); 47705 return b; 47706 } 47707 ; 47708 function za(a) { 47709 this.f = a; 47710 this.a = []; 47711 this.c = {}; 47712 } 47713 var Aa = { latin: "BESbswy", cyrillic: "\u0439\u044F\u0416", greek: "\u03B1\u03B2\u03A3", khmer: "\u1780\u1781\u1782", Hanuman: "\u1780\u1781\u1782" }, Ba = { thin: "1", extralight: "2", "extra-light": "2", ultralight: "2", "ultra-light": "2", light: "3", regular: "4", book: "4", medium: "5", "semi-bold": "6", semibold: "6", "demi-bold": "6", demibold: "6", bold: "7", "extra-bold": "8", extrabold: "8", "ultra-bold": "8", ultrabold: "8", black: "9", heavy: "9", l: "3", r: "4", b: "7" }, Ca = { i: "i", italic: "i", n: "n", normal: "n" }, Da = /^(thin|(?:(?:extra|ultra)-?)?light|regular|book|medium|(?:(?:semi|demi|extra|ultra)-?)?bold|black|heavy|l|r|b|[1-9]00)?(n|i|normal|italic)?$/; 47714 function Ea(a) { 47715 for (var b = a.f.length, d = 0; d < b; d++) { 47716 var c = a.f[d].split(":"), e = c[0].replace(/\+/g, " "), f = ["n4"]; 47717 if (2 <= c.length) { 47718 var g; 47719 var k = c[1]; 47720 g = []; 47721 if (k) for (var k = k.split(","), h = k.length, m = 0; m < h; m++) { 47722 var l; 47723 l = k[m]; 47724 if (l.match(/^[\w-]+$/)) { 47725 var n = Da.exec(l.toLowerCase()); 47726 if (null == n) l = ""; 47727 else { 47728 l = n[2]; 47729 l = null == l || "" == l ? "n" : Ca[l]; 47730 n = n[1]; 47731 if (null == n || "" == n) n = "4"; 47732 else var r = Ba[n], n = r ? r : isNaN(n) ? "4" : n.substr(0, 1); 47733 l = [l, n].join(""); 47734 } 47735 } else l = ""; 47736 l && g.push(l); 47737 } 47738 0 < g.length && (f = g); 47739 3 == c.length && (c = c[2], g = [], c = c ? c.split(",") : g, 0 < c.length && (c = Aa[c[0]]) && (a.c[e] = c)); 47740 } 47741 a.c[e] || (c = Aa[e]) && (a.c[e] = c); 47742 for (c = 0; c < f.length; c += 1) a.a.push(new H(e, f[c])); 47743 } 47744 } 47745 ; 47746 function Fa(a, b) { 47747 this.c = a; 47748 this.a = b; 47749 } 47750 var Ga = { Arimo: true, Cousine: true, Tinos: true }; 47751 Fa.prototype.load = function(a) { 47752 var b = new C(), d = this.c, c = new va(this.a.api, z(d), this.a.text), e = this.a.families; 47753 xa(c, e); 47754 var f = new za(e); 47755 Ea(f); 47756 A(d, ya(c), D(b)); 47757 F(b, function() { 47758 a(f.a, f.c, Ga); 47759 }); 47760 }; 47761 function Ha(a, b) { 47762 this.c = a; 47763 this.a = b; 47764 } 47765 Ha.prototype.load = function(a) { 47766 var b = this.a.id, d = this.c.m; 47767 b ? B(this.c, (this.a.api || "https://use.typekit.net") + "/" + b + ".js", function(b2) { 47768 if (b2) a([]); 47769 else if (d.Typekit && d.Typekit.config && d.Typekit.config.fn) { 47770 b2 = d.Typekit.config.fn; 47771 for (var e = [], f = 0; f < b2.length; f += 2) for (var g = b2[f], k = b2[f + 1], h = 0; h < k.length; h++) e.push(new H(g, k[h])); 47772 try { 47773 d.Typekit.load({ events: false, classes: false, async: true }); 47774 } catch (m) { 47775 } 47776 a(e); 47777 } 47778 }, 2e3) : a([]); 47779 }; 47780 function Ia(a, b) { 47781 this.c = a; 47782 this.f = b; 47783 this.a = []; 47784 } 47785 Ia.prototype.load = function(a) { 47786 var b = this.f.id, d = this.c.m, c = this; 47787 b ? (d.__webfontfontdeckmodule__ || (d.__webfontfontdeckmodule__ = {}), d.__webfontfontdeckmodule__[b] = function(b2, d2) { 47788 for (var g = 0, k = d2.fonts.length; g < k; ++g) { 47789 var h = d2.fonts[g]; 47790 c.a.push(new H(h.name, ga("font-weight:" + h.weight + ";font-style:" + h.style))); 47791 } 47792 a(c.a); 47793 }, B(this.c, z(this.c) + (this.f.api || "//f.fontdeck.com/s/css/js/") + ea(this.c) + "/" + b + ".js", function(b2) { 47794 b2 && a([]); 47795 })) : a([]); 47796 }; 47797 var Y = new pa(window); 47798 Y.a.c.custom = function(a, b) { 47799 return new ua(b, a); 47800 }; 47801 Y.a.c.fontdeck = function(a, b) { 47802 return new Ia(b, a); 47803 }; 47804 Y.a.c.monotype = function(a, b) { 47805 return new sa(b, a); 47806 }; 47807 Y.a.c.typekit = function(a, b) { 47808 return new Ha(b, a); 47809 }; 47810 Y.a.c.google = function(a, b) { 47811 return new Fa(b, a); 47812 }; 47813 var Z = { load: p(Y.load, Y) }; 47814 "function" === typeof define && define.amd ? define(function() { 47815 return Z; 47816 }) : "undefined" !== typeof module && module.exports ? module.exports = Z : (window.WebFont = Z, window.WebFontConfig && Y.load(window.WebFontConfig)); 47817 })(); 47818 } 47819 }); 47820 47821 // apps/base/assets/javascripts/components/mobile.coffee 47822 var require_mobile = __commonJS({ 47823 "apps/base/assets/javascripts/components/mobile.coffee"(exports) { 47824 "use strict"; 47825 init_esbuild_shims(); 47826 (function() { 47827 window.isMobile = function() { 47828 return window.breakpoint !== "desktop"; 47829 }; 47830 }).call(exports); 47831 } 47832 }); 47833
47834 // apps/base/assets/javascripts/components/account_verification.coffee 47835 var require_account_verification = __commonJS({ 47836 "apps/base/assets/javascripts/components/account_verification.coffee"(exports) { 47837 "use strict"; 47838 init_esbuild_shims(); 47839 (function() { 47840 jQuery("form.login").on("unverified_email", (event2) => { 47841 jQuery(".send-verify-email").removeClass("hidden"); 47842 jQuery(".send-verify-email .email-field").val(jQuery(event2.target).find("input[name='emailAddress']").val()); 47843 return jQuery(".login-form").addClass("hidden"); 47844 }); 47845 jQuery(".different-credentials").on("click", function(event2) { 47846 jQuery(".send-verify-email").addClass("hidden"); 47847 return jQuery(".login-form").removeClass("hidden"); 47848 }); 47849 jQuery("form.send-verify-email").on("submit", function(event2) { 47850 jQuery("form.send-verify-email button").addClass("spinning"); 47851 return jQuery("form.send-verify-email .error").hide(); 47852 }); 47853 jQuery("form.send-verify-email").on("ajax:success", function(event2) { 47854 jQuery("form.send-verify-email button").removeClass("spinning blue"); 47855 jQuery("form.send-verify-email button").addClass("completed green"); 47856 return jQuery("form.send-verify-email button span.label").html(jQuery("form.send-verify-email button span.label").attr("data-success")); 47857 }); 47858 jQuery("form.send-verify-email").on("ajax:error", function(event2) { 47859 jQuery("form.send-verify-email button").removeClass("spinning"); 47860 jQuery("form.send-verify-email .error").show(); 47861 return jQuery(event2.target).parents(".login").css("height", jQuery(event2.target).height()); 47862 }); 47863 }).call(exports); 47864 } 47865 }); 47866 47867 // apps/base/assets/javascripts/components/unlock.coffee 47868 var require_unlock = __commonJS({ 47869 "apps/base/assets/javascripts/components/unlock.coffee"(exports) { 47870 "use strict"; 47871 init_esbuild_shims(); 47872 (function() { 47873 jQuery(function() { 47874 var originalLabel; 47875 originalLabel = jQuery("form.locked-account .label").text(); 47876 jQuery(".different-credentials").on("click", function(event2) { 47877 var labelElement; 47878 event2.preventDefault(); 47879 jQuery(".locked-account").addClass("hidden"); 47880 jQuery("form.locked-account button").removeClass("completed green"); 47881 jQuery("form.locked-account button").addClass("blue icon"); 47882 labelElement = jQuery("form.locked-account .label"); 47883 if (labelElement.text() !== originalLabel) { 47884 labelElement.text(originalLabel); 47885 } 47886 return jQuery(".login-form").removeClass("hidden"); 47887 }); 47888 jQuery("form.locked-account").on("submit", function() { 47889 jQuery("form.locked-account button").addClass("spinning"); 47890 return jQuery("form.locked-account .error").hide(); 47891 }); 47892 jQuery("form.locked-account").on("ajax:success", function() { 47893 jQuery("form.locked-account button").removeClass("spinning blue"); 47894 jQuery("form.locked-account button").addClass("completed green"); 47895 return jQuery("form.locked-account button span.label").html(jQuery("form.locked-account button span.label").attr("data-success")); 47896 }); 47897 return jQuery("form.locked-account").on("ajax:error", function() { 47898 jQuery("form.locked-account button").removeClass("spinning"); 47899 jQuery("form.locked-account .error").show(); 47900 return jQuery(event.target).parents(".login").css("height", jQuery(event.target).height()); 47901 }); 47902 }); 47903 }).call(exports); 47904 } 47905 }); 47906 47907 // apps/base/assets/javascripts/components/compliant_password.coffee 47908 var require_compliant_password = __commonJS({ 47909 "apps/base/assets/javascripts/components/compliant_password.coffee"(exports) { 47910 "use strict"; 47911 init_esbuild_shims(); 47912 (function() { 47913 jQuery(function() { 47914 var originalLabel; 47915 originalLabel = jQuery("form.compliant-password .label").text(); 47916 jQuery(".different-credentials").on("click", function(event2) { 47917 var labelElement; 47918 event2.preventDefault(); 47919 jQuery(".compliant-password").addClass("hidden"); 47920 jQuery("form.compliant-password button").removeClass("completed green"); 47921 jQuery("form.compliant-password button").addClass("blue icon"); 47922 labelElement = jQuery("form.compliant-password .label"); 47923 if (labelElement.text() !== originalLabel) { 47924 labelElement.text(originalLabel); 47925 } 47926 return jQuery(".login-form").removeClass("hidden"); 47927 }); 47928 jQuery("form.compliant-password").on("submit", function() { 47929 jQuery("form.compliant-password button").addClass("spinning"); 47930 return jQuery("form.compliant-password .error").hide(); 47931 }); 47932 jQuery("form.compliant-password").on("ajax:success", function() { 47933 jQuery("form.compliant-password button").removeClass("spinning blue"); 47934 jQuery("form.compliant-password button").addClass("completed green"); 47935 return jQuery("form.compliant-password button span.label").html(jQuery("form.compliant-password button span.label").attr("data-success")); 47936 }); 47937 return jQuery("form.compliant-password").on("ajax:error", function() { 47938 jQuery("form.compliant-password button").removeClass("spinning"); 47939 jQuery("form.compliant-password .error").show(); 47940 return jQuery(event.target).parents(".login").css("height", jQuery(event.target).height()); 47941 }); 47942 }); 47943 }).call(exports); 47944 } 47945 }); 47946
47947 // apps/base/assets/javascripts/components/analytics.coffee 47948 var require_analytics = __commonJS({ 47949 "apps/base/assets/javascripts/components/analytics.coffee"(exports) { 47950 "use strict"; 47951 init_esbuild_shims(); 47952 (function() { 47953 window.dataLayer = window.dataLayer || []; 47954 window.gtag = () => { 47955 return window.dataLayer.push(arguments); 47956 }; 47957 window.gtag("js", /* @__PURE__ */ new Date()); 47958 window.trackPageview = function(url) { 47959 if (window.dataLayer) { 47960 window.dataLayer.push({ 47961 "page_url": url, 47962 "event": "track-pageview" 47963 }); 47964 return true; 47965 } 47966 }; 47967 window.trackPageviewEloqua = function(url) { 47968 if (typeof _elq !== "undefined" && _elq !== null) { 47969 return _elq.trackEvent(url); 47970 } 47971 }; 47972 window.trackEvent = function(category, action, label, value) { 47973 if (window.dataLayer) { 47974 window.dataLayer.push({ 47975 "category": category, 47976 "action": action, 47977 "label": label, 47978 "value": value, 47979 "event": "track-event" 47980 }); 47981 } 47982 window.gtag("event", category.split(" ").join("_").toLowerCase(), { 47983 "action": action, 47984 "label": label, 47985 "value": value 47986 }); 47987 return true; 47988 }; 47989 window.trackNonInteractionEvent = function(category, action, label, value) { 47990 if (window.dataLayer) { 47991 window.dataLayer.push({ 47992 "category": category, 47993 "action": action, 47994 "label": label, 47995 "value": value, 47996 "event": "track-event-non-interaction" 47997 }); 47998 return true; 47999 } 48000 }; 48001 window.trackEloquaEvent = function(params) { 48002 if (typeof _elq !== "undefined" && _elq !== null) { 48003 return _elq.trackEvent(`${window.location}/${params.join("/").replace(/\s/g, "-")}`); 48004 } 48005 }; 48006 window.trackDownload = function(download_url, download_type = "unknown_type") { 48007 window.trackPageview(download_url); 48008 window.trackEvent("Downloads", download_type, download_url); 48009 return window.trackPageviewEloqua(`${window.location.protocol}//${window.location.host}${download_url}`); 48010 }; 48011 }).call(exports); 48012 } 48013 }); 48014 48015 // apps/base/assets/javascripts/components/balance_text.coffee 48016 var require_balance_text = __commonJS({ 48017 "apps/base/assets/javascripts/components/balance_text.coffee"(exports) { 48018 "use strict"; 48019 init_esbuild_shims(); 48020 (function() { 48021 }).call(exports); 48022 } 48023 }); 48024 48025 // apps/base/assets/javascripts/components/banner.coffee 48026 var require_banner = __commonJS({ 48027 "apps/base/assets/javascripts/components/banner.coffee"(exports) { 48028 "use strict"; 48029 init_esbuild_shims(); 48030 (function() { 48031 var Banner; 48032 Banner = class Banner { 48033 constructor(el) { 48034 this.attachHandlers = this.attachHandlers.bind(this); 48035 this.resizeText = this.resizeText.bind(this); 48036 this.resizeSubtitle = this.resizeSubtitle.bind(this); 48037 this.el = el; 48038 this.bannerTitleLineHeight = parseInt(this.el.find(".banner .page-width h1").css("line-height")); 48039 this.bannerSubtitleLineHeight = parseInt(this.el.find(".banner .page-width h2").css("line-height")); 48040 this.bannerSubtitle = this.el.find(".banner .page-width h2"); 48041 this.bannerTitle = this.el.find(".banner .page-width h1"); 48042 this.resizeText(); 48043 this.attachHandlers(); 48044 } 48045 attachHandlers() { 48046 $(window).resize(() => { 48047 return this.resizeText(); 48048 }); 48049 return $(window).on("breakpoint-change", (event2) => { 48050 var maxLines; 48051 if (window.breakpoint === "mobile" || window.breakpoint === "mobile-landscape" || window.breakpoint === "tablet") { 48052 return this.resizeSubtitle(maxLines = 5); 48053 } 48054 }); 48055 } 48056 resizeText() { 48057 var bannerTitleHeight, maxLines; 48058 maxLines = 4; 48059 bannerTitleHeight = parseInt(this.bannerTitle.height()); 48060 this.titleLines = bannerTitleHeight / this.bannerTitleLineHeight; 48061 this.resizeSubtitle(maxLines); 48062 if (this.titleLines >= maxLines) { 48063 this.bannerTitle.height(this.bannerTitleLineHeight * maxLines + "px"); 48064 jQuery(this.bannerTitle).ellipsis(); 48065 } 48066 return jQuery(this.bannerSubtitle).ellipsis(); 48067 } 48068 resizeSubtitle(maxLines) { 48069 return this.bannerSubtitle.height(this.bannerSubtitleLineHeight * (maxLines - this.titleLines) + "px"); 48070 } 48071 }; 48072 jQuery("div.slider").each(function(index, element) { 48073 return new Banner(jQuery(element)); 48074 }); 48075 }).call(exports); 48076 } 48077 }); 48078 48079 // apps/base/assets/javascripts/components/billboard.coffee 48080 var require_billboard = __commonJS({ 48081 "apps/base/assets/javascripts/components/billboard.coffee"(exports) { 48082 "use strict"; 48083 init_esbuild_shims(); 48084 (function() { 48085 var Billboard; 48086 Billboard = class Billboard { 48087 constructor(el) { 48088 this.setAnchors = this.setAnchors.bind(this); 48089 this.el = el; 48090 this.setAnchors(); 48091 } 48092 setAnchors() { 48093 if (this.el.attr("anchor")) { 48094 return this.el.find(".anchor").on("click", function(event2) { 48095 var target; 48096 event2.preventDefault(); 48097 target = jQuery(`[data-anchor='${jQuery(this).attr("anchor")}']`); 48098 if (target) { 48099 return $("html, body").animate({ 48100 scrollTop: target.offset().top - 50 48101 }, 500); 48102 } 48103 }); 48104 } 48105 } 48106 }; 48107 jQuery(".banner").each(function(index, element) { 48108 return new Billboard(jQuery(element)); 48109 }); 48110 }).call(exports); 48111 } 48112 }); 48113 48114 // apps/base/assets/javascripts/components/blog/links.coffee 48115 var require_links = __commonJS({ 48116 "apps/base/assets/javascripts/components/blog/links.coffee"(exports) { 48117 "use strict"; 48118 init_esbuild_shims(); 48119 (function() { 48120 window.positionLinks = () => { 48121 var hrefs, lastPos; 48122 hrefs = [];
48123 lastPos = 0; 48124 return jQuery(".link-details").each(function(index, element) { 48125 var href, lineLength, link, titlePos, topPos; 48126 href = jQuery(element).find("a").attr("href"); 48127 if (hrefs.includes(href)) { 48128 return jQuery(element).remove(); 48129 } else { 48130 link = jQuery(".paragraphs a[href='" + href + "']"); 48131 jQuery(element).show(); 48132 titlePos = jQuery(element).find("h4").position().top; 48133 topPos = link.offset().top - jQuery("aside").offset().top - 42 - titlePos; 48134 if (titlePos > 0) { 48135 jQuery(element).find(".line").css("top", 10 + titlePos); 48136 jQuery(element).find(".dot-container").css("top", -5 + titlePos); 48137 } 48138 jQuery(element).css("top", topPos); 48139 lineLength = jQuery(element).offset().left - (link.parent().offset().left + link.parent().outerWidth()); 48140 jQuery(element).find(".line").css({ 48141 "width": lineLength - 40, 48142 "left": lineLength * -1 48143 }); 48144 topPos = jQuery(element).offset().top; 48145 if (topPos < lastPos) { 48146 return jQuery(element).remove(); 48147 } else { 48148 hrefs.push(href); 48149 jQuery(element).find(".description").ellipsis(); 48150 return lastPos = topPos + jQuery(element).outerHeight(); 48151 } 48152 } 48153 }); 48154 }; 48155 jQuery(window).on("load", function() { 48156 var isMobile, tempInput; 48157 isMobile = window.matchMedia("only screen and (max-width: 760px)").matches; 48158 if (!isMobile) { 48159 window.positionLinks(); 48160 } 48161 tempInput = jQuery("<input>"); 48162 return jQuery(".site.copy").on("click", function(event2) { 48163 $("body").append(tempInput); 48164 tempInput.val(jQuery(location).attr("href")).select(); 48165 document.execCommand("copy"); 48166 return tempInput.remove(); 48167 }); 48168 }); 48169 jQuery(window).on("resize", () => { 48170 if (window.breakpoint === "desktop") { 48171 return window.positionLinks(); 48172 } 48173 }); 48174 jQuery(window).on("breakpoint-change", (event2) => { 48175 if (window.breakpoint === "tablet" || window.breakpoint === "mobile") { 48176 return jQuery(".link-details").hide(); 48177 } else { 48178 return jQuery(".link-details").show(); 48179 } 48180 }); 48181 }).call(exports); 48182 } 48183 }); 48184 48185 // apps/base/assets/javascripts/components/breadcrumbs.coffee 48186 var require_breadcrumbs = __commonJS({ 48187 "apps/base/assets/javascripts/components/breadcrumbs.coffee"(exports) { 48188 "use strict"; 48189 init_esbuild_shims(); 48190 (function() { 48191 jQuery("body").on("click", ".with-dropdown", function() { 48192 return jQuery(this).toggleClass("expanded"); 48193 }); 48194 jQuery("body").on("mouseleave", ".with-dropdown", function() { 48195 return jQuery(this).removeClass("expanded"); 48196 }); 48197 }).call(exports); 48198 } 48199 }); 48200 48201 // apps/base/assets/javascripts/components/call_to_action.coffee 48202 var require_call_to_action = __commonJS({ 48203 "apps/base/assets/javascripts/components/call_to_action.coffee"(exports) { 48204 "use strict"; 48205 init_esbuild_shims(); 48206 (function() { 48207 jQuery(".cta.newsletter a, .cta.newsletter p").on("click", function(event2) { 48208 jQuery(event2.currentTarget).parents(".cta").find("input[type='email']").focus(); 48209 return false; 48210 }); 48211 jQuery(".cta a").on("click", function(event2) { 48212 return window.trackEvent("Call to action", "Click", jQuery(event2.currentTarget).attr("data-ga-label")); 48213 }); 48214 }).call(exports); 48215 } 48216 }); 48217 48218
48218// apps/base/assets/javascripts/components/contact_landing_page.ts 48219 var require_contact_landing_page = __commonJS({ 48220 "apps/base/assets/javascripts/components/contact_landing_page.ts"() { 48221 "use strict"; 48222 init_esbuild_shims(); 48223 var ContactLandingPage = class { 48224 constructor() { 48225 this.attachEvents(); 48226 this.handleInitialHash(); 48227 } 48228 attachEvents() { 48229 document.addEventListener("click", (event2) => { 48230 const target = event2.target; 48231 const link = target.closest('a[href^="#"]'); 48232 if (link) { 48233 this.handleAnchorClick(event2, link); 48234 } 48235 }); 48236 window.addEventListener("hashchange", () => { 48237 this.handleHashChange(); 48238 }); 48239 } 48240 handleAnchorClick(event2, link) { 48241 const href = link.getAttribute("href"); 48242 if (!href || !href.startsWith("#")) { 48243 return; 48244 } 48245 event2.preventDefault(); 48246 this.scrollToAnchor(href); 48247 } 48248 handleHashChange() { 48249 if (window.location.hash) { 48250 this.scrollToAnchor(window.location.hash); 48251 } 48252 } 48253 handleInitialHash() { 48254 if (window.location.hash) { 48255 setTimeout(() => { 48256 this.scrollToAnchor(window.location.hash); 48257 }, 100); 48258 } 48259 } 48260 scrollToAnchor(hash) { 48261 const target = document.querySelector(hash); 48262 if (!target) { 48263 return; 48264 } 48265 const offset = this.calculateNavigationOffset(); 48266 const currentScrollTop = window.pageYOffset || document.documentElement.scrollTop; 48267 const targetPosition = target.offsetTop - offset; 48268 this.smoothScrollTo(targetPosition, 500); 48269 } 48270 smoothScrollTo(targetPosition, duration) { 48271 const startPosition = window.pageYOffset || document.documentElement.scrollTop; 48272 const distance = targetPosition - startPosition; 48273 const startTime = performance.now(); 48274 const animateScroll = (currentTime) => { 48275 const elapsed = currentTime - startTime; 48276 const progress = Math.min(elapsed / duration, 1); 48277 const easeOut = 1 - Math.pow(1 - progress, 3); 48278 const currentPosition = startPosition + distance * easeOut; 48279 window.scrollTo(0, currentPosition); 48280 if (progress < 1) { 48281 requestAnimationFrame(animateScroll); 48282 } 48283 }; 48284 requestAnimationFrame(animateScroll); 48285 } 48286 calculateNavigationOffset() { 48287 let baseOffset = 56; 48288 if (document.querySelector(".accesscontrolbar")) { 48289 baseOffset += 27; 48290 } 48291 if (document.querySelector("nav.breadcrumb, nav.dashboard-submenu")) { 48292 baseOffset += 56; 48293 } 48294 baseOffset += 20; 48295 return baseOffset; 48296 } 48297 }; 48298 document.addEventListener("DOMContentLoaded", () => { 48299 if (document.querySelector(".contact-landing-page")) { 48300 new ContactLandingPage(); 48301 } 48302 }); 48303 } 48304 }); 48305 48306 // apps/base/assets/javascripts/components/cards.coffee 48307 var require_cards = __commonJS({ 48308 "apps/base/assets/javascripts/components/cards.coffee"(exports) { 48309 "use strict"; 48310 init_esbuild_shims(); 48311 (function() { 48312 var cutOffOverflowingText, positionImage, processCard; 48313 positionImage = function(card) { 48314 var image; 48315 image = jQuery(card).find("img"); 48316 return image.on("load", () => { 48317 var containerHeight, containerWidth, imageHeight, imageWidth; 48318 containerHeight = jQuery(card).find("figure > a").height(); 48319 containerWidth = jQuery(card).find("figure > a").width(); 48320 imageHeight = image.height(); 48321 imageWidth = image.width(); 48322 if (imageHeight / imageWidth < containerHeight / containerWidth) { 48323 image.css({ 48324 "height": "100%", 48325 "width": "auto" 48326 }); 48327 } else { 48328 image.css({ 48329 "height": "auto", 48330 "width": "100%" 48331 }); 48332 } 48333 image.addClass("processed"); 48334 return image.attr("alt", "icon"); 48335 }).each(function() { 48336 if (this.complete) { 48337 return $(this).trigger("load"); 48338 } 48339 }); 48340 }; 48341 cutOffOverflowingText = function(card) { 48342 var description; 48343 description = jQuery(card).find("> .description"); 48344 return description.ellipsis(); 48345 }; 48346 processCard = function(card) { 48347 if (!jQuery(card).find("figure").hasClass("static")) { 48348 positionImage(card); 48349 } 48350 jQuery(card).find("p").each(function(index, element) { 48351 if (jQuery(element).text().trim() === "") { 48352 return jQuery(element).remove(); 48353 } 48354 }); 48355 return cutOffOverflowingText(card); 48356 }; 48357 $(window).on("load", function() { 48358 jQuery(window).on("resize-cards", function() { 48359 return jQuery("article.card").each(function() { 48360 return processCard(this); 48361 }); 48362 }); 48363 jQuery("article.highlight").each(function() { 48364 return cutOffOverflowingText(this); 48365 }); 48366 return jQuery(window).trigger("resize-cards"); 48367 }); 48368 $(window).on("resize", function() { 48369 return jQuery(window).trigger("resize-cards"); 48370 }); 48371 $("nav.tabs, nav.listing-tabs").on("click", function() { 48372 return jQuery(window).trigger("resize-cards"); 48373 }); 48374 $(document).on("click", ".regions", function(e) { 48375 var allRegions, allRegionsArray, hidePill, labelHide, labelMore, morePill, pill, regionsContainer, regionsText, remainingCount, visibleCount, visibleRegions;
48376 pill = $(this).find(".regions-more, .regions-hide"); 48377 if (!(pill.length > 0)) { 48378 return; 48379 } 48380 e.preventDefault(); 48381 allRegions = pill.data("all-regions"); 48382 visibleCount = pill.data("visible-count"); 48383 labelMore = pill.data("label-more") || "more"; 48384 labelHide = pill.data("label-hide") || "hide"; 48385 regionsContainer = $(this); 48386 if (pill.hasClass("regions-more")) { 48387 regionsContainer.find(".regions-text, .pill").remove(); 48388 regionsText = $(`<span class='regions-text'>${allRegions}</span>`); 48389 regionsContainer.append(regionsText); 48390 hidePill = $(`<span class='pill regions-hide' data-all-regions='${allRegions}' data-visible-count='${visibleCount}' data-label-more='${labelMore}' data-label-hide='${labelHide}'>${labelHide}</span>`); 48391 return regionsContainer.append(hidePill); 48392 } else if (pill.hasClass("regions-hide")) { 48393 allRegionsArray = allRegions.split(", "); 48394 visibleRegions = allRegionsArray.slice(0, visibleCount); 48395 remainingCount = allRegionsArray.length - visibleCount; 48396 regionsContainer.find(".regions-text, .pill").remove(); 48397 regionsText = $(`<span class='regions-text'>${visibleRegions.join(", ")}</span>`); 48398 regionsContainer.append(regionsText); 48399 morePill = $(`<span class='pill regions-more' data-all-regions='${allRegions}' data-visible-count='${visibleCount}' data-label-more='${labelMore}' data-label-hide='${labelHide}'>+${remainingCount} ${labelMore}</span>`); 48400 return regionsContainer.append(morePill); 48401 } 48402 }); 48403 }).call(exports); 48404 } 48405 }); 48406 48407 // apps/base/assets/javascripts/components/catalogue/downloads.coffee 48408 var require_downloads = __commonJS({ 48409 "apps/base/assets/javascripts/components/catalogue/downloads.coffee"(exports) { 48410 "use strict"; 48411 init_esbuild_shims(); 48412 (function() { 48413 jQuery("section.product-family-info div.downloads").not(".new").each(function(index, element) { 48414 if (jQuery(element).find("div.download").length > 6) { 48415 jQuery(element).find("div.download:gt(5)").hide(); 48416 return jQuery(element).next("a.button").css("display", "block"); 48417 } 48418 }); 48419 jQuery("section.product-family-info article[data-content='downloads'] a.button").on("click", function(event2) { 48420 jQuery(event2.currentTarget).prev("div.downloads").find("div.download").show(); 48421 return jQuery(event2.currentTarget).hide(); 48422 }); 48423 jQuery("section.product-family-info-redesign div.downloads").not(".new").each(function(index, element) { 48424 if (jQuery(element).find("div.download").length > 6) { 48425 jQuery(element).find("div.download:gt(5)").hide(); 48426 return jQuery(element).next("a.button").css("display", "block"); 48427 } 48428 }); 48429 jQuery("section.product-family-info-redesign article[data-content='downloads'] a.button").on("click", function(event2) { 48430 jQuery(event2.currentTarget).prev("div.downloads").find("div.download").show(); 48431 return jQuery(event2.currentTarget).hide(); 48432 }); 48433 }).call(exports); 48434 } 48435 }); 48436 48437 // apps/base/assets/javascripts/components/catalogue/footnotes.coffee 48438 var require_footnotes = __commonJS({ 48439 "apps/base/assets/javascripts/components/catalogue/footnotes.coffee"(exports) { 48440 "use strict"; 48441 init_esbuild_shims(); 48442 (function() { 48443 var footnoteHTML; 48444 footnoteHTML = function(link, html) { 48445 return `<div class='tooltip'> 48446 ${link} 48447 <div class='tip'> 48448 <div> 48449 ${html} 48450 </div> 48451 </div> 48452 </div>`; 48453 }; 48454 $("div.framemaker a.footnote[href]").each(function() { 48455 var footnote, id, link; 48456 link = $(this)[0].outerHTML; 48457 id = $(this).attr("href").substr(1); 48458 footnote = $(`div.framemaker-footnotes a[name='${id}']`).parent().html(); 48459 return $(this).replaceWith(footnoteHTML(link, footnote)); 48460 });
48461 $("div.framemaker a.XRef").each(function() { 48462 var footnote, id, link; 48463 link = $(this)[0].outerHTML; 48464 id = $(this).attr("href").split("#")[1]; 48465 footnote = $(`div.framemaker-footnotes a[name='${id}']`).parent().html(); 48466 return $(this).replaceWith(footnoteHTML(link, footnote)); 48467 }); 48468 $("div.framemaker a.footnote[href], div.framemaker a.XRef").on("click", function(event2) { 48469 return event2.preventDefault(); 48470 }); 48471 }).call(exports); 48472 } 48473 }); 48474 48475 // apps/base/assets/javascripts/components/catalogue/product.coffee 48476 var require_product = __commonJS({ 48477 "apps/base/assets/javascripts/components/catalogue/product.coffee"(exports) { 48478 "use strict"; 48479 init_esbuild_shims(); 48480 (function() { 48481 jQuery(function() { 48482 jQuery(".product-page a#link-to-accessories").on("click", function(event2) { 48483 var extraOffset, hasAccessControlBar, sticky, target; 48484 event2.preventDefault(); 48485 target = jQuery("#accessories"); 48486 if (target) { 48487 sticky = jQuery("body").hasClass("sticky"); 48488 hasAccessControlBar = jQuery(".accesscontrolbar").length > 0; 48489 extraOffset = 70; 48490 if (!sticky) { 48491 extraOffset += 50; 48492 } 48493 if (hasAccessControlBar) { 48494 extraOffset += 56; 48495 } 48496 return jQuery("html, body").animate({ 48497 scrollTop: target.offset().top - extraOffset 48498 }, 500); 48499 } 48500 }); 48501 return jQuery(".product-page [data-ga-action]").on("click", (event2) => { 48502 var action, label; 48503 action = jQuery(event2.currentTarget).attr("data-ga-action"); 48504 label = jQuery(event2.currentTarget).attr("data-ga-label"); 48505 return window.trackEvent("Product family", action, label); 48506 }); 48507 }); 48508 }).call(exports); 48509 } 48510 }); 48511 48512 // apps/base/assets/javascripts/components/catalogue/product_compare.coffee 48513 var require_product_compare = __commonJS({ 48514 "apps/base/assets/javascripts/components/catalogue/product_compare.coffee"(exports) { 48515 "use strict"; 48516 init_esbuild_shims(); 48517 (function() { 48518 var toggleHasCheck; 48519 toggleHasCheck = function(el) { 48520 el = jQuery(el); 48521 if (el.find("input:checkbox:checked").length > 0) { 48522 return el.addClass("hascheck"); 48523 } else { 48524 return el.removeClass("hascheck"); 48525 } 48526 }; 48527 jQuery("form.productcompare fieldset").click(function() { 48528 return toggleHasCheck(this); 48529 }); 48530 jQuery(".rowfilter").click(function() { 48531 return toggleHasCheck(this); 48532 }); 48533 jQuery("form.productcompare > fieldset, .rowfilter").each(function() { 48534 return toggleHasCheck(this); 48535 }); 48536 jQuery("#products").tableHeadFixer({ 48537 "left": 1 48538 }); 48539 jQuery("header.product-compare table .icon-cross").on("click", (event2) => { 48540 var column, columnId; 48541 column = jQuery(event2.target).parents("td"); 48542 columnId = jQuery("header.product-compare table tr td").index(column); 48543 if (columnId !== -1) { 48544 jQuery("header.product-compare table tr td:nth-child(" + (columnId + 1) + ")").remove(); 48545 jQuery(".comparison table tbody tr td:nth-child(" + (columnId + 1) + ")").remove(); 48546 if (jQuery("header.product-compare table tr td").length < 3) { 48547 return jQuery("header.product-compare table tr td i").hide(); 48548 } 48549 } 48550 }); 48551 }).call(exports); 48552 } 48553 }); 48554 48555 // apps/base/assets/javascripts/components/catalogue/product_export_dialog.coffee 48556 var require_product_export_dialog = __commonJS({ 48557 "apps/base/assets/javascripts/components/catalogue/product_export_dialog.coffee"(exports) { 48558 "use strict"; 48559 init_esbuild_shims(); 48560 (function() { 48561 var ProductExportDialog; 48562 ProductExportDialog = class ProductExportDialog { 48563 constructor(el) { 48564 this.disableSubmitButton = this.disableSubmitButton.bind(this); 48565 this.enableSubmitButton = this.enableSubmitButton.bind(this); 48566 this.closeDialog = this.closeDialog.bind(this); 48567 this.el = el; 48568 this.attachEvents(); 48569 this.initNamePlaceholder(); 48570 } 48571 initNamePlaceholder() { 48572 this.indexPosition = jQuery(this.el).find("textarea").text().indexOf("[name]"); 48573 return jQuery(this.el).find("textarea").attr("data-name-placeholder", "[name]"); 48574 } 48575 attachEvents() { 48576 jQuery(this.el).find("form").on("recaptcha-loaded", (event2, data) => { 48577 return this.widgetId = grecaptcha.render(jQuery(this.el).find("form .g-recaptcha")[0], { 48578 "sitekey": jQuery(this.el).find("form .g-recaptcha").attr("data-sitekey"), 48579 "badge": "inline", 48580 "size": "invisible" 48581 }); 48582 }); 48583 jQuery(this.el).on("click", "#excel-export", (event2) => { 48584 return this.closeDialog(); 48585 }); 48586 jQuery(".button.wide-popup.export-button").on("click", function() { 48587 return trackEvent("Product page", "Export button clicked"); 48588 }); 48589 jQuery(this.el).on("click", "#send-email", (event2) => { 48590 trackEvent("Product page", "Send email clicked"); 48591 jQuery(this.el).find("form").show(); 48592 jQuery(this.el).find("#excel-export").hide(); 48593 jQuery(this.el).find("#send-email").hide(); 48594 jQuery(this.el).find(".back").show(); 48595 jQuery(this.el).find(".level-1-cta").hide(); 48596 return jQuery(this.el).find(".level-2-cta").show(); 48597 }); 48598 jQuery(this.el).on("click", ".back", (event2) => { 48599 jQuery(this.el).find("form").hide(); 48600 jQuery(this.el).find("#excel-export").show(); 48601 jQuery(this.el).find("#send-email").show(); 48602 jQuery(this.el).find(".back").hide(); 48603 jQuery(this.el).find(".level-1-cta").show(); 48604 return jQuery(this.el).find(".level-2-cta").hide(); 48605 }); 48606 jQuery(this.el).on("keyup", "input[name='email_address'], input[name='name']", (event2) => { 48607 if (jQuery(this.el).find("input[name='email_address']")[0].checkValidity() && jQuery(this.el).find("input[name='name']").val() !== "") { 48608 return this.enableSubmitButton(); 48609 } else { 48610 return this.disableSubmitButton(); 48611 } 48612 }); 48613 jQuery(this.el).on("keyup change", "input[name='name']", (event2) => { 48614 var name, textarea; 48615 name = jQuery(this.el).find("input[name='name']").val(); 48616 if (name === "") { 48617 name = "[name]"; 48618 } 48619 textarea = jQuery(this.el).find("textarea[name='body']"); 48620 textarea.text(textarea.text().substring(0, this.indexPosition) + name + textarea.text().substring(this.indexPosition + textarea.attr("data-name-placeholder").length)); 48621 return jQuery(this.el).find("textarea").attr("data-name-placeholder", name); 48622 }); 48623 return jQuery(this.el).on("submit", "form", (event2) => { 48624 event2.preventDefault(); 48625 this.disableSubmitButton(); 48626 jQuery(this.el).find("form [name='g-recaptcha-response']").val(""); 48627 return grecaptcha.execute(this.widgetId, { 48628 action: "submit_form" 48629 }).then((token) => { 48630 jQuery(this.el).find("form [name='g-recaptcha-response']").val(token); 48631 return jQuery.ajax({ 48632 method: "post", 48633 url: jQuery(this.el).find("form").attr("action"), 48634 data: jQuery(this.el).find("form").serialize(), 48635 success: (data) => { 48636 this.closeDialog(); 48637 this.enableSubmitButton(); 48638 window.notificationService.showSuccessNotification("", translations["label_email_sent"]); 48639 return trackEvent("Product page", "Email sent"); 48640 }, 48641 error: (request, status, error) => { 48642 this.closeDialog(); 48643 this.enableSubmitButton(); 48644 return window.notificationService.showErrorNotification("Error", translations["label_email_sent_failure"]); 48645 } 48646 }); 48647 }); 48648 }); 48649 } 48650 disableSubmitButton() { 48651 return jQuery(this.el).find("input[type='submit']").attr("disabled", true); 48652 } 48653 enableSubmitButton() { 48654 return jQuery(this.el).find("input[type='submit']").attr("disabled", false); 48655 } 48656 closeDialog() { 48657 return jQuery(this.el).find("button.mfp-close").click(); 48658 } 48659 }; 48660 jQuery(function() { 48661 if (jQuery("#export-options").length > 0) { 48662 return new ProductExportDialog(jQuery("#export-options")); 48663 } 48664 }); 48665 }).call(exports); 48666 } 48667 }); 48668 48669 // apps/base/assets/javascripts/components/catalogue/product_family_filter.coffee 48670 var require_product_family_filter = __commonJS({ 48671 "apps/base/assets/javascripts/components/catalogue/product_family_filter.coffee"(exports) { 48672 "use strict"; 48673 init_esbuild_shims(); 48674 (function() { 48675 var ProductFamilyFilter; 48676 ProductFamilyFilter = class ProductFamilyFilter { 48677 constructor(filter, controls, table, grid) { 48678 var base, el, header, i, j, k, keyword, l, len, len1, ref;
48679 this.filter = filter; 48680 this.controls = controls; 48681 this.table = table; 48682 this.grid = grid; 48683 header = this.table.find("tr:first-child th"); 48684 this.num = header.length; 48685 this.truncateProducts = this.grid && this.grid.attr("data-show") !== "all"; 48686 this.data = {}; 48687 for (i = k = 0, len = header.length; k < len; i = ++k) { 48688 el = header[i]; 48689 if (!(i > 0)) { 48690 continue; 48691 } 48692 el = jQuery(el); 48693 this.data[el.data("id")] = (function() { 48694 var l2, ref2, results; 48695 results = []; 48696 for (j = l2 = 0, ref2 = this.num; 0 <= ref2 ? l2 < ref2 : l2 > ref2; j = 0 <= ref2 ? ++l2 : --l2) { 48697 results.push(i === j); 48698 } 48699 return results; 48700 }).call(this); 48701 ref = el.data("keywords"); 48702 for (l = 0, len1 = ref.length; l < len1; l++) { 48703 keyword = ref[l]; 48704 (base = this.data)[keyword] || (base[keyword] = (function() { 48705 var m, ref1, results; 48706 results = []; 48707 for (j = m = 0, ref1 = this.num; 0 <= ref1 ? m < ref1 : m > ref1; j = 0 <= ref1 ? ++m : --m) { 48708 results.push(false); 48709 } 48710 return results; 48711 }).call(this)); 48712 this.data[keyword][i] = true; 48713 } 48714 } 48715 this.attachEvents(); 48716 this.applyFilters(); 48717 } 48718 adjustGrid() { 48719 var numShown; 48720 numShown = 0; 48721 if (window.breakpoint === "desktop") { 48722 numShown = 5; 48723 } else if (window.breakpoint === "tablet") { 48724 numShown = 3; 48725 } else if (window.breakpoint === "mobile-landscape" || window.breakpoint === "mobile") { 48726 numShown = 2; 48727 } 48728 if (this.grid.find("li").length > numShown) { 48729 this.grid.find(`li:nth-child(n+${numShown})`).hide(); 48730 this.grid.siblings(".view-less").hide(); 48731 return this.grid.siblings(".view-all").show(); 48732 } else { 48733 this.showAll(); 48734 return this.grid.siblings(".view-less").hide(); 48735 } 48736 } 48737 showAll() { 48738 this.grid.find("li").show(); 48739 this.grid.siblings(".view-all").hide(); 48740 return this.grid.siblings(".view-less").show(); 48741 } 48742 showLess() { 48743 this.adjustGrid(); 48744 return $([document.documentElement, document.body]).animate({ 48745 scrollTop: $(".related-products").offset().top - 50 48746 }, 100); 48747 } 48748 attachEvents() { 48749 this.filter.on("click", "fieldset input:checkbox", () => { 48750 return this.applyFilters(); 48751 }); 48752 this.table.on("click", "fieldset input:checkbox", () => { 48753 return this.applyFilters(); 48754 }); 48755 this.filter.on("click", "a[data-ga-action]", (event2) => { 48756 return this.trackEvent(event2); 48757 }); 48758 this.table.on("click", "a[data-ga-action]", (event2) => { 48759 return this.trackEvent(event2); 48760 }); 48761 this.grid.on("click", "a[data-ga-action]", (event2) => { 48762 return this.trackEvent(event2); 48763 }); 48764 this.filter.on("change", "input[data-ga-action]", (event2) => { 48765 return this.trackEvent(event2); 48766 }); 48767 this.table.on("change", "input[data-ga-action]", (event2) => { 48768 return this.trackEvent(event2); 48769 }); 48770 this.grid.siblings(".view-all").find(".button").on("click", (event2) => { 48771 return this.showAll(); 48772 }); 48773 this.grid.siblings(".view-less").find(".button").on("click", (event2) => { 48774 return this.showLess(); 48775 }); 48776 if (this.truncateProducts) { 48777 $(window).on("breakpoint-change", (event2) => { 48778 return this.adjustGrid(); 48779 }); 48780 return jQuery(() => { 48781 return this.adjustGrid(); 48782 }); 48783 } 48784 } 48785 addSelected(container) { 48786 var el, k, len, ref, results; 48787 ref = container.find("fieldset.hascheck"); 48788 results = []; 48789 for (k = 0, len = ref.length; k < len; k++) { 48790 el = ref[k]; 48791 el = jQuery(el); 48792 results.push(this.groups[el.data("name")] = this.get
48792Selected(el)); 48793 } 48794 return results; 48795 } 48796 trackEvent(event2) { 48797 var action, label; 48798 action = jQuery(event2.currentTarget).attr("data-ga-action"); 48799 label = jQuery(event2.currentTarget).attr("data-ga-label"); 48800 return window.trackEvent("Product catalogue", action, label); 48801 } 48802 getSelected(fieldset) { 48803 var el, i, index, k, len, ref, ref1, val, values; 48804 values = (function() { 48805 var k2, ref2, results; 48806 results = []; 48807 for (index = k2 = 0, ref2 = this.num; 0 <= ref2 ? k2 < ref2 : k2 > ref2; index = 0 <= ref2 ? ++k2 : --k2) { 48808 results.push(false); 48809 } 48810 return results; 48811 }).call(this); 48812 ref = fieldset.find("input:checked"); 48813 for (k = 0, len = ref.length; k < len; k++) { 48814 el = ref[k]; 48815 if (!el.checked) { 48816 return; 48817 } 48818 ref1 = this.data[el.name]; 48819 for (i in ref1) { 48820 val = ref1[i]; 48821 values[i] || (values[i] = val); 48822 } 48823 } 48824 return values; 48825 } 48826 isSelected(index, exclude) { 48827 var name, ref, rows; 48828 ref = this.groups; 48829 for (name in ref) { 48830 rows = ref[name]; 48831 if (name === exclude) { 48832 continue; 48833 } 48834 if (!rows[index]) { 48835 return false; 48836 } 48837 } 48838 return true; 48839 } 48840 applyFilters() { 48841 var cells, i, item, list, total; 48842 this.groups = {}; 48843 this.addSelected(this.filter); 48844 this.addSelected(this.table); 48845 this.selected = (function() { 48846 var k, ref, results; 48847 results = []; 48848 for (i = k = 0, ref = this.num; 0 <= ref ? k < ref : k > ref; i = 0 <= ref ? ++k : --k) { 48849 results.push(this.isSelected(i)); 48850 } 48851 return results; 48852 }).call(this); 48853 total = 0; 48854 i = 1; 48855 while (i < this.num) { 48856 cells = this.table.find(`tr th:nth-child(${i + 1}), td:nth-child(${i + 1})`); 48857 if (this.selected[i++]) { 48858 cells.show(); 48859 total++; 48860 } else { 48861 cells.hide(); 48862 } 48863 } 48864 list = this.grid.find("ul"); 48865 i = this.num - 1; 48866 while (i > 0) { 48867 item = list.find(`[data-row='${i}']`); 48868 item.remove(); 48869 if (this.selected[i--]) { 48870 list.prepend(item.show()); 48871 } else { 48872 list.append(item.hide()); 48873 } 48874 } 48875 this.controls.find(".product-count span.count").html(total); 48876 if (total === 1) { 48877 this.controls.find(".product-count span.singular").show(); 48878 this.controls.find(".product-count span.plural").hide(); 48879 } else { 48880 this.controls.find(".product-count span.singular").hide(); 48881 this.controls.find(".product-count span.plural").show(); 48882 } 48883 return this.setCount(); 48884 } 48885 setCount() { 48886 var count, el, fieldset, i, keyword, label, name, ref, results, values; 48887 ref = this.data; 48888 results = []; 48889 for (keyword in ref) { 48890 values = ref[keyword]; 48891 el = jQuery(document.getElementsByName(keyword)); 48892 count = 0; 48893 fieldset = el.closest("fieldset"); 48894 if (fieldset.hasClass("hascheck")) { 48895 name = fieldset.data("name"); 48896 i = 1; 48897 while (i < this.num) { 48898 if (this.isSelected(i, name) && values[i]) { 48899 count += 1; 48900 } 48901 i++; 48902 } 48903 } else { 48904 i = 1; 48905 while (i < this.num) { 48906 if (this.selected[i] && values[i]) { 48907 count += 1; 48908 } 48909 i++; 48910 } 48911 } 48912 label = el.closest("label"); 48913 label.find(".count").html(`${count}`); 48914 results.push(label.toggleClass("noresults", !count)); 48915 } 48916 return results; 48917 } 48918 }; 48919 new ProductFamilyFilter(jQuery(".productcompare-filter"), jQuery(".productcompare-control
48919s"), jQuery(".productcompare-table"), jQuery(".productcompare-grid")); 48920 }).call(exports); 48921 } 48922 }); 48923 48924 // apps/base/assets/javascripts/components/catalogue/product_selector.coffee 48925 var require_product_selector = __commonJS({ 48926 "apps/base/assets/javascripts/components/catalogue/product_selector.coffee"(exports) { 48927 "use strict"; 48928 init_esbuild_shims(); 48929 (function() { 48930 var ProductSelector; 48931 ProductSelector = class ProductSelector { 48932 constructor(el1) { 48933 this.initState = this.initState.bind(this); 48934 this.initData = this.initData.bind(this); 48935 this.attachEvents = this.attachEvents.bind(this); 48936 this.showCompareButton = this.showCompareButton.bind(this); 48937 this.hideCompareButton = this.hideCompareButton.bind(this); 48938 this.disableCompareButton = this.disableCompareButton.bind(this); 48939 this.showDescription = this.showDescription.bind(this); 48940 this.showFeatures = this.showFeatures.bind(this); 48941 this.setViewState = this.setViewState.bind(this); 48942 this.applyFilters = this.applyFilters.bind(this); 48943 this.previousView = this.previousView.bind(this); 48944 this.disableFeatureView = this.disableFeatureView.bind(this); 48945 this.processFilterResults = this.processFilterResults.bind(this); 48946 this.setFilterCounts = this.setFilterCounts.bind(this); 48947 this.hideFiltersWithSingleOption = this.hideFiltersWithSingleOption.bind(this); 48948 this.hideColumns = this.hideColumns.bind(this); 48949 this.showNoResultsMessage = this.showNoResultsMessage.bind(this); 48950 this.hideNoResultsMessage = this.hideNoResultsMessage.bind(this); 48951 this.el = el1; 48952 this.products = this.el.find(".product-list table tbody tr"); 48953 this.isMobile = window.matchMedia("only screen and (max-width: 760px)").matches; 48954 this.attachEvents(); 48955 this.initState(); 48956 } 48957 initState() { 48958 this.initData(); 48959 this.applyFilters(); 48960 return this.setViewState(); 48961 } 48962 initData() { 48963 this.data = {}; 48964 jQuery(".product-list tbody tr").each((i, product) => { 48965 var base, filterId, j, k, len, ref, results; 48966 ref = jQuery(product).data("filters"); 48967 results = []; 48968 for (k = 0, len = ref.length; k < len; k++) { 48969 filterId = ref[k]; 48970 (base = this.data)[filterId] || (base[filterId] = (function() { 48971 var l, ref1, results1; 48972 results1 = []; 48973 for (j = l = 0, ref1 = this.products.length; 0 <= ref1 ? l < ref1 : l > ref1; j = 0 <= ref1 ? ++l : --l) { 48974 results1.push(false); 48975 } 48976 return results1; 48977 }).call(this)); 48978 results.push(this.data[filterId][i] = true); 48979 } 48980 return results; 48981 }); 48982 if (this.isMobile) { 48983 jQuery("#filters").hide(); 48984 if (!jQuery("a#show-all-products").hasClass("button")) { 48985 jQuery("a#show-all-products").addClass("button"); 48986 } 48987 return this.showDescription(); 48988 } 48989 } 48990 attachEvents() { 48991 this.el.find("aside .other-filters ul").hide(); 48992 this.el.find("aside i.close").on("click", (event2) => { 48993 if (jQuery(event2.target).hasClass("icon-eye")) { 48994 jQuery(event2.target).removeClass("icon-eye").addClass("icon-eye-slash"); 48995 } else { 48996 jQuery(event2.target).removeClass("icon-eye-slash").addClass("icon-eye"); 48997 } 48998 return jQuery(this.el).find("aside .other-filters ul").toggle(); 48999 }); 49000 this.el.find("aside > h3").on("click", (event2) => { 49001 if (this.isMobile) { 49002 return jQuery("aside .filter:not(.hidden)").slideToggle(200); 49003 } 49004 }); 49005 this.el.find(".filter > h3").on("click", (event2) => { 49006 return this.toggleFilter(jQuery(event2.target).parents(".filter")); 49007 }); 49008 this.el.find(".filter input").on("change", (event2) => { 49009 return this.applyFilters(); 49010 }); 49011 this.el.find(".product-list table input[type='checkbox']").on("click", (event2) => { 49012 var nrOfProductsSelected; 49013 nrOfProductsSelected = jQuery(".product-list table input[type='checkbox']:checked").length; 49014 if (nrOfProductsSelected > 1 && nrOfProductsSelected <= 3) { 49015 return this.showCompareButton(nrOfProductsSelected); 49016 } else if (nrOfProductsSelected > 3 && jQuery("#compare").attr("data-altlabel")) { 49017 return this.disableCompareButton(); 49018 } else { 49019 return this.hideCompareButton(); 49020 } 49021 }); 49022 this.el.find("a#show-all-products").on("click", (event2) => { 49023 this.applyFilters(0); 49024 return jQuery("a#show-all-products").hide(); 49025 }); 49026 this.el.find("span.reset").on("click", (event2) => {
49027 jQuery(".filter.active input:checked").prop("checked", false); 49028 return this.applyFilters(); 49029 }); 49030 this.el.on("click", "h3[data-ga-action]", (event2) => { 49031 return this.trackEvent(event2); 49032 }); 49033 this.el.on("click", "span.reset[data-ga-action]", (event2) => { 49034 return this.trackEvent(event2); 49035 }); 49036 this.el.on("click", "a[data-ga-action]", (event2) => { 49037 return this.trackEvent(event2); 49038 }); 49039 this.el.on("change", "input[data-ga-action]", (event2) => { 49040 return this.trackEvent(event2); 49041 }); 49042 return jQuery(".view-options .view").on("click", (event2) => { 49043 if (jQuery(".product-list tbody tr.filtered").length > 1 && jQuery(".view-options .view.disable").length === 0) { 49044 jQuery(".view.selected").removeClass("selected"); 49045 jQuery(event2.currentTarget).addClass("selected"); 49046 if (jQuery(event2.currentTarget).attr("id") === "description-view") { 49047 this.showDescription(); 49048 } else { 49049 this.showFeatures(); 49050 } 49051 return this.setViewState(); 49052 } 49053 }); 49054 } 49055 showCompareButton(nrOfProductsSelected) { 49056 var element, products; 49057 products = (function() { 49058 var k, len, ref, results; 49059 ref = jQuery(".product-list table input[type='checkbox']:checked"); 49060 results = []; 49061 for (k = 0, len = ref.length; k < len; k++) { 49062 element = ref[k]; 49063 results.push(jQuery(element).parents("tr").attr("data-product")); 49064 } 49065 return results; 49066 })(); 49067 jQuery("#compare").attr("href", jQuery("#compare").attr("data-endpoint") + "?products=" + products.join(",") + "&referrer=" + jQuery("#compare").attr("data-referrer")); 49068 jQuery("#compare span.text").html(jQuery("#compare").attr("data-label")); 49069 jQuery("#compare span.number").html("(" + nrOfProductsSelected + ")"); 49070 return jQuery("#compare").removeClass("disabled").addClass("visible"); 49071 } 49072 hideCompareButton() { 49073 return jQuery("#compare").removeClass("visible"); 49074 } 49075 disableCompareButton() { 49076 jQuery("#compare").addClass("disabled"); 49077 jQuery("#compare").removeAttr("href"); 49078 jQuery("#compare span.text").html(jQuery("#compare").attr("data-altlabel")); 49079 return jQuery("#compare span.number").html(""); 49080 } 49081 showDescription() { 49082 return jQuery("table.details").addClass("descriptions"); 49083 } 49084 showFeatures() { 49085 return jQuery("table.details").removeClass("descriptions"); 49086 } 49087 isSelected(index, exclude) { 49088 var name, ref, rows; 49089 ref = this.activeFilters; 49090 for (name in ref) { 49091 rows = ref[name]; 49092 if (name === exclude) { 49093 continue; 49094 } 49095 if (!rows[index]) { 49096 return false; 49097 } 49098 } 49099 return true; 49100 } 49101 toggleFilter(filter) { 49102 jQuery(filter).toggleClass("collapsed"); 49103 return jQuery(filter).find("ul, .slider-container").slideToggle(200); 49104 } 49105 setViewState() { 49106 return this.viewState = jQuery(".view.selected").attr("id"); 49107 } 49108 applyFilters(maxProducts = 20) { 49109 var activeFilter, filterValue, i, index, k, l, len, len1, multiValued, ref, ref1, ref2, ref3, shownProducts, val, values; 49110 this.hideNoResultsMessage(); 49111 jQuery(".filter").each((index2, element) => { 49112 return jQuery(element).toggleClass("active", jQuery(element).find("input:checked").length > 0); 49113 }); 49114 this.activeFilters = {}; 49115 ref = jQuery(".filter.active"); 49116 for (k = 0, len = ref.length; k < len; k++) { 49117 activeFilter = ref[k]; 49118 multiValued = jQuery(activeFilter).attr("data-multivalued") === "1"; 49119 values = (function() { 49120 var l2, ref12, results; 49121 results = []; 49122 for (index = l2 = 0, ref12 = this.products.length; 0 <= ref12 ? l2 < ref12 : l2 > ref12; index = 0 <= ref12 ? ++l2 : --l2) { 49123 results.push(multiValued); 49124 } 49125 return results; 49126 }).call(this); 49127 ref1 = jQuery(activeFilter).find("input:checked"); 49128 for (l = 0, len1 = ref1.length; l < len1; l++) { 49129 filterValue = ref1[l]; 49130 if (multiValued) { 49131 ref2 = this.data[jQuery(filterValue).attr("id")]; 49132 for (i in ref2) {
49133 val = ref2[i]; 49134 if (val && values[i]) { 49135 values[i] = true; 49136 } else { 49137 values[i] = false; 49138 } 49139 } 49140 } else { 49141 ref3 = this.data[jQuery(filterValue).attr("id")]; 49142 for (i in ref3) { 49143 val = ref3[i]; 49144 values[i] || (values[i] = val); 49145 } 49146 } 49147 } 49148 this.activeFilters[jQuery(activeFilter).attr("data-filter")] = values; 49149 } 49150 if (jQuery(".filter.active").length > 0) { 49151 jQuery("span.reset").show(); 49152 } else { 49153 jQuery("span.reset").hide(); 49154 } 49155 this.selectedStatePerProduct = (function() { 49156 var m, ref4, results; 49157 results = []; 49158 for (i = m = 0, ref4 = this.products.length; 0 <= ref4 ? m < ref4 : m > ref4; i = 0 <= ref4 ? ++m : --m) { 49159 results.push(this.isSelected(i)); 49160 } 49161 return results; 49162 }).call(this); 49163 jQuery(".product-list tbody tr.filtered").removeClass("filtered hidden"); 49164 jQuery("a#show-all-products").removeClass("visible"); 49165 shownProducts = 0; 49166 jQuery(".product-list tbody tr").each((index2, element) => { 49167 if (maxProducts > 0 && shownProducts >= maxProducts) { 49168 jQuery("a#show-all-products").addClass("visible").show(); 49169 jQuery("a#show-all-products span").html(this.selectedStatePerProduct.filter(Boolean).length - maxProducts); 49170 return false; 49171 } else if (this.selectedStatePerProduct[index2]) { 49172 jQuery(element).addClass("filtered"); 49173 return shownProducts++; 49174 } 49175 }); 49176 jQuery(".product-list tbody tr:not(.filtered) input[type='checkbox']:checked").trigger("click"); 49177 if (jQuery(".product-list tbody tr.filtered").length === 0) { 49178 this.showNoResultsMessage(); 49179 } 49180 jQuery(".view-options").find("#feature-view").removeClass("disable"); 49181 if (jQuery(".product-list tbody tr.filtered").length === 1) { 49182 this.disableFeatureView(); 49183 } 49184 if (jQuery(".product-list tbody tr.filtered").length > 1) { 49185 this.previousView(); 49186 } 49187 this.processFilterResults(); 49188 if (jQuery(".product-list table thead tr th:not(.hidden)").length <= 2) { 49189 return this.disableFeatureView(); 49190 } 49191 } 49192 previousView() { 49193 if (this.viewState === "feature-view" && jQuery(".view.selected").attr("id") !== "feature-view") { 49194 return jQuery(".view-options .view#feature-view").click(); 49195 } 49196 } 49197 disableFeatureView() { 49198 this.showDescription(); 49199 jQuery("#feature-view").removeClass("selected"); 49200 jQuery("#description-view").addClass("selected"); 49201 return jQuery(".view-options").find("#feature-view").addClass("disable"); 49202 } 49203 processFilterResults() { 49204 this.setFilterCounts(); 49205 this.hideFiltersWithSingleOption(); 49206 if (!this.isMobile) { 49207 return this.hideColumns(); 49208 } 49209 } 49210 setFilterCounts() { 49211 var count, filter, i, multiValued, name, option, ref, results, values; 49212 ref = this.data; 49213 results = []; 49214 for (filter in ref) { 49215 values = ref[filter]; 49216 option = jQuery("#" + filter); 49217 filter = option.parents(".filter"); 49218 count = 0; 49219 if (filter.hasClass("active")) { 49220 multiValued = filter.attr("data-multivalued") === "1"; 49221 name = filter.attr("data-filter"); 49222 i = 0; 49223 while (i < this.products.length) { 49224 if ((multiValued && this.isSelected(i) || !multiValued && this.isSelected(i, name)) && values[i]) { 49225 count += 1; 49226 } 49227 i++; 49228 } 49229 } else { 49230 i = 0; 49231 while (i < this.products.length) { 49232 if (this.selectedStatePerProduct[i] && values[i]) { 49233 count += 1; 49234 } 49235 i++; 49236 } 49237 } 49238 jQuery(option).siblings("span").html("(" + count + ")"); 49239 jQuery(option).parents("li").attr("data-count", count); 49240 if (count > 0) { 49241 results.push(filter.removeClass("disabled")); 49242 } else { 49243 results.push(void 0); 49244 } 49245 } 49246 return results; 49247 } 49248 hideFiltersWithSingleOption() { 49249 return jQuery(this.el).find(".filter").each((index, filter) => { 49250 var columnIndex, name; 49251 name = jQuery(filter).attr("data-filter"); 49252 jQuery(filter).find("li input").each((index2, option) => { 49253 return jQuery(option).parents("li").toggleClass("disabled", parseInt(j
49253Query(option).parents("li").attr("data-count")) === 0); 49254 }); 49255 columnIndex = jQuery(".product-list table th").index(".product-list table th[data-filter='" + name + "']"); 49256 if (!jQuery(filter).hasClass("hidden")) { 49257 jQuery(".product-list table").addClass("col-" + (columnIndex + 1)); 49258 } 49259 if (this.el.find(".filter:not(.hidden)").length === 0) { 49260 return this.el.addClass("no-filters"); 49261 } 49262 }); 49263 } 49264 hideColumns() { 49265 var columnsShown, columnsShownLimit; 49266 columnsShownLimit = 3; 49267 columnsShown = 0; 49268 return jQuery(".product-list table th").each(function(index, header) { 49269 var uniqueValues, values; 49270 if (index > 0) { 49271 values = []; 49272 jQuery(".product-list table tr.filtered td[data-filter='" + jQuery(header).attr("data-filter") + "']").each(function(i, el) { 49273 return values.push(jQuery(el).text()); 49274 }); 49275 uniqueValues = Array.from(new Set(values)).length; 49276 if (uniqueValues > 1 && columnsShown < columnsShownLimit) { 49277 jQuery(".product-list table").addClass("col-" + (index + 1)); 49278 return columnsShown++; 49279 } else if (uniqueValues <= 1 || columnsShown === columnsShownLimit) { 49280 return jQuery(".product-list table").removeClass("col-" + (index + 1)); 49281 } 49282 } 49283 }); 49284 } 49285 showNoResultsMessage() { 49286 jQuery("#no-results").show(); 49287 jQuery("table.details").hide(); 49288 return jQuery(".view-options").hide(); 49289 } 49290 hideNoResultsMessage() { 49291 jQuery("#no-results").hide(); 49292 jQuery("table.details").show(); 49293 return jQuery(".view-options").show(); 49294 } 49295 trackEvent(event2) { 49296 var action, label; 49297 action = jQuery(event2.currentTarget).attr("data-ga-action"); 49298 label = jQuery(event2.currentTarget).attr("data-ga-label"); 49299 return window.trackEvent("Product family", action, label); 49300 } 49301 }; 49302 document.addEventListener("DOMContentLoaded", function() { 49303 if (jQuery(".product-selector").length > 0) { 49304 return window.productSelector != null ? window.productSelector : window.productSelector = new ProductSelector(jQuery(".product-selector")); 49305 } 49306 }); 49307 window.onpageshow = function(e) { 49308 var selectedOptions, selectedProducts; 49309 if (jQuery(".product-selector").length > 0 && (e.persisted || window.performance.navigation.type === 2)) { 49310 selectedOptions = jQuery(".filter input:checked").click(); 49311 selectedProducts = jQuery(".product-list input:checked").click(); 49312 window.productSelector.initState(); 49313 selectedOptions.click(); 49314 return selectedProducts.click(); 49315 } 49316 }; 49317 }).call(exports); 49318 } 49319 }); 49320 49321 // apps/base/assets/javascripts/components/catalogue/shortener.coffee 49322 var require_shortener = __commonJS({ 49323 "apps/base/assets/javascripts/components/catalogue/shortener.coffee"(exports) { 49324 "use strict"; 49325 init_esbuild_shims(); 49326 (function() { 49327 var shortener; 49328 shortener = function(selector, itemSelector, count, useParent) { 49329 return jQuery(selector).each(function() { 49330 var el, label, total; 49331 el = jQuery(this); 49332 total = el.find(itemSelector).length; 49333 if (total - 1 > count) { 49334 el.addClass("shortened").find(`${itemSelector}:gt(${count - 1})`).hide(); 49335 label = el.data("show-label"); 49336 return jQuery(`<a class='show-label'>${label} (${total})</a>`).appendTo(useParent ? el.parent() : el).click(function() { 49337 jQuery(this).hide(); 49338 return el.find(itemSelector).show(); 49339 }); 49340 } 49341 }); 49342 }; 49343 if (jQuery(".productcompare-filter").length > 0) { 49344 shortener(".filter", "label", 5); 49345 shortener(".rowfilter", "label", 5, true); 49346 shortener(".inputgroup", "label", 10, true); 49347 } 49348 }).call(exports); 49349 } 49350 }); 49351 49352 // apps/base/assets/javascripts/components/catalogue/slider.coffee 49353 var require_slider = __commonJS({ 49354 "apps/base/assets/javascripts/components/catalogue/slider.coffee"(exports) { 49355 "use strict"; 49356 init_esbuild_shims(); 49357 (function() { 49358 var swipeSlide; 49359 jQuery("#slider ul.tabs li").on("click", function(event2) { 49360 var slide; 49361 slide = jQuery(this).data("slide"); 49362 jQuery(this).addClass("active").siblings().removeClass("active");
49363 jQuery("#slider ul.slides li[data-slide=" + slide + "]").attr("class", "active").prevAll().attr("class", "prev"); 49364 return jQuery("#slider ul.slides li[data-slide=" + slide + "]").nextAll().attr("class", "next"); 49365 }); 49366 swipeSlide = function(event2, direction, distance, duration, fingerCount) { 49367 var currentSlide, nextslide; 49368 currentSlide = jQuery("ul.slides").find("li.active").data("slide"); 49369 nextslide; 49370 if (direction === "left") { 49371 nextslide = currentSlide + 1; 49372 if (jQuery("li").data(nextslide)) { 49373 jQuery(`ul.slides > li[data-slide=${nextslide}]`).attr("class", "active").prevAll().attr("class", "prev"); 49374 jQuery(`ul.tabs > li[data-slide=${nextslide}]`).addClass("active").siblings().removeClass("active"); 49375 } 49376 } 49377 if (direction === "right") { 49378 nextslide = currentSlide - 1; 49379 if (jQuery("li").data(nextslide)) { 49380 jQuery(`ul.slides > li[data-slide=${nextslide}]`).attr("class", "active").nextAll().attr("class", "next"); 49381 return jQuery(`ul.tabs > li[data-slide=${nextslide}]`).addClass("active").siblings().removeClass("active"); 49382 } 49383 } 49384 }; 49385 jQuery("#slider").swipe({ 49386 fingers: 1, 49387 swipeLeft: swipeSlide, 49388 swipeRight: swipeSlide, 49389 allowPageScroll: "horizontal" 49390 }); 49391 }).call(exports); 49392 } 49393 }); 49394 49395 // apps/base/assets/javascripts/components/categories-filter/option.coffee 49396 var require_option = __commonJS({ 49397 "apps/base/assets/javascripts/components/categories-filter/option.coffee"(exports, module) { 49398 "use strict"; 49399 init_esbuild_shims(); 49400 (function() { 49401 var CategoryOption; 49402 CategoryOption = class CategoryOption { 49403 constructor(option, handleFiltering) { 49404 this.attachEventHandlers = this.attachEventHandlers.bind(this); 49405 this.enableOption = this.enableOption.bind(this); 49406 this.disableOption = this.disableOption.bind(this); 49407 this.isChecked = this.isChecked.bind(this); 49408 this.deselectOption = this.deselectOption.bind(this); 49409 this.show = this.show.bind(this); 49410 this.hide = this.hide.bind(this); 49411 this.option = option; 49412 this.handleFiltering = handleFiltering; 49413 this.attachEventHandlers(); 49414 this.name = this.option.attr("name"); 49415 this.label = this.option.siblings("label"); 49416 } 49417 attachEventHandlers() { 49418 return this.option.on("change", (e) => { 49419 return this.handleFiltering(this, this.isChecked()); 49420 }); 49421 } 49422 enableOption() { 49423 this.option.removeAttr("disabled"); 49424 return this.label.removeClass("disabled"); 49425 } 49426 disableOption() { 49427 if (!this.isChecked()) { 49428 this.option.attr("disabled", true); 49429 } 49430 if (!this.isChecked()) { 49431 return this.label.addClass("disabled"); 49432 } 49433 } 49434 isChecked() { 49435 return this.option.prop("checked"); 49436 } 49437 deselectOption() { 49438 return this.option.prop("checked", false); 49439 } 49440 show() { 49441 return this.option.parent().show(); 49442 } 49443 hide() { 49444 return this.option.parent().hide(); 49445 } 49446 }; 49447 module.exports = CategoryOption; 49448 }).call(exports); 49449 } 49450 }); 49451 49452 // apps/base/assets/javascripts/components/categories-filter/category.coffee 49453 var require_category = __commonJS({ 49454 "apps/base/assets/javascripts/components/categories-filter/category.coffee"(exports, module) { 49455 "use strict"; 49456 init_esbuild_shims(); 49457 (function() { 49458 var Category, CategoryOption; 49459 CategoryOption = require_option(); 49460 Category = class Category { 49461 constructor(category, updateListing, name, toggleClearButton) { 49462 this.attachEventHandlers = this.attachEventHandlers.bind(this); 49463 this.initOptions = this.initOptions.bind(this); 49464 this.handleFiltering = this.handleFiltering.bind(this); 49465 this.updatePage = this.updatePage.bind(this); 49466 this.clearOptions = this.clearOptions.bind(this); 49467 this.resetFilters = this.resetFilters.bind(this); 49468 this.handleCount = this.handleCount.bind(this); 49469 this.disableCategory = this.disableCategory.bind(this); 49470 this.enableCategory = this.enableCategory.bind(this); 49471 this.uncheckAllOptions = this.uncheckAllOptions.bind(this); 49472 this.updateCheckboxesCount = this.updateCheckboxesCount.bind(this);
49473 this.addSelectedFilter = this.addSelectedFilter.bind(this); 49474 this.removeSelectedFilter = this.removeSelectedFilter.bind(this); 49475 this.resetCount = this.resetCount.bind(this); 49476 this.disableAllOptions = this.disableAllOptions.bind(this); 49477 this.enableAllOptions = this.enableAllOptions.bind(this); 49478 this.enableSingleOption = this.enableSingleOption.bind(this); 49479 this.deleteOptions = this.deleteOptions.bind(this); 49480 this.appendOption = this.appendOption.bind(this); 49481 this.optionToHtml = this.optionToHtml.bind(this); 49482 this.updateOptions = this.updateOptions.bind(this); 49483 this.collectFilterValues = this.collectFilterValues.bind(this); 49484 this.filterOptions = this.filterOptions.bind(this); 49485 this.category = category; 49486 this.updateListing = updateListing; 49487 this.toggleClearButton = toggleClearButton; 49488 this.name = name; 49489 this.options = this.initOptions(); 49490 this.numberSelected = 0; 49491 this.selectedFilters = []; 49492 this.attachEventHandlers(); 49493 } 49494 attachEventHandlers() { 49495 return jQuery(window).on("enable-options", () => { 49496 return this.filterOptions(); 49497 }); 49498 } 49499 initOptions() { 49500 return $.map(this.category.find(".options .option input"), (option, index) => { 49501 return new CategoryOption(jQuery(option), this.handleFiltering); 49502 }); 49503 } 49504 handleFiltering(checkbox, checkBoxIsChecked) { 49505 if (checkBoxIsChecked) { 49506 this.addSelectedFilter(checkbox.name); 49507 } else { 49508 this.removeSelectedFilter(checkbox.name); 49509 } 49510 return this.updatePage(); 49511 } 49512 updatePage() { 49513 this.updateListing(); 49514 this.updateCheckboxesCount(); 49515 this.disableAllOptions(); 49516 return this.toggleClearButton(); 49517 } 49518 clearOptions() { 49519 this.selectedFilters = []; 49520 this.handleCount(); 49521 return this.uncheckAllOptions(); 49522 } 49523 resetFilters() { 49524 this.handleCount(); 49525 this.deleteOptions(); 49526 return this.selectedFilters = []; 49527 } 49528 handleCount() { 49529 return this.resetCount(); 49530 } 49531 disableCategory() { 49532 return this.category.addClass("disabled"); 49533 } 49534 enableCategory() { 49535 return this.category.removeClass("disabled"); 49536 } 49537 uncheckAllOptions() { 49538 return $.each(this.options, (index, option) => { 49539 return option.deselectOption(); 49540 }); 49541 } 49542 updateCheckboxesCount() { 49543 return this.numberSelected = this.category.find(".options .option input:checked").length; 49544 } 49545 addSelectedFilter(filter) { 49546 return this.selectedFilters.push(filter); 49547 } 49548 removeSelectedFilter(filter) { 49549 return this.selectedFilters.splice($.inArray(filter, this.selectedFilters), 1); 49550 } 49551 resetCount() { 49552 return this.numberSelected = 0; 49553 } 49554 disableAllOptions() { 49555 return $.each(this.options, (index, option) => { 49556 return option.disableOption(); 49557 }); 49558 } 49559 enableAllOptions() { 49560 return $.each(this.options, (index, option) => { 49561 return option.enableOption(); 49562 }); 49563 } 49564 enableSingleOption() { 49565 return $.each(this.options, (index, option) => { 49566 if (option.isChecked()) { 49567 return option.enableOption(); 49568 } 49569 }); 49570 } 49571 deleteOptions() { 49572 return this.category.find(".options .option").remove(); 49573 } 49574 appendOption(option) { 49575 return this.category.find(".options").append(this.optionToHtml(option)); 49576 } 49577 optionToHtml(option) { 49578 return "<div class='option'> <input type='checkbox' name='" + option + "' id='" + option + "' value='" + option + "'> <label for='" + option + "'>" + option + "</label> </div>"; 49579 } 49580 updateOptions(options) { 49581 this.resetFilters(); 49582 $.each(options, (index, option) => { 49583 return this.appendOption(option); 49584 }); 49585 this.options = this.initOptions(); 49586 return this.enableAllOptions(); 49587 } 49588 collectFilterValues(values, result) { 49589 if (Array.isArray(values)) { 49590 return jQuery.each(values, (i, v) => { 49591 return this.collectFilterValues(v, result); 49592 }); 49593 } else if (values) { 49594 return result.push(String(values)); 49595 } 49596 } 49597 filterOptions() { 49598 var $listing, availableValues; 49599 this.disableAllOptions(); 49600 availableValues = []; 49601 $listing = this.category.closest("section.listing"); 49602 $listing.find(".cards.active [data-filters]").each((i, el) => { 49603 var e, raw; 49604 raw = el.getAttribute("data-filters"); 49605 if (!(raw && raw !== "")) { 49606 console.warn("[Category] data-filters attribute is missing or empty on element:", el); 49607 return; 49608 } 49609 try { 49610 return this.collectFilterValues(JSON.parse(raw), availableValues); 49611 } catch (error) { 49612 e = error; 49613 return console.warn("[Category] Failed to parse data-filters JSON:", raw, e); 49614 } 49615 }); 49616 if (availableValues.length > 0) { 49617 return $.each(this.options, (index, option) => { 49618 if (jQuery.inArray(option.name, availableValues) >= 0) { 49619 return option.enableOption(); 49620 } 49621 }); 49622 } else { 49623 return this.enableAllOptions(); 49624 } 49625 } 49626 }; 49627 module.exports = Category; 49628 }).call(exports); 49629 } 49630 }); 49631 49632 // apps/base/assets/javascripts/components/categories-filter/categories_filter.coffee 49633 var require_categories_filter = __commonJS({ 49634 "apps/base/assets/javascripts/components/categories-filter/categories_filter.coffee"(exports) { 49635 "use strict"; 49636 init_esbuild_shims(); 49637 (function() { 49638 var CategoriesFilter, Category; 49639 Category = require_category(); 49640 CategoriesFilter = class CategoriesFilter { 49641 constructor(filters1) { 49642 this.initCategories = this.initCategories.bind(this); 49643 this.attachEventHandlers = this.attachEventHandlers.bind(this); 49644 this.attachMobileCategoryNameHandler = this.attachMobileCategoryNameHandler.bind(this); 49645 this.triggerUpdateListing = this.triggerUpdateListing.bind(this); 49646 this.hasOptionsSelected = this.hasOptionsSelected.bind(this); 49647 this.updateListing = this.updateListing.bind(this); 49648 this.toggleClearButton = this.toggleClearButton.bind(this); 49649 this.updateOptions = this.updateOptions.bind(this); 49650 this.filters = filters1; 49651 this.clearButton = this.filters.find(".clear"); 49652 this.categories = {}; 49653 this.initCategories(); 49654 this.attachEventHandlers(); 49655 this.attachMobileCategoryNameHandler(); 49656 } 49657 initCategories() { 49658 return jQuery.each(this.filters.find(".category"), (index, category) => { 49659 var categoryName; 49660 categoryName = jQuery(category).data("filter"); 49661 return this.categories[categoryName] = new Category(jQuery(category), this.updateListing, categoryName, this.toggleClearButton); 49662 }); 49663 } 49664 attachEventHandlers() { 49665 jQuery(".listing-tabs").on("tab-change", (event2, content, tab) => { 49666 this.updateOptions(jQuery(tab).data("categories"));
49667 return this.triggerUpdateListing(); 49668 }); 49669 jQuery(window).on("filtered-paginate", (event2, updateFilters) => { 49670 var filters; 49671 filters = {}; 49672 jQuery.map(this.categories, (category, name) => { 49673 if (category.selectedFilters.length) { 49674 return filters[category.name] = category.selectedFilters; 49675 } 49676 }); 49677 return updateFilters(filters); 49678 }); 49679 return jQuery(this.clearButton).on("click", () => { 49680 $.each(this.categories, (name, category) => { 49681 return category.clearOptions(); 49682 }); 49683 return this.updateListing(); 49684 }); 49685 } 49686 attachMobileCategoryNameHandler() { 49687 if (window.innerWidth < 800) { 49688 return this.filters.find(".category .name").on("click", (e) => { 49689 var $category, $options; 49690 $category = jQuery(e.currentTarget).closest(".category"); 49691 $options = $category.find(".options"); 49692 return $options.toggle(); 49693 }); 49694 } 49695 } 49696 triggerUpdateListing(filters = {}) { 49697 jQuery(window).trigger("filtered-update-listing", filters); 49698 return this.toggleClearButton(); 49699 } 49700 hasOptionsSelected() { 49701 var optionsSelected; 49702 optionsSelected = false; 49703 $.each(this.categories, (name, category) => { 49704 if (category.numberSelected) { 49705 return optionsSelected = true; 49706 } 49707 }); 49708 return optionsSelected; 49709 } 49710 updateListing() { 49711 var filters; 49712 filters = {}; 49713 jQuery.map(this.categories, (category, name) => { 49714 return filters[category.name] = category.selectedFilters; 49715 }); 49716 return this.triggerUpdateListing(filters); 49717 } 49718 toggleClearButton() { 49719 if (this.hasOptionsSelected()) { 49720 return this.clearButton.show(); 49721 } else { 49722 return this.clearButton.hide(); 49723 } 49724 } 49725 updateOptions(categories) { 49726 return jQuery.map(categories, (options, name) => { 49727 if (this.categories[name]) { 49728 return this.categories[name].updateOptions(options); 49729 } 49730 }); 49731 } 49732 }; 49733 if (jQuery("div.categories-filter").length > 0) { 49734 new CategoriesFilter(jQuery("div.categories-filter")); 49735 } 49736 }).call(exports); 49737 } 49738 }); 49739 49740 // apps/base/assets/javascripts/components/categories_filter.coffee 49741 var require_categories_filter2 = __commonJS({ 49742 "apps/base/assets/javascripts/components/categories_filter.coffee"(exports) { 49743 "use strict"; 49744 init_esbuild_shims(); 49745 (function() { 49746 require_option(); 49747 require_category(); 49748 require_categories_filter(); 49749 }).call(exports); 49750 } 49751 }); 49752 49753 // apps/base/assets/javascripts/components/country_selector.coffee 49754 var require_country_selector = __commonJS({ 49755 "apps/base/assets/javascripts/components/country_selector.coffee"(exports) { 49756 "use strict"; 49757 init_esbuild_shims(); 49758 (function() { 49759 jQuery(".countryselection span.with-arrow").on("click", function(event2) { 49760 event2.preventDefault(); 49761 return jQuery(this).closest(".countryselection").toggleClass("active"); 49762 }); 49763 jQuery(".countrylist header a").on("click", function(event2) { 49764 var targetContinent; 49765 targetContinent = jQuery(this).data("tab"); 49766 jQuery(this).addClass("active").siblings().removeClass("active"); 49767 return jQuery("#" + targetContinent).addClass("active").siblings().removeClass("active"); 49768 }); 49769 jQuery(".countryselection").on("mouseleave", function() { 49770 return jQuery(this).removeClass("active"); 49771 }); 49772 jQuery(".countryselection-mobile").on("click", function(event2) { 49773 var icon; 49774 jQuery(".country-overview").toggleClass("country-active"); 49775 icon = jQuery(this).find("i.fas"); 49776 if (!icon.length) { 49777 return; 49778 } 49779 if (icon.hasClass("fa-caret-down")) { 49780 icon.removeClass("fa-caret-down"); 49781 return icon.addClass("fa-caret-up"); 49782 } else { 49783 icon.removeClass("fa-caret-up"); 49784 return icon.addClass("fa-caret-down"); 49785 } 49786 }); 49787 }).call(exports); 49788 } 49789 }); 49790 49791 // apps/base/assets/javascripts/components/data-tables/templates/date-picker.jst.hamlc 49792 var require_date_picker_jst = __commonJS({ 49793 "apps/base/assets/javascripts/components/data-tables/templates/date-picker.jst.hamlc"(exports) { 49794 "use strict"; 49795 init_esbuild_shims(); 49796 (function() {
49797 if (window.HAML == null) { 49798 window.HAML = {}; 49799 } 49800 window.HAML["date_picker"] = function(context) { 49801 return (function() { 49802 var $c, $e, $o; 49803 $e = function(text, escape2) { 49804 return ("" + text).replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/'/g, "'").replace(/\//g, "/").replace(/"/g, """); 49805 }; 49806 $c = function(text) { 49807 switch (text) { 49808 case null: 49809 case void 0: 49810 return ""; 49811 case true: 49812 case false: 49813 return "\x93" + text; 49814 default: 49815 return text; 49816 } 49817 }; 49818 $o = []; 49819 $o.push("<div class='filter'>\n <div class='date-input icon-calendar-after'>\n <input class='date-picker' id='filter-start' type='text' placeholder='" + $e($c(jQuery("#previous-requests").data("startDate"))) + "'>\n <div class='date-input-view' id='filter-start'></div>\n </div>\n <div class='date-input icon-calendar-after'>\n <input class='date-picker' id='filter-end' type='text' placeholder='" + $e($c(jQuery("#previous-requests").data("endDate"))) + "'>\n <div class='date-input-view' id='filter-end'></div>\n </div>\n</div>"); 49820 return $o.join("\n").replace(/\s([\w-]+)='Âtrue'/mg, " $1").replace(/\s([\w-]+)='Âfalse'/mg, "").replace(/\s(?:id|class)=(['"])(\1)/mg, ""); 49821 }).call(context); 49822 }; 49823 }).call(exports); 49824 } 49825 }); 49826 49827 // apps/base/assets/javascripts/components/data-tables/views/data_table_view.coffee 49828 var require_data_table_view = __commonJS({ 49829 "apps/base/assets/javascripts/components/data-tables/views/data_table_view.coffee"(exports, module) { 49830 "use strict"; 49831 init_esbuild_shims(); 49832 (function() { 49833 var DataTableView; 49834 DataTableView = class DataTableView { 49835 constructor(tableView) { 49836 this.selectAllRows = this.selectAllRows.bind(this); 49837 this.initDataTable = this.initDataTable.bind(this); 49838 this.showHeader = this.showHeader.bind(this); 49839 this.hideHeader = this.hideHeader.bind(this); 49840 this.showFooter = this.showFooter.bind(this); 49841 this.hideFooter = this.hideFooter.bind(this); 49842 this.hideInfo = this.hideInfo.bind(this); 49843 this.settings = this.settings.bind(this); 49844 this.removeRowById = this.removeRowById.bind(this); 49845 this.generateClassNames = this.generateClassNames.bind(this); 49846 this.initControls = this.initControls.bind(this); 49847 this.appendControls = this.appendControls.bind(this); 49848 this.setElements = this.setElements.bind(this); 49849 this.toggleControls = this.toggleControls.bind(this); 49850 this.moreThanOnePage = this.moreThanOnePage.bind(this); 49851 this.attachControlsEventHandlers = this.attachControlsEventHandlers.bind(this); 49852 this.initDatepickers = this.initDatepickers.bind(this); 49853 this.initDatePicker = this.initDatePicker.bind(this); 49854 this.initFilter = this.initFilter.bind(this); 49855 this.tableView = tableView; 49856 this.collapsibleTable = false; 49857 this.tableLength = 10; 49858 this.info = "<b>_TOTAL_</b> rows"; 49859 this.expandedTableLength = 50; 49860 this.emptyTableMessage = this.tableView.data("empty") || "No data available in table"; 49861 this.shouldPaginate = true; 49862 this.search = false; 49863 this.searchPlaceholder = this.tableView.data("search") || "Search"; 49864 this.previousPlaceholder = this.tableView.data("previous") || "Previous"; 49865 this.nextPlaceholder = this.tableView.data("next") || "Next"; 49866 this.showmorePlaceholder = this.tableView.data("showmore") || "Show more"; 49867 this.hidePlaceholder = this.tableView.data("hide") || "Hide"; 49868 this.totalsRowIndex = []; 49869 this.cellClasses = []; 49870 this.ordering = true; 49871 this.columnsOrderingDisabled = []; 49872 this.hasCheckboxes = false;
49873 this.scrollX = false; 49874 } 49875 selectAllRows() { 49876 return this.tableView.find('thead tr th:first-child input[type="checkbox"]').off().on("click", (e) => { 49877 var isSelected, j, len, ref, row; 49878 isSelected = jQuery(e.target).is(":checked"); 49879 ref = this.dataTable.rows().nodes(); 49880 for (j = 0, len = ref.length; j < len; j++) { 49881 row = ref[j]; 49882 jQuery(row).find('td:first-child input[type="checkbox"]').prop("checked", isSelected); 49883 } 49884 return this.dataTable.draw(); 49885 }); 49886 } 49887 initDataTable() { 49888 var context; 49889 context = this; 49890 return this.table = this.tableView.DataTable({ 49891 columns: this.generateClassNames(), 49892 searching: this.search, 49893 ordering: this.ordering, 49894 lengthChange: false, 49895 bPaginate: this.shouldPaginate, 49896 aaSorting: [], 49897 pageLength: this.tableLength, 49898 scrollX: this.scrollX, 49899 columnDefs: [ 49900 { 49901 "orderable": false, 49902 "targets": this.columnsOrderingDisabled 49903 } 49904 ], 49905 language: { 49906 info: this.info, 49907 emptyTable: this.emptyTableMessage, 49908 searchPlaceholder: this.searchPlaceholder, 49909 search: "", 49910 infoFiltered: "", 49911 paginate: { 49912 next: this.nextPlaceholder, 49913 previous: this.previousPlaceholder 49914 } 49915 }, 49916 createdRow: (e) => { 49917 this.showHeader(); 49918 return this.showFooter(); 49919 }, 49920 initComplete: (e) => { 49921 this.tableWrapper = this.tableView.parent(); 49922 if (this.collapsibleTable) { 49923 this.numberOfRows = e.aoData.length; 49924 return this.initControls(); 49925 } else if (!e.aoData.length) { 49926 this.hideHeader(); 49927 return this.hideInfo(); 49928 } 49929 }, 49930 fnDrawCallback: (oSettings) => { 49931 if (this.hasCheckboxes) { 49932 this.selectAllRows(); 49933 } 49934 if (oSettings._iDisplayLength > oSettings.fnRecordsDisplay()) { 49935 return $(oSettings.nTableWrapper).find(".dataTables_paginate").hide(); 49936 } else { 49937 return $(oSettings.nTableWrapper).find(".dataTables_paginate").show(); 49938 } 49939 }, 49940 footerCallback: function(row, data, start, end, display) { 49941 var api, columnIndex, intVal, j, len, pageTotal, ref, results; 49942 if (context.totalsRowIndex.length) { 49943 api = this.api(); 49944 ref = context.totalsRowIndex; 49945 results = []; 49946 for (j = 0, len = ref.length; j < len; j++) { 49947 columnIndex = ref[j]; 49948 intVal = function(i) { 49949 if (typeof i === "string") { 49950 return i.replace(/[\$,]/g, "") * 1; 49951 } else if (typeof i === "number") { 49952 return i; 49953 } else { 49954 return 0; 49955 } 49956 }; 49957 if (api.column(columnIndex).data().length) { 49958 pageTotal = api.column(columnIndex, { 49959 page: "current" 49960 }).data().reduce(function(a, b) { 49961 return Math.round((intVal(a) + intVal(b)) * 100) / 100; 49962 }); 49963 } else { 49964 pageTotal = 0; 49965 } 49966 results.push(jQuery(api.column(columnIndex).footer()).html("\u20AC" + parseFloat(pageTotal).toFixed(2))); 49967 } 49968 return results; 49969 } 49970 } 49971 }); 49972 } 49973 show() { 49974 return this.tableView.show(); 49975 } 49976 hide() { 49977 return this.tableView.hide(); 49978 } 49979 showHeader() { 49980 return this.tableView.find("thead").show(); 49981 } 49982 hideHeader() { 49983 return this.tableView.find("thead").hide(); 49984 } 49985 showFooter() { 49986 return this.tableView.find("tfoot").css("visibility", "visible"); 49987 } 49988 hideFooter() { 49989 return this.tableView.find("tfoot").css("visibility", "hidden"); 49990 } 49991 hideInfo() { 49992 return this.tableWrapper.find(".dataTables_info").hide(); 49993 } 49994 settings() { 49995 return this.dataTable.settings(); 49996 } 49997 removeRowById(id) { 49998 return this.dataTable.row(jQuery("#" + id)).remove().draw(); 49999 } 50000 generateClassNames() { 50001 var column, j, len, ref; 50002 if (this.COLUMNS) { 50003 this.cellClasses = []; 50004 ref = this.COLUMNS; 50005 for (j = 0, len = ref.length; j < len; j++) { 50006 column = ref[j]; 50007 this.cellClasses.push({ 50008 className: column 50009 }); 50010 } 50011 } 50012 if (this.cellClasses.length) { 50013 return this.cellClasses; 50014 } else { 50015 return null; 50016 } 50017 } 50018 initControls() { 50019 this.pagination = jQuery(this.tableView).closest(".dataTables_wrapper").find(".dataTables_paginate"); 50020 if (this.numberOfRows > this.tableLength) {
50021 this.appendControls(); 50022 this.setElements(); 50023 this.attachControlsEventHandlers(); 50024 } else if (!this.numberOfRows) { 50025 this.hideHeader(); 50026 this.hideInfo(); 50027 } 50028 return this.pagination.toggle(false); 50029 } 50030 appendControls() { 50031 this.tableWrapper.append('<a class="show-more">' + this.showmorePlaceholder + "</a>"); 50032 this.tableWrapper.append('<a class="hide">' + this.hidePlaceholder + "</a>"); 50033 return this.tableView.append('<div class="gradient"></div>'); 50034 } 50035 setElements() { 50036 this.showMoreButton = this.tableWrapper.find(".show-more"); 50037 this.hideButton = this.tableWrapper.find(".hide"); 50038 return this.gradient = this.tableWrapper.find(".gradient"); 50039 } 50040 toggleControls() { 50041 this.showMoreButton.toggle(); 50042 this.hideButton.toggle(); 50043 return this.gradient.toggle(); 50044 } 50045 moreThanOnePage() { 50046 return this.dataTable.page.info().pages > 1; 50047 } 50048 attachControlsEventHandlers() { 50049 this.showMoreButton.on("click", (e) => { 50050 this.settings()[0]._iDisplayLength = this.settings()[0].fnRecordsTotal(); 50051 this.dataTable.page.len(this.expandedTableLength).draw(); 50052 this.toggleControls(); 50053 this.pagination.toggle(this.moreThanOnePage()); 50054 if (this.popup) { 50055 this.popup.initPopup(); 50056 } 50057 if (this.pendingRequests) { 50058 return this.initPendingRequests(); 50059 } 50060 }); 50061 return this.hideButton.on("click", (e) => { 50062 this.settings()[0]._iDisplayLength = this.tableLength; 50063 this.dataTable.draw(); 50064 this.toggleControls(); 50065 this.pagination.toggle(false); 50066 return jQuery("html, body").animate({ 50067 scrollTop: this.tableView.offset().top - 160 50068 }, 300); 50069 }); 50070 } 50071 initDatepickers(tableContainer, dateIndex) { 50072 var lang, startPicker; 50073 this.tableContainer = tableContainer; 50074 startPicker = jQuery(".date-picker#filter-start"); 50075 lang = startPicker.data("language"); 50076 jQuery.fn.datepicker.dates[lang] = jQuery.fn.datepicker.dates["en"]; 50077 jQuery.fn.datepicker.dates[lang].months = startPicker.data("months"); 50078 jQuery.fn.datepicker.dates[lang].monthsShort = startPicker.data("months-abbr"); 50079 this.initDatePicker("filter-start", lang); 50080 this.initDatePicker("filter-end", lang); 50081 return this.tableContainer.find(".date-picker").on("change", (e) => { 50082 jQuery.fn.dataTableExt.afnFiltering.push(function(oSettings, aData, iDataIndex) { 50083 var beg, end; 50084 if (jQuery(oSettings.nTable).hasClass("has-date-filter")) { 50085 beg = jQuery("#filter-start").datepicker("getDate"); 50086 end = jQuery("#filter-end").datepicker("getDate"); 50087 if (typeof aData._date === "undefined") { 50088 aData._date = (/* @__PURE__ */ new Date("1 " + $(".request-month").attr("data-beginning"))).getTime(); 50089 } 50090 if (beg && !isNaN(beg)) { 50091 if (aData._date < beg.getTime()) { 50092 return false; 50093 } 50094 } 50095 if (end && !isNaN(end)) { 50096 if (aData._date > end.getTime()) { 50097 return false; 50098 } 50099 } 50100 } 50101 return true; 50102 }); 50103 return this.dataTable.draw(); 50104 }); 50105 } 50106 initDatePicker(id, lang) { 50107 return jQuery(".date-picker#" + id).datepicker({ 50108 autoclose: true, 50109 format: { 50110 toDisplay: (date, format, language) => { 50111 jQuery("#" + id + "_month").val(date); 50112 return this.localizedDateString(language, date); 50113 }, 50114 toValue: (date, format, language) => { 50115 return void 0; 50116 } 50117 }, 50118 minViewMode: 1, 50119 container: ".date-input-view#" + id, 50120 orientation: "bottom right", 50121 language: lang 50122 }); 50123 } 50124 localizedDateString(language, date) { 50125 var string;
50126 string = date.toLocaleDateString(language, { 50127 month: "long" 50128 }) + " " + date.toLocaleDateString(language, { 50129 year: "numeric" 50130 }); 50131 return string[0].toUpperCase() + string.substr(1); 50132 } 50133 initFilter(columnIndex) { 50134 this.tableView.find(".status-filter, .active-filters").on("click", (e) => { 50135 var activeFilters, filters, input, j, len, ref; 50136 filters = []; 50137 activeFilters = 0; 50138 ref = this.tableView.find(".filter-popup li label input"); 50139 for (j = 0, len = ref.length; j < len; j++) { 50140 input = ref[j]; 50141 if (jQuery(input).is(":checked")) { 50142 filters.push(jQuery(input).data("value")); 50143 activeFilters++; 50144 } 50145 } 50146 if (activeFilters > 0) { 50147 jQuery(".active-filters").html(activeFilters); 50148 jQuery(".active-filters").show(); 50149 jQuery(".status-filter").addClass("active"); 50150 } else { 50151 jQuery(".active-filters").html(""); 50152 jQuery(".active-filters").hide(); 50153 jQuery(".status-filter").removeClass("active"); 50154 } 50155 this.tableView.DataTable().columns(columnIndex).search(filters.join("|"), true, false).draw(); 50156 return this.tableView.find(".filter-popup").toggle(); 50157 }); 50158 return this.tableView.find(".clear-filter").on("click", (e) => { 50159 var activeFilters, filters, input, j, len, ref, results; 50160 filters = []; 50161 activeFilters = 0; 50162 jQuery(".active-filters").hide(); 50163 jQuery(".status-filter").removeClass("active"); 50164 ref = this.tableView.find(".filter-popup li label input"); 50165 results = []; 50166 for (j = 0, len = ref.length; j < len; j++) { 50167 input = ref[j]; 50168 jQuery(input).removeAttr("checked"); 50169 filters.push(jQuery(input).data("value")); 50170 results.push(this.tableView.DataTable().columns(columnIndex).search(filters.join("|"), true, false).draw()); 50171 } 50172 return results; 50173 }); 50174 } 50175 }; 50176 module.exports = DataTableView; 50177 }).call(exports); 50178 } 50179 }); 50180 50181 // apps/base/assets/javascripts/components/downloads.coffee 50182 var require_downloads2 = __commonJS({ 50183 "apps/base/assets/javascripts/components/downloads.coffee"(exports) { 50184 "use strict"; 50185 init_esbuild_shims(); 50186 (function() { 50187 jQuery(document).on("click", "div.download a.more", (event2) => { 50188 return jQuery(event2.currentTarget).toggleClass("expand").siblings().slideToggle(200); 50189 }); 50190 jQuery(document).on("click", "div.compact-download a.more", (event2) => { 50191 return jQuery(event2.currentTarget).toggleClass("expand").siblings("ul").slideToggle(200); 50192 }); 50193 jQuery(document).on("click", "div a.show-more-downloads", (event2) => { 50194 var oldText; 50195 jQuery(event2.currentTarget).parents(".downloads").find(".initialy-hidden").toggle(); 50196 oldText = jQuery(event2.currentTarget).text(); 50197 jQuery(event2.currentTarget).text(jQuery(event2.currentTarget).data("replace-text")); 50198 return jQuery(event2.currentTarget).data("replace-text", oldText); 50199 }); 50200 }).call(exports); 50201 } 50202 }); 50203 50204 // apps/base/assets/javascripts/components/droptarget.coffee 50205 var require_droptarget = __commonJS({ 50206 "apps/base/assets/javascripts/components/droptarget.coffee"(exports) { 50207 "use strict"; 50208 init_esbuild_shims(); 50209 (function() { 50210 var DropTarget; 50211 DropTarget = class DropTarget { 50212 constructor($el) { 50213 this.initDropTarget = this.initDropTarget.bind(this); 50214 this.handleUpload = this.handleUpload.bind(this); 50215 this.populateFileInformation = this.populateFileInformation.bind(this); 50216 this.$el = $el; 50217 this.dropTarget = this.$el; 50218 this.file = []; 50219 this.initDropTarget(); 50220 } 50221 initDropTarget() { 50222 this.dropTarget.on("click", (e) => { 50223 if (this.dropTarget.hasClass("uploaded")) { 50224 return e.preventDefault(); 50225 } 50226 }); 50227 this.dropTarget.on("drag dragstart dragend dragover dragenter dragleave drop", (e) => { 50228 return e.preventDefault(); 50229 }); 50230 this.dropTarget.on("dragover dragenter mouseenter", function(e) { 50231 if ((e.type === "dragover" || e.type === "mouseenter") && (!$(this).hasClass("added") && !$(this).hasClass("uploaded"))) { 50232 return $(this).addClass("is-dragover"); 50233 } 50234 }).on("dragleave dragend drop mouseleave", function() { 50235 return $(this).removeClass("is-dragover"); 50236 }); 50237 this.dropTarget.find("input#file").on("change", (e) => { 50238 return this.handleUpload(e); 50239 }); 50240 this.dropTarget.on("drop", (e) => { 50241 return this.handleUpload(e); 50242 }); 50243 return this.dropTarget.find(".delete").on("click", function(e) { 50244 e.preventDefault(); 50245 $(e.target).closest('input[type="file"]').val(""); 50246 return $(e.target).closest(".droptarget").removeClass("added"); 50247 }); 50248 } 50249 handleUpload(event2) { 50250 this.file = event2.type === "drop" ? event2.originalEvent.dataTransfer.files[0] : event2.target.files[0]; 50251 return this.populateFileInformation(this.file); 50252 } 50253 populateFileInformation(file) { 50254 this.dropTarget.addClass("added"); 50255 return this.dropTarget.find(".uploaded-file .name").text(file.name); 50256 } 50257 formatFileSize(bytes) { 50258 var i, k; 50259 if (bytes === 0) { 50260 "0 Bytes"; 50261 } 50262 k = 1e3; 50263 i = Math.floor(Math.log(bytes) / Math.log(k)); 50264 return parseFloat((bytes / __pow(k, i)).toFixed(0)) + " " + ["Bytes", "KB", "MB", "GB"][i]; 50265 } 50266 }; 50267 jQuery(function() { 50268 if ($("label.droptarget").length > 0) { 50269 return new DropTarget($("label.droptarget")); 50270 } 50271 }); 50272 }).call(exports); 50273 } 50274 }); 50275 50276
50276// apps/base/assets/javascripts/components/expandable_listing.ts 50277 var require_expandable_listing = __commonJS({ 50278 "apps/base/assets/javascripts/components/expandable_listing.ts"() { 50279 "use strict"; 50280 init_esbuild_shims(); 50281 var ExpandableListing = class { 50282 constructor(opts = {}) { 50283 this.bind = () => { 50284 const eventName = `click.${this.options.namespace}`; 50285 this.options.bindTo.removeEventListener("click", this.handleClick); 50286 this.options.bindTo.addEventListener("click", this.handleClick); 50287 }; 50288 this.handleClick = (e) => { 50289 const target = e.target; 50290 if (!target.matches(this.options.toggleSelector)) { 50291 return; 50292 } 50293 e.preventDefault(); 50294 const root = target.closest(this.options.rootSelector); 50295 if (!root) { 50296 return; 50297 } 50298 let panel = null; 50299 const controls = target.getAttribute("aria-controls"); 50300 if (controls) { 50301 panel = document.getElementById(controls); 50302 } 50303 if (!panel) { 50304 panel = root.querySelector(this.options.panelSelector); 50305 } 50306 const isExpanded = root.classList.toggle(this.options.expandedClass); 50307 target.setAttribute("aria-expanded", String(isExpanded)); 50308 if (panel) { 50309 panel.hidden = !isExpanded; 50310 } 50311 const more = target.dataset.more || "Show more"; 50312 const less = target.dataset.less || "Show less"; 50313 target.textContent = isExpanded ? less : more; 50314 }; 50315 const defaults = { 50316 rootSelector: ".expandable", 50317 // element that gets is-expanded 50318 toggleSelector: ".js-expandable-toggle", 50319 // button/link that toggles 50320 panelSelector: ".expandable__more", 50321 // collapsible area within root 50322 expandedClass: "is-expanded", 50323 namespace: "expandable", 50324 bindTo: document 50325 // delegated bind target 50326 }; 50327 this.options = __spreadValues(__spreadValues({}, defaults), opts); 50328 this.bind(); 50329 } 50330 }; 50331 document.addEventListener("DOMContentLoaded", () => new ExpandableListing()); 50332 } 50333 }); 50334 50335 // apps/base/assets/javascripts/components/expandable_row.coffee 50336 var require_expandable_row = __commonJS({ 50337 "apps/base/assets/javascripts/components/expandable_row.coffee"(exports) { 50338 "use strict"; 50339 init_esbuild_shims(); 50340 (function() { 50341 jQuery("body").on("click", "tr.togglerow", function(event2) { 50342 var row; 50343 if (!jQuery(event2.target).hasClass("delete-licence")) { 50344 row = jQuery(event2.currentTarget); 50345 row.toggleClass("open"); 50346 row.find(".toggleable-angle").toggleClass("icon-angle-right icon-angle-down"); 50347 row.next("tr.slidetoggle").stop().slideToggle(0); 50348 if (row.hasClass("open") && row.next("tr.slidetoggle").find("[data-feature-highlight]").length > 0) { 50349 return new FeatureShowcase(row.next("tr.slidetoggle").find("[data-feature-highlight]")); 50350 } 50351 } 50352 }); 50353 }).call(exports); 50354 } 50355 }); 50356 50357 // apps/base/assets/javascripts/components/export_downloader.coffee 50358 var require_export_downloader = __commonJS({ 50359 "apps/base/assets/javascripts/components/export_downloader.coffee"(exports) { 50360 "use strict"; 50361 init_esbuild_shims(); 50362 (function() { 50363 var ExportDownloader; 50364 ExportDownloader = class ExportDownloader { 50365 constructor(el) { 50366 this.onDownloadResponse = this.onDownloadResponse.bind(this); 50367 this.awaitDownloadResponse = this.awaitDownloadResponse.bind(this); 50368 this.el = el; 50369 this.max_response_tries = 2e3; 50370 jQuery.removeCookie("download_finished", { 50371 path: "/" 50372 }); 50373 jQuery(".export").addClass("pending"); 50374 jQuery(".icon-loading").css("visibility", "visible"); 50375 this.interval = setInterval(this.awaitDownloadResponse, 250); 50376 jQuery("#export-form").submit(); 50377 this.response_tries = 0; 50378 } 50379 onDownloadResponse() { 50380 jQuery(".icon-loading").css("visibility", "hidden");
50381 jQuery(".export").removeClass("pending"); 50382 jQuery.removeCookie("download_finished", { 50383 path: "/" 50384 }); 50385 return clearInterval(this.interval); 50386 } 50387 awaitDownloadResponse() { 50388 if (jQuery.cookie("download_finished")) { 50389 return this.onDownloadResponse(); 50390 } else if (this.response_tries < this.max_response_tries) { 50391 return this.response_tries++; 50392 } else { 50393 return this.onDownloadResponse(); 50394 } 50395 } 50396 }; 50397 }).call(exports); 50398 } 50399 }); 50400 50401 // apps/base/assets/javascripts/components/follow_anchor.coffee 50402 var require_follow_anchor = __commonJS({ 50403 "apps/base/assets/javascripts/components/follow_anchor.coffee"(exports) { 50404 "use strict"; 50405 init_esbuild_shims(); 50406 (function() { 50407 var followAnchor; 50408 followAnchor = function(event2) { 50409 var element, link; 50410 element = jQuery(event2.currentTarget); 50411 if (window.isMobile() && !element.hasClass("newsletter")) { 50412 link = element.find("a").attr("href"); 50413 if (link) { 50414 return window.location.href = link; 50415 } 50416 } 50417 }; 50418 jQuery(".cta").on("click", followAnchor); 50419 jQuery(".js-packery").find("article").on("click", followAnchor); 50420 }).call(exports); 50421 } 50422 }); 50423 50424 // apps/base/assets/javascripts/components/footer.coffee 50425 var require_footer = __commonJS({ 50426 "apps/base/assets/javascripts/components/footer.coffee"(exports) { 50427 "use strict"; 50428 init_esbuild_shims(); 50429 (function() { 50430 jQuery("footer section .icon-plus").on("click", function() { 50431 return jQuery(this).closest(".footer-list").addClass("expanded"); 50432 }); 50433 jQuery("footer section .icon-minus-circle").on("click", function() { 50434 return jQuery(this).closest(".footer-list").removeClass("expanded"); 50435 }); 50436 }).call(exports); 50437 } 50438 }); 50439 50440 // apps/base/assets/javascripts/components/footer-old.coffee 50441 var require_footer_old = __commonJS({ 50442 "apps/base/assets/javascripts/components/footer-old.coffee"(exports) { 50443 "use strict"; 50444 init_esbuild_shims(); 50445 (function() { 50446 jQuery("footer section > ul").on("click", function() { 50447 return jQuery(this).toggleClass("expanded"); 50448 }); 50449 }).call(exports); 50450 } 50451 }); 50452 50453 // apps/base/assets/javascripts/components/form/views/field_view.coffee 50454 var FormFieldView, field_view_default; 50455 var init_field_view = __esm({ 50456 "apps/base/assets/javascripts/components/form/views/field_view.coffee"() { 50457 "use strict"; 50458 init_esbuild_shims(); 50459 window.FormFieldView = FormFieldView = class FormFieldView2 { 50460 constructor($el) { 50461 this.initialize = this.initialize.bind(this); 50462 this.initializeProductSelectField = this.initializeProductSelectField.bind(this); 50463 this.resetInput = this.resetInput.bind(this); 50464 this.showValid = this.showValid.bind(this); 50465 this.showValidationError = this.showValidationError.bind(this); 50466 this.$el = $el; 50467 this.language = jQuery("meta[name=language]").attr("content") || "en"; 50468 this.name = this.$el.data("field-element-name"); 50469 this.userFriendlyName = this.$el.data("field-name"); 50470 this.subscribers = []; 50471 this.initialize(); 50472 this.attachEvents(); 50473 this.select2 = this.$el.find("select.select2"); 50474 if (this.shouldTriggerValidationOnInit()) { 50475 this.triggerValidation(); 50476 } 50477 } 50478 initialize() { 50479 if (this.$el.find(".selectbox.repairs").length > 0 || this.$el.find('select[name="form_field[product_type_name]"]').length > 0) { 50480 if ($(".fast-replacement-request").length > 0) { 50481 return this.initializeProductSelectField("fast-replacement"); 50482 } else { 50483 return this.initializeProductSelectField("repair-request"); 50484 } 50485 } 50486 } 50487 initializeProductSelectField(pageType) { 50488 var formatResult, formatResultSelection, minimumSearchText, selectPlaceholder; 50489 this.repairLeadTimes = {}; 50490 selectPlaceholder = this.$el.find("label"); 50491 selectPlaceholder.hide(); 50492 selectPlaceholder = selectPlaceholder.html(); 50493 minimumSearchText = this.$el.find(".selectbox").data("minimum-text"); 50494 if (!minimumSearchText) { 50495 minimumSearchText = "Please enter 3 or more characters"; 50496 } 50497 formatResult = function(item) { 50498 if (item.loading) { 50499 return item.text; 50500 } 50501 return item.id; 50502 }; 50503 formatResultSelection = function(item) { 50504 return item.text; 50505 }; 50506 this.$el.find("select").select2({ 50507 allowClear: true, 50508 ajax: { 50509 url: "/" + this.language + "/api/repair_request/products.json", 50510 dataType: "json", 50511 delay: 250, 50512 data: function(params) { 50513 return { 50514 q: params.term, 50515 page: params.page, 50516 page_type: pageType 50517 }; 50518 }, 50519 processResults: (data, params) => { 50520 this.repairLeadTimes = {}; 50521 return { 50522 results: jQuery.map(data.results, (item) => { 50523 var arr; 50524 this.repairLeadTimes[item.description] = item.repair_lead_time; 50525 arr = { 50526 id: item.description, 50527 text: item.description 50528 }; 50529 return arr; 50530 }) 50531 }; 50532 } 50533 }, 50534 placeholder: selectPlaceholder, 50535 escapeMarkup: function(markup) { 50536 return markup; 50537 }, 50538 minimumInputLength: 3, 50539 templateResult: formatResult, 50540 templateSelection: formatResultSelection, 50541 language: { 50542 inputTooShort: function(args) { 50543 return minimumSearchText; 50544 } 50545 } 50546 }); 50547 this.$el.find("select").on("select2:select", (e) => { 50548 var data, leadTime; 50549 data = e.params.data; 50550 leadTime = this.repairLeadTimes[e.params.data.id]; 50551 if (!leadTime || leadTime.trim() === "") { 50552 jQuery(".repair-lead-time span.value").html(jQuery(".repair-lead-time span.value").attr("data-fallback")); 50553 jQuery(".repair-lead-time span.note").hide(); 50554 } else { 50555 jQuery(".repair-lead-time span.value").html(leadTime); 50556 jQuery(".repair-lead-time span.note").show(); 50557 } 50558 return jQuery(".repair-lead-time").show(); 50559 }); 50560 return this.$el.find("select").on("select2:unselect", (e) => { 50561 return jQuery(".repair-lead-time").hide(); 50562 }); 50563 } 50564 attachEvents() { 50565 var input, select; 50566 input = this.$el.find("input"); 50567 if (input.data("type") === "date") { 50568 jQuery.each(this.$el.find("input.date"), (i, field) => { 50569 var i18n; 50570 i18n = { 50571 months: jQuery(field).data("months"), 50572 weekdays: jQuery(field).data("weekdays"), 50573 weekdaysShort: jQuery(field).data("short-weekdays") 50574 }; 50575 return new Pikaday({ 50576 field, 50577 i18n 50578 }); 50579 }); 50580 } 50581 select = this.$el.find("select"); 50582 if (select.data("type") === "country") { 50583 select.select2({ 50584 width: "100%" 50585 }); 50586 } 50587 if (this.$el.find("select[data-type='pspd-select']").length > 0) { 50588 this.pspdOptions = this.$el.find("select[data-type='pspd-select'] option").clone(); 50589 } 50590 if (this.$el.find("select[data-type='pspd-country-select']").length > 0) { 50591 this.updatePSPDSelectionOptions(); 50592 } 50593 this.$el.find("select[data-type='pspd-country-select']").on("change", (event2) => { 50594 this.updatePSPDSelectionOptions(); 50595 return jQuery("select[data-type='pspd-select']").removeClass("hidden"); 50596 }); 50597 this.$el.find("input, select, textarea").on("change", (event2) => { 50598 if (this.shouldValidate(event2)) { 50599 return this.triggerValidation(); 50600 } 50601 }); 50602 return this.$el.find("input, select, textarea").on("blur", (event2) => { 50603 if (this.hasValue() && this.shouldValidate(event2)) { 50604 return this.triggerValidation(); 50605 } 50606 }); 50607 } 50608 subscribe(to, callback) { 50609 return this.subscribers.push({ 50610 to, 50611 callback 50612 }); 50613 } 50614 show() { 50615 this.$el.removeClass("hidden"); 50616 this.$el.find("input").prop("disabled", false); 50617 if (this.select2) { 50618 this.select2.prop("disabled", false); 50619 } 50620 if (this.hasValue() && this.shouldValidate()) { 50621 return this.triggerValidation(); 50622 } 50623 } 50624 hide() { 50625 this.$el.addClass("hidden"); 50626 this.resetInput(); 50627 if (this.select2) { 50628 this.select2.prop("disabled", true); 50629 } 50630 this.triggerValidation(); 50631 return this.$el.find("input").prop("disabled", true); 50632 } 50633 resetInput() { 50634 return this.$el.find("input").removeAttr("checked"); 50635 } 50636 triggerValidation() { 50637 var j, len, ref, results, subscriber; 50638 ref = this.subscribers; 50639 results = []; 50640 for (j = 0, len = ref.length; j < len; j++) { 50641 subscriber = ref[j]; 50642 if (subscriber.to === "change") { 50643 results.push(subscriber.callback(this.name)); 50644 } 50645 } 50646 return results; 50647 } 50648 isVisible() { 50649 return !this.$el.hasClass("hidden"); 50650 } 50651 showPlaceholders() { 50652 return this.$el.find("[data-placeholder]").each(function(index, element) { 50653 return jQuery(element).attr("placeholder", jQuery(element).data("placeholder")); 50654 }); 50655 } 50656 showValid(value) { 50657 if (value) {
50658 this.$el.addClass("valid").removeClass("invalid notify"); 50659 return this.$el.find("p.notification").stop().slideUp(); 50660 } else { 50661 return this.resetState(); 50662 } 50663 } 50664 resetState() { 50665 return this.$el.removeClass("valid invalid notify"); 50666 } 50667 showValidationError(error) { 50668 this.setValidationError(error); 50669 return this.$el.removeClass("valid").addClass("invalid notify"); 50670 } 50671 setValidationError(error) { 50672 var errorMessage; 50673 errorMessage = error.replace("[field]", this.userFriendlyName); 50674 return this.$el.find("p.notification").html(errorMessage).stop().show(); 50675 } 50676 resetValidationError() { 50677 this.$el.find("p.notification").html("").hide(); 50678 return this.$el.removeClass("invalid notify"); 50679 } 50680 shouldValidate(event2) { 50681 if (event2) { 50682 return jQuery(event2.currentTarget).attr("data-type") !== "pspd-country-select"; 50683 } else { 50684 return !this.$el.hasClass("pspd_select"); 50685 } 50686 } 50687 getValue() { 50688 if (this.$el.find("input[name='" + this.name + "']:radio").length > 0) { 50689 if (this.$el.find("input[name='" + this.name + "']:radio:checked").length === 0) { 50690 return ""; 50691 } 50692 return this.$el.find("input[name='" + this.name + "']:radio:checked").val(); 50693 } 50694 if (this.$el.find("input[name='" + this.name + "'][type='checkbox']").length > 0) { 50695 if (this.$el.find("input[name='" + this.name + "']").is(":checked")) { 50696 return "on"; 50697 } else { 50698 return ""; 50699 } 50700 } 50701 if (this.$el.hasClass("magic-field") && this.$el.find("input[type='checkbox']").length > 0) { 50702 if (this.$el.find("input[type='checkbox']").is(":checked")) { 50703 return "on"; 50704 } else { 50705 return ""; 50706 } 50707 } 50708 if (this.$el.find(".select2[name='" + this.name + "']").length > 0) { 50709 if (!this.$el.find(".select2[name='" + this.name + "']").val()) { 50710 return ""; 50711 } 50712 return this.$el.find(".select2[name='" + this.name + "']").val(); 50713 } 50714 return this.$el.find("input[name='" + this.name + "'],select[name='" + this.name + "'],textarea[name='" + this.name + "']").val(); 50715 } 50716 hasValue() { 50717 return this.getValue() !== ""; 50718 } 50719 getKey() { 50720 if (this.$el.find("input[name='" + this.name + "']:radio").length > 0) { 50721 if (this.$el.find("input[name='" + this.name + "']:radio:checked").length === 0) { 50722 return ""; 50723 } 50724 return this.$el.find("input[name='" + this.name + "']:radio:checked").data("key"); 50725 } 50726 if (this.$el.find("select[name='" + this.name + "']").length > 0) { 50727 if (this.$el.find("select[name='" + this.name + "']").hasClass("country")) { 50728 return this.$el.find("select[name='" + this.name + "']").find("option:selected").val(); 50729 } else { 50730 return this.$el.find("select[name='" + this.name + "']").find("option:selected").data("key"); 50731 } 50732 } 50733 return this.$el.find("input[name='" + this.name + "'],textarea[name='" + this.name + "']").data("key"); 50734 } 50735 shouldTriggerValidationOnInit() { 50736 return this.hasValue() && this.shouldValidate(); 50737 } 50738 updatePSPDSelectionOptions() { 50739 var selectedCountry; 50740 selectedCountry = this.$el.find("select[data-type='pspd-country-select']").val(); 50741 this.$el.find("select[data-type='pspd-select'] option").remove(); 50742 return this.pspdOptions.each((index, element) => { 50743 if (!jQuery(element).attr("data-country") || jQuery(element).attr("data-country") === selectedCountry) { 50744 return this.$el.find("select[data-type='pspd-select']").append(element); 50745 } 50746 }); 50747 } 50748 }; 50749 field_view_default = FormFieldView; 50750 } 50751 }); 50752 50753 // apps/base/assets/javascripts/components/form/views/result_view.coffee 50754 var FormResultView, result_view_default; 50755 var init_result_view = __esm({ 50756 "apps/base/assets/javascripts/components/form/views/result_view.coffee"() { 50757 "use strict"; 50758 init_esbuild_shims(); 50759 result_view_default = FormResultView = class FormResultView2 { 50760 constructor($el) { 50761 this.showAndStartDownload = this.showAndStartDownload.bind(this); 50762 this.$el = $el; 50763 this.$successMessage = this.$el.find(".success"); 50764 this.$failureMessage = this.$el.find(".failure"); 50765 this.$downloadLink = this.$el.find("a.button"); 50766 } 50767 show() { 50768 return this.$el.show(); 50769 } 50770 hide() { 50771 return this.$el.hide(); 50772 } 50773 showSuccessMessage() { 50774 this.$successMessage.show(); 50775 return this.show(); 50776 } 50777 showGlobalErrorMessage(error) { 50778 var errorMessage; 50779 errorMessage = this.$failureMessage.html().replace("[details]", error); 50780 this.$failureMessage.html(errorMessage).show(); 50781 return this.show(); 50782 } 50783 hideGlobalErrorMessage() { 50784 this.$failureMessage.hide(); 50785 return this.hide(); 50786 } 50787 showAndStartDownload(download) { 50788 this.$downloadLink.attr("href", download.url); 50789 this.$downloadLink.html(download.title).show(); 50790 return window.location.href = download.url; 50791 } 50792 }; 50793 } 50794 }); 50795 50796 // apps/base/assets/javascripts/components/form/views/form_view.coffee 50797 var FormView, form_view_default; 50798 var init_form_view = __esm({ 50799 "apps/base/assets/javascripts/components/form/views/form_view.coffee"() { 50800 "use strict"; 50801 init_esbuild_shims(); 50802 form_view_default = FormView = class FormView2 { 50803 constructor($form) { 50804 this.$form = $form; 50805 this.$inlineFormContainer = this.$form.parents(".inline-form-container"); 50806 this.isMultiStep = false;
50807 this.initializeForm(); 50808 } 50809 initializeForm() { 50810 if (this.$form.parents(".form-popup-wrapper").length === 0) { 50811 this.setCurrentFormStep(1); 50812 } 50813 return this.setJavascript(); 50814 } 50815 toggleShownState() { 50816 this.$form.stop().slideToggle(250); 50817 return this.$inlineFormContainer.toggleClass("collapsed expanded"); 50818 } 50819 isExpanded() { 50820 return this.$inlineFormContainer.hasClass("expanded"); 50821 } 50822 isCollapsed() { 50823 return !this.isExpanded(); 50824 } 50825 show() { 50826 return this.$form.show(); 50827 } 50828 hide() { 50829 return this.$form.hide(); 50830 } 50831 shouldHideUponSuccess() { 50832 return this.$form.attr("data-hide-on-success") !== "false"; 50833 } 50834 setJavascript() { 50835 return jQuery("input[name='form_meta[javascript]']").val(1); 50836 } 50837 setCurrentFormStep(step) { 50838 return this.$form.find("input[name='step']").val(step); 50839 } 50840 showLoadingIndicator() { 50841 this.$form.find(".custom-icon").css("display", "none"); 50842 return this.$form.find("button[type='submit']").addClass("loading").prop("disabled", true); 50843 } 50844 hideLoadingIndicator() { 50845 return this.$form.find("button[type='submit']").removeClass("loading").prop("disabled", false); 50846 } 50847 hideIntroMessage() { 50848 return this.$form.find("div.intro").hide(); 50849 } 50850 showSecondStep() { 50851 this.$form.find(".step1").hide(); 50852 this.$form.find(".step2").removeClass("hidden").show(); 50853 return this.setCurrentFormStep(2); 50854 } 50855 }; 50856 } 50857 }); 50858 50859 // apps/base/assets/javascripts/components/form/views/product_code_field_view.coffee 50860 var ProductCodeFieldView, product_code_field_view_default; 50861 var init_product_code_field_view = __esm({ 50862 "apps/base/assets/javascripts/components/form/views/product_code_field_view.coffee"() { 50863 "use strict"; 50864 init_esbuild_shims(); 50865 product_code_field_view_default = ProductCodeFieldView = class ProductCodeFieldView2 { 50866 constructor(field, productGroupFieldset) { 50867 this.attachEventHandlers = this.attachEventHandlers.bind(this); 50868 this.fetchProductGroup = this.fetchProductGroup.bind(this); 50869 this.setItemProductGroup = this.setItemProductGroup.bind(this); 50870 this.populateProductGroup = this.populateProductGroup.bind(this); 50871 this.toggleProdutGroup = this.toggleProdutGroup.bind(this); 50872 this.initSelect2 = this.initSelect2.bind(this); 50873 this.field = field; 50874 this.productGroupFieldset = productGroupFieldset; 50875 this.initSelect2(); 50876 this.attachEventHandlers(); 50877 this.showProductGroup = true; 50878 this.language = jQuery(".campaign-form > .form").data("language"); 50879 this.prefilledValue = this.field.val(); 50880 if (this.prefilledValue) { 50881 this.fetchProductGroup(this.prefilledValue); 50882 } 50883 } 50884 attachEventHandlers() { 50885 return this.field.on("select2:select", (e) => { 50886 var selectedItem; 50887 selectedItem = e.target.value; 50888 this.showProductGroup = false; 50889 jQuery.each(jQuery(".option-data").data("options"), (i, item) => { 50890 return this.setItemProductGroup(selectedItem, item); 50891 }); 50892 return this.toggleProdutGroup(); 50893 }); 50894 } 50895 fetchProductGroup(item) { 50896 return jQuery.ajax({ 50897 url: `/${this.language}/api/eplan/files.json?name=` + item, 50898 success: (results) => { 50899 if (results.items.length) { 50900 return this.productGroupFieldset.find("input").val(results.items[0].product_group[0]); 50901 } 50902 } 50903 }); 50904 } 50905 setItemProductGroup(selectedItem, item) { 50906 if (item.description === selectedItem && item.product_group.length) { 50907 return this.populateProductGroup(item.product_group); 50908 } 50909 } 50910 populateProductGroup(productGroup) { 50911 this.showProductGroup = true;
50912 return this.productGroupFieldset.find("input").val(productGroup[0]); 50913 } 50914 toggleProdutGroup() { 50915 if (this.showProductGroup) { 50916 return this.productGroupFieldset.show(200); 50917 } else { 50918 return this.productGroupFieldset.hide(200); 50919 } 50920 } 50921 initSelect2() { 50922 return this.field.select2({ 50923 minimumInputLength: 2, 50924 ajax: { 50925 delay: 300, 50926 url: (params) => { 50927 return `/${this.language}/api/eplan/files.json?name=` + params.term; 50928 }, 50929 dataType: "json", 50930 processResults: function(data) { 50931 jQuery(".option-data").data("options", data.items); 50932 return { 50933 results: jQuery.map(data.items, (item, i) => { 50934 return { 50935 id: item.description, 50936 text: item.description, 50937 product_group: item.product_group 50938 }; 50939 }) 50940 }; 50941 } 50942 } 50943 }); 50944 } 50945 }; 50946 } 50947 }); 50948 50949 // apps/base/assets/javascripts/components/form/views/step_view.coffee 50950 var StepView, step_view_default; 50951 var init_step_view = __esm({ 50952 "apps/base/assets/javascripts/components/form/views/step_view.coffee"() { 50953 "use strict"; 50954 init_esbuild_shims(); 50955 init_product_code_field_view(); 50956 step_view_default = StepView = class StepView2 { 50957 constructor(step, fields, goToStep) { 50958 this.attachEventHandlers = this.attachEventHandlers.bind(this); 50959 this.initSelect2Inputs = this.initSelect2Inputs.bind(this); 50960 this.validateStep = this.validateStep.bind(this); 50961 this.isValid = this.isValid.bind(this); 50962 this.setStepClass = this.setStepClass.bind(this); 50963 this.activate = this.activate.bind(this); 50964 this.isActive = this.isActive.bind(this); 50965 this.step = step; 50966 this.fields = fields; 50967 this.goToStep = goToStep; 50968 this.nextButton = this.step.find(".next"); 50969 this.stepNumber = this.step.data("step"); 50970 this.attachEventHandlers(); 50971 this.nextButton.prop("disabled", false); 50972 if (this.step.find(".select2")) { 50973 this.initSelect2Inputs(this.step.find(".select2")); 50974 } 50975 } 50976 attachEventHandlers() { 50977 return this.nextButton.on("click", (e) => { 50978 e.preventDefault(); 50979 e.stopPropagation(); 50980 return this.validateStep().then((response) => { 50981 if (response) { 50982 return this.goToStep(this.stepNumber + 1); 50983 } 50984 }); 50985 }); 50986 } 50987 initSelect2Inputs(select2Elements) { 50988 return jQuery.each(select2Elements, (i, select22) => { 50989 if (jQuery(select22).attr("name") === "form_field[product_code]") { 50990 return new product_code_field_view_default(jQuery(select22), this.step.find("[data-field-element-name='form_field[product_group]']")); 50991 } 50992 }); 50993 } 50994 validateStep() { 50995 return new Promise((resolve) => { 50996 var valid; 50997 valid = true; 50998 $.each(this.fields, (key, field) => { 50999 if (key !== "form_field[email_address]") { 51000 if (!field.model.validate() && field.view.isVisible()) { 51001 return valid = false; 51002 } 51003 } 51004 }); 51005 if (this.fields["form_field[email_address]"] && this.fields["form_field[email_address]"].view.isVisible()) { 51006 return this.fields["form_field[email_address]"].model.backendValidate().then((response) => { 51007 if (!response) { 51008 valid = false; 51009 } 51010 this.setStepClass(valid); 51011 return resolve(valid); 51012 }); 51013 } else { 51014 this.setStepClass(valid); 51015 return resolve(valid); 51016 } 51017 }); 51018 } 51019 isValid() {
51020 return this.step.hasClass("valid"); 51021 } 51022 setStepClass(valid) { 51023 return this.step.toggleClass("valid", valid); 51024 } 51025 activate() { 51026 return this.step.addClass("active"); 51027 } 51028 isActive() { 51029 return this.step.hasClass("active"); 51030 } 51031 }; 51032 } 51033 }); 51034 51035 // apps/base/assets/javascripts/components/form/views/magic_form_view.coffee 51036 var MagicFormView, boundMethodCheck, magic_form_view_default; 51037 var init_magic_form_view = __esm({ 51038 "apps/base/assets/javascripts/components/form/views/magic_form_view.coffee"() { 51039 "use strict"; 51040 init_esbuild_shims(); 51041 init_form_view(); 51042 init_step_view(); 51043 boundMethodCheck = function(instance, Constructor) { 51044 if (!(instance instanceof Constructor)) { 51045 throw new Error("Bound instance method accessed before binding"); 51046 } 51047 }; 51048 magic_form_view_default = MagicFormView = class MagicFormView2 extends form_view_default { 51049 constructor($form, fieldModels, fieldViews) { 51050 super($form); 51051 this.attachEventHandlers = this.attachEventHandlers.bind(this); 51052 this.showWaitingListPrompt = this.showWaitingListPrompt.bind(this); 51053 this.setEventFields = this.setEventFields.bind(this); 51054 this.activateFirstStep = this.activateFirstStep.bind(this); 51055 this.canOpenStep = this.canOpenStep.bind(this); 51056 this.initSteps = this.initSteps.bind(this); 51057 this.groupFieldsByStep = this.groupFieldsByStep.bind(this); 51058 this.previousStepsValid = this.previousStepsValid.bind(this); 51059 this.openStep = this.openStep.bind(this); 51060 this.collapseAllSteps = this.collapseAllSteps.bind(this); 51061 this.startOver = this.startOver.bind(this); 51062 this.resetSteps = this.resetSteps.bind(this); 51063 this.fieldModels = fieldModels; 51064 this.fieldViews = fieldViews; 51065 this.isMultiStep = true; 51066 this.groupedFieldsByStep = this.groupFieldsByStep(this.fieldModels, this.fieldViews); 51067 this.steps = this.$form.find(".step"); 51068 this.submitButton = this.$form.find("button[type='submit']"); 51069 this.initSteps(); 51070 this.activateFirstStep(); 51071 this.attachEventHandlers(); 51072 } 51073 attachEventHandlers() { 51074 boundMethodCheck(this, MagicFormView2); 51075 this.steps.on("click", (e) => { 51076 var currentStep; 51077 currentStep = jQuery(e.target).closest(".step").data("step"); 51078 e.stopPropagation(); 51079 if (this.canOpenStep(currentStep)) { 51080 return this.openStep(currentStep); 51081 } 51082 }); 51083 this.startOver(); 51084 this.showWaitingListPrompt(); 51085 this.select2Field = this.$form.find(".step-0 .subject_date"); 51086 if ($(".subject_date select option:selected").length === 1) { 51087 this.setEventFields(); 51088 } 51089 return this.select2Field.on("change", () => { 51090 this.showWaitingListPrompt(); 51091 return this.setEventFields(); 51092 }); 51093 } 51094 showWaitingListPrompt() { 51095 boundMethodCheck(this, MagicFormView2); 51096 this.$form.find("input[name='form_field[waiting_list]']").remove(); 51097 $(".waiting-list-prompt").hide(); 51098 if ($($(".subject_date select option:selected")[0]).data("has-waiting-list") || $($(".subject_date > span")[0]).data("has-waiting-list")) { 51099 $(".waiting-list-prompt").show(); 51100 return this.$form.prepend('<input name="form_field[waiting_list]" type="hidden" value="yes">'); 51101 } 51102 } 51103 setEventFields() { 51104 var locationName; 51105 boundMethodCheck(this, MagicFormView2); 51106 this.$form.find(".correct-date-format").attr("value", $($(".subject_date select option:selected")[0]).data("date")); 51107 this.$form.find(".eventDateId").attr("value", $($(".subject_date select option:selected")[0]).data("identifier")); 51108 this.$form.find("fieldset.url input").attr("value", $($(".subject_date select option:selected")[0]).data("link")); 51109 this.$form.find('input[name="form_field[start_time]"]').attr("value", $($(".subject_date select option:selected")[0]).data("start-time")); 51110 this.$form.find('input[name="form_field[end_time]"]').attr("value", $($(".subject_date select option:selected")[0]).data("end-time")); 51111 this.$form.find('input[name="form_field[end_date]"]').attr("value", $($(".subject_date select option:selected")[0]).data("end-date")); 51112 this.$form.find('input[name="form_meta[location_name]"]').attr("value", $($(".subject_date select option:selected")[0]).data("location-name")); 51113 this.$form.find('input[name="form_meta[location_url]"]').attr("value", $($(".subject_date select option:selected")[0]).data("location-url")); 51114 locationName = $($(".subject_date select option:selected")[0]).data("location-name"); 51115 if (locationName) { 51116 this.$form.find('input[name="form_field[location_of_the_training]"]').val(locationName).trigger("change"); 51117 } 51118 this.$form.find('input[name="form_meta[additional_information]"]').attr("value", $($(".subject_date select option:selected")[0]).data("additional-information")); 51119 return this.$form.find('input[name="form_meta[full_address]"]').attr("value", $($(".subject_date select option:selected")[0]).data("full-address")); 51120 } 51121 activateFirstStep() { 51122 boundMethodCheck(this, MagicFormView2); 51123 return this.$form.find(".step-0").addClass("active"); 51124 } 51125 canOpenStep(currentStep) { 51126 boundMethodCheck(this, MagicFormView2); 51127 return !this.stepViews[currentStep].isActive() && this.previousStepsValid(currentStep); 51128 } 51129 initSteps() { 51130 boundMethodCheck(this, MagicFormView2); 51131 this.stepViews = {}; 51132 jQuery.each(this.steps, (index, step) => { 51133 var stepNumber; 51134 stepNumber = jQuery(step).data("step"); 51135 return this.stepViews[stepNumber] = new step_view_default(jQuery(step), this.groupedFieldsByStep[stepNumber], this.openStep); 51136 }); 51137 return this.resetSteps(); 51138 } 51139 groupFieldsByStep(fieldModels, fieldViews) { 51140 var steps; 51141 boundMethodCheck(this, MagicFormView2); 51142 steps = {}; 51143 jQuery.each(fieldModels, (name, field) => { 51144 if (!steps[field.multiStep]) { 51145 steps[field.multiStep] = {}; 51146 } 51147 return steps[field.multiStep][name] = { 51148 model: field, 51149 view: fieldViews[name] 51150 }; 51151 }); 51152 return steps; 51153 } 51154 previousStepsValid(currentStep) { 51155 var i, j, ref, valid; 51156 boundMethodCheck(this, MagicFormView2); 51157 valid = true; 51158 for (i = j = 1, ref = currentStep; 1 <= ref ? j <= ref : j >= ref; i = 1 <= ref ? ++j : --j) { 51159 valid = this.stepViews[i].isValid(); 51160 } 51161 return valid; 51162 } 51163 openStep(step) { 51164 boundMethodCheck(this, MagicFormView2); 51165 this.collapseAllSteps(); 51166 return this.stepViews[step].activate(); 51167 } 51168 collapseAllSteps() { 51169 boundMethodCheck(this, MagicFormView2); 51170 return this.steps.removeClass("active"); 51171 } 51172 startOver() { 51173 boundMethodCheck(this, MagicFormView2); 51174 this.$form.find(".step").click(() => { 51175 return this.$form.find("fieldset").each(function() { 51176 if (jQuery(this).parents(".step").is(":not(.active)")) { 51177 return jQuery(this).removeClass("invalid notify").find("p.notification").html("").hide(); 51178 } 51179 }); 51180 }); 51181 return this.$form.find(".step").find("input").click((e) => { 51182 var step; 51183 step = jQuery(e.target).parents(".step").attr("data-step"); 51184 if (jQuery(e.target).change) { 51185 return jQuery(e.target).parents(".step").nextAll().removeClass("val
51185id"); 51186 } 51187 }); 51188 } 51189 resetSteps() { 51190 boundMethodCheck(this, MagicFormView2); 51191 return jQuery.each(this.fieldViews, (index, field) => { 51192 return field.resetInput(); 51193 }); 51194 } 51195 }; 51196 } 51197 }); 51198 51199 // apps/base/assets/javascripts/components/form/models/form_submit_response.coffee 51200 var FormSubmitResponse, form_submit_response_default; 51201 var init_form_submit_response = __esm({ 51202 "apps/base/assets/javascripts/components/form/models/form_submit_response.coffee"() { 51203 "use strict"; 51204 init_esbuild_shims(); 51205 form_submit_response_default = FormSubmitResponse = class FormSubmitResponse2 { 51206 constructor(request, error = null) { 51207 this.error = error; 51208 if (request.responseText) { 51209 this.data = JSON.parse(request.responseText); 51210 } else { 51211 this.data = {}; 51212 } 51213 this.status = request.status; 51214 if (this.data.errors && this.data.errors.length > 0) { 51215 this.status = 409; 51216 } 51217 } 51218 isSuccess() { 51219 return this.status === 200 || this.status === 201; 51220 } 51221 hasRedirect() { 51222 return this.data.redirect; 51223 } 51224 }; 51225 } 51226 }); 51227 51228 // apps/base/assets/javascripts/components/form/models/form_submit_service.coffee 51229 var FormSubmitService, form_submit_service_default; 51230 var init_form_submit_service = __esm({ 51231 "apps/base/assets/javascripts/components/form/models/form_submit_service.coffee"() { 51232 "use strict"; 51233 init_esbuild_shims(); 51234 init_form_submit_response(); 51235 form_submit_service_default = FormSubmitService = class FormSubmitService2 { 51236 constructor(endpoint, method) { 51237 this.endpoint = endpoint; 51238 this.method = method; 51239 } 51240 submit(data, files, callback) { 51241 var processData, request, useIframe; 51242 processData = files.length === 0; 51243 useIframe = files.length > 0; 51244 request = jQuery.ajax(this.endpoint, { 51245 type: this.method, 51246 files, 51247 data, 51248 dataType: "json", 51249 processData, 51250 iframe: useIframe 51251 }); 51252 return request.always(function() { 51253 return callback(new form_submit_response_default(request)); 51254 }); 51255 } 51256 }; 51257 } 51258 }); 51259 51260 // apps/base/assets/javascripts/components/form/models/form_model.coffee 51261 var FormModel, indexOf, form_model_default; 51262 var init_form_model = __esm({ 51263 "apps/base/assets/javascripts/components/form/models/form_model.coffee"() { 51264 "use strict"; 51265 init_esbuild_shims(); 51266 indexOf = [].indexOf; 51267 window.FormModel = FormModel = class FormModel2 { 51268 constructor(json = {}) { 51269 this.data = json; 51270 this.form = this.data.formElement; 51271 this.fields = this.data.fields || []; 51272 this.options = this.data.options || {}; 51273 this.step = this.data.step || 1; 51274 this.totalSteps = this.data.totalSteps || 1; 51275 } 51276 updateFields(fields) { 51277 return this.fields = fields; 51278 } 51279 goToNextStep() { 51280 return this.step += 1; 51281 } 51282 inLastStep() { 51283 return this.step === this.totalSteps; 51284 } 51285 isCollapsible() { 51286 if (this.options.collapsible != null) { 51287 return this.options.collapsible; 51288 } else { 51289 return false; 51290 } 51291 } 51292 isTrackable() { 51293 if (this.options.trackable != null) { 51294 return this.options.trackable; 51295 } else { 51296 return true; 51297 } 51298 } 51299 isContainedInModal() { 51300 return this.form.parents(".mfp-hide").length > 0; 51301 } 51302 validate() { 51303 var field; 51304 return indexOf.call((function() { 51305 var i, len, ref, results; 51306 ref = this.fields; 51307 results = []; 51308 for (i = 0, len = ref.length; i < len; i++) { 51309 field = ref[i]; 51310 results.push(field.validate()); 51311 } 51312 return results; 51313 }).call(this), false) < 0; 51314 } 51315 }; 51316 form_model_default = FormModel; 51317 } 51318 }); 51319 51320 // apps/base/assets/javascripts/modules/select2.coffee 51321 var require_select22 = __commonJS({ 51322 "apps/base/assets/javascripts/modules/select2.coffee"(exports) { 51323 "use strict"; 51324 init_esbuild_shims(); 51325 (function() { 51326 var data, translations2; 51327 data = jQuery("#select2-i18n").data(); 51328 if (data) { 51329 translations2 = {}; 51330 jQuery.each(data, function(key, translation) { 51331 return translations2[key] = function() { 51332 return translation; 51333 }; 51334 }); 51335 jQuery.fn.select2.defaults.set("language", translations2); 51336 } 51337 }).call(exports); 51338 } 51339 }); 51340 51341 // apps/base/assets/javascripts/components/form/models/field.coffee 51342 var require_field = __commonJS({ 51343 "apps/base/assets/javascripts/components/form/models/field.coffee"(exports, module) { 51344 "use strict"; 51345 init_esbuild_shims(); 51346 (function() { 51347 var FormField; 51348 FormField = (function() { 51349 var DEFAULT_ERROR; 51350 class FormField2 { 51351 constructor(json = {}) { 51352 this.data = json; 51353 this.conditionalLinkedTo = json.conditionalLinkedTo || null; 51354 this.conditionalValue = json.conditionalValue || null; 51355 this.step = json.step || 1; 51356 this.error = json.error || DEFAULT_ERROR; 51357 this.subscribers = []; 51358 this.multiStep = json.multiStep || null; 51359 } 51360 isRequired() { 51361 return this.data.required || false; 51362 } 51363 isNotRequired() { 51364 return !this.isRequired(); 51365 }
51366 updateValue(value) { 51367 return this.value = value; 51368 } 51369 validate(notify = true) { 51370 var valid; 51371 valid = !!this.value || this.isNotRequired(); 51372 if (notify || !valid) { 51373 this.notifyValidationResult(valid, this.error); 51374 } 51375 return valid; 51376 } 51377 subscribe(to, callback) { 51378 return this.subscribers.push({ 51379 to, 51380 callback 51381 }); 51382 } 51383 notifyValidationResult(success, errorMessage) { 51384 if (success) { 51385 return this.notify("validation-success", this.value); 51386 } else { 51387 return this.notify("validation-failed", errorMessage); 51388 } 51389 } 51390 notify(to, arg) { 51391 var i, len, ref, results, subscriber; 51392 ref = this.subscribers; 51393 results = []; 51394 for (i = 0, len = ref.length; i < len; i++) { 51395 subscriber = ref[i]; 51396 if (subscriber.to === to) { 51397 results.push(subscriber.callback(arg)); 51398 } 51399 } 51400 return results; 51401 } 51402 } 51403 ; 51404 DEFAULT_ERROR = "[field] is a mandatory field"; 51405 return FormField2; 51406 }).call(this); 51407 module.exports = FormField; 51408 }).call(exports); 51409 } 51410 }); 51411 51412 // apps/base/assets/javascripts/components/form/models/field_types/email_field.coffee 51413 var require_email_field = __commonJS({ 51414 "apps/base/assets/javascripts/components/form/models/field_types/email_field.coffee"(exports, module) { 51415 "use strict"; 51416 init_esbuild_shims(); 51417 (function() { 51418 var EmailField, FormField, boundMethodCheck2 = function(instance, Constructor) { 51419 if (!(instance instanceof Constructor)) { 51420 throw new Error("Bound instance method accessed before binding"); 51421 } 51422 }; 51423 FormField = require_field(); 51424 EmailField = (function() { 51425 var ALREADY_TAKEN_ERROR, DEFAULT_ERROR; 51426 class EmailField2 extends FormField { 51427 constructor(json = {}) { 51428 super(json); 51429 this.backendValidate = this.backendValidate.bind(this); 51430 this.specificError = json.specificError || DEFAULT_ERROR; 51431 } 51432 validate() { 51433 var defaultValidation, valid; 51434 defaultValidation = super.validate({ 51435 notifySuccess: false 51436 }); 51437 valid = defaultValidation && (!this.value || /.+@.+\..{2,}/.test(this.value)); 51438 if (defaultValidation) { 51439 this.notifyValidationResult(valid, this.specificError); 51440 } 51441 return valid; 51442 } 51443 isValid() { 51444 var defaultValidation, valid; 51445 defaultValidation = !!this.value || this.isNotRequired(); 51446 valid = defaultValidation && (!this.value || /.+@.+\..{2,}/.test(this.value)); 51447 return valid; 51448 } 51449 backendValidate() { 51450 boundMethodCheck2(this, EmailField2); 51451 return new Promise((resolve) => { 51452 var identifier, language; 51453 identifier = $($(".subject_date select option:selected")[0]).data("identifier"); 51454 if (!identifier) { 51455 identifier = jQuery("input[name='form_meta[event_date_id]'").val(); 51456 } 51457 if (this.isValid() && jQuery("input[name='form_meta[referrer]'").val() !== void 0 && identifier !== void 0 && identifier !== "") { 51458 language = jQuery("input[name='form_meta[language]'").val(); 51459 return jQuery.ajax({ 51460 url: `/${language}/api/event_manager/emailvalidation`, 51461 headers: { 51462 "Accept": "application/json" 51463 }, 51464 method: "get", 51465 data: { 51466 "emailValidation": true, 51467 "referrer": jQuery("input[name='form_meta[referrer]'").val(), 51468 "eventDateId": identifier, 51469 "email": this.value 51470 }, 51471 success: (result) => { 51472 this.notifyValidationResult(result.valid, ALREADY_TAKEN_ERROR); 51473 return resolve(result.valid); 51474 }, 51475 error: () => { 51476 return resolve(true); 51477 } 51478 }); 51479 } else { 51480 return resolve(this.validate()); 51481 } 51482 }); 51483 } 51484 } 51485 ;
51486 DEFAULT_ERROR = "You have entered an invalid email address"; 51487 ALREADY_TAKEN_ERROR = "This email address is already registered"; 51488 return EmailField2; 51489 }).call(this); 51490 module.exports = EmailField; 51491 }).call(exports); 51492 } 51493 }); 51494 51495 // apps/base/assets/javascripts/components/form/models/field_types/numeric_field.coffee 51496 var require_numeric_field = __commonJS({ 51497 "apps/base/assets/javascripts/components/form/models/field_types/numeric_field.coffee"(exports, module) { 51498 "use strict"; 51499 init_esbuild_shims(); 51500 (function() { 51501 var FormField, NumericField; 51502 FormField = require_field(); 51503 NumericField = (function() { 51504 var DEFAULT_ERROR; 51505 class NumericField2 extends FormField { 51506 constructor(json = {}) { 51507 super(json); 51508 this.specificError = json.specificError || DEFAULT_ERROR; 51509 } 51510 validate() { 51511 var defaultValidation, valid; 51512 defaultValidation = super.validate({ 51513 notifySuccess: false 51514 }); 51515 valid = defaultValidation && (!this.value || !isNaN(parseInt(this.value))); 51516 if (defaultValidation) { 51517 this.notifyValidationResult(valid, this.specificError); 51518 } 51519 return valid; 51520 } 51521 } 51522 ; 51523 DEFAULT_ERROR = "[field] must be a numeric value"; 51524 return NumericField2; 51525 }).call(this); 51526 module.exports = NumericField; 51527 }).call(exports); 51528 } 51529 }); 51530 51531 // apps/base/assets/javascripts/components/form/models/field_types/file_upload.coffee 51532 var require_file_upload = __commonJS({ 51533 "apps/base/assets/javascripts/components/form/models/field_types/file_upload.coffee"(exports, module) { 51534 "use strict"; 51535 init_esbuild_shims(); 51536 (function() { 51537 var FileUpload, FormField, boundMethodCheck2 = function(instance, Constructor) { 51538 if (!(instance instanceof Constructor)) { 51539 throw new Error("Bound instance method accessed before binding"); 51540 } 51541 }, indexOf2 = [].indexOf; 51542 FormField = require_field(); 51543 FileUpload = class FileUpload2 extends FormField { 51544 constructor(json = {}, el = null) { 51545 super(json); 51546 this.initializeFileDragAndDrop = this.initializeFileDragAndDrop.bind(this); 51547 this.handleFileUpload = this.handleFileUpload.bind(this); 51548 if (el) { 51549 this.$el = $(el); 51550 } 51551 this.allowedExtensions = json.allowedExtensions || null; 51552 this.maxFileSize = json.maxFileSize || null; 51553 this.extensionsError = json.extensionsError || null; 51554 this.sizeError = json.sizeError || null; 51555 if (this.$el != null) { 51556 this.initializeFileDragAndDrop(); 51557 } else { 51558 console.error("FileUpload element is not defined"); 51559 } 51560 } 51561 initializeFileDragAndDrop() { 51562 var clickHandled, fileUpload, input, removeButton, removeInfo, uploadInfo; 51563 boundMethodCheck2(this, FileUpload2); 51564 if (this.$el == null) { 51565 console.error("FileUpload element is not defined"); 51566 return; 51567 } 51568 fileUpload = this.$el; 51569 input = this.$el.find("input[type='file']"); 51570 uploadInfo = this.$el.find(".upload-info"); 51571 removeInfo = this.$el.find(".remove-info"); 51572 removeButton = this.$el.find(".remove-file-btn"); 51573 clickHandled = false; 51574 fileUpload.on("click", (e) => { 51575 if (clickHandled) { 51576 return; 51577 } 51578 clickHandled = true; 51579 input.click(); 51580 return clickHandled = false; 51581 }); 51582 fileUpload.on("drag dragstart dragend dragover dragenter dragleave drop", (e) => { 51583 e.preventDefault(); 51584 return e.stopPropagation(); 51585 }); 51586 fileUpload.on("drop", (e) => { 51587 var files, valid; 51588 e.preventDefault(); 51589 e.stopPropagation(); 51590 files = e.originalEvent.dataTransfer.files; 51591 if (files.length > 1) { 51592 alert("Please upload only one file."); 51593 return; 51594 } 51595 input[0].files = files;
51596 this.updateValue(files); 51597 this.handleFileUpload(files); 51598 valid = this.validate(); 51599 if (!valid) { 51600 input.val(""); 51601 return this.handleFileUpload(files); 51602 } 51603 }); 51604 input.on("change", (e) => { 51605 var files; 51606 files = e.target.files; 51607 if (files.length > 1) { 51608 alert("Please select only one file."); 51609 input.val(""); 51610 return; 51611 } 51612 return this.handleFileUpload(files); 51613 }); 51614 return removeButton.on("click", (e) => { 51615 e.preventDefault(); 51616 e.stopPropagation(); 51617 input.val(""); 51618 removeInfo.hide(); 51619 uploadInfo.show(); 51620 clickHandled = false; 51621 this.updateValue(null); 51622 return this.validate(); 51623 }); 51624 } 51625 validate(notify = true) { 51626 var errorMessages, file, fileExtension, files, input, ref, valid; 51627 valid = true; 51628 errorMessages = []; 51629 input = this.$el.find("input[type='file']"); 51630 files = (ref = input[0]) != null ? ref.files : void 0; 51631 if (files != null && files.length > 0) { 51632 file = files[0]; 51633 if (this.allowedExtensions != null) { 51634 fileExtension = file.name.split(".").pop().toLowerCase(); 51635 if (indexOf2.call(this.allowedExtensions, fileExtension) < 0) { 51636 valid = false; 51637 errorMessages.push(this.extensionsError); 51638 } 51639 } 51640 if (this.maxFileSize != null) { 51641 if (!(file.size <= this.maxFileSize * 1024 * 1024)) { 51642 valid = false; 51643 errorMessages.push(this.sizeError); 51644 } 51645 } 51646 } else { 51647 valid = !this.isRequired(); 51648 } 51649 if (!valid) { 51650 this.removeUploadedFile(); 51651 input.val(""); 51652 } 51653 if (!valid && this.isRequired() && errorMessages.length === 0) { 51654 errorMessages.push(this.error); 51655 } 51656 if (notify || !valid) { 51657 this.notifyValidationResult(valid, errorMessages.join(" ")); 51658 } 51659 return valid; 51660 } 51661 handleFileUpload(files) { 51662 var file, fileName, removeInfo, uploadInfo; 51663 boundMethodCheck2(this, FileUpload2); 51664 uploadInfo = this.$el.find(".upload-info"); 51665 removeInfo = this.$el.find(".remove-info"); 51666 if (files.length > 0) { 51667 file = files[0]; 51668 fileName = file.name; 51669 this.$el.find(".uploaded-file").text(fileName); 51670 removeInfo.show(); 51671 return uploadInfo.hide(); 51672 } else { 51673 this.$el.find(".uploaded-file").text(""); 51674 removeInfo.hide(); 51675 return uploadInfo.show(); 51676 } 51677 } 51678 removeUploadedFile() { 51679 this.$el.parents(".upload-info").find(".uploaded-text").hide(); 51680 this.$el.parents(".upload-info").find(".remove-info").hide(); 51681 return this.value = null; 51682 } 51683 }; 51684 module.exports = FileUpload; 51685 }).call(exports); 51686 } 51687 }); 51688 51689 // apps/base/assets/javascripts/components/form/controllers/form_controller.coffee 51690 var require_form_controller = __commonJS({ 51691 "apps/base/assets/javascripts/components/form/controllers/form_controller.coffee"(exports) { 51692 "use strict"; 51693 init_esbuild_shims(); 51694 var import_moment2 = __toESM(require_moment()); 51695 init_field_view(); 51696 init_result_view(); 51697 init_form_view(); 51698 init_magic_form_view(); 51699 init_form_submit_service(); 51700 init_form_model(); 51701 var EmailField; 51702 var FileUpload; 51703 var FormController; 51704 var FormField; 51705 var NumericField; 51706 var observer; 51707 var onCaptchaLoaded; 51708 require_select22(); 51709 FormField = require_field(); 51710 EmailField = require_email_field(); 51711 NumericField = require_numeric_field(); 51712 FileUpload = require_file_upload(); 51713 FormController = (function() { 51714 var EMAIL_NAME; 51715 class FormController2 { 51716 constructor(el) { 51717 this.initFormResults = this.initFormResults.bind(this); 51718 this.initFormView = this.initFormView.bind(this); 51719 this.initMagicFormView = this.initMagicFormView.bind(this); 51720 this.processFieldChange = this.processFieldChange.bind(this); 51721 this.validatePrefilledInfo = this.validatePrefilledInfo.bind(this); 51722 this.submitForm = this.submitForm.bind(this); 51723 this.handleFormSubmitResponse = this.handleFormSubmitResponse.bind(this); 51724 this.handleFailedSubmit = this.handleFailedSubmit.bind(this); 51725 this.updateConditionalFields = this.updateConditionalFields.bind(this); 51726 this.el = el; 51727 this.language = jQuery("meta[name=language]").attr("content") || "en"; 51728 this.$form = jQuery(this.el); 51729 this.$formIntroduction = this.$form.siblings("p"); 51730 this.initializeForm(); 51731 if (this.$form.hasClass("magic-form")) { 51732 this.initMagicFormView(); 51733 } else { 51734 this.initFormView(); 51735 } 51736 this.initFormResults(); 51737 if (this.shouldShowPlaceholders()) { 51738 this.showPlaceholders(); 51739 } 51740 this.validatePrefilledInfo(); 51741 this.attachEvents(); 51742 } 51743 initFormResults() { 51744 if (this.$form.siblings(".form-result").length > 0) { 51745 return this.resultView = new result_view_default(this.$form.siblings(".form-result")); 51746 } else { 51747 return this.resultView = new result_view_default(this.$form.find(".form-result")); 51748 } 51749 } 51750 initFormView() { 51751 return this.formView = new form_view_default(this.$form); 51752 } 51753 initMagicFormView() { 51754 return this.formView = new magic_form_view_default(this.$form, this.fieldModels, this.fieldViews); 51755 } 51756 initializeForm() { 51757 var endpoint; 51758 $(".selectbox select").select2({ 51759 minimumResultsForSearch: Infinity, 51760 placeholder: $("input[name='sitetext_select2_text']").val() 51761 }); 51762 $(".selectbox-search select").select2({ 51763 placeholder: $("input[name='sitetext_select2_text']").val() 51764 }); 51765 $(".selectbox-with-all select").select2({ 51766 minimumResultsForSearch: Infinity 51767 }); 51768 $(".selectbox-search-with-all select").select2(); 51769 $('select[name="form_field[robot_name]"]').select2({ 51770 placeholder: $('select[name="form_field[robot_name]"] option:first').html() 51771 }); 51772 this.fieldViews = {}; 51773 this.fieldModels = {}; 51774 this.initializeFields(); 51775 this.createFormModel(); 51776 this.analyticsUrl = this.$form.data("analytics-url"); 51777 endpoint = this.$form.attr("action") || location.pathname + ".json"; 51778 return this.formSubmitService = new form_submit_service_default(endpoint, this.$form.attr("method")); 51779 } 51780 createFormModel() { 51781 return this.formModel = new form_model_default({ 51782 formElement: this.$form, 51783 fields: this.fieldsForStep(1), 51784 step: this.$form.parents(".form-popup-wrapper").length === 1 ? this.$form.find("div.step:not(.submit)").length : 1, 51785 totalSteps: parseInt(this.$form.data("total-steps")), 51786 options: { 51787 collapsible: this.$form.parents("div.inline-form-container").hasClass("collapsible"), 51788 trackable: !this.$form.hasClass("no-tracking") 51789 } 51790 }); 51791 } 51792 initializeFields() { 51793 return this.$form.find("fieldset").each((index, element) => { 51794 var field, fieldModel, fieldName, fieldView; 51795 field = jQuery(element); 51796 if (fieldName = field.data("field-element-name")) { 51797 fieldView = new field_view_default(field); 51798 this.fieldViews[fieldName] = fieldView; 51799 fieldModel = this.createFieldModel(field); 51800 this.fieldModels[fieldName] = fieldModel; 51801 fieldView.subscribe("change", this.processFieldChange); 51802 fieldModel.subscribe("validation-success", fieldView.showValid); 51803 return fieldModel.subscribe("validation-failed", fieldView.showValidationError); 51804 } 51805 }); 51806 } 51807 fieldsForStep(step) { 51808 var fieldModel, name, ref, results; 51809 ref = this.fieldModels; 51810 results = []; 51811 for (name in ref) {
51812 fieldModel = ref[name]; 51813 if (fieldModel.step === step && this.fieldViews[name].isVisible()) { 51814 results.push(fieldModel); 51815 } 51816 } 51817 return results; 51818 } 51819 createFieldModel(field) { 51820 var fieldModel, info, step; 51821 step = field.parents("div.step").length === 0 || field.parents("div.step").hasClass("step1") || field.parents(".form-popup-wrapper").length === 1 ? 1 : 2; 51822 info = { 51823 required: field.hasClass("required"), 51824 conditionalLinkedTo: field.data("condition-field"), 51825 conditionalValue: field.data("condition-value"), 51826 step, 51827 error: this.$form.find("span[data-label='required-field-error']").html(), 51828 multiStep: field.parents("div.step").data("step") 51829 }; 51830 switch (field.find("input").data("type")) { 51831 case "email": 51832 info = jQuery.extend(info, { 51833 specificError: this.$form.find("span[data-label='invalid-email-error']").html() 51834 }); 51835 return fieldModel = new EmailField(info); 51836 case "numeric": 51837 info = jQuery.extend(info, { 51838 specificError: this.$form.find("span[data-label='invalid-number-error']").html() 51839 }); 51840 return fieldModel = new NumericField(info); 51841 case "file": 51842 info = jQuery.extend(info, { 51843 allowedExtensions: field.find("input").data("extentions"), 51844 maxFileSize: field.find("input").data("size"), 51845 extensionsError: field.find("span[data-label='invalid-file-extension']").html(), 51846 sizeError: field.find("span[data-label='invalid-file-size']").html() 51847 }); 51848 return fieldModel = new FileUpload(info, field); 51849 default: 51850 return fieldModel = new FormField(info); 51851 } 51852 } 51853 updateFieldValues() { 51854 var fieldView, name, ref, results; 51855 ref = this.fieldViews; 51856 results = []; 51857 for (name in ref) { 51858 fieldView = ref[name]; 51859 results.push(this.fieldModels[name].updateValue(fieldView.getValue())); 51860 } 51861 return results; 51862 } 51863 processFieldChange(fieldName) { 51864 this.fieldModels[fieldName].updateValue(this.fieldViews[fieldName].getValue()); 51865 this.updateConditionalFields(fieldName); 51866 if (fieldName === EMAIL_NAME) { 51867 return this.fieldModels[fieldName].backendValidate(); 51868 } else { 51869 this.fieldModels[fieldName].validate(); 51870 if (fieldName === "form_field[date]" && this.fieldModels[EMAIL_NAME] && this.fieldModels[EMAIL_NAME].isValid()) { 51871 return this.fieldModels[EMAIL_NAME].backendValidate(); 51872 } 51873 } 51874 } 51875 validatePrefilledInfo() { 51876 var field, name, ref; 51877 ref = this.fieldViews; 51878 for (name in ref) { 51879 field = ref[name]; 51880 if (name !== EMAIL_NAME) { 51881 if (field.isVisible() && field.shouldTriggerValidationOnInit()) { 51882 this.fieldModels[name].updateValue(this.fieldViews[name].getValue()); 51883 this.fieldModels[name].validate(); 51884 } 51885 } 51886 } 51887 if (this.fieldModels[EMAIL_NAME]) { 51888 if (this.fieldViews[EMAIL_NAME].isVisible() && this.fieldViews[EMAIL_NAME].shouldTriggerValidationOnInit()) {
51889 this.fieldModels[EMAIL_NAME].updateValue(this.fieldViews[EMAIL_NAME].getValue()); 51890 return this.fieldModels[EMAIL_NAME].backendValidate(); 51891 } 51892 } 51893 } 51894 attachEvents() { 51895 if (this.formModel.isCollapsible()) { 51896 this.$form.parents(".inline-form-container").find("div.heading, div.description").click((event2) => { 51897 var expandedState; 51898 this.formView.toggleShownState(); 51899 expandedState = this.formView.isExpanded() ? "Expanded" : "Collapsed"; 51900 return this.trackEvent(expandedState, this.analyticsUrl); 51901 }); 51902 } else if (this.formModel.isTrackable()) { 51903 if (this.formModel.isContainedInModal()) { 51904 $(`[href='#${this.$form.parents(".mfp-hide").attr("id")}']`).click((event2) => { 51905 return this.trackEvent("Visited", this.analyticsUrl); 51906 }); 51907 } else { 51908 this.trackNonInteractionEvent("Visited", this.analyticsUrl); 51909 } 51910 } 51911 this.$form.find("button[type='submit']").click((event2) => { 51912 event2.preventDefault(); 51913 this.formView.showLoadingIndicator(); 51914 this.hideValidationErrors(); 51915 this.resultView.hideGlobalErrorMessage(); 51916 this.updateFieldValues(); 51917 if (this.formModel.validate()) { 51918 if (this.$form.find(".g-recaptcha").length === 1) { 51919 this.$form.find("[name='g-recaptcha-response']").val(""); 51920 grecaptcha.execute(this.widgetId, { 51921 action: "submit_form" 51922 }).then((token) => { 51923 this.$form.find("[name='g-recaptcha-response']").val(token); 51924 if (this.fieldModels[EMAIL_NAME]) { 51925 return this.fieldModels[EMAIL_NAME].backendValidate().then((response) => { 51926 if (response) { 51927 return this.submitForm(); 51928 } else { 51929 return this.formView.hideLoadingIndicator(); 51930 } 51931 }); 51932 } else { 51933 return this.submitForm(); 51934 } 51935 }); 51936 } else { 51937 if (this.fieldModels[EMAIL_NAME]) { 51938 this.fieldModels[EMAIL_NAME].backendValidate().then((response) => { 51939 if (response) { 51940 return this.submitForm(); 51941 } else { 51942 return this.formView.hideLoadingIndicator(); 51943 } 51944 }); 51945 } else { 51946 this.submitForm(); 51947 } 51948 } 51949 } else { 51950 this.formView.hideLoadingIndicator(); 51951 } 51952 return false; 51953 }); 51954 this.$form.on("recaptcha-loaded", (event2, data) => { 51955 if (this.$form.find(".g-recaptcha .grecaptcha-badge").length === 1) { 51956 return; 51957 } 51958 return this.widgetId = grecaptcha.render(this.$form.find(".g-recaptcha")[0], { 51959 "sitekey": this.$form.find(".g-recaptcha").attr("data-sitekey"), 51960 "badge": "inline", 51961 "size": "invisible" 51962 }); 51963 }); 51964 this.$form.on("form-submit-success", (event2, data) => { 51965 this.formView.hideLoadingIndicator(); 51966 return this.processFormSubmitResponse(data); 51967 }); 51968 return $(".ctas-calculator a.button.form-popup-link").on("click", (event2) => { 51969 this.$form.find('input[name="form_meta[oc_codes]"]').attr("value", $("#roi-calculation").data("roiproductfamily")); 51970 this.$form.find('input[name="form_meta[calculation_url]"]').attr("value", $("#link-url").data("linkurl")); 51971 this.$form.find('input[name="form_meta[product_name]"]').attr("value", $("#product-name").data("productname")); 51972 return this.$form.find('input[name="form_meta[product_quantity]"]').attr("value", $("#product-quantity").data("productquantity")); 51973 }); 51974 }
51975 submitForm() { 51976 if (this.customSubmit()) { 51977 return this.$form.trigger("form-submit", this); 51978 } else { 51979 if (this.useAjax()) { 51980 return this.formSubmitService.submit(this.$form.serializeArray(), this.$form.find(":file"), this.handleFormSubmitResponse); 51981 } else { 51982 return this.$form.submit(); 51983 } 51984 } 51985 } 51986 handleFormSubmitResponse(formSubmitResponse) { 51987 var event2, success; 51988 if (formSubmitResponse.isSuccess()) { 51989 this.$form.trigger("form-submit-success", formSubmitResponse.data); 51990 if (this.$form.data("dispatch")) { 51991 event2 = new CustomEvent(`${this.$form.data("dispatch")}-success`, { 51992 detail: formSubmitResponse.data 51993 }); 51994 window.dispatchEvent(event2); 51995 } 51996 jQuery(window).trigger("form-submit-success"); 51997 if (!window.location.hash.includes("events") && !window.location.pathname.includes("my-lists")) { 51998 success = window.location.protocol + "//" + window.location.host + window.location.pathname + "?success"; 51999 return window.history.pushState({ 52000 path: success 52001 }, "", success); 52002 } 52003 } else { 52004 return this.handleFailedSubmit(formSubmitResponse.data, formSubmitResponse.error); 52005 } 52006 } 52007 handleFailedSubmit(data, errorThrown) { 52008 var event2; 52009 this.formView.hideLoadingIndicator(); 52010 if (this.$form.data("dispatch")) { 52011 event2 = new CustomEvent(`${this.$form.data("dispatch")}-failure`); 52012 window.dispatchEvent(event2); 52013 } 52014 if (data.errors && data.errors.length > 0) { 52015 return this.processErrors(data); 52016 } else { 52017 return this.resultView.showGlobalErrorMessage(errorThrown); 52018 } 52019 } 52020 processFormSubmitResponse(response) { 52021 if (!window.location.hash.includes("events") && response.redirect) { 52022 return this.processRedirect(response); 52023 } else { 52024 return this.processSuccess(response); 52025 } 52026 } 52027 processErrors(response) { 52028 var error, i, len, ref, results; 52029 this.trackEvent("With errors", this.analyticsUrl); 52030 ref = response.errors; 52031 results = []; 52032 for (i = 0, len = ref.length; i < len; i++) { 52033 error = ref[i]; 52034 if (this.fieldViews[error.field_name]) { 52035 results.push(this.fieldViews[error.field_name].showValidationError(error.value)); 52036 } else { 52037 results.push(this.resultView.showGlobalErrorMessage(error)); 52038 } 52039 } 52040 return results; 52041 } 52042 processRedirect(response) { 52043 return window.location = response.redirect; 52044 } 52045 processSuccess(response) { 52046 var newsLetterPresent; 52047 if (this.formView.isMultiStep || this.formModel.inLastStep()) { 52048 newsLetterPresent = this.fieldModels["form_field[subscribe_to_enews]"] || this.fieldModels["form_field[subscribe_to_newsletter]"] || false; 52049 this.trackEvent(newsLetterPresent.value === "on" ? "Completed (with newsletter signup)" : "Completed", this.analyticsUrl); 52050 if (this.formView.shouldHideUponSuccess()) { 52051 this.formView.hide(); 52052 this.$formIntroduction.hide(); 52053 } 52054 this.resultView.showSuccessMessage(); 52055 if (response.download) { 52056 return this.resultView.showAndStartDownload(response.download); 52057 } 52058 } else { 52059 this.trackEvent("In progress", this.analyticsUrl); 52060 this.formModel.goToNextStep(); 52061 this.formView.showSecondStep(); 52062 return this.formModel.updateFields(this.fieldsForStep(this.formModel.step)); 52063 } 52064 } 52065 updateConditionalFields(fieldName) { 52066 var fieldView, name, ref; 52067 ref = this.fieldViews; 52068 for (name in ref) { 52069 fieldView = ref[name]; 52070 if (this.fieldModels[name].conditionalLinkedTo === this.fieldViews[fieldName].name) { 52071 if (this.fieldModels[name].conditionalValue === this.fieldViews[fieldName].getKey()) { 52072 fieldView.show(); 52073 } else { 52074 fieldView.hide(); 52075 } 52076 } 52077 } 52078 return this.formModel.updateFields(this.fieldsForStep(this.formModel.step)); 52079 } 52080 hideValidationErrors() { 52081 var fieldView, name, ref, results; 52082 ref = this.fieldViews; 52083 results = []; 52084 for (name in ref) { 52085 fieldView = ref[name]; 52086 results.push(fieldView.resetValidationError()); 52087 } 52088 return results; 52089 } 52090 // Google Analytics tracking 52091 trackEvent(action, label) { 52092 return window.trackEvent("Forms", action, label); 52093 } 52094 trackNonInteractionEvent(action, label) { 52095 return window.trackNonInteractionEvent("Forms", action, label); 52096 }
52097 // Some form properties dependent on DOM element attributes/classes 52098 useAjax() { 52099 if (this.$form.is("[data-ajax]")) { 52100 return this.$form.data("ajax"); 52101 } else { 52102 return true; 52103 } 52104 } 52105 customSubmit() { 52106 if (this.$form.is("[data-customsubmit]")) { 52107 return this.$form.data("customsubmit"); 52108 } else { 52109 return false; 52110 } 52111 } 52112 shouldShowPlaceholders() { 52113 return this.$form.hasClass("no-labels"); 52114 } 52115 showPlaceholders() { 52116 var fieldView, name, ref, results; 52117 ref = this.fieldViews; 52118 results = []; 52119 for (name in ref) { 52120 fieldView = ref[name]; 52121 results.push(fieldView.showPlaceholders()); 52122 } 52123 return results; 52124 } 52125 } 52126 ; 52127 EMAIL_NAME = "form_field[email_address]"; 52128 return FormController2; 52129 }).call(exports); 52130 jQuery(function() { 52131 var attachCalculatorFormLocalStorage, prefillCalculatorForm; 52132 jQuery("form[data-validation]").each((index, element) => { 52133 if (jQuery(element).parents("#cta-form-base").length > 0) { 52134 return; 52135 } 52136 if (jQuery(element).attr("id") === "calculator-form") { 52137 return; 52138 } 52139 return new FormController(element); 52140 }); 52141 jQuery(window).on("initialize-calculator-form", () => { 52142 new FormController("#calculator-form"); 52143 attachCalculatorFormLocalStorage(); 52144 return prefillCalculatorForm(); 52145 }); 52146 attachCalculatorFormLocalStorage = function() { 52147 return jQuery("body").on("change", "#calculator-form input, #calculator-form select", (event2) => { 52148 var calculatorUserDetails, input, updatedUserDetails; 52149 calculatorUserDetails = JSON.parse(localStorage.getItem("calculatorUserDetails")); 52150 input = { 52151 [`${event2.target.name}`]: event2.target.value, 52152 expiry: (0, import_moment2.default)().add(24, "hours").valueOf() 52153 }; 52154 updatedUserDetails = $.extend(calculatorUserDetails, input); 52155 return localStorage.setItem("calculatorUserDetails", JSON.stringify(updatedUserDetails)); 52156 }); 52157 }; 52158 return prefillCalculatorForm = function() { 52159 var calculatorUserDetails, fieldName, results, value; 52160 calculatorUserDetails = JSON.parse(localStorage.getItem("calculatorUserDetails")); 52161 if (calculatorUserDetails) { 52162 results = []; 52163 for (fieldName in calculatorUserDetails) { 52164 value = calculatorUserDetails[fieldName]; 52165 if (fieldName === "form_field[country]") { 52166 results.push(jQuery(`select[name='${fieldName}'`).val(value).trigger("change")); 52167 } else { 52168 results.push(jQuery(`input[name='${fieldName}'`).val(value)); 52169 } 52170 } 52171 return results; 52172 } 52173 }; 52174 }); 52175 onCaptchaLoaded = function() { 52176 return jQuery("form .g-recaptcha").each((index, element) => { 52177 if (jQuery(element).parents("#cta-form-base").length === 0) { 52178 return jQuery(element).parents("form").trigger("recaptcha-loaded"); 52179 } 52180 }); 52181 }; 52182 window.onCaptchaLoaded = onCaptchaLoaded; 52183 if (window.location.href.indexOf("my-lists")) { 52184 observer = new MutationObserver(function(mutations_list) { 52185 return mutations_list.forEach(function(mutation) { 52186 return mutation.addedNodes.forEach(function(added_node) { 52187 var element; 52188 if (added_node.id === "cta-form") { 52189 element = jQuery(added_node).find("form[data-validation]"); 52190 new FormController(element); 52191 return jQuery("head").append('<script src="https://www.recaptcha.net/recaptcha/api.js?render=explicit&onload=onCaptchaLoaded"><\/script>'); 52192 } 52193 }); 52194 }); 52195 }); 52196 observer.observe(document.querySelector("body"), { 52197 subtree: true, 52198 childList: true 52199 }); 52200 } 52201 } 52202 }); 52203 52204 // apps/base/assets/javascripts/components/information_block_video.coffee 52205 var require_information_block_video = __commonJS({ 52206 "apps/base/assets/javascripts/components/information_block_video.coffee"(exports) { 52207 "use strict"; 52208 init_esbuild_shims(); 52209 (function() { 52210 jQuery("body").on("mouseenter", ".inline-video .video", function(event2) { 52211 jQuery(event2.currentTarget).find("video").get(0).play(); 52212 return jQuery(event2.currentTarget).find(".hover-over").fadeOut(); 52213 }); 52214 jQuery("body").on("mouseleave", ".inline-video .video", function(event2) { 52215 jQuery(event2.currentTarget).find("video").get(0).pause(); 52216 return jQuery(event2.currentTarget).find(".hover-over").fadeIn(); 52217 }); 52218 }).call(exports); 52219 } 52220 }); 52221 52222 // apps/base/assets/javascripts/components/insights.coffee 52223 var require_insights = __commonJS({ 52224 "apps/base/assets/javascripts/components/insights.coffee"(exports) { 52225 "use strict"; 52226 init_esbuild_shims(); 52227 (function() { 52228 var Insights; 52229 Insights = class Insights { 52230 constructor(el) { 52231 this.bindNavigation = this.bindNavigation.bind(this); 52232 this.el = el; 52233 this.bindNavigation(); 52234 } 52235 bindNavigation() { 52236 this.el.off("click.insights", ".insights-block__navigation__item a"); 52237 return this.el.on("click.insights", ".insights-block__navigation__item a", (e) => { 52238 var $link, href, id; 52239 e.preventDefault(); 52240 $link = jQuery(e.currentTarget); 52241 href = $link.attr("href") || ""; 52242 if (href.charAt(0) !== "#") { 52243 return; 52244 } 52245 id = href.slice(1);
52246 this.el.find(".insights-block__navigation__item").removeClass("active"); 52247 $link.closest(".insights-block__navigation__item").addClass("active"); 52248 this.el.find(".insights-block__tab").removeClass("active"); 52249 return this.el.find(`#${id}`).addClass("active"); 52250 }); 52251 } 52252 }; 52253 jQuery(".insights-block").each(function(index, element) { 52254 return new Insights(jQuery(element)); 52255 }); 52256 }).call(exports); 52257 } 52258 }); 52259 52260 // apps/base/assets/javascripts/components/landing_pages.coffee 52261 var require_landing_pages = __commonJS({ 52262 "apps/base/assets/javascripts/components/landing_pages.coffee"(exports) { 52263 "use strict"; 52264 init_esbuild_shims(); 52265 (function() { 52266 var LandingPageListing; 52267 LandingPageListing = class LandingPageListing { 52268 constructor($el) { 52269 this.attachHandlers = this.attachHandlers.bind(this); 52270 this.showListItems = this.showListItems.bind(this); 52271 this.showGridItems = this.showGridItems.bind(this); 52272 this.filters = this.filters.bind(this); 52273 this.handleBrowserNavigation = this.handleBrowserNavigation.bind(this); 52274 this.currentPage = this.currentPage.bind(this); 52275 this.scrollToTop = this.scrollToTop.bind(this); 52276 this.$el = $el; 52277 this.endpoint = this.$el.attr("data-endpoint"); 52278 this.landingUri = this.$el.attr("data-landing"); 52279 this.blockUri = this.$el.attr("data-block"); 52280 this.loadingIndicator = this.$el.find(".loading-container"); 52281 this.selectedFilters = {}; 52282 this.attachHandlers(); 52283 } 52284 attachHandlers() { 52285 this.$el.on("click", "#pagination a", (event2) => { 52286 var page; 52287 event2.preventDefault(); 52288 jQuery(window).trigger("filtered-paginate", this.filters); 52289 page = jQuery(event2.currentTarget).attr("data-page"); 52290 this.updateListing(page, true, this.selectedFilters); 52291 return this.scrollToTop(); 52292 }); 52293 this.$el.prev().find(".listing-tabs").on("tab-change", (event2) => { 52294 return this.updatePageParam(1); 52295 }); 52296 this.$el.find(".cards").on("click", ".list-item .dates .future", (event2) => { 52297 return window.location = $(event2.currentTarget).data("href"); 52298 }); 52299 jQuery(window).on("filtered-update-listing", (e, filters) => { 52300 this.updatePageParam(1); 52301 return this.updateListing(this.getPageParam(), true, filters); 52302 }); 52303 this.$el.prev().find(".view-options .view").on("click", (event2) => { 52304 this.$el.prev().find(".view.selected").removeClass("selected"); 52305 jQuery(event2.currentTarget).addClass("selected"); 52306 if (jQuery(event2.currentTarget).attr("id") === "grid-view") { 52307 return this.showGridItems(); 52308 } else { 52309 return this.showListItems(); 52310 } 52311 }); 52312 jQuery(window).on("popstate", this.handleBrowserNavigation); 52313 return jQuery(window).on("load", () => { 52314 if (this.$el.prev().find("#list-view").hasClass("selected") || !this.$el.find("article.card").length) { 52315 return this.showListItems(); 52316 } 52317 }); 52318 } 52319 showListItems() { 52320 this.$el.find("article.card").hide(); 52321 return this.$el.find(".list-item").css("display", "flex"); 52322 } 52323 showGridItems() { 52324 this.$el.find(".list-item").hide(); 52325 return this.$el.find("article.card").show(); 52326 } 52327 filters(filters) { 52328 return this.selectedFilters = filters; 52329 } 52330 handleBrowserNavigation() { 52331 var page; 52332 page = this.getPageParam(); 52333 if (page !== this.currentPage()) { 52334 return this.updateListing(page, false); 52335 } 52336 } 52337 getPageParam() { 52338 var page; 52339 page = "1"; 52340 if (location.search.indexOf("page=") > 0) { 52341 page = location.search.slice("-1"); 52342 } 52343 return page; 52344 } 52345 updatePageParam(page) { 52346 var pageUrl; 52347 pageUrl = location.pathname + "?page=" + page; 52348 if (location.hash) { 52349 pageUrl = pageUrl + location.hash; 52350 } 52351 return history.pushState({ 52352 path: pageUrl 52353 }, "", pageUrl); 52354 } 52355 currentPage() { 52356 return this.$el.find(".cards.active .page.number.selected").attr("data-page") || "1"; 52357 } 52358 updateListing(page, updatePageParam = true, filters = null) { 52359 var params, query, tabNumber; 52360 this.loadingIndicator.show(); 52361 if (updatePageParam) { 52362 this.updatePageParam(page); 52363 } 52364 tabNumber = this.$el.find(".cards.active").attr("data-tab"); 52365 params = { 52366 landing_uri: this.landingUri, 52367 block_uri: this.blockUri, 52368 page, 52369 tab_number: tabNumber, 52370 filters 52371 }; 52372 query = this.endpoint + "?" + jQuery.param(params); 52373 return jQuery.get(query, (data) => { 52374 if (page === "1" && this.$el.attr("data-featured")) { 52375 this.$el.addClass("featured"); 52376 } 52377 this.$el.find(".cards.active section").empty(); 52378 this.$el.find(".cards.active section").append(data); 52379 if (this.$el.prev().find("#list-view").hasClass("selected") || !this.$el.find("article.card").length) { 52380 this.showListItems(); 52381 } 52382 if (window.initVideoPopups) { 52383 window.initVideoPopups(); 52384 } 52385 jQuery(window).trigger("enable-options", data); 52386 this.loadingIndicator.hide(); 52387 return jQuery(window).trigger("resize-cards"); 52388 }); 52389 } 52390 scrollToTop() { 52391 return jQuery(window).scrollTop(this.$el.parent().scrollTop()); 52392 } 52393 }; 52394 jQuery("section.listing").each(function(index, element) {
52395 return new LandingPageListing(jQuery(element)); 52396 }); 52397 }).call(exports); 52398 } 52399 }); 52400 52401 // apps/base/assets/javascripts/components/listing_tabs.coffee 52402 var require_listing_tabs = __commonJS({ 52403 "apps/base/assets/javascripts/components/listing_tabs.coffee"(exports, module) { 52404 "use strict"; 52405 init_esbuild_shims(); 52406 (function() { 52407 var ListingTabs; 52408 ListingTabs = class ListingTabs { 52409 constructor($el) { 52410 this.attachHandlers = this.attachHandlers.bind(this); 52411 this.addExtraTabsToDropdown = this.addExtraTabsToDropdown.bind(this); 52412 this.positionExtraTabs = this.positionExtraTabs.bind(this); 52413 this.$el = $el; 52414 this.attachHandlers(); 52415 } 52416 attachHandlers() { 52417 this.$el.find(".more-tabs, .extra-tabs").on("mouseenter", () => { 52418 return this.$el.find(".extra-tabs").show(); 52419 }); 52420 this.$el.find(".more-tabs, .extra-tabs").on("mouseleave", () => { 52421 return this.$el.find(".extra-tabs").hide(); 52422 }); 52423 if (!navigator.userAgent.match(/Mobile/g)) { 52424 this.addExtraTabsToDropdown(); 52425 this.positionExtraTabs(); 52426 } 52427 jQuery(window).on("breakpoint-change", (e, breakpoint) => { 52428 if (breakpoint === "desktop") { 52429 this.addExtraTabsToDropdown(); 52430 return this.positionExtraTabs(); 52431 } 52432 }); 52433 return $(window).resize(() => { 52434 return this.positionExtraTabs(); 52435 }); 52436 } 52437 addExtraTabsToDropdown() { 52438 var moreButtonWidth, tabsToAddToDropdown, totalTabsWidth; 52439 tabsToAddToDropdown = []; 52440 totalTabsWidth = 0; 52441 moreButtonWidth = jQuery(".listed-items .more-tabs").outerWidth(); 52442 this.$el.find("> ul li").each((index, element) => { 52443 var isMoreTabs, lastItem; 52444 totalTabsWidth += jQuery(element).outerWidth(); 52445 lastItem = this.$el.find("> ul li").length - 2 === index; 52446 isMoreTabs = jQuery(element).hasClass("more-tabs"); 52447 if (jQuery(element).hasClass("more-tabs")) { 52448 return; 52449 } 52450 if (!lastItem && totalTabsWidth > ($(".page-width").width() - moreButtonWidth) * 0.8 || totalTabsWidth > $(".page-width").width() * 0.8) { 52451 this.$el.find(".more-tabs").css("display", "inline-block"); 52452 return tabsToAddToDropdown.push(jQuery(element)); 52453 } 52454 }); 52455 return tabsToAddToDropdown.forEach((tab) => { 52456 if (!tab.hasClass("more-tabs")) { 52457 return this.$el.find(".extra-tabs").append(tab); 52458 } 52459 }); 52460 } 52461 positionExtraTabs() { 52462 var extraTabs, extraTabsWidth, finalTotalTabsWidth; 52463 extraTabs = this.$el.find(".extra-tabs"); 52464 if (extraTabs.length) { 52465 extraTabsWidth = this.$el.find(".extra-tabs").width(); 52466 finalTotalTabsWidth = 0; 52467 this.$el.find(".listed-items li").each((index, element) => { 52468 return finalTotalTabsWidth += parseInt(jQuery(element).css("width")); 52469 }); 52470 if ($(".page-width").width() - finalTotalTabsWidth < extraTabsWidth) { 52471 extraTabs.css("right", "0px"); 52472 return extraTabs.css("left", "auto"); 52473 } else { 52474 extraTabs.css("left", this.$el.find(".more-tabs").position().left.toString() + "px"); 52475 return extraTabs.css("right", "auto"); 52476 } 52477 } 52478 } 52479 }; 52480 jQuery(".listing-tabs").each(function(index, element) { 52481 return new ListingTabs(jQuery(element)); 52482 }); 52483 module.exports = ListingTabs; 52484 }).call(exports); 52485 } 52486 }); 52487 52488 // apps/base/assets/javascripts/components/lms_trainings.coffee 52489 var require_lms_trainings = __commonJS({ 52490 "apps/base/assets/javascripts/components/lms_trainings.coffee"(exports) { 52491 "use strict"; 52492 init_esbuild_shims(); 52493 (function() { 52494 jQuery("a.button.lms_link").each(function(index, element) { 52495 return jQuery(element).click(function(event2) { 52496 return window.trackEvent("LMS button", "Click", jQuery(event2.currentTarget).attr("href")); 52497 }); 52498 }); 52499 }).call(exports); 52500 } 52501 }); 52502 52503 // apps/base/assets/javascripts/components/login/authentication_dialog.coffee 52504 var require_authentication_dialog = __commonJS({ 52505 "apps/base/assets/javascripts/components/login/authentication_dialog.coffee"(exports) { 52506 "use strict"; 52507 init_esbuild_shims(); 52508 (function() { 52509 var AuthenticationDialog; 52510 AuthenticationDialog = class AuthenticationDialog { 52511 constructor(el) { 52512 this.attachEvents = this.attachEvents.bind(this); 52513 this.toggleDialog = this.toggleDialog.bind(this); 52514 this.el = el; 52515 this.attachEvents(); 52516 } 52517 attachEvents() { 52518 return $("body").on("click", this.toggleDialog); 52519 } 52520 toggleDialog(event2) { 52521 if (this.el.hasClass("open") && !$(event2.target).closest("#authentication-modal").length) { 52522 return this.el.removeClass("open"); 52523 } else if (!this.el.hasClass("open") && ($(event2.target).is("#authentication_dialog, #logged_user_dialog") || $(event2.target).closest("#authentication_dialog, #logged_user_dialog").length > 0)) { 52524 return this.el.addClass("open"); 52525 } 52526 } 52527 }; 52528 $(document).ready(function() { 52529 var authenticationDialog, loggedUserDialog; 52530 authenticationDialog = new AuthenticationDialog(jQuery("div#authentication_dialog")); 52531 authenticationDialog.el.removeClass("open"); 52532 loggedUserDialog = new AuthenticationDialog(jQuery("div#logged_user_dialog")); 52533 return loggedUserDialog.el.removeClass("open"); 52534 }); 52535 }).call(exports); 52536 } 52537 }); 52538 52539 // apps/base/assets/javascripts/components/login/complete_account_form.coffee 52540 var require_complete_account_form = __commonJS({ 52541 "apps/base/assets/javascripts/components/login/complete_account_form.coffee"(exports) { 52542 "use strict"; 52543 init_esbuild_shims(); 52544 (function() { 52545 var CompleteAccountForm; 52546 CompleteAccountForm = class CompleteAccountForm { 52547 constructor(form) { 52548 this.updateSuccessMessage = this.updateSuccessMessage.bind(this); 52549 this.form = form; 52550 this.disablePrefilledFields(); 52551 this.attachEvents(); 52552 this.selectFirstAccountType(); 52553 this.updateSuccessMessage(); 52554 this.serviceUrl = ""; 52555 } 52556 selectFirstAccountType() { 52557 return this.form.find("[data-field-element-name='form_field[account_type]'] input:first").click(); 52558 } 52559 attachEvents() { 52560 this.form.find("[data-field-element-name='form_field[account_type]'] input").on("change", (event2) => { 52561 return this.updateSuccessMessage(); 52562 }); 52563 this.form.on("form-submit-success", (event2, data) => { 52564 if (data.service) { 52565 this.serviceUrl = data.service; 52566 window.loginForm.setEmailAddress(this.form.find("input[name='form_field[email_address]']").val()); 52567 window.loginForm.setPassword(this.form.find("input[name='form_field[password]']").val()); 52568 if (this.form.siblings(".form-result").find("form").data("redirect")) { 52569 return window.loginForm.setRedirect(this.form.siblings(".form-result").find("form").data("redirect")); 52570 } 52571 } 52572 }); 52573 this.form.parents(".inline-form").find("input.login").on("click", (event2) => { 52574 window.loginForm.login(this.serviceUrl); 52575 return event2.preventDefault(); 52576 }); 52577 this.form.siblings(".form-result").find("button[type='submit']").on("click", (event2) => { 52578 window.loginForm.login(this.serviceUrl); 52579 return event2.preventDefault(); 52580 }); 52581 return jQuery("form.login").on("login-failed", (event2) => { 52582 if (this.form.hasClass("no-labels")) { 52583 return this.form.siblings(".form-result").find(".failure").show(); 52584 } else { 52585 return this.form.siblings(".result").find(".failure").show(); 52586 } 52587 }); 52588 } 52589 disablePrefilledFields() { 52590 return this.form.find("input[data-type='email']").attr("readonly", "readonly"); 52591 } 52592 updateSuccessMessage() { 52593 var field, selectedOption; 52594 selectedOption = this.form.find("[data-field-element-name='form_field[account_type]'] input:checked"); 52595 if (selectedOption.length === 0) { 52596 field = this.form.find("[data-field-element-name='form_field[account_type]'] input[type='text']"); 52597 if (this.form.hasClass("no-labels")) { 52598 return this.form.siblings("div.form-result").find("p.success").html(field.data("success")); 52599 } else { 52600 return this.form.siblings("div.result").find("div.success p").html(field.data("success")); 52601 } 52602 } else { 52603 if (this.form.hasClass("no-labels")) { 52604 this.form.siblings("div.form-result").find("p.success").html(selectedOption.data("success")); 52605 } else { 52606 this.form.siblings("div.result").find("div.success p").html(selectedOption.data("success")); 52607 } 52608 this.form.find("[data-field-element-name='form_field[account_type]'] p").addClass("hidden"); 52609 return selectedOption.siblings("p").removeClass("hidden"); 52610 } 52611 } 52612 }; 52613 jQuery("#complete-account").each((index, element) => { 52614 return new CompleteAccountForm(jQuery(element)); 52615 }); 52616 }).call(exports); 52617 } 52618 }); 52619 52620 // apps/base/assets/javascripts/components/login/models/login_check.coffee 52621 var require_login_check = __commonJS({ 52622 "apps/base/assets/javascripts/components/login/models/login_check.coffee"(exports, module) { 52623 "use strict"; 52624 init_esbuild_shims(); 52625 (function() { 52626 var LoginCheck; 52627 LoginCheck = class LoginCheck { 52628 constructor(request) { 52629 this.status = request.status; 52630 if (request.responseText) { 52631 this.message = JSON.parse(request.responseText); 52632 } 52633 } 52634 isAuthenticated() { 52635 return this.status === 200 || this.status === 201; 52636 } 52637 hasUnverifiedEmail() { 52638 return this.error() === "unverified_email"; 52639 } 52640 lockedOut() { 52641 return this.error() === "locked_out"; 52642 } 52643 newPasswordRequired() { 52644 return this.error() === "new_password_required"; 52645 } 52646 error() { 52647 if (this.message) { 52648 return this.message.error; 52649 } 52650 } 52651 }; 52652 module.exports = LoginCheck; 52653 }).call(exports); 52654 } 52655 }); 52656 52657 // apps/base/assets/javascripts/components/login/models/login_response.coffee 52658 var require_login_response = __commonJS({ 52659 "apps/base/assets/javascripts/components/login/models/login_response.coffee"(exports, module) { 52660 "use strict"; 52661 init_esbuild_shims(); 52662 (function() { 52663 var LoginResponse; 52664 LoginResponse = class LoginResponse { 52665 constructor(json) { 52666 this.data = json || {}; 52667 } 52668 loggedIn() { 52669 return !!this.data.service_ticket; 52670 } 52671 loginTicket() { 52672 return this.data.login_ticket; 52673 } 52674 serviceTicket() { 52675 return this.data.service_ticket; 52676 } 52677 flowKey() { 52678 return this.data.flow_execution_key; 52679 } 52680 session() { 52681 return this.data.session_id; 52682 } 52683 }; 52684 module.exports = LoginResponse; 52685 }).call(exports); 52686 } 52687 }); 52688 52689 // apps/base/assets/javascripts/components/login/models/login_service.coffee 52690 var require_login_service = __commonJS({ 52691 "apps/base/assets/javascripts/components/login/models/login_service.coffee"(exports, module) { 52692 "use strict"; 52693 init_esbuild_shims(); 52694 (function() { 52695 var LoginCheck, LoginResponse, LoginService; 52696 LoginCheck = require_login_check(); 52697 LoginResponse = require_login_response(); 52698 LoginService = class LoginService { 52699 constructor(endpoint, service) { 52700 this.endpoint = endpoint; 52701 this.service = service || window.location.href; 52702 } 52703 casLogin(successCallback, errorCallback) { 52704 var url; 52705 url = `${this.endpoint.split("?")[0] || this.endpoint}?${jQuery.param({ 52706 service: this.service, 52707 json: 1 52708 })}`; 52709 return jQuery.ajax({ 52710 url, 52711 type: "GET", 52712 headers: { 52713 "Accept": "application/json" 52714 }, 52715 timeout: 30 * 1e3, 52716 success: function(data, ...args) { 52717 return successCallback(new LoginResponse(data), ...args); 52718 }, 52719 error: function(request, status, error) { 52720 return errorCallback(error); 52721 }, 52722 xhrFields: { 52723 withCredentials: true 52724 } 52725 }); 52726 } 52727 websiteLogin(data, callback) { 52728 return jQuery.ajax({ 52729 url: this.endpoint, 52730 type: "POST", 52731 headers: { 52732 "Accept": "application/json" 52733 }, 52734 data, 52735 success: function(data2, status, request) { 52736 return callback(new LoginCheck(request)); 52737 }, 52738 error: function(request, status, error) { 52739 return callback(new LoginCheck(request)); 52740 } 52741 }); 52742 } 52743 }; 52744 module.exports = LoginService; 52745 }).call(exports); 52746 } 52747 }); 52748 52749 // apps/base/assets/javascripts/components/login/register_form.coffee 52750 var require_register_form = __commonJS({ 52751 "apps/base/assets/javascripts/components/login/register_form.coffee"(exports) { 52752 "use strict"; 52753 init_esbuild_shims(); 52754 (function() { 52755 var RegisterForm; 52756 RegisterForm = class RegisterForm { 52757 constructor(form) { 52758 this.form = form; 52759 this.attachEvents(); 52760 } 52761 attachEvents() { 52762 $(".register-with-interest-area").on("click", (event2) => { 52763 var uri; 52764 uri = $(event2.currentTarget).data("interest"); 52765 return $(".default-interest-area").val(uri); 52766 }); 52767 return this.form.on("form-submit-success", (event2, data) => { 52768 var emailAddress, postSubmitModal, postSubmitModalId; 52769 emailAddress = this.form.find("input[data-type='email']").val(); 52770 postSubmitModalId = this.form.data("post-submit-modal"); 52771 postSubmitModal = jQuery(`#${postSubmitModalId}`); 52772 postSubmitModal.find("strong.email").html(emailAddress); 52773 postSubmitModal.find("a.closemodal").attr("href", data.url); 52774 if (jQuery.magnificPopup.instance.st) { 52775 jQuery.magnificPopup.instance.st.callbacks = { 52776 close: function() { 52777 if (data.url) { 52778 return window.location = data.url; 52779 } 52780 } 52781 }; 52782 } 52783 jQuery.magnificPopup.open({ 52784 items: { 52785 src: `#${postSubmitModalId}` 52786 }, 52787 type: "inline", 52788 mainClass: "login-popup" 52789 }); 52790 this.form.find("input[type='text']").val(""); 52791 this.form.find("input[type='checkbox']").prop("checked", false); 52792 if (this.form.hasClass("no-labels")) { 52793 this.form.find("fieldset.valid").removeClass("val
52793id"); 52794 return this.form.find("input[type='email']").val(""); 52795 } else { 52796 return this.form.find("div.valid").removeClass("valid"); 52797 } 52798 }); 52799 } 52800 }; 52801 jQuery("form.register").each((index, element) => { 52802 return new RegisterForm(jQuery(element)); 52803 }); 52804 }).call(exports); 52805 } 52806 }); 52807 52808 // apps/base/assets/javascripts/components/login/views/login_form.coffee 52809 var require_login_form = __commonJS({ 52810 "apps/base/assets/javascripts/components/login/views/login_form.coffee"(exports) { 52811 "use strict"; 52812 init_esbuild_shims(); 52813 (function() { 52814 var LoginForm, LoginService; 52815 LoginService = require_login_service(); 52816 LoginForm = class LoginForm { 52817 constructor(form) { 52818 this.showError = this.showError.bind(this); 52819 this.form = form; 52820 this.service = this.form.data("redirect") || window.location.href; 52821 this.login_service = new LoginService(this.form.attr("action"), this.service); 52822 this.attachEvents(); 52823 } 52824 attachEvents() { 52825 return this.form.on("form-submit", (event2, parentForm) => { 52826 this.parentForm = parentForm; 52827 event2.preventDefault(); 52828 return this.login(); 52829 }); 52830 } 52831 showError(error) { 52832 this.hideLoadingIndicator(); 52833 if (error === "unverified_email") { 52834 return this.form.trigger(error); 52835 } else { 52836 this.showErrorMessage(error); 52837 return this.form.trigger("login-failed"); 52838 } 52839 } 52840 login() { 52841 return this.login_service.websiteLogin({ 52842 login_attempt: { 52843 email_address: this.form.find("input[data-type='email']").val(), 52844 password: this.form.find("input[type='password']").val() 52845 } 52846 }, (loginAttempt) => { 52847 if (loginAttempt.hasUnverifiedEmail()) { 52848 return this.showError(loginAttempt.error()); 52849 } else if (loginAttempt.isAuthenticated()) { 52850 if (this.service && !this.service.includes("freshdesk")) { 52851 return window.location = this.service; 52852 } else { 52853 return location.reload(); 52854 } 52855 } else { 52856 this.hideLoadingIndicator(); 52857 this.showErrorMessage(loginAttempt.error(), this.form.find("input[data-type='email']").val()); 52858 if (!this.form.hasClass("no-labels")) { 52859 return this.form.find("input[type='submit']").prop("disabled", false); 52860 } 52861 } 52862 }); 52863 } 52864 hideLoadingIndicator() { 52865 if (this.form.hasClass("no-labels")) { 52866 return this.form.find("button[type='submit']").removeClass("loading").prop("disabled", false); 52867 } else { 52868 return this.form.find("div.form-loading").hide(); 52869 } 52870 } 52871 showErrorMessage(error, email) { 52872 if (error === "locked_out") { 52873 this.form.closest(".compliant-password").addClass("hidden"); 52874 this.form.closest(".login-form").addClass("hidden"); 52875 this.form.closest(".login-form").siblings(".locked-account.sliding-verification-form").removeClass("hidden"); 52876 this.form.closest(".login-form").siblings(".locked-account").removeClass("hidden"); 52877 jQuery(".locked-account.sliding-verification-form input[name='email']").val(email); 52878 return jQuery(".locked-account input[name='email']").val(email); 52879 } else if (error === "new_password_required") { 52880 this.form.closest(".locked-account").addClass("hidden"); 52881 this.form.closest(".login-form").addClass("hidden"); 52882 this.form.closest(".login-form").siblings(".compliant-password.sliding-verification-form").removeClass("hidden"); 52883 this.form.closest(".login-form").siblings(".compliant-password").removeClass("hidden"); 52884 jQuery(".compliant-password.sliding-verification-form input[name='email']").val(email); 52885 return jQuery(".compliant-password input[name='email']").val(email); 52886 } else if (this.form.hasClass("no-labels")) { 52887 this.form.siblings(".form-result").find(".failure").html(error).show(); 52888 return this.form.siblings(".form-result").show(); 52889 } else { 52890 this.form.siblings("div.result").find(".failure").html(error); 52891 return this.form.siblings("div.result").find(".failure").removeClass("hidden"); 52892 } 52893 } 52894 setEmailAddress(emailAddress) { 52895 return this.form.find("input[data-type='email']").val(emailAddress); 52896 } 52897 setPassword(password) { 52898 return this.form.find("input[type='password']").val(password); 52899 } 52900 setRedirect(redirect) { 52901 this.form.data("redirect", redirect); 52902 this.service = this.form.data("redirect"); 52903 return this.login_service = new LoginService(this.form.attr("action"), this.service); 52904 } 52905 }; 52906 jQuery("form.login").each((index, element) => { 52907 return window.loginForm = new LoginForm(jQuery(element)); 52908 }); 52909 }).call(exports); 52910 } 52911 }); 52912 52913 // apps/base/assets/javascripts/components/login/views/single_sign_on_link.coffee 52914 var require_single_sign_on_link = __commonJS({ 52915 "apps/base/assets/javascripts/components/login/views/single_sign_on_link.coffee"(exports) { 52916 "use strict"; 52917 init_esbuild_shims(); 52918 (function() { 52919 var SingleSignOnLink; 52920 SingleSignOnLink = class SingleSignOnLink { 52921 constructor(ssoLink) { 52922 this.ssoLink = ssoLink; 52923 this.attachEvents(); 52924 } 52925 attachEvents() { 52926 return this.ssoLink.on("click", (event2) => { 52927 return this.checkSingleSignOn(); 52928 }); 52929 } 52930 checkSingleSignOn() { 52931 return window.loginForm.login_service.casLogin(this.handleLoginResponse); 52932 } 52933 handleLoginResponse(loginResponse) { 52934 if (loginResponse.loggedIn()) { 52935 return window.location = jQuery.query.set("ticket", loginResponse.serviceTicket()); 52936 } 52937 } 52938 }; 52939 if (document.getElementById("sso")) { 52940 new SingleSignOnLink(jQuery("a#sso")); 52941 } 52942 }).call(exports); 52943 } 52944 }); 52945 52946 // apps/base/assets/javascripts/components/magic_button.coffee 52947 var require_magic_button = __commonJS({ 52948 "apps/base/assets/javascripts/components/magic_button.coffee"(exports) { 52949 "use strict"; 52950 init_esbuild_shims(); 52951 (function() { 52952 var magicButtonsLinkedToForm; 52953 jQuery("a.button[data-track-clicks='Google Analytics']").each(function(index, element) { 52954 return jQuery(element).click(function(event2) { 52955 return window.trackEvent("Magic button", "Click", jQuery(event2.currentTarget).attr("href")); 52956 }); 52957 }); 52958 magicButtonsLinkedToForm = jQuery("a.button[data-form-select-value]"); 52959 if (magicButtonsLinkedToForm.length > 0) { 52960 magicButtonsLinkedToForm.each((index, element) => { 52961 var magicButton, openPopup, updateLinkedFormSelectField; 52962 magicButton = jQuery(element); 52963 magicButton.on("click", (event2) => { 52964 var linkedForm, magicButtonPopup, optionToBeSelected; 52965 magicButton = jQuery(event2.target); 52966 optionToBeSelected = jQuery(magicButton).data("form-select-value"); 52967 linkedForm = jQuery(".campaign-form-container .campaign-form"); 52968 magicButtonPopup = jQuery(`#magic-button-popup-${jQuery(magicButton).data("magic-button-popup-id")}`); 52969 updateLinkedFormSelectField(optionToBeSelected); 52970 linkedForm.appendTo(magicButtonPopup); 52971 return openPopup(magicButton); 52972 }); 52973 updateLinkedFormSelectField = (optionToBeSelected) => { 52974 var linkedFormSelectField; 52975 linkedFormSelectField = jQuery(`select[data-category-value='${jQuery(element).data("select-field-category")}']`); 52976 return linkedFormSelectField.val(optionToBeSelected).trigger("change"); 52977 }; 52978 return openPopup = (magicButton2) => { 52979 return jQuery.magnificPopup.open({ 52980 items: [ 52981 { 52982 src: `#magic-button-popup-${jQuery(magicButton2).data("magic-button-popup-id")}`, 52983 type: "inline" 52984 } 52985 ], 52986 callbacks: { 52987 open: () => { 52988 return jQuery(this.content).find("select.select2").select2(); 52989 }, 52990 close: () => { 52991 return jQuery(".magic-button-popup .campaign-form").appendTo(".campaign-form-container"); 52992 } 52993 } 52994 }); 52995 }; 52996 }); 52997 } 52998 }).call(exports); 52999 } 53000 }); 53001 53002 // apps/base/assets/javascripts/components/magic_webinar.coffee 53003 var require_magic_webinar = __commonJS({ 53004 "apps/base/assets/javascripts/components/magic_webinar.coffee"(exports) { 53005 "use strict"; 53006 init_esbuild_shims(); 53007 (function() { 53008 jQuery(".external-event select.date").on("change", (event2) => { 53009 return jQuery(".external-event a.button").attr("href", jQuery(event2.target).val()); 53010 }); 53011 jQuery(".icon-map-marker").on("click", function(event2) { 53012 return event2.stopImmediatePropagation(); 53013 }); 53014 jQuery("article.wide-card .training-dates .future").on("click", (event2) => { 53015 return window.location = $(event2.currentTarget).data("href"); 53016 }); 53017 }).call(exports); 53018 } 53019 }); 53020 53021 // apps/base/assets/javascripts/components/main_navigation.coffee 53022 var require_main_navigation = __commonJS({ 53023 "apps/base/assets/javascripts/components/main_navigation.coffee"(exports) { 53024 "use strict"; 53025 init_esbuild_shims(); 53026 (function() { 53027 var MainNavigation, lastScrollTop; 53028 MainNavigation = class MainNavigation { 53029 constructor(nav) { 53030 this.attachEvents = this.attachEvents.bind(this); 53031 this.setupMenuAim = this.setupMenuAim.bind(this); 53032 this.showSubmenu = this.showSubmenu.bind(this); 53033 this.hideSubmenu = this.hideSubmenu.bind(this); 53034 this.preventFollow = this.preventFollow.bind(this); 53035 this.updateThreshold = this.updateThreshold.bind(this); 53036 this.updateSearch = this.updateSearch.bind(this); 53037 this.updateSticky = this.updateSticky.bind(this); 53038 this.useMobile = this.useMobile.bind(this); 53039 this.useDesktop = this.useDesktop.bind(this); 53040 this.hoverItem = this.hoverItem.bind(this); 53041 this.toggleMobileMenu = this.toggleMobileMenu.bind(this); 53042 this.toggleMobileSearch = this.toggleMobileSearch.bind(this); 53043 this.goDeeper = this.goDeeper.bind(this); 53044 this.goBack = this.goBack.bind(this); 53045 this.changeMobileMenuHeight = this.changeMobileMenuHeight.bind(this); 53046 this.clearAllHoverStates = this.clearAllHoverStates.bind(this); 53047 this.nav = nav; 53048 this.search = this.nav.find("> .search"); 53049 this.searchbar = $("header").find("div.search-box"); 53050 this.top = this.nav.find("> ul"); 53051 this.originalActiveItem = this.top.find(".level-0 > li.active").first(); 53052 this.navBaseHeight = this.nav.height(); 53053 this.stickyThreshold = this.nav.offset().top; 53054 this.attachEvents(); 53055 } 53056 attachEvents() { 53057 jQuery(window).on("scroll", this.updateSticky); 53058 jQuery(window).on("breakpoint-change", (event2, breakpoint) => { 53059 if (breakpoint === "desktop") { 53060 return this.useDesktop(); 53061 } else { 53062 return this.useMobile(); 53063 } 53064 }); 53065 this.search.on("focusin", this.updateSearch); 53066 this.search.on("focusout", this.updateSearch); 53067 this.top.find(".left-side > ul > li, .right-side > ul > li").on("mouseenter", this.preventFollow).on("mouseleave", function() { 53068 }); 53069 this.setupMenuAim(); 53070 this.nav.on("mouseleave", this.clearAllHoverStates); 53071 $("header").find("a.mobilemenu").on("click", this.toggleMobileMenu); 53072 this.nav.find("div.close-button").on("click", this.toggleMobileMenu); 53073 $("header").find("a.mobilesearch").on("click", this.toggleMobileSearch); 53074 this.nav.find(".left-side li:not(.back-link), .right-side li:not(.back-link)").on("click", this.goDeeper); 53075 this.nav.find(".left-side li:not(.back-link) > a, .right-side li:not(.back-link) > a").on("click", function(e) { 53076 if (window.isMobile()) { 53077 return e.stopPropagation(); 53078 } 53079 }); 53080 this.nav.find(".left-side li.back-link, .right-side li.back-link").on("click", this.goBack); 53081 jQuery(document).find("#close_cookie").on("click", this.updateThreshold); 53082 this.nav.on("mouseenter", () => { 53083 return this.nav.addClass("instant"); 53084 }).on("mouseleave", () => { 53085 return this.nav.removeClass("instant"); 53086 }); 53087 if (jQuery.find(".accesscontrolbar").length) { 53088 jQuery("nav.main, nav.breadcrumb, nav.dashboard-submenu, header.product-compare, nav.in-
53088page-navigation").addClass("below-accesscontrolbar"); 53089 } 53090 if (jQuery.find("nav.breadcrumb").length) { 53091 jQuery("nav.in-page-navigation").addClass("below-breadcrumb"); 53092 } 53093 if (jQuery.find("nav.dashboard-submenu").length) { 53094 jQuery("nav.in-page-navigation").addClass("below-breadcrumb"); 53095 } 53096 if (jQuery("nav.in-page-navigation").length) { 53097 return jQuery("nav.breadcrumb").addClass("has-in-page-nav"); 53098 } 53099 } 53100 setupMenuAim() { 53101 return this.nav.find("ul.level-1, ul.level-1 ul").each((index, submenu) => { 53102 var isLeftSide, isRightSide, submenuDirection, submenuEl; 53103 submenuEl = jQuery(submenu); 53104 isLeftSide = submenuEl.closest(".left-side").length > 0; 53105 isRightSide = submenuEl.closest(".right-side").length > 0; 53106 submenuDirection = isLeftSide ? "right" : isRightSide ? "left" : "below"; 53107 return jQuery(submenu).menuAim({ 53108 submenuDirection, 53109 tolerance: 50, 53110 activate: (li) => { 53111 return this.showSubmenu(li); 53112 }, 53113 deactivate: (li) => { 53114 return this.hideSubmenu(li); 53115 } 53116 }); 53117 }); 53118 } 53119 showSubmenu(li) { 53120 var el; 53121 el = jQuery(li); 53122 this.hoverItem({ 53123 currentTarget: li 53124 }); 53125 if (el.closest("ul.level-1").length) { 53126 el.siblings().removeClass("hover-active"); 53127 return el.addClass("hover-active"); 53128 } else if (el.closest("ul.level-1 ul").length) { 53129 el.siblings().removeClass("hover-active"); 53130 return el.addClass("hover-active"); 53131 } 53132 } 53133 hideSubmenu(li) { 53134 var el; 53135 el = jQuery(li); 53136 return el.removeClass("hover-active"); 53137 } 53138 preventFollow(event2) { 53139 var el; 53140 el = jQuery(event2.currentTarget); 53141 this.hoverItem(event2); 53142 if (el.closest("ul.level-0").length && el.children("ul.level-1").length > 0) { 53143 this.nav.find("ul.level-0 > li").removeClass("hover-active"); 53144 el.addClass("hover-active"); 53145 } 53146 this.top.find(".hovered").removeClass("hovered"); 53147 this.top.find(".active").not(this.originalActiveItem).removeClass("active"); 53148 el.parentsUntil("ul.level-0", "li").addClass("hovered"); 53149 el.addClass("active"); 53150 return event2.preventDefault(); 53151 } 53152 updateThreshold() { 53153 var event2; 53154 event2 = new Event("closingCookieBar"); 53155 window.dispatchEvent(event2); 53156 return this.stickyThreshold = this.nav.offset().top; 53157 } 53158 updateSearch() { 53159 return this.search.toggleClass("active", jQuery("input#q").is(":focus")); 53160 } 53161 updateSticky() { 53162 var navMain; 53163 if (jQuery(window).scrollTop() > this.stickyThreshold && !window.isMobile()) { 53164 if (!jQuery("body").hasClass("sticky")) { 53165 navMain = this.nav.closest("nav.main"); 53166 jQuery(".wrapper").children("header.siteheader").css("margin-bottom", navMain.outerHeight() + "px"); 53167 } 53168 return jQuery("body").addClass("sticky"); 53169 } else { 53170 jQuery("body").removeClass("sticky"); 53171 return jQuery(".wrapper").children("header.siteheader").css("margin-bottom", ""); 53172 } 53173 } 53174 useMobile() { 53175 jQuery("div.search").removeAttr("style"); 53176 jQuery("body").removeClass("sticky"); 53177 this.nav.removeAttr("style"); 53178 this.top.removeAttr("style"); 53179 return this.nav.find("li.active").removeClass("active"); 53180 } 53181 useDesktop() { 53182 this.nav.removeAttr("style").removeClass("mobile-expanded"); 53183 return this.top.removeAttr("style"); 53184 } 53185 hoverItem(event2) { 53186 var el; 53187 if (window.isMobile()) { 53188 return; 53189 } 53190 el = jQuery(event2.currentTarget); 53191 return el.closest("[data-menuitems]").attr("data-menuitems", this.calcMenuLength(el).toString()); 53192 } 53193 toggleMobileMenu(event2) { 53194 var height; 53195 if (!window.isMobile()) { 53196 return; 53197 } 53198 event2.stopPropagation(); 53199 if (this.nav.hasClass("mobile-expanded")) { 53200 this.nav.removeClass("mobile-expanded"); 53201 return this.changeMobileMenuHeight(this.navBaseHeight); 53202 } else { 53203 this.navBaseHeight = this.nav.height(); 53204 height = "100vh"; 53205 this.nav.addClass("mobile-expanded"); 53206 return this.changeMobileMenuHeight(height); 53207 } 53208 } 53209 toggleMobileSearch(event2) { 53210 if (!window.isMobile()) { 53211 return; 53212 } 53213 event2.stopPropagation(); 53214 this.searchbar = $("header").find("div.search-box"); 53215 if (this.searchbar.hasClass("select")) { 53216 return this.searchbar.removeClass("select"); 53217 } else { 53218 return this.searchbar.addClass("select"); 53219 } 53220 } 53221 goDeeper(event2) { 53222 var target; 53223 if (!window.isMobile()) { 53224 return; 53225 } 53226 event2.stopPropagation(); 53227 target = jQuery(event2.currentTarget); 53228 if (target.children("ul").length) { 53229 return target.addClass("active"); 53230 } 53231 } 53232 goBack(event2) { 53233 var target; 53234 if (!window.isMobile()) { 53235 return; 53236 } 53237 event2.stopPropagation(); 53238 target = jQuery(event2.currentTarget); 53239 return target.closest(".active").removeClass("active"); 53240 } 53241 changeMobileMenuHeight(target) { 53242 return this.nav.stop().transition({ 53243 height: target 53244 }, 200); 53245 } 53246 calcMenuLength(el) { 53247 var lengths; 53248 lengths = el.parentsUntil("ul.level-0", "ul").add(el.children("ul")).map(function() { 53249 return jQuery(this).children("li:not(.back-link, .menu-title)").length; 53250 }); 53251 return Math.max.apply(null, lengths.toArray()); 53252 } 53253 clearAllHoverStates() { 53254 this.nav.find("li").removeClass("hover-active"); 53255 this.top.find(".hovered").removeClass("hovered"); 53256 return this.top.find(".active").not(this.originalActiveItem).removeClass("active"); 53257 } 53258 }; 53259 if (jQuery("body.wider nav.main").length > 0) { 53260 new MainNavigation(jQuery("nav.main .page-width")); 53261 lastScrollTop = window.pageYOffset || document.documentElement.scrollTop; 53262 window.addEventListener("scroll", function() { 53263 var currentScroll, headerHeight, scrollDirection, siteHeader; 53264 if (window.innerWidth <= 768) { 53265 siteHeader = document.getElementById("siteheader"); 53266 if (!siteHeader) { 53267 return; 53268 } 53269 headerHeight = siteHeader.offsetHeight; 53270 currentScroll = window.pageYOffset || document.documentElement.scrollTop; 53271 scrollDirection = currentScroll > lastScrollTop ? "down" : "up"; 53272 if (currentScroll <= headerHeight) { 53273 siteHeader.style.transform = "none"; 53274 } else if (scrollDirection === "down") { 53275 siteHeader.style.transform = "translateY(-100%)"; 53276 } else { 53277 siteHeader.style.transform = "none"; 53278 } 53279 return lastScrollTop = currentScroll; 53280 } 53281 }); 53282 } 53283 }).call(exports); 53284 } 53285 }); 53286 53287 // apps/base/assets/javascripts/components/main_navigation-old.coffee 53288 var require_main_navigation_old = __commonJS({ 53289 "apps/base/assets/javascripts/components/main_navigation-old.coffee"(exports) { 53290 "use strict"; 53291 init_esbuild_shims(); 53292 (function() { 53293 var MainNavigationOld, lastScrollTop; 53294 MainNavigationOld = class MainNavigationOld { 53295 constructor(nav) { 53296 this.attachEvents = this.attachEvents.bind(this); 53297 this.preventFollow = this.preventFollow.bind(this); 53298 this.updateThreshold = this.updateThreshold.bind(this); 53299 this.updateSearch = this.updateSearch.bind(this); 53300 this.updateSticky = this.updateSticky.bind(this); 53301 this.useMobile = this.useMobile.bind(this); 53302 this.useDesktop = this.useDesktop.bind(this); 53303 this.hoverItem = this.hoverItem.bind(this); 53304 this.toggleMobileMenu = this.toggleMobileMenu.bind(this); 53305 this.toggleMobileSearch = this.toggleMobileSearch.bind(this); 53306 this.goDeeper = this.goDeeper.bind(this); 53307 this.goBack = this.goBack.bind(this); 53308 this.changeMobileMenuHeight = this.changeMobileMenuHeight.bind(this); 53309 this.nav = nav; 53310 this.search = this.nav.find("> .search"); 53311 this.searchbar = $("header").find("div.search-box"); 53312 this.top = this.nav.find("> ul"); 53313 this.navBaseHeight = this.nav.height(); 53314 this.stickyThreshold = this.nav.offset().top; 53315 this.attachEvents(); 53316 } 53317 attachEvents() { 53318 jQuery(window).scroll(this.updateSticky); 53319 jQuery(window).on("breakpoint-change", (event2, breakpoint) => { 53320 if (breakpoint === "desktop") { 53321 return this.useDesktop(); 53322 } else { 53323 return this.useMobile(); 53324 } 53325 }); 53326 this.search.focusin(this.updateSearch); 53327 this.search.focusout(this.updateSearch); 53328 this.top.find("li").hover(this.hoverItem, function() { 53329 }); 53330 $("header").find("a.mobilemenu").on("click", this.toggleMobileMenu); 53331 this.nav.find("div.close-button").on("click", this.toggleMobileMenu); 53332 $("header").find("a.mobilesearch").on("click", this.toggleMobileSearch); 53333 this.nav.find("li:not(.back-link)").on("click", this.goDeeper); 53334 this.nav.find("li:not(.back-link) > a").on("click", function(e) { 53335 if (window.isMobile()) { 53336 return e.stopPropagation(); 53337 } 53338 }); 53339 this.nav.find("li.back-link").on("click", this.goBack); 53340 jQuery(document).find("#close_cookie").click(this.updateThreshold); 53341 return this.nav.hover((() => { 53342 return this.nav.addClass("instant"); 53343 }), (() => { 53344 return this.nav.removeClass("instant"); 53345 })); 53346 } 53347 preventFollow(event2) { 53348 var el; 53349 el = jQuery(event2.currentTarget); 53350 if (el.siblings("ul").length === 0 || el.hasClass("active")) { 53351 return; 53352 } 53353 this.top.find(".hovered").removeClass("hovered"); 53354 this.top.find(".active").removeClass("active"); 53355 el.parentsUntil("ul.level-0", "li").addClass("hovered"); 53356 el.addClass("active"); 53357 return event2.preventDefault(); 53358 } 53359 updateThreshold() { 53360 var event2; 53361 event2 = new Event("closingCookieBar"); 53362 window.dispatchEvent(event2); 53363 return this.stickyThreshold = this.nav.offset().top; 53364 } 53365 updateSearch() { 53366 return this.search.toggleClass("active", jQuery("input#q").is(":focus")); 53367 } 53368 updateSticky() { 53369 if (jQuery(window).scrollTop() > this.stickyThreshold && !window.isMobile()) { 53370 jQuery("body").addClass("sticky"); 53371 } else { 53372 jQuery("body").removeClass("sticky"); 53373 } 53374 if (jQuery.find(".accesscontrolbar").length) { 53375 jQuery("nav.main, nav.breadcrumb, header.product-compare, nav.in-
53375page-navigation").addClass("below-accesscontrolbar"); 53376 } 53377 if (jQuery.find("nav.breadcrumb").length) { 53378 return jQuery("nav.in-page-navigation").addClass("below-breadcrumb"); 53379 } 53380 } 53381 useMobile() { 53382 jQuery("div.search").removeAttr("style"); 53383 jQuery("body").removeClass("sticky"); 53384 this.nav.removeAttr("style"); 53385 this.top.removeAttr("style"); 53386 return this.nav.find("li.active").removeClass("active"); 53387 } 53388 useDesktop() { 53389 this.nav.removeAttr("style").removeClass("mobile-expanded"); 53390 return this.top.removeAttr("style"); 53391 } 53392 hoverItem(event2) { 53393 var el; 53394 if (window.isMobile()) { 53395 return; 53396 } 53397 el = jQuery(event2.currentTarget); 53398 return el.closest("[data-menuitems]").attr("data-menuitems", this.calcMenuLength(el).toString()); 53399 } 53400 toggleMobileMenu(event2) { 53401 var height; 53402 if (!window.isMobile()) { 53403 return; 53404 } 53405 event2.stopPropagation(); 53406 if (this.nav.hasClass("mobile-expanded")) { 53407 this.nav.removeClass("mobile-expanded"); 53408 return this.changeMobileMenuHeight(this.navBaseHeight); 53409 } else { 53410 this.navBaseHeight = this.nav.height(); 53411 height = "100vh"; 53412 this.nav.addClass("mobile-expanded"); 53413 return this.changeMobileMenuHeight(height); 53414 } 53415 } 53416 toggleMobileSearch(event2) { 53417 if (!window.isMobile()) { 53418 return; 53419 } 53420 event2.stopPropagation(); 53421 this.searchbar = $("header").find("div.search-box"); 53422 if (this.searchbar.hasClass("select")) { 53423 return this.searchbar.removeClass("select"); 53424 } else { 53425 return this.searchbar.addClass("select"); 53426 } 53427 } 53428 goDeeper(event2) { 53429 var target; 53430 if (!window.isMobile()) { 53431 return; 53432 } 53433 event2.stopPropagation(); 53434 target = jQuery(event2.currentTarget); 53435 if (target.children("ul").length) { 53436 return target.addClass("active"); 53437 } 53438 } 53439 goBack(event2) { 53440 var target; 53441 if (!window.isMobile()) { 53442 return; 53443 } 53444 event2.stopPropagation(); 53445 target = jQuery(event2.currentTarget); 53446 return target.closest(".active").removeClass("active"); 53447 } 53448 changeMobileMenuHeight(target) { 53449 return this.nav.stop().transition({ 53450 height: target 53451 }, 200); 53452 } 53453 calcMenuLength(el) { 53454 var lengths; 53455 lengths = el.parentsUntil("ul.level-0", "ul").add(el.children("ul")).map(function() { 53456 return jQuery(this).children("li:not(.back-link, .menu-title)").length; 53457 }); 53458 return Math.max.apply(null, lengths.toArray()); 53459 } 53460 }; 53461 if (jQuery("body.old nav.main").length > 0) { 53462 new MainNavigationOld(jQuery("nav.main .page-width")); 53463 lastScrollTop = window.pageYOffset || document.documentElement.scrollTop; 53464 window.addEventListener("scroll", function() { 53465 var currentScroll, headerHeight, scrollDirection, siteHeader; 53466 if (window.innerWidth <= 768) { 53467 siteHeader = document.getElementById("siteheader"); 53468 if (!siteHeader) { 53469 return; 53470 } 53471 headerHeight = siteHeader.offsetHeight; 53472 currentScroll = window.pageYOffset || document.documentElement.scrollTop; 53473 scrollDirection = currentScroll > lastScrollTop ? "down" : "up"; 53474 if (scrollDirection === "down" && currentScroll > headerHeight) { 53475 siteHeader.style.transform = "translateY(-100%)"; 53476 } else if (scrollDirection === "up" || currentScroll <= headerHeight) { 53477 if (currentScroll <= headerHeight) { 53478 siteHeader.style.position = "relative"; 53479 siteHeader.style.transform = "none"; 53480 } else { 53481 siteHeader.style.position = "fixed"; 53482 siteHeader.style.top = "0"; 53483 siteHeader.style.width = "100vw"; 53484 siteHeader.style.transform = "none"; 53485 } 53486 } 53487 return lastScrollTop = currentScroll; 53488 } 53489 }); 53490 } 53491 }).call(exports); 53492 } 53493 }); 53494 53495 // apps/base/assets/javascripts/components/media_carousel.coffee 53496 var require_media_carousel = __commonJS({ 53497 "apps/base/assets/javascripts/components/media_carousel.coffee"(exports) { 53498 "use strict"; 53499 init_esbuild_shims(); 53500 (function() { 53501 var MediaCarousel; 53502 MediaCarousel = class MediaCarousel { 53503 constructor($el) { 53504 this.attachHandlers = this.attachHandlers.bind(this); 53505 this.animateToVisual = this.animateToVisual.bind(this);
53506 this.updateActiveThumbnail = this.updateActiveThumbnail.bind(this); 53507 this.$el = $el; 53508 this.visualsWidth = this.$el.find(".visuals").width(); 53509 this.listElements = this.$el.find(".visuals .list-container > ul > li"); 53510 this.listElementWidth = this.listElements.eq(0).width(); 53511 this.thumbnailContainerWidth = this.$el.find(".thumbnails .list-container").eq(0).width(); 53512 this.thumbnailElements = this.$el.find(".thumbnails .list-container > ul > li"); 53513 this.thumbnailElementWidth = this.thumbnailElements.eq(0).width(); 53514 if (this.listElements.length > 1) { 53515 this.$el.find(".next").addClass("available"); 53516 this.thumbnailElements.eq(0).find("figure").addClass("active"); 53517 } 53518 this.isFullWidth = this.$el.hasClass("full_width"); 53519 this.isMobile = window.innerWidth < 768; 53520 if (this.isFullWidth && !this.isMobile) { 53521 this.listElementWidth = this.visualsWidth; 53522 this.listElements.each((index, element) => { 53523 return jQuery(element).width(this.visualsWidth); 53524 }); 53525 } 53526 this.attachHandlers(); 53527 this.position = 0; 53528 } 53529 attachHandlers() { 53530 this.$el.find(".thumbnails li").on("click", (event2) => { 53531 this.position = jQuery(event2.currentTarget).index(); 53532 this.animateToVisual(); 53533 return this.updateActiveThumbnail(); 53534 }); 53535 this.$el.find(".previous").on("click", (event2) => { 53536 this.position -= 1; 53537 this.animateToVisual(); 53538 return this.updateActiveThumbnail(); 53539 }); 53540 this.$el.find(".next").on("click", (event2) => { 53541 this.position += 1; 53542 this.animateToVisual(); 53543 return this.updateActiveThumbnail(); 53544 }); 53545 return window.onresize = () => { 53546 if (this.isFullWidth && !this.isMobile) {
53547 this.visualsWidth = this.$el.find(".visuals").width(); 53548 this.listElements.each((index, element) => { 53549 return jQuery(element).width(this.visualsWidth); 53550 }); 53551 this.listElementWidth = this.visualsWidth; 53552 return this.animateToVisual(); 53553 } 53554 }; 53555 } 53556 animateToVisual() { 53557 var pixelsToMove; 53558 this.$el.find(".visuals .list-container > ul").css("transform", "translateX(-" + this.position * this.listElementWidth + "px)"); 53559 pixelsToMove = Math.floor(this.position * this.thumbnailElementWidth / this.thumbnailContainerWidth) * this.thumbnailContainerWidth; 53560 this.$el.find(".thumbnails .list-container > ul").css("transform", "translateX(-" + Math.max(0, pixelsToMove) + "px)"); 53561 if (this.position === 0) { 53562 this.$el.find(".previous").removeClass("available"); 53563 } else { 53564 this.$el.find(".previous").addClass("available"); 53565 } 53566 if (this.position === this.listElements.length - 1) { 53567 return this.$el.find(".next").removeClass("available"); 53568 } else { 53569 return this.$el.find(".next").addClass("available"); 53570 } 53571 } 53572 updateActiveThumbnail() { 53573 this.$el.find(".active").removeClass("active"); 53574 return this.$el.find(".thumbnails .list-container > ul > li").eq(this.position).find("figure").addClass("active"); 53575 } 53576 }; 53577 jQuery(".media-carousel").each(function(index, element) { 53578 return new MediaCarousel(jQuery(element)); 53579 }); 53580 }).call(exports); 53581 } 53582 }); 53583 53584 // apps/base/assets/javascripts/components/navigation_tab.coffee 53585 var require_navigation_tab = __commonJS({ 53586 "apps/base/assets/javascripts/components/navigation_tab.coffee"(exports, module) { 53587 "use strict"; 53588 init_esbuild_shims(); 53589 (function() { 53590 var NavigationTab; 53591 NavigationTab = class NavigationTab { 53592 constructor(el, useHash1 = true) { 53593 this.attachEvents = this.attachEvents.bind(this); 53594 this.showArticle = this.showArticle.bind(this); 53595 this.showSection = this.showSection.bind(this); 53596 this.hide = this.hide.bind(this); 53597 this.breakpointChange = this.breakpointChange.bind(this); 53598 this.isActive = this.isActive.bind(this); 53599 this.handleBrowserNavigation = this.handleBrowserNavigation.bind(this); 53600 this.useHash = useHash1; 53601 this.tab = jQuery(el); 53602 this.tabKey = this.tab.data("content").toString(); 53603 this.tabContent = jQuery('section.tabs article[data-content="' + this.tabKey.replace(/'/g, "'") + '"]'); 53604 this.accordion = this.tabContent.find("a.accordion"); 53605 this.content = this.tabContent.find("> section"); 53606 this.moreDropdown = $(".more-dropdown .extra-tabs li a"); 53607 this.normalTabs = $("nav.listing-tabs > ul li a"); 53608 this.attachEvents(); 53609 } 53610 attachEvents() { 53611 this.tab.click((event2) => { 53612 event2.preventDefault(); 53613 return this.showArticle(false); 53614 }); 53615 this.moreDropdown.click(() => { 53616 $(".more-tabs p").addClass("more-tabs-selected"); 53617 return $("nav.listing-tabs > ul li").removeClass("active"); 53618 }); 53619 this.normalTabs.click(() => { 53620 $(".more-tabs p").removeClass("more-tabs-selected"); 53621 return $(".more-dropdown .extra-tabs li").removeClass("active"); 53622 }); 53623 this.accordion.click(() => { 53624 if (this.isActive()) { 53625 return this.hide(); 53626 } else { 53627 return this.showArticle(true); 53628 } 53629 }); 53630 jQuery(window).on("popstate", this.handleBrowserNavigation); 53631 return jQuery(window).on("breakpoint-change", this.breakpointChange); 53632 } 53633 showArticle(animate) { 53634 this.showSection(animate); 53635 if (this.useHash) { 53636 location.hash = this.tabKey; 53637 } 53638 return trackEvent(this.tab.data("content"), "Click tab", this.tab.attr("data-tracking-label")); 53639 } 53640 showSection(animate) { 53641 if (animate) { 53642 this.content.slideDown(); 53643 } else if (this.content.hasClass("magic-card")) { 53644 this.content.css("display", "flex"); 53645 } else { 53646 this.content.show(); 53647 if (this.content.parent("article.cards").length > 0) { 53648 this.content.css("display", "flex"); 53649 } 53650 } 53651 this.deselectActiveTab(); 53652 this.selectTab(); 53653 return this.tab.trigger("tab-change", [this.tabContent, this.tab]); 53654 } 53655 hide() { 53656 if (this.useHash) { 53657 location.hash = this.tabKey; 53658 } 53659 this.content.slideUp(() => { 53660 return this.tabContent.removeClass("active"); 53661 }); 53662 return this.tab.parent().removeClass("active"); 53663 } 53664 breakpointChange(event2, breakpoint) { 53665 if (breakpoint === "desktop" && location.hash.substr(1) === this.tabKey) { 53666 return this.showSection(false); 53667 } 53668 } 53669 isActive() { 53670 return this.tab.parent().hasClass("active"); 53671 } 53672 deselectActiveTab() { 53673 this.tabContent.siblings(".active").removeClass("active").find("> section").hide(); 53674 if ($("nav.tabs").attr("data-content")) { 53675 jQuery("nav.tabs[data-content='" + this.tabKey.charAt(0) + "']").find("li.active").removeClass("active"); 53676 } 53677 return this.tab.parents("ul").find("li.active").removeClass("active"); 53678 } 53679 selectTab() { 53680 if (this.tab.parents(".extra-tabs").length > 0) { 53681 jQuery(".more-tabs").addClass("active"); 53682 } 53683 this.tab.parent().addClass("active"); 53684 return this.tabContent.addClass("active"); 53685 } 53686 makeActive(el) { 53687 return el.addClass("active").siblings().removeClass("active"); 53688 } 53689 handleBrowserNavigation() { 53690 if (location.hash === "" && this.tabKey === "all" || location.hash.substr(1) === this.tabKey) { 53691 if (!this.isActive()) { 53692 return this.showSection(false); 53693 } 53694 } 53695 } 53696 }; 53697 window.initTabs = function(useHash = true) { 53698 return jQuery("nav.tabs ul li a").each((index, element) => { 53699 var tab, tabKey;
53700 tab = new NavigationTab(element, useHash); 53701 tabKey = jQuery(element).data("content"); 53702 if (location.hash.substr(1) === tabKey) { 53703 return jQuery(document).ready(() => { 53704 return tab.showSection(false); 53705 }); 53706 } 53707 }); 53708 }; 53709 window.initTabs(); 53710 jQuery("nav.listing-tabs ul li a").each((index, element) => { 53711 var tab, tabKey; 53712 tab = new NavigationTab(element); 53713 tabKey = jQuery(element).data("content"); 53714 if (location.hash.substr(1) === tabKey) { 53715 return jQuery(document).ready(() => { 53716 return tab.showSection(false); 53717 }); 53718 } 53719 }); 53720 module.exports = NavigationTab; 53721 }).call(exports); 53722 } 53723 }); 53724 53725 // apps/base/assets/javascripts/components/news.coffee 53726 var require_news = __commonJS({ 53727 "apps/base/assets/javascripts/components/news.coffee"(exports) { 53728 "use strict"; 53729 init_esbuild_shims(); 53730 (function() { 53731 var News; 53732 News = class News { 53733 constructor(el) { 53734 this.attachHandlers = this.attachHandlers.bind(this); 53735 this.renderCards = this.renderCards.bind(this); 53736 this.el = el; 53737 this.attachHandlers(); 53738 this.renderCards(); 53739 } 53740 attachHandlers() { 53741 return $(window).on("resize", (event2) => { 53742 return this.renderCards(); 53743 }); 53744 } 53745 renderCards() { 53746 if ($(window).width() < 512) { 53747 this.el.find(".js-packery article").css("display", "none"); 53748 this.el.find(".js-packery article:lt(3)").css("display", "block"); 53749 } 53750 if ($(window).width() >= 512) { 53751 return this.el.find(".js-packery article").css("display", "block"); 53752 } 53753 } 53754 }; 53755 new News(jQuery("#news-cards")); 53756 }).call(exports); 53757 } 53758 }); 53759 53760 // apps/base/assets/javascripts/components/news_article.coffee 53761 var require_news_article = __commonJS({ 53762 "apps/base/assets/javascripts/components/news_article.coffee"(exports) { 53763 "use strict"; 53764 init_esbuild_shims(); 53765 (function() { 53766 var NewsArticle; 53767 NewsArticle = class NewsArticle { 53768 constructor(el) { 53769 this.attachHandlers = this.attachHandlers.bind(this); 53770 this.fixSocialIconsPosition = this.fixSocialIconsPosition.bind(this); 53771 this.el = el; 53772 this.socialIcons = this.el.find(".socialicons"); 53773 this.nav = $("nav.main .page-width"); 53774 this.siteHeaderHeight = $(".siteheader").outerHeight(); 53775 this.initialNavHeight = $("nav.separated-navigation").outerHeight(); 53776 this.attachHandlers(); 53777 } 53778 attachHandlers() { 53779 return $(window).scroll(() => { 53780 return this.fixSocialIconsPosition(); 53781 }); 53782 } 53783 fixSocialIconsPosition() { 53784 var maxTopPosition; 53785 maxTopPosition = jQuery("article > div.page-width > .content").height() - this.socialIcons.height(); 53786 if (jQuery(window).scrollTop() < maxTopPosition) { 53787 return this.socialIcons.css("top", $(window).scrollTop().toString() + "px"); 53788 } 53789 } 53790 }; 53791 new NewsArticle(jQuery("article")); 53792 }).call(exports); 53793 } 53794 }); 53795 53796 // apps/base/assets/javascripts/components/notification.coffee 53797 var require_notification = __commonJS({ 53798 "apps/base/assets/javascripts/components/notification.coffee"(exports) { 53799 "use strict"; 53800 init_esbuild_shims(); 53801 (function() { 53802 var NotificationService; 53803 NotificationService = class NotificationService { 53804 constructor() { 53805 this.attachEvents(); 53806 this.notification = jQuery("body > div.notifications > div.notification"); 53807 if (this.notification.attr("data-type") === "success") { 53808 this.showSuccessNotification("", this.notification.attr("data-text")); 53809 } 53810 if (this.notification.attr("data-type") === "error") { 53811 this.showErrorNotification("", this.notification.attr("data-text")); 53812 } 53813 } 53814 showSuccessNotification(header, message) { 53815 this.notification.attr("class", "notification success"); 53816 return this.showNotification(header, message); 53817 } 53818 showDefaultNotification(header, message) { 53819 this.notification.attr("class", "notification"); 53820 return this.showNotification(header, message); 53821 } 53822 showErrorNotification(header, message) { 53823 this.notification.attr("class", "notification error"); 53824 return this.showNotification(header, message, false); 53825 } 53826 showNotification(header, message, auto_close = true) { 53827 this.notification.find("h4").html(header); 53828 this.notification.find("p").html(message); 53829 this.notification.parent().show(); 53830 if (auto_close) { 53831 return setTimeout((() => { 53832 return this.hideNotification(); 53833 }), 5e3); 53834 } 53835 } 53836 hideNotification() { 53837 return this.notification.parent().hide(); 53838 } 53839 attachEvents() { 53840 return jQuery("body").on("click", "div.notification span.close", (event2) => { 53841 return this.hideNotification(); 53842 }); 53843 } 53844 }; 53845 jQuery(function() { 53846 return window.notificationService = new NotificationService(); 53847 }); 53848 }).call(exports); 53849 } 53850 }); 53851 53852 // apps/base/assets/javascripts/components/old_doorway.coffee 53853 var require_old_doorway = __commonJS({ 53854 "apps/base/assets/javascripts/components/old_doorway.coffee"(exports) { 53855 "use strict"; 53856 init_esbuild_shims(); 53857 (function() { 53858 var HighlightDivisionHeader; 53859 HighlightDivisionHeader = class HighlightDivisionHeader { 53860 constructor(element1) { 53861 this.selectVisual = this.selectVisual.bind(this); 53862 this.onHover = this.onHover.bind(this); 53863 this.element = element1; 53864 this.element.find("div.division").hover(this.onHover); 53865 } 53866 selectVisual(element) { 53867 if (jQuery(element).is("div.division")) { 53868 return jQuery(element).find("span.visual"); 53869 } else { 53870 return jQuery(element).parents("div.division").find("span.visual"); 53871 } 53872 } 53873 onHover(event2) { 53874 return this.selectVisual(event2.target).toggleClass("over"); 53875 } 53876 }; 53877 if (jQuery("div.divisions")) { 53878 new HighlightDivisionHeader(jQuery("div.divisions")); 53879 } 53880 }).call(exports); 53881 } 53882 }); 53883 53884 // apps/base/assets/javascripts/components/omron_form_helper.coffee 53885 var require_omron_form_helper = __commonJS({ 53886 "apps/base/assets/javascripts/components/omron_form_helper.coffee"(exports) { 53887 "use strict"; 53888 init_esbuild_shims(); 53889 (function() { 53890 var OmronFormHelper;
53891 OmronFormHelper = class OmronFormHelper { 53892 constructor(forms) { 53893 this.addFormField = this.addFormField.bind(this); 53894 this.forms = forms; 53895 this.addFormField(this.forms); 53896 } 53897 addFormField(forms) { 53898 this.forms = forms; 53899 return this.forms.each(function(index, form) { 53900 if ((jQuery(form).attr("method") || "").toLowerCase() !== "get") { 53901 return jQuery("<input>").attr({ 53902 type: "hidden", 53903 name: "omronformhelper", 53904 value: "853947633" 53905 }).appendTo(form); 53906 } 53907 }); 53908 } 53909 }; 53910 if (jQuery("form").length > 0) { 53911 new OmronFormHelper(jQuery("form")); 53912 } 53913 }).call(exports); 53914 } 53915 }); 53916 53917 // apps/base/assets/javascripts/components/page/site_navigation.coffee 53918 var require_site_navigation = __commonJS({ 53919 "apps/base/assets/javascripts/components/page/site_navigation.coffee"(exports) { 53920 "use strict"; 53921 init_esbuild_shims(); 53922 (function() { 53923 jQuery(".icon.my-lists").on("click", function() { 53924 return trackEvent("My list", "Clicked on heart-navigation"); 53925 }); 53926 }).call(exports); 53927 } 53928 }); 53929 53930 // apps/base/assets/javascripts/components/popups.coffee 53931 var require_popups = __commonJS({ 53932 "apps/base/assets/javascripts/components/popups.coffee"(exports) { 53933 "use strict"; 53934 init_esbuild_shims(); 53935 (function() { 53936 var observer; 53937 jQuery().magnificPopup; 53938 jQuery("a.login, a.direct_access, a.register").magnificPopup({ 53939 type: "inline", 53940 preloader: false, 53941 midClick: true, 53942 mainClass: "login-popup" 53943 }); 53944 jQuery(".visual.video a, a.video").magnificPopup({ 53945 disableOn: 700, 53946 type: "iframe", 53947 mainClass: "visual-video-popup", 53948 removalDelay: 160, 53949 preloader: false, 53950 fixedContentPos: false 53951 }); 53952 jQuery("a.closemodal").on("click", function(event2) { 53953 if (jQuery(event2.currentTarget).attr("href") == null) { 53954 return jQuery.magnificPopup.close(); 53955 } 53956 }); 53957 if (jQuery("#newsletterpopup").length) { 53958 window.openNewsletterPopup = function() { 53959 return jQuery.magnificPopup.open({ 53960 items: { 53961 src: "#newsletterpopup" 53962 } 53963 }); 53964 }; 53965 openNewsletterPopup(); 53966 } 53967 if (jQuery("#account-verification").length) { 53968 window.openAccountVerificationPopup = function() { 53969 var showEvery, warningDay, yearAndMonth; 53970 showEvery = 3; 53971 yearAndMonth = `${(/* @__PURE__ */ new Date()).getFullYear()}-${(/* @__PURE__ */ new Date()).getMonth()}`; 53972 warningDay = `expiration-popup-${yearAndMonth}-${parseInt(parseInt(jQuery("#account-verification").attr("data-days")) / showEvery)}`; 53973 if (!localStorage.getItem(warningDay)) { 53974 jQuery.magnificPopup.open({ 53975 items: { 53976 src: "#account-verification" 53977 }, 53978 mainClass: "account-verification-popup" 53979 }); 53980 return localStorage.setItem(warningDay, true); 53981 } 53982 }; 53983 openAccountVerificationPopup(); 53984 jQuery("#close").on("click", function(event2) { 53985 event2.preventDefault(); 53986 return jQuery.magnificPopup.close(); 53987 }); 53988 } 53989 window.initVideoPopups = () => { 53990 window.initYoutubeVideoPopups(); 53991 window.initWistiaVideoPopups(); 53992 return window.initLargeVideoPopups(); 53993 }; 53994 window.initLoginPopup = () => { 53995 return jQuery("a.login, a.direct_access, a.register").magnificPopup({ 53996 type: "inline", 53997 preloader: false, 53998 midClick: true, 53999 mainClass: "login-popup" 54000 }); 54001 }; 54002 window.initLargeVideoPopups = () => { 54003 return jQuery(".large-video-popup").each(function(index, element) { 54004 return jQuery(element).magnificPopup({ 54005 type: "inline", 54006 midClick: true, 54007 mainClass: "large-video-popup", 54008 closeBtnInside: true, 54009 callbacks: { 54010 close: function() { 54011 jQuery("#video-player")[0].pause(); 54012 return jQuery("article.video video").trigger("startPlaying"); 54013 } 54014 } 54015 }); 54016 }); 54017 }; 54018 window.initMicrosoftBookingsPopups = () => { 54019 return jQuery(".microsoft-bookings-link").each(function(index, element) { 54020 return jQuery(element).magnificPopup({ 54021 type: "inline", 54022 midClick: true, 54023 mainClass: "microsoft-bookings-popup", 54024 closeBtnInside: true 54025 }); 54026 }); 54027 }; 54028 window.initFormPopups = () => { 54029 return jQuery(".form-popup-link").each(function(index, element) { 54030 var popupClassName; 54031 popupClassName = jQuery(element).data("popup-class-name"); 54032 return jQuery(element).magnificPopup({ 54033 type: "inline", 54034 midClick: true, 54035 mainClass: "form-popup " + popupClassName, 54036 closeBtnInside: true, 54037 focus: ".select2-search", 54038 callbacks: { 54039 open: function() { 54040 return this.content.find(".select2[data-type='country']").select2({ 54041 width: "100%" 54042 }); 54043 }, 54044 close: function() { 54045 return jQuery("div.form-wrapper iframe").remove(); 54046 } 54047 } 54048 }); 54049 }); 54050 }; 54051 window.initYoutubeVideoPopups = () => { 54052 return jQuery(".youtube-video-link").each(function(index, element) { 54053 return jQuery(element).magnificPopup({ 54054 type: "inline", 54055 midClick: true, 54056 mainClass: "video-popup", 54057 closeBtnInside: true, 54058 callbacks: { 54059 change: function() { 54060 var playlistId, videoId; 54061 videoId = this.content.find("div.video-wrapper").attr("id").replace("player-", ""); 54062 playlistId = this.content.find("div.video-wrapper").data("playlist"); 54063 jQuery("div.video-wrapper iframe").remove(); 54064 this.content.find("div.video-wrapper").html('<div class="youtube-player" id="' + videoId + '"></div>'); 54065 return new window.YouTubeVideo(videoId, playlistId); 54066 }, 54067 close: function() { 54068 return jQuery("div.video-wrapper iframe").remove(); 54069 } 54070 } 54071 }); 54072 }); 54073 }; 54074 window.initImagesAndWarnings = () => { 54075 var groupNames; 54076 jQuery(".inline-link").magnificPopup({ 54077 type: "inline", 54078 midClick: true, 54079 mainClass: "content-popup", 54080 closeBtnInside: true 54081 }); 54082 groupNames = jQuery(".image-link[rel]").map(function() { 54083 return jQuery(this).attr("rel"); 54084 }); 54085 jQuery.uniqueSort(groupNames).each(function() { 54086 return $('.image-link[rel="' + this + '"]').magnificPopup({ 54087 type: "image", 54088 gallery: { 54089 enabled: true 54090 }, 54091 mainClass: "image-popup", 54092 closeBtnInside: true 54093 }); 54094 }); 54095 jQuery(".flash-link").magnificPopup({ 54096 type: "inline", 54097 midClick: true, 54098 mainClass: "flash-popup" 54099 }); 54100 jQuery(".inline-warning").magnificPopup({ 54101 type: "inline", 54102 midClick: true, 54103 mainClass: "error-popup" 54104 }); 54105 return jQuery(".wide-popup").magnificPopup({ 54106 type: "inline", 54107 midClick: true, 54108 mainClass: "wide-popup", 54109 closeBtnInside: true 54110 }); 54111 }; 54112 window.initWistiaVideoPopups = () => { 54113 return jQuery(".wistia-video-link").each(function(index, element) { 54114 return jQuery(element).magnificPopup({ 54115 type: "inline", 54116 midClick: true, 54117 mainClass: "video-popup", 54118 closeBtnInside: true 54119 }); 54120 }); 54121 }; 54122 jQuery(document).ready(function() { 54123 window.initImagesAndWarnings(); 54124 window.initVideoPopups(); 54125 window.initFormPopups(); 54126 window.initMicrosoftBookingsPopups(); 54127 return window.initLoginPopup(); 54128 }); 54129 if (jQuery("licences-table").length > 0) { 54130 observer = new MutationObserver(function(mutations_list) { 54131 return mutations_list.forEach(function(mutation) {
54132 return mutation.addedNodes.forEach(function(added_node) { 54133 if (jQuery(added_node).find(".open-popup-link").length > 0) { 54134 return jQuery(".open-popup-link").magnificPopup({ 54135 gallery: { 54136 enabled: false 54137 }, 54138 closeBtnInside: true, 54139 mainClass: "release-notes-popup" 54140 }); 54141 } 54142 }); 54143 }); 54144 }); 54145 observer.observe(document.querySelector("licences-table"), { 54146 subtree: true, 54147 childList: true 54148 }); 54149 } 54150 }).call(exports); 54151 } 54152 }); 54153 54154 // apps/base/assets/javascripts/components/recaptcha.coffee 54155 var require_recaptcha = __commonJS({ 54156 "apps/base/assets/javascripts/components/recaptcha.coffee"(exports) { 54157 "use strict"; 54158 init_esbuild_shims(); 54159 (function() { 54160 var loadRecaptcha; 54161 loadRecaptcha = function(event2, data) { 54162 $("head").append('<script async defer src="https://www.recaptcha.net/recaptcha/api.js?render=explicit&onload=onCaptchaLoaded"><\/script>'); 54163 jQuery("body").off("focus", "form input", loadRecaptcha); 54164 jQuery("#authentication_dialog").off("click", loadRecaptcha); 54165 return jQuery(".form-popup-link").off("click", loadRecaptcha); 54166 }; 54167 jQuery(function() { 54168 if (jQuery(".load-recaptcha-when-needed").length === 1) { 54169 jQuery("body").on("focus", "form input", loadRecaptcha); 54170 jQuery("#authentication_dialog").on("click", loadRecaptcha); 54171 jQuery(".form-popup-link").on("click", loadRecaptcha); 54172 if (jQuery("main form:visible").length > 0) { 54173 return loadRecaptcha(); 54174 } 54175 } else if (jQuery(".load-recaptcha").length === 1) { 54176 return loadRecaptcha(); 54177 } 54178 }); 54179 }).call(exports); 54180 } 54181 }); 54182 54183 // apps/base/assets/javascripts/components/search_bar.coffee 54184 var require_search_bar = __commonJS({ 54185 "apps/base/assets/javascripts/components/search_bar.coffee"(exports) { 54186 "use strict"; 54187 init_esbuild_shims(); 54188 (function() { 54189 document.addEventListener("DOMContentLoaded", function() { 54190 var checkInput, clearButton, formIcon, inputField, searchForm; 54191 inputField = document.getElementById("q"); 54192 if (!inputField) { 54193 return; 54194 } 54195 clearButton = document.getElementById("clear-input"); 54196 searchForm = document.getElementById("searchForm"); 54197 if (searchForm) { 54198 formIcon = searchForm.querySelector(".fa-search"); 54199 } 54200 checkInput = function() { 54201 if (inputField.value.length > 0) { 54202 return clearButton.style.display = "block"; 54203 } else { 54204 return clearButton.style.display = "none"; 54205 } 54206 }; 54207 checkInput(); 54208 clearButton.addEventListener("click", function() { 54209 inputField.value = ""; 54210 return clearButton.style.display = "none"; 54211 }); 54212 inputField.addEventListener("keyup", function(event2) { 54213 checkInput(); 54214 if (event2.keyCode === 13) { 54215 event2.preventDefault(); 54216 if (searchForm) { 54217 return searchForm.submit(); 54218 } 54219 } 54220 }); 54221 if (searchForm && formIcon) { 54222 searchForm.addEventListener("focusin", function() { 54223 return formIcon.classList.add("selected"); 54224 }); 54225 return searchForm.addEventListener("focusout", function() { 54226 return formIcon.classList.remove("selected"); 54227 }); 54228 } 54229 }); 54230 }).call(exports); 54231 } 54232 }); 54233 54234 // apps/base/assets/javascripts/components/searchbox.coffee 54235 var require_searchbox = __commonJS({ 54236 "apps/base/assets/javascripts/components/searchbox.coffee"(exports) { 54237 "use strict"; 54238 init_esbuild_shims(); 54239 (function() { 54240 jQuery(function() { 54241 var delay, hideSearchBox, showSearchBox, timer; 54242 timer = void 0;
54243 delay = 250; 54244 jQuery("nav .search-container .icon.search").on("mouseover", function() { 54245 clearTimeout(timer); 54246 return showSearchBox(); 54247 }).on("mouseleave", function(event2) { 54248 if (!jQuery(event2.target).is("input")) { 54249 return timer = setTimeout(hideSearchBox, delay); 54250 } 54251 }); 54252 jQuery("nav .search-container .icon.search").on("click", function() { 54253 return showSearchBox(); 54254 }); 54255 showSearchBox = function() { 54256 jQuery("nav .search-container .search-box").show(); 54257 jQuery("nav .search-container .icon.search").addClass("active"); 54258 return jQuery("nav .search-container input[type='text']").focus(); 54259 }; 54260 return hideSearchBox = function() { 54261 jQuery("nav .search-container .search-box").hide(); 54262 return jQuery("nav .search-container .icon.search").removeClass("active"); 54263 }; 54264 }); 54265 }).call(exports); 54266 } 54267 }); 54268 54269 // apps/base/assets/javascripts/components/tag_filter.coffee 54270 var require_tag_filter = __commonJS({ 54271 "apps/base/assets/javascripts/components/tag_filter.coffee"(exports) { 54272 "use strict"; 54273 init_esbuild_shims(); 54274 (function() { 54275 var TagFilter; 54276 TagFilter = class TagFilter { 54277 constructor(element) { 54278 this.items = element.parent().find("*[data-tags]"); 54279 this.itemsContainer = this.items.parent(); 54280 this.allItems = this.items.clone(); 54281 this.tags = element.find("a"); 54282 this.attachHandlers(); 54283 this.countTagItems(); 54284 } 54285 attachHandlers() { 54286 return this.tags.on("click", (event2) => { 54287 this.tags.filter(".enabled").removeClass("enabled"); 54288 jQuery(event2.currentTarget).toggleClass("enabled"); 54289 return this.updateItems(); 54290 }); 54291 } 54292 countTagItems() { 54293 var count, i, len, ref, results, tag, tagCounts; 54294 tagCounts = {}; 54295 this.items.each((index, item) => { 54296 var i2, len2, ref2, results2, tag2; 54297 ref2 = jQuery(item).data("tags"); 54298 results2 = []; 54299 for (i2 = 0, len2 = ref2.length; i2 < len2; i2++) { 54300 tag2 = ref2[i2]; 54301 results2.push(tagCounts[tag2] = tagCounts[tag2] + 1 || 1); 54302 } 54303 return results2; 54304 }); 54305 ref = this.tags; 54306 results = []; 54307 for (i = 0, len = ref.length; i < len; i++) { 54308 tag = ref[i]; 54309 if (jQuery(tag).data("all")) { 54310 count = this.items.length; 54311 } else { 54312 count = tagCounts[jQuery(tag).data("tag")]; 54313 } 54314 if (count) { 54315 results.push(tag.innerHTML += ` <span class=count>(${count})</span>`); 54316 } else { 54317 results.push(jQuery(tag).hide()); 54318 } 54319 } 54320 return results; 54321 } 54322 updateItems() { 54323 var currentTag; 54324 currentTag = this.tags.filter(".enabled"); 54325 this.itemsContainer.empty(); 54326 this.itemsContainer.append(this.allItems); 54327 if (!currentTag.data("all")) { 54328 return this.itemsContainer.find("*[data-tags]").each((index, item) => { 54329 if (jQuery.inArray(currentTag.data("tag"), jQuery(item).data("tags")) === -1) { 54330 return jQuery(item).remove(); 54331 } 54332 }); 54333 } 54334 } 54335 }; 54336 jQuery(".tags").each(function(index, element) { 54337 if (element.childElementCount > 0) { 54338 return new TagFilter(jQuery(element)); 54339 } 54340 }); 54341 }).call(exports); 54342 } 54343 }); 54344 54345 // apps/base/assets/javascripts/components/toggle_switch.coffee 54346 var require_toggle_switch = __commonJS({ 54347 "apps/base/assets/javascripts/components/toggle_switch.coffee"(exports) { 54348 "use strict"; 54349 init_esbuild_shims(); 54350 (function() { 54351 jQuery(".toggleswitch").click(function() { 54352 var control, value; 54353 control = jQuery(this); 54354 value = control.find("input:checked").val(); 54355 return jQuery(control.data("selector")).each(function() { 54356 var el, name; 54357 el = jQuery(this); 54358 if (name = el.data("toggle")) { 54359 if (name === value) { 54360 return el.addClass("active"); 54361 } else { 54362 return el.removeClass("active"); 54363 } 54364 } 54365 }); 54366 }); 54367 jQuery(".toggleswitch input:checked").trigger("click"); 54368 }).call(exports); 54369 } 54370 }); 54371 54372 // apps/base/assets/javascripts/components/toggles.coffee 54373 var require_toggles = __commonJS({ 54374 "apps/base/assets/javascripts/components/toggles.coffee"(exports) { 54375 "use strict"; 54376 init_esbuild_shims(); 54377 (function() { 54378 jQuery("body").on("click", ".toggle", function(e) { 54379 var checkbox, checkboxID; 54380 checkboxID = jQuery(this).attr("ref"); 54381 checkbox = jQuery("#" + checkboxID); 54382 if (checkbox.is(":checked")) { 54383 checkbox.prop("checked", false).trigger("change"); 54384 } else { 54385 checkbox.prop("checked", true).trigger("change"); 54386 } 54387 jQuery(this).toggleClass("checked").siblings().toggleClass("checked"); 54388 return e.preventDefault(); 54389 }); 54390 }).call(exports); 54391 } 54392 }); 54393 54394 // apps/base/assets/javascripts/components/tooltip.coffee 54395 var require_tooltip = __commonJS({ 54396 "apps/base/assets/javascripts/components/tooltip.coffee"(exports) { 54397 "use strict"; 54398 init_esbuild_shims(); 54399 (function() { 54400 var Tooltip; 54401 Tooltip = (function() { 54402 var INTERVAL, SENSITIVITY, TIMEOUT;
54403 class Tooltip2 { 54404 constructor(el) { 54405 this.attachEvents = this.attachEvents.bind(this); 54406 this.el = el; 54407 this.tooltip = jQuery(this.el); 54408 this.elementHasFocus = false; 54409 this.attachEvents(); 54410 } 54411 attachEvents() { 54412 var hoverTimeout; 54413 hoverTimeout = null; 54414 this.tooltip.on("mouseover", (e) => { 54415 if (this.tooltip.hasClass("delayed")) { 54416 clearTimeout(hoverTimeout); 54417 return hoverTimeout = setTimeout(() => { 54418 return this.tooltip.addClass("hover"); 54419 }, 1e3); 54420 } else { 54421 return this.tooltip.addClass("hover"); 54422 } 54423 }); 54424 this.tooltip.on("mouseleave", (e) => { 54425 var openDropdown; 54426 clearTimeout(hoverTimeout); 54427 openDropdown = this.tooltip.find(".select2-selection--single").attr("aria-expanded"); 54428 if (openDropdown === "false" || openDropdown === void 0) { 54429 this.tooltip.removeClass("hover"); 54430 return this.tooltip.find(".select2-hidden-accessible").select2("close"); 54431 } 54432 }); 54433 this.tooltip.find("div.tab").on("mouseover", (event2) => { 54434 var tab; 54435 tab = jQuery(event2.currentTarget); 54436 tab.addClass("active"); 54437 tab.siblings().removeClass("active"); 54438 this.tooltip.find("div.tabcontent").removeClass("active"); 54439 return this.tooltip.find("div.tabcontent[data-name='" + tab.data("name") + "']").addClass("active"); 54440 }); 54441 return this.tooltip.find("input").on("focus", (event2) => { 54442 return this.elementHasFocus = true; 54443 }); 54444 } 54445 } 54446 ; 54447 INTERVAL = 50; 54448 SENSITIVITY = 50; 54449 TIMEOUT = 300; 54450 return Tooltip2; 54451 }).call(this); 54452 jQuery("div.tooltip").each(function(index, element) { 54453 return new Tooltip(element); 54454 }); 54455 jQuery("tbody.tooltip").each(function(index, element) { 54456 return new Tooltip(element); 54457 }); 54458 }).call(exports); 54459 } 54460 }); 54461 54462 // apps/base/assets/javascripts/components/video.coffee 54463 var require_video = __commonJS({ 54464 "apps/base/assets/javascripts/components/video.coffee"(exports) { 54465 "use strict"; 54466 init_esbuild_shims(); 54467 (function() { 54468 window.YouTubeVideo = class YouTubeVideo { 54469 constructor(youtubeId, playlistId = void 0, autoplay = true, containerId) { 54470 this.initPlayer = this.initPlayer.bind(this); 54471 this.onStateChangeHandler = this.onStateChangeHandler.bind(this); 54472 this.setTime = this.setTime.bind(this); 54473 this.playVideo = this.playVideo.bind(this); 54474 this.setTimer = this.setTimer.bind(this); 54475 this.cancelTimers = this.cancelTimers.bind(this); 54476 this.trackProgress = this.trackProgress.bind(this); 54477 this.youtubeId = youtubeId; 54478 this.playlistId = playlistId; 54479 this.autoplay = autoplay; 54480 this.containerId = containerId; 54481 if (this.containerId === void 0) { 54482 this.containerId = this.youtubeId; 54483 } 54484 this.timers = []; 54485 this.lastTimecode = null; 54486 this.attempt = 1; 54487 this.max_attempts = 100; 54488 this.initTimer = setInterval(() => { 54489 if (jQuery("#" + this.containerId).length > 0) { 54490 this.initPlayer(); 54491 return clearInterval(this.initTimer); 54492 } 54493 }, 100); 54494 } 54495 initPlayer() { 54496 this.attempt += 1; 54497 if (this.attempt > this.max_attempts) { 54498 clearInterval(this.initTimer); 54499 } 54500 if (typeof YT !== "undefined" && YT.Player) { 54501 return this.player = new YT.Player(this.containerId, { 54502 videoId: this.youtubeId, 54503 playerVars: { 54504 listType: "playlist", 54505 list: this.playlistId 54506 }, 54507 events: { 54508 "onReady": this.playVideo, 54509 "onStateChange": this.onStateChangeHandler 54510 } 54511 }); 54512 } 54513 } 54514 onStateChangeHandler(event2) { 54515 var i, len, percentage, ref; 54516 switch (event2.data) { 54517 case YT.PlayerState.PLAYING: 54518 ref = [25, 50, 75]; 54519 for (i = 0, len = ref.length; i < len; i++) { 54520 percentage = ref[i]; 54521 this.setTimer(percentage); 54522 } 54523 return this.trackEvent("Play"); 54524 case YT.PlayerState.PAUSED: 54525 this.cancelTimers(); 54526 return this.trackEvent("Pause"); 54527 case YT.PlayerState.ENDED: 54528 this.trackEvent("100%"); 54529 return this.timers = []; 54530 } 54531 } 54532 setTime(seconds) { 54533 return this.player.seekTo(seconds); 54534 } 54535 playVideo() { 54536 if (this.autoplay) { 54537 return this.player.playVideo(); 54538 } 54539 } 54540 setTimer(percentage) { 54541 var delay; 54542 if (this.player.getDuration() > 0) {
54543 delay = (this.player.getDuration() * (percentage / 100) - this.player.getCurrentTime()) * 1e3; 54544 if (delay > 0) { 54545 return this.timers.push(window.setTimeout(this.trackProgress, delay, percentage)); 54546 } 54547 } 54548 } 54549 cancelTimers() { 54550 var i, len, ref, timeoutId; 54551 ref = this.timers; 54552 for (i = 0, len = ref.length; i < len; i++) { 54553 timeoutId = ref[i]; 54554 window.clearTimeout(timeoutId); 54555 } 54556 return this.timers = []; 54557 } 54558 trackProgress(percentage) { 54559 return this.trackEvent(percentage + "%"); 54560 } 54561 trackEvent(event2) { 54562 window.trackEvent("Videos", event2, "youtube_" + this.youtubeId); 54563 return window.trackEloquaEvent(["youtube_" + this.youtubeId, event2]); 54564 } 54565 }; 54566 window.onYouTubeIframeAPIReady = function() { 54567 return jQuery('div[data-youtube-tracked="true"]').each(function(index, element) { 54568 return new window.YouTubeVideo(jQuery(element).find("iframe").id()); 54569 }); 54570 }; 54571 }).call(exports); 54572 } 54573 }); 54574 54575 // apps/base/assets/javascripts/components/webinar-filter/availability_filter.coffee 54576 var require_availability_filter = __commonJS({ 54577 "apps/base/assets/javascripts/components/webinar-filter/availability_filter.coffee"(exports) { 54578 "use strict"; 54579 init_esbuild_shims(); 54580 (function() { 54581 var AvailabilityFilter; 54582 AvailabilityFilter = class AvailabilityFilter { 54583 constructor(availability) { 54584 this.attachEventHandlers = this.attachEventHandlers.bind(this); 54585 this.getChecked = this.getChecked.bind(this); 54586 this.handleFiltering = this.handleFiltering.bind(this); 54587 this.removeAvailability = this.removeAvailability.bind(this); 54588 this.setAvailability = this.setAvailability.bind(this); 54589 this.availability = availability; 54590 this.selectedAvailability = []; 54591 this.select = this.availability.find("select"); 54592 this.attachEventHandlers(); 54593 } 54594 attachEventHandlers() { 54595 return this.select.on("change", () => { 54596 this.removeAvailability(); 54597 this.setAvailability(); 54598 return this.getChecked(); 54599 }); 54600 } 54601 getChecked() { 54602 return $.map(this.select.find("option:selected"), (option, index) => { 54603 return this.handleFiltering(jQuery(option).val()); 54604 }); 54605 } 54606 handleFiltering(option) { 54607 this.removeAvailability(); 54608 return this.setAvailability(option); 54609 } 54610 removeAvailability() { 54611 return this.selectedAvailability = []; 54612 } 54613 setAvailability(option) { 54614 return this.selectedAvailability.push(option); 54615 } 54616 }; 54617 new AvailabilityFilter(jQuery(".webinar-filter .availability")); 54618 }).call(exports); 54619 } 54620 }); 54621 54622 // apps/base/assets/javascripts/components/webinar-filter/event_filter.coffee 54623 var require_event_filter = __commonJS({ 54624 "apps/base/assets/javascripts/components/webinar-filter/event_filter.coffee"(exports) { 54625 "use strict"; 54626 init_esbuild_shims(); 54627 (function() { 54628 var WebinarFilter; 54629 require_select22(); 54630 WebinarFilter = class WebinarFilter { 54631 constructor(filterContainer) { 54632 this.attachEventHandlers = this.attachEventHandlers.bind(this); 54633 this.getChecked = this.getChecked.bind(this); 54634 this.showListItems = this.showListItems.bind(this); 54635 this.filterContainer = filterContainer; 54636 this.searchSelect = this.filterContainer.find(".search-webinar select"); 54637 this.clearButton = this.filterContainer.find(".search-webinar .clear"); 54638 this.searchButton = this.filterContainer.find(".search-webinar span"); 54639 this.topicSelect = this.filterContainer.find(".topic select"); 54640 this.availabilitySelect = this.filterContainer.find(".availability select"); 54641 this.select = this.filterContainer.find("select"); 54642 this.endpoint = jQuery("section.listing").attr("data-endpoint"); 54643 this.landingUri = jQuery("section.listing").attr("data-landing"); 54644 this.blockUri = jQuery("section.listing").attr("data-block"); 54645 this.loadingIndicator = jQuery("section.listing .loading-container"); 54646 this.attachEventHandlers(); 54647 } 54648 attachEventHandlers() { 54649 this.topicSelect.select2({ 54650 minimumResultsForSearch: -1, 54651 placeholder: "Topic", 54652 allowClear: true 54653 }); 54654 this.availabilitySelect.select2({ 54655 minimumResultsForSearch: -1, 54656 placeholder: "Availability", 54657 allowClear: true 54658 }); 54659 this.clearButton.hide(); 54660 this.select.on("change", (e) => { 54661 return this.getChecked(); 54662 }); 54663 this.searchButton.on("click", () => { 54664 return this.getChecked(); 54665 }); 54666 this.filterContainer.on("keyup", ".search-webinar input", (e) => { 54667 e.preventDefault(); 54668 if (e.target.value.length === 0) { 54669 return this.clearButton.hide(); 54670 } else { 54671 return this.clearButton.show(); 54672 } 54673 }); 54674 return this.clearButton.on("click", () => { 54675 this.searchSelect.val(""); 54676 jQuery(".search-webinar input").val(""); 54677 this.getChecked(); 54678 return this.clearButton.hide(); 54679 }); 54680 } 54681 getChecked() { 54682 return this.updateListing(this.getPageParam(), true, this.topicSelect.find("option:selected").val(), this.availabilitySelect.find("option:selected").val(), this.searchSelect.find("option:selected").val()); 54683 } 54684 getPageParam() { 54685 var page; 54686 page = "1"; 54687 if (location.search.indexOf("page=") > 0) { 54688 page = location.search.slice("-1"); 54689 } 54690 return page; 54691 } 54692 updatePageParam(page) { 54693 var pageUrl; 54694 pageUrl = location.pathname + "?page=" + page; 54695 if (location.hash) { 54696 pageUrl = pageUrl + location.hash; 54697 } 54698 return history.pushState({ 54699 path: pageUrl 54700 }, "", pageUrl); 54701 } 54702 showListItems() { 54703 jQuery("article.card").hide(); 54704 return jQuery(".list-item").css("display", "flex"); 54705 } 54706 updateListing(page, updatePageParam = true, topic = null, availability = null, searchValue = null) { 54707 var params, query, tabNumber; 54708 this.loadingIndicator.show(); 54709 if (updatePageParam) { 54710 this.updatePageParam(page); 54711 } 54712 tabNumber = jQuery(".cards.active").attr("data-tab"); 54713 params = { 54714 landing_uri: this.landingUri, 54715 block_uri: this.blockUri, 54716 page, 54717 tab_number: tabNumber, 54718 topic, 54719 availability, 54720 search_value: searchValue 54721 }; 54722 query = this.endpoint + "?" + jQuery.param(params); 54723 return jQuery.get(query, (data) => { 54724 jQuery(".cards.active section").empty(); 54725 jQuery(".cards.active section").append(data); 54726 if (jQuery("#list-view").hasClass("selected") || !jQuery("article.card").length) { 54727 this.showListItems(); 54728 } 54729 return this.loadingIndicator.hide(); 54730 }); 54731 } 54732 }; 54733 jQuery(function() { 54734 return new WebinarFilter(jQuery(".webinar-filter")); 54735 }); 54736 }).call(exports); 54737 } 54738 }); 54739 54740 // apps/base/assets/javascripts/components/webinar-filter/get_keywords.coffee 54741 var require_get_keywords = __commonJS({ 54742 "apps/base/assets/javascripts/components/webinar-filter/get_keywords.coffee"(exports) { 54743 "use strict"; 54744 init_esbuild_shims(); 54745 (function() { 54746 var GetKeywords; 54747 GetKeywords = class GetKeywords { 54748 constructor(container, keywords) { 54749 this.attachEventHandlers = this.attachEventHandlers.bind(this); 54750 this.container = container; 54751 this.keywords = keywords; 54752 this.currentKeywords = []; 54753 this.attachEventHandlers(); 54754 } 54755 attachEventHandlers() { 54756 jQuery.each(this.container.find(".event-card"), (index, card) => { 54757 if (jQuery(card).data("keywords").length !== 0) { 54758 return jQuery.each(jQuery(card).data("keywords"), (index2, keyword) => { 54759 if (!this.currentKeywords.includes(keyword)) { 54760 return this.currentKeywords.push(keyword); 54761 } 54762 }); 54763 } 54764 }); 54765 jQuery.each(this.currentKeywords, (index, keyword) => { 54766 return this.keywords.append(new Option(keyword, keyword)); 54767 }); 54768 return jQuery(".search-webinar .search").selectToAutocomplete(); 54769 } 54770 }; 54771 new GetKeywords(jQuery(".cards[data-content=webinars]"), jQuery(".search-webinar select")); 54772 }).call(exports); 54773 } 54774 }); 54775 54776 // apps/base/assets/javascripts/components/webinar-filter/get_topics.coffee 54777 var require_get_topics = __commonJS({ 54778 "apps/base/assets/javascripts/components/webinar-filter/get_topics.coffee"(exports) { 54779 "use strict"; 54780 init_esbuild_shims(); 54781 (function() { 54782 var GetTopics; 54783 GetTopics = class GetTopics { 54784 constructor(container, topics) { 54785 this.attachEventHandlers = this.attachEventHandlers.bind(this); 54786 this.container = container; 54787 this.topics = topics; 54788 this.currentTopics = []; 54789 this.attachEventHandlers(); 54790 } 54791 attachEventHandlers() { 54792 jQuery.each(this.container.find(".event-card"), (index, card) => { 54793 if (!this.currentTopics.includes(jQuery(card).attr("data-topic")) && jQuery(card).attr("data-topic") !== void 0) { 54794 return this.currentTopics.push(jQuery(card).attr("data-topic")); 54795 } 54796 }); 54797 return jQuery.each(this.currentTopics, (index, topic) => { 54798 return this.topics.append(new Option(topic, topic)); 54799 }); 54800 } 54801 }; 54802 new GetTopics(jQuery(".cards[data-content=webinars]"), jQuery(".webinar-filter .topic select")); 54803 }).call(exports); 54804 } 54805 }); 54806 54807 // apps/base/assets/javascripts/components/webinar-filter/new-event-filter.coffee 54808 var require_new_event_filter = __commonJS({ 54809 "apps/base/assets/javascripts/components/webinar-filter/new-event-filter.coffee"(exports) { 54810 "use strict"; 54811 init_esbuild_shims(); 54812 (function() { 54813 var EventFilter; 54814 EventFilter = class EventFilter { 54815 constructor(filterContainer) { 54816 this.attachEventHandlers = this.attachEventHandlers.bind(this); 54817 this.getChecked = this.getChecked.bind(this); 54818 this.showListItems = this.showListItems.bind(this); 54819 this.filterContainer = filterContainer; 54820 this.content = jQuery('article.cards[data-tab="' + this.filterContainer.data("tab") + '"]'); 54821 this.tabNumber = this.filterContainer.data("tab"); 54822 this.searchSelect = this.filterContainer.find(".search-keyword select"); 54823 this.clearButton = this.filterContainer.find(".search-keyword .clear"); 54824 this.searchButton = this.filterContainer.find(".search-keyword span"); 54825 this.topicSelect = this.filterContainer.find(".topic select"); 54826 this.endpoint = jQuery("section.listing").attr("data-endpoint"); 54827 this.landingUri = jQuery("section.listing").attr("data-landing"); 54828 this.blockUri = jQuery("section.listing").attr("data-block"); 54829 this.loadingIndicator = jQuery("section.listing .loading-container"); 54830 this.currentTopics = this.content.data("topics"); 54831 this.currentKeywords = this.content.data("keywords"); 54832 this.attachEventHandlers(); 54833 } 54834 attachEventHandlers() { 54835 this.topicSelect.select2({ 54836 minimumResultsForSearch: -1 54837 }); 54838 this.getTopics(); 54839 this.getKeywords(); 54840 this.clearButton.hide(); 54841 this.topicSelect.on("change", (e) => { 54842 return this.getChecked(); 54843 }); 54844 this.searchButton.on("click", () => { 54845 return this.getChecked(); 54846 }); 54847 this.filterContainer.on("keyup", ".search-keyword input", (e) => { 54848 e.preventDefault(); 54849 if (e.target.value.length === 0) { 54850 return this.clearButton.hide(); 54851 } else { 54852 return this.clearButton.show(); 54853 } 54854 }); 54855 return this.clearButton.on("click", () => { 54856 this.searchSelect.val(""); 54857 this.filterContainer.find(".search-keyword input").val(""); 54858 this.getChecked(); 54859 return this.clearButton.hide(); 54860 }); 54861 } 54862 getChecked() { 54863 return this.updateListing(this.topicSelect.find("option:selected").val(), this.searchSelect.find("option:selected").val()); 54864 } 54865 updatePageParam() { 54866 var pageUrl; 54867 pageUrl = location.pathname + "?page=1"; 54868 if (location.hash) { 54869 pageUrl = pageUrl + location.hash; 54870 } 54871 return history.pushState({ 54872 path: pageUrl 54873 }, "", pageUrl); 54874 } 54875 showListItems() { 54876 jQuery("article.card").hide(); 54877 return jQuery(".list-item").css("display", "flex"); 54878 } 54879 updateListing(topic = null, keyword = null) { 54880 var params, query; 54881 this.loadingIndicator.show(); 54882 this.updatePageParam(); 54883 params = { 54884 landing_uri: this.landingUri, 54885 block_uri: this.blockUri, 54886 page: 1, 54887 tab_number: this.tabNumber, 54888 topic, 54889 search_value: keyword 54890 }; 54891 query = this.endpoint + "?" + jQuery.param(params); 54892 return jQuery.get(query, (data) => { 54893 jQuery(".cards.active section").empty(); 54894 jQuery(".cards.active section").append(data); 54895 if (jQuery("#list-view").hasClass("selected") || !jQuery("article.card").length) { 54896 this.showListItems(); 54897 } 54898 return this.loadingIndicator.hide(); 54899 }); 54900 } 54901 getTopics() { 54902 if (this.currentTopics !== void 0 && this.currentTopics.length > 0) { 54903 return jQuery.each(this.currentTopics, (index, topic) => { 54904 return this.topicSelect.append(new Option(topic, topic)); 54905 }); 54906 } 54907 } 54908 getKeywords() { 54909 if (this.currentKeywords !== void 0 && this.currentKeywords.length > 0) { 54910 jQuery.each(this.currentKeywords, (index, keyword) => { 54911 return this.searchSelect.append(new Option(keyword, keyword)); 54912 }); 54913 } else { 54914 this.filterContainer.find(".search-keyword").hide(); 54915 } 54916 return this.searchSelect.selectToAutocomplete(); 54917 } 54918 }; 54919 jQuery(function() { 54920 new EventFilter(jQuery(".new-event-filter[data-tab='4']")); 54921 return new EventFilter(jQuery(".new-event-filter[data-tab='5']")); 54922 }); 54923 }).call(exports); 54924 } 54925 }); 54926 54927 // apps/base/assets/javascripts/application.coffee 54928 init_esbuild_shims(); 54929 var import_jquery = __toESM(require_jquery()); 54930 var import_select2 = __toESM(require_select2()); 54931 var import_moment = __toESM(require_moment()); 54932 var import_pikaday = __toESM(require_pikaday()); 54933 var import_slick_carousel = __toESM(require_slick()); 54934 var DataTable; 54935 if (window.jQuery == null) { 54936 window.jQuery = import_jquery.default; 54937 } 54938 if (window.$ == null) { 54939 window.$ = import_jquery.d
54939efault; 54940 } 54941 if (window.global == null) { 54942 window.global = window; 54943 } 54944 window.Pikaday = import_pikaday.default; 54945 (0, import_select2.default)(import_jquery.default); 54946 require_moment(); 54947 require_packery(); 54948 require_jquery_menu_aim(); 54949 DataTable = require_jquery_dataTables()(window, import_jquery.default); 54950 window.introJs = require_intro(); 54951 require_underscore(); 54952 require_array_from_polyfill(); 54953 require_bootstrap_datepicker(); 54954 require_balancetext(); 54955 require_email_address_decoder(); 54956 require_hamlcoffee(); 54957 require_jquery_autoellipsis_1_0_10(); 54958 require_jquery_cookie(); 54959 require_jquery_doubleScroll(); 54960 require_jquery_hoverIntent(); 54961 require_jquery_iframe_transport(); 54962 require_jquery_query_object(); 54963 require_jquery_select_to_autocomplete(); 54964 require_jquery_touchSwipe_min(); 54965 require_jquery_transit_min(); 54966 require_jquery_ui_autocomplete(); 54967 require_jquery_ujs(); 54968 require_magnific_popup(); 54969 require_media_query_events(); 54970 require_nouislider(); 54971 require_pikaday2(); 54972 require_placeholders(); 54973 require_promise_polyfill(); 54974 require_scroll_up_bar(); 54975 require_swfobject(); 54976 require_table_head_fixer(); 54977 require_webfontloader(); 54978 require_mobile(); 54979 require_account_verification(); 54980 require_unlock(); 54981 require_compliant_password(); 54982 require_analytics(); 54983 require_balance_text(); 54984 require_banner(); 54985 require_billboard(); 54986 require_links(); 54987 require_breadcrumbs(); 54988 require_call_to_action(); 54989 require_contact_landing_page(); 54990 require_cards(); 54991 require_downloads(); 54992 require_footnotes(); 54993 require_product(); 54994 require_product_compare(); 54995 require_product_export_dialog(); 54996 require_product_family_filter(); 54997 require_product_selector(); 54998 require_shortener(); 54999 require_slider(); 55000 require_categories_filter(); 55001 require_category(); 55002 require_option(); 55003 require_categories_filter2(); 55004 require_country_selector(); 55005 require_date_picker_jst(); 55006 require_data_table_view(); 55007 require_downloads2(); 55008 require_droptarget(); 55009 require_expandable_listing(); 55010 require_expandable_row(); 55011 require_export_downloader(); 55012 require_follow_anchor(); 55013 require_footer(); 55014 require_footer_old(); 55015 require_form_controller(); 55016 require_information_block_video(); 55017 require_insights(); 55018 require_landing_pages(); 55019 require_listing_tabs(); 55020 require_lms_trainings(); 55021 require_authentication_dialog(); 55022 require_complete_account_form(); 55023 require_login_check(); 55024 require_login_response(); 55025 require_login_service(); 55026 require_register_form(); 55027 require_login_form(); 55028 require_single_sign_on_link(); 55029 require_magic_button(); 55030 require_magic_webinar(); 55031 require_main_navigation(); 55032 require_main_navigation_old(); 55033 require_media_carousel(); 55034 require_navigation_tab(); 55035 require_news(); 55036 require_news_article(); 55037 require_notification(); 55038 require_old_doorway(); 55039 require_omron_form_helper(); 55040 require_site_navigation(); 55041 require_popups(); 55042 require_recaptcha(); 55043 require_search_bar(); 55044 require_searchbox(); 55045 require_tag_filter(); 55046 require_toggle_switch(); 55047 require_toggles(); 55048 require_tooltip(); 55049 require_video(); 55050 require_availability_filter(); 55051 require_event_filter(); 55052 require_get_keywords(); 55053 require_get_topics(); 55054 require_new_event_filter(); 55055 require_select2(); 55056})(); 55057/*! 55058 * Intro.js v4.3.0 55059 * https://introjs.com 55060 * 55061 * Copyright (C) 2012-2021 Afshin Mehrabani (@afshinmeh). 55062 * https://raw.githubusercontent.com/usablica/intro.js/master/license.md 55063 * 55064 * Date: Sat, 06 Nov 2021 14:22:05 GMT 55065 */ 55066/*! 55067 * Datepicker for Bootstrap v1.10.0 (https://github.com/uxsolutions/bootstrap-datepicker) 55068 * 55069 * Licensed under the Apache License v2.0 (https://www.apache.org/licenses/LICENSE-2.0) 55070 */ 55071/*! 55072 55073 Copyright (c) 2011 Peter van der Spek 55074 55075 Permission is hereby granted, free of charge, to any person obtaining a copy 55076 of this software and associated documentation files (the "Software"), to deal 55077 in the Software without restriction, including without limitation the rights 55078 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 55079 copies of the Software, and to permit persons to whom the Software is 55080 furnished to do so, subject to the following conditions: 55081 55082 The above copyright notice and this permission notice shall be included in 55083 all copies or substantial portions of the Software. 55084 55085 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 55086 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 55087 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 55088 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 55089 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 55090 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 55091 THE SOFTWARE. 55092 55093 */ 55094/*! 55095 * jQuery Cookie Plugin v1.3.1 55096 * https://github.com/carhartl/jquery-cookie 55097 * 55098 * Copyright 2013 Klaus Hartl 55099 * Released under the MIT license 55100 */ 55101/*! 55102 * hoverIntent v1.8.1 // 2014.08.11 // jQuery v1.9.1+ 55103 * http://cherne.net/brian/resources/jquery.hoverIntent.html 55104 * 55105 * You may use hoverIntent under the terms of the MIT license. Basically that 55106 * means you are free to use hoverIntent as long as this header is left intact. 55107 * Copyright 2007, 2014 Brian Cherne 55108 */ 55109/*!
55110 * jQuery UI Keycode 1.12.1 55111 * http://jqueryui.com 55112 * 55113 * Copyright jQuery Foundation and other contributors 55114 * Released under the MIT license. 55115 * http://jquery.org/license 55116 */ 55117/*! 55118 * jQuery UI Position 1.12.1 55119 * http://jqueryui.com 55120 * 55121 * Copyright jQuery Foundation and other contributors 55122 * Released under the MIT license. 55123 * http://jquery.org/license 55124 * 55125 * http://api.jqueryui.com/position/ 55126 */ 55127/*! 55128 * jQuery UI Unique ID 1.12.1 55129 * http://jqueryui.com 55130 * 55131 * Copyright jQuery Foundation and other contributors 55132 * Released under the MIT license. 55133 * http://jquery.org/license 55134 */ 55135/*! 55136 * jQuery UI Widget 1.12.1 55137 * http://jqueryui.com 55138 * 55139 * Copyright jQuery Foundation and other contributors 55140 * Released under the MIT license. 55141 * http://jquery.org/license 55142 */ 55143/*! 55144 * jQuery UI Menu 1.12.1 55145 * http://jqueryui.com 55146 * 55147 * Copyright jQuery Foundation and other contributors 55148 * Released under the MIT license. 55149 * http://jquery.org/license 55150 */ 55151/*! 55152 * jQuery UI Autocomplete 1.12.1 55153 * http://jqueryui.com 55154 * 55155 * Copyright jQuery Foundation and other contributors 55156 * Released under the MIT license. 55157 * http://jquery.org/license 55158 */ 55159/*! Magnific Popup - v1.1.0 - 2016-02-20 55160* http://dimsemenov.com/plugins/magnific-popup/ 55161* Copyright (c) 2016 Dmitry Semenov; */ 55162/*! nouislider - 8.2.1 - 2015-12-02 21:43:14 */ 55163/*! 55164 * Pikaday 55165 * 55166 * Copyright © 2014 David Bushell | BSD & MIT license | https://github.com/dbushell/Pikaday 55167 */ 55168/*! 55169 * The MIT License 55170 * 55171 * Copyright (c) 2012 James Allardice 55172 * 55173 * Permission is hereby granted, free of charge, to any person obtaining a copy 55174 * of this software and associated documentation files (the "Software"), to 55175 * deal in the Software without restriction, including without limitation the 55176 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 55177 * sell copies of the Software, and to permit persons to whom the Software is 55178 * furnished to do so, subject to the following conditions: 55179 * 55180 * The above copyright notice and this permission notice shall be included in 55181 * all copies or substantial portions of the Software. 55182 * 55183 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 55184 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 55185 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 55186 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 55187 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 55188 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 55189 * IN THE SOFTWARE. 55190 */ 55191/*! Bundled license information: 55192 55193ieee754/index.js: 55194 (*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> *) 55195 55196buffer/index.js: 55197 (*! 55198 * The buffer module from node.js, for the browser. 55199 * 55200 * @author Feross Aboukhadijeh <https://feross.org> 55201 * @license MIT 55202 *) 55203 55204jquery/dist/jquery.js: 55205 (*! 55206 * jQuery JavaScript Library v3.7.1 55207 * https://jquery.com/ 55208 * 55209 * Copyright OpenJS Foundation and other contributors 55210 * Released under the MIT license 55211 * https://jquery.org/license 55212 * 55213 * Date: 2023-08-28T13:37Z 55214 *) 55215 55216select2/dist/js/select2.js: 55217 (*! 55218 * Select2 4.1.0-rc.0 55219 * https://select2.github.io 55220 * 55221 * Released under the MIT license 55222 * https://github.com/select2/select2/blob/master/LICENSE.md 55223 *) 55224 (** 55225 * @license almond 0.3.3 Copyright jQuery Foundation and other contributors. 55226 * Released under MIT license, http://github.com/requirejs/almond/LICENSE 55227 *) 55228 55229moment/moment.js: 55230 (*! moment.js *) 55231 (*! version : 2.31.0 *) 55232 (*! authors : Tim Wood, Iskren Chernev, Moment.js contributors *) 55233 (*! license : MIT *) 55234 (*! momentjs.com *) 55235 55236pikaday/pikaday.js: 55237 (*! 55238 * Pikaday 55239 * 55240 * Copyright © 2014 David Bushell | BSD & MIT license | https://github.com/Pikaday/Pikaday 55241 *) 55242 55243get-size/get-size.js: 55244 (*! 55245 * getSize v2.0.3 55246 * measure size of elements 55247 * MIT license 55248 *) 55249 55250outlayer/outlayer.js: 55251 (*! 55252 * Outlayer v2.1.1 55253 * the brains and guts of a layout library 55254 * MIT license 55255 *) 55256 55257packery/js/packery.js: 55258 (*! 55259 * Packery v2.1.2 55260 * Gapless, draggable grid layouts 55261 * 55262 * Licensed GPLv3 for open source use 55263 * or Packery Commercial License for commercial use 55264 * 55265 * http://packery.metafizzy.co 55266 * Copyright 2013-2018 Metafizzy 55267 *) 55268 55269datatables.net/js/jquery.dataTables.js: 55270 (*! DataTables 1.13.11 55271 * ©2008-2024 SpryMedia Ltd - datatables.net/license 55272 *) 55273*/;
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.